1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var ts = require("typescript");
|
4 | function walk(sourceFile) {
|
5 | var stack = [];
|
6 | var elementStack = [];
|
7 | function push(element) {
|
8 | var parent = elementStack[elementStack.length - 1];
|
9 | var siblings = (parent && parent.body) ? parent.body : stack;
|
10 | siblings.push(element);
|
11 | }
|
12 | eachProp(sourceFile);
|
13 | return stack;
|
14 | function addFromArrayElement(incoming) {
|
15 | switch (incoming.kind) {
|
16 | case ts.SyntaxKind.NullKeyword:
|
17 | case ts.SyntaxKind.TrueKeyword:
|
18 | case ts.SyntaxKind.FalseKeyword:
|
19 | case ts.SyntaxKind.NumericLiteral:
|
20 | case ts.SyntaxKind.StringLiteral: {
|
21 | push(literalTypeFromArrayElement(incoming, incoming.kind));
|
22 | break;
|
23 | }
|
24 | case ts.SyntaxKind.ObjectLiteralExpression: {
|
25 | var elem = {
|
26 | kind: ts.SyntaxKind.ObjectLiteralExpression,
|
27 | _kind: "ObjectLiteralExpression",
|
28 | body: [],
|
29 | };
|
30 | push(elem);
|
31 | elementStack.push(elem);
|
32 | eachProp(incoming.properties);
|
33 | elementStack.pop();
|
34 | break;
|
35 | }
|
36 | case ts.SyntaxKind.ArrayLiteralExpression: {
|
37 | var elem = {
|
38 | kind: ts.SyntaxKind.ArrayLiteralExpression,
|
39 | _kind: "ArrayLiteralExpression",
|
40 | body: [],
|
41 | };
|
42 | push(elem);
|
43 | elementStack.push(elem);
|
44 | eachProp(incoming.elements);
|
45 | elementStack.pop();
|
46 | break;
|
47 | }
|
48 | }
|
49 | }
|
50 | function eachProp(properties) {
|
51 | properties.forEach(function (prop) {
|
52 | if (!prop.initializer) {
|
53 | return addFromArrayElement(prop);
|
54 | }
|
55 | else {
|
56 | switch (prop.initializer.kind) {
|
57 | case ts.SyntaxKind.TrueKeyword:
|
58 | case ts.SyntaxKind.FalseKeyword:
|
59 | case ts.SyntaxKind.NullKeyword:
|
60 | case ts.SyntaxKind.StringLiteral:
|
61 | case ts.SyntaxKind.NumericLiteral: {
|
62 | push(literalTypeFromProp(prop, prop.initializer.kind));
|
63 | break;
|
64 | }
|
65 | case ts.SyntaxKind.PrefixUnaryExpression: {
|
66 | push(literalTypeFromProp(prop, ts.SyntaxKind.NumericLiteral));
|
67 | break;
|
68 | }
|
69 | case ts.SyntaxKind.ObjectLiteralExpression: {
|
70 | // console.log('OBJ', prop.name.text);
|
71 | var elem = {
|
72 | name: prop.name.text,
|
73 | body: [],
|
74 | kind: ts.SyntaxKind.ObjectLiteralExpression,
|
75 | _kind: "ObjectLiteralExpression"
|
76 | };
|
77 | push(elem);
|
78 | elementStack.push(elem);
|
79 | eachProp(prop.initializer.properties);
|
80 | elementStack.pop();
|
81 | break;
|
82 | }
|
83 | case ts.SyntaxKind.ArrayLiteralExpression: {
|
84 | var elem = {
|
85 | name: prop.name.text,
|
86 | body: [],
|
87 | kind: ts.SyntaxKind.ArrayLiteralExpression,
|
88 | _kind: "ArrayLiteralExpression"
|
89 | };
|
90 | push(elem);
|
91 | elementStack.push(elem);
|
92 | eachProp(prop.initializer.elements);
|
93 | elementStack.pop();
|
94 | break;
|
95 | }
|
96 | }
|
97 | }
|
98 | });
|
99 | }
|
100 | function literalTypeFromProp(prop, kind) {
|
101 | return {
|
102 | name: prop.name.text,
|
103 | value: prop.initializer.text,
|
104 | kind: kind,
|
105 | };
|
106 | }
|
107 | function literalTypeFromArrayElement(element, kind) {
|
108 | return {
|
109 | kind: kind,
|
110 | name: element.text,
|
111 | value: element.text,
|
112 | };
|
113 | }
|
114 | }
|
115 | function parse(string, options) {
|
116 | var input = "const ROOTOBJ = " + string;
|
117 | var sourceFile = ts.createSourceFile('json.ts', input, ts.ScriptTarget.ES2015, /*setParentNodes */ true);
|
118 | // delint it
|
119 | var _json = sourceFile.statements[0];
|
120 | // console.log(sourceFile.statements[0].declarationList.declarations[0].initializer.properties);
|
121 | // elementStack.push({name: 'root', body: []});
|
122 | var stack = walk(_json.declarationList.declarations[0].initializer.properties);
|
123 | return stack;
|
124 | }
|
125 | exports.parse = parse;
|
126 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUFpQztBQVdqQyxjQUFjLFVBQXlCO0lBRW5DLElBQU0sS0FBSyxHQUF1QixFQUFFLENBQUM7SUFDckMsSUFBTSxZQUFZLEdBQXVCLEVBQUUsQ0FBQztJQUU1QyxjQUFjLE9BQU87UUFDakIsSUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQy9ELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVyQixNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWIsNkJBQTZCLFFBQVE7UUFDakMsTUFBTSxDQUFBLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkIsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUMvQixLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQy9CLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7WUFDaEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztZQUNsQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNELEtBQUssQ0FBQztZQUNWLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztn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QUFNLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekgsWUFBWTtJQUNaLElBQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFRLENBQUM7SUFDOUMsZ0dBQWdHO0lBQ2hHLCtDQUErQztJQUMvQyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQVRELHNCQVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge0pzb25Uc09wdGlvbnN9IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkTm9kZSB7XG4gICAga2luZDogdHMuU3ludGF4S2luZFxuICAgIF9raW5kOiBzdHJpbmdcbiAgICBuYW1lPzogc3RyaW5nXG4gICAgdmFsdWU/OiBhbnlcbiAgICBib2R5PzogUGFyc2VkTm9kZVtdXG59XG5cbmZ1bmN0aW9uIHdhbGsoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IFBhcnNlZE5vZGVbXSB7XG5cbiAgICBjb25zdCBzdGFjayA6IEFycmF5PFBhcnNlZE5vZGU+ID0gW107XG4gICAgY29uc3QgZWxlbWVudFN0YWNrIDogQXJyYXk8UGFyc2VkTm9kZT4gPSBbXTtcblxuICAgIGZ1bmN0aW9uIHB1c2goZWxlbWVudCkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBlbGVtZW50U3RhY2tbZWxlbWVudFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IChwYXJlbnQgJiYgcGFyZW50LmJvZHkpID8gcGFyZW50LmJvZHkgOiBzdGFjaztcbiAgICAgICAgc2libGluZ3MucHVzaChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBlYWNoUHJvcChzb3VyY2VGaWxlKTtcblxuICAgIHJldHVybiBzdGFjaztcblxuICAgIGZ1bmN0aW9uIGFkZEZyb21BcnJheUVsZW1lbnQoaW5jb21pbmcpIHtcbiAgICAgICAgc3dpdGNoKGluY29taW5nLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZDpcbiAgICAgICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5UcnVlS2V5d29yZDpcbiAgICAgICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5GYWxzZUtleXdvcmQ6XG4gICAgICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVtZXJpY0xpdGVyYWw6XG4gICAgICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuU3RyaW5nTGl0ZXJhbDoge1xuICAgICAgICAgICAgICAgIHB1c2gobGl0ZXJhbFR5cGVGcm9tQXJyYXlFbGVtZW50KGluY29taW5nLCBpbmNvbWluZy5raW5kKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb246IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiB0cy5TeW50YXhLaW5kLk9iamVjdExpdGVyYWxFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICBfa2luZDogYE9iamVjdExpdGVyYWxFeHByZXNzaW9uYCxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBwdXNoKGVsZW0pO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wdXNoKGVsZW0pO1xuICAgICAgICAgICAgICAgIGVhY2hQcm9wKGluY29taW5nLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogdHMuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICBfa2luZDogYEFycmF5TGl0ZXJhbEV4cHJlc3Npb25gLFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBbXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHB1c2goZWxlbSk7XG4gICAgICAgICAgICAgICAgZWxlbWVudFN0YWNrLnB1c2goZWxlbSk7XG4gICAgICAgICAgICAgICAgZWFjaFByb3AoaW5jb21pbmcuZWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVhY2hQcm9wKHByb3BlcnRpZXMpIHtcbiAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgICAgICBpZiAoIXByb3AuaW5pdGlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWRkRnJvbUFycmF5RWxlbWVudChwcm9wKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wLmluaXRpYWxpemVyLmtpbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLlRydWVLZXl3b3JkOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVsbEtleXdvcmQ6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5TdHJpbmdMaXRlcmFsOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVtZXJpY0xpdGVyYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2gobGl0ZXJhbFR5cGVGcm9tUHJvcChwcm9wLCBwcm9wLmluaXRpYWxpemVyLmtpbmQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5QcmVmaXhVbmFyeUV4cHJlc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2gobGl0ZXJhbFR5cGVGcm9tUHJvcChwcm9wLCB0cy5TeW50YXhLaW5kLk51bWVyaWNMaXRlcmFsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdPQkonLCBwcm9wLm5hbWUudGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IHRzLlN5bnRheEtpbmQuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2tpbmQ6IGBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbmBcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKGVsZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFN0YWNrLnB1c2goZWxlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChwcm9wLmluaXRpYWxpemVyLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkFycmF5TGl0ZXJhbEV4cHJlc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogdHMuU3ludGF4S2luZC5BcnJheUxpdGVyYWxFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9raW5kOiBgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbmBcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKGVsZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFN0YWNrLnB1c2goZWxlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChwcm9wLmluaXRpYWxpemVyLmVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXRlcmFsVHlwZUZyb21Qcm9wKHByb3AsIGtpbmQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHByb3AubmFtZS50ZXh0LFxuICAgICAgICAgICAgdmFsdWU6IHByb3AuaW5pdGlhbGl6ZXIudGV4dCxcbiAgICAgICAgICAgIGtpbmQ6IGtpbmQsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXRlcmFsVHlwZUZyb21BcnJheUVsZW1lbnQoZWxlbWVudCwga2luZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZCxcbiAgICAgICAgICAgIG5hbWU6IGVsZW1lbnQudGV4dCxcbiAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50LnRleHQsXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShzdHJpbmcsIG9wdGlvbnM6IEpzb25Uc09wdGlvbnMpOiBhbnlbXSB7XG4gICAgY29uc3QgaW5wdXQgPSBgY29uc3QgUk9PVE9CSiA9ICR7c3RyaW5nfWA7XG4gICAgbGV0IHNvdXJjZUZpbGUgOiB0cy5Tb3VyY2VGaWxlID0gdHMuY3JlYXRlU291cmNlRmlsZSgnanNvbi50cycsIGlucHV0LCB0cy5TY3JpcHRUYXJnZXQuRVMyMDE1LCAvKnNldFBhcmVudE5vZGVzICovIHRydWUpO1xuICAgIC8vIGRlbGludCBpdFxuICAgIGNvbnN0IF9qc29uID0gc291cmNlRmlsZS5zdGF0ZW1lbnRzWzBdIGFzIGFueTtcbiAgICAvLyBjb25zb2xlLmxvZyhzb3VyY2VGaWxlLnN0YXRlbWVudHNbMF0uZGVjbGFyYXRpb25MaXN0LmRlY2xhcmF0aW9uc1swXS5pbml0aWFsaXplci5wcm9wZXJ0aWVzKTtcbiAgICAvLyBlbGVtZW50U3RhY2sucHVzaCh7bmFtZTogJ3Jvb3QnLCBib2R5OiBbXX0pO1xuICAgIGNvbnN0IHN0YWNrID0gd2FsayhfanNvbi5kZWNsYXJhdGlvbkxpc3QuZGVjbGFyYXRpb25zWzBdLmluaXRpYWxpemVyLnByb3BlcnRpZXMpO1xuICAgIHJldHVybiBzdGFjaztcbn1cbiJdfQ== |
\ | No newline at end of file |