@coolon/i18n-resource-generator 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/.editorconfig +15 -0
  2. package/CHANGELOG.md +6 -0
  3. package/LICENSE +21 -0
  4. package/README.md +3 -0
  5. package/build/main/index.d.ts +1 -0
  6. package/build/main/index.js +7 -0
  7. package/build/main/lib/arg.class.d.ts +11 -0
  8. package/build/main/lib/arg.class.js +27 -0
  9. package/build/main/lib/arguments.class.d.ts +20 -0
  10. package/build/main/lib/arguments.class.js +55 -0
  11. package/build/main/lib/ast/abstractContainerElement.d.ts +9 -0
  12. package/build/main/lib/ast/abstractContainerElement.js +31 -0
  13. package/build/main/lib/ast/abstractElement.d.ts +16 -0
  14. package/build/main/lib/ast/abstractElement.js +39 -0
  15. package/build/main/lib/ast/classDef.class.d.ts +9 -0
  16. package/build/main/lib/ast/classDef.class.js +25 -0
  17. package/build/main/lib/ast/containerElement.class.d.ts +17 -0
  18. package/build/main/lib/ast/containerElement.class.js +3 -0
  19. package/build/main/lib/ast/element.class.d.ts +12 -0
  20. package/build/main/lib/ast/element.class.js +3 -0
  21. package/build/main/lib/ast/functionDef.class.d.ts +10 -0
  22. package/build/main/lib/ast/functionDef.class.js +16 -0
  23. package/build/main/lib/ast/interfaceDef.class.d.ts +9 -0
  24. package/build/main/lib/ast/interfaceDef.class.js +26 -0
  25. package/build/main/lib/ast/moduleDef.class.d.ts +8 -0
  26. package/build/main/lib/ast/moduleDef.class.js +42 -0
  27. package/build/main/lib/ast/namespaceDef.class.d.ts +18 -0
  28. package/build/main/lib/ast/namespaceDef.class.js +63 -0
  29. package/build/main/lib/ast/objectDef.class.d.ts +24 -0
  30. package/build/main/lib/ast/objectDef.class.js +69 -0
  31. package/build/main/lib/ast/tempContainer.class.d.ts +4 -0
  32. package/build/main/lib/ast/tempContainer.class.js +12 -0
  33. package/build/main/lib/ast/typeDef.class.d.ts +7 -0
  34. package/build/main/lib/ast/typeDef.class.js +14 -0
  35. package/build/main/lib/bin/cli.d.ts +2 -0
  36. package/build/main/lib/bin/cli.js +54 -0
  37. package/build/main/lib/constructor.class.d.ts +3 -0
  38. package/build/main/lib/constructor.class.js +3 -0
  39. package/build/main/lib/customTypeArrayNode.class.d.ts +10 -0
  40. package/build/main/lib/customTypeArrayNode.class.js +25 -0
  41. package/build/main/lib/customTypeNode.class.d.ts +23 -0
  42. package/build/main/lib/customTypeNode.class.js +71 -0
  43. package/build/main/lib/enumNode.class.d.ts +10 -0
  44. package/build/main/lib/enumNode.class.js +108 -0
  45. package/build/main/lib/i18nGenerator.d.ts +18 -0
  46. package/build/main/lib/i18nGenerator.js +135 -0
  47. package/build/main/lib/i18nNode.class.d.ts +43 -0
  48. package/build/main/lib/i18nNode.class.js +145 -0
  49. package/build/main/lib/index.d.ts +31 -0
  50. package/build/main/lib/index.js +34 -0
  51. package/build/main/lib/languageNode.class.d.ts +7 -0
  52. package/build/main/lib/languageNode.class.js +16 -0
  53. package/build/main/lib/namespaceNode.class.d.ts +6 -0
  54. package/build/main/lib/namespaceNode.class.js +16 -0
  55. package/build/main/lib/rootNode.class.d.ts +15 -0
  56. package/build/main/lib/rootNode.class.js +46 -0
  57. package/build/main/lib/stringUtil.d.ts +1 -0
  58. package/build/main/lib/stringUtil.js +7 -0
  59. package/build/main/lib/textArrayNode.class.d.ts +9 -0
  60. package/build/main/lib/textArrayNode.class.js +48 -0
  61. package/build/main/lib/textNode.class.d.ts +17 -0
  62. package/build/main/lib/textNode.class.js +117 -0
  63. package/build/main/lib/valueNode.class.d.ts +12 -0
  64. package/build/main/lib/valueNode.class.js +47 -0
  65. package/build/main/lib/writer.class.d.ts +10 -0
  66. package/build/main/lib/writer.class.js +29 -0
  67. package/build/module/index.d.ts +1 -0
  68. package/build/module/index.js +2 -0
  69. package/build/module/lib/arg.class.d.ts +11 -0
  70. package/build/module/lib/arg.class.js +24 -0
  71. package/build/module/lib/arguments.class.d.ts +20 -0
  72. package/build/module/lib/arguments.class.js +52 -0
  73. package/build/module/lib/ast/abstractContainerElement.d.ts +9 -0
  74. package/build/module/lib/ast/abstractContainerElement.js +21 -0
  75. package/build/module/lib/ast/abstractElement.d.ts +16 -0
  76. package/build/module/lib/ast/abstractElement.js +36 -0
  77. package/build/module/lib/ast/classDef.class.d.ts +9 -0
  78. package/build/module/lib/ast/classDef.class.js +22 -0
  79. package/build/module/lib/ast/containerElement.class.d.ts +17 -0
  80. package/build/module/lib/ast/containerElement.class.js +1 -0
  81. package/build/module/lib/ast/element.class.d.ts +12 -0
  82. package/build/module/lib/ast/element.class.js +1 -0
  83. package/build/module/lib/ast/functionDef.class.d.ts +10 -0
  84. package/build/module/lib/ast/functionDef.class.js +13 -0
  85. package/build/module/lib/ast/interfaceDef.class.d.ts +9 -0
  86. package/build/module/lib/ast/interfaceDef.class.js +23 -0
  87. package/build/module/lib/ast/moduleDef.class.d.ts +8 -0
  88. package/build/module/lib/ast/moduleDef.class.js +39 -0
  89. package/build/module/lib/ast/namespaceDef.class.d.ts +18 -0
  90. package/build/module/lib/ast/namespaceDef.class.js +60 -0
  91. package/build/module/lib/ast/objectDef.class.d.ts +24 -0
  92. package/build/module/lib/ast/objectDef.class.js +59 -0
  93. package/build/module/lib/ast/tempContainer.class.d.ts +4 -0
  94. package/build/module/lib/ast/tempContainer.class.js +9 -0
  95. package/build/module/lib/ast/typeDef.class.d.ts +7 -0
  96. package/build/module/lib/ast/typeDef.class.js +11 -0
  97. package/build/module/lib/bin/cli.d.ts +2 -0
  98. package/build/module/lib/bin/cli.js +42 -0
  99. package/build/module/lib/constructor.class.d.ts +3 -0
  100. package/build/module/lib/constructor.class.js +1 -0
  101. package/build/module/lib/customTypeArrayNode.class.d.ts +10 -0
  102. package/build/module/lib/customTypeArrayNode.class.js +22 -0
  103. package/build/module/lib/customTypeNode.class.d.ts +23 -0
  104. package/build/module/lib/customTypeNode.class.js +68 -0
  105. package/build/module/lib/enumNode.class.d.ts +10 -0
  106. package/build/module/lib/enumNode.class.js +105 -0
  107. package/build/module/lib/i18nGenerator.d.ts +18 -0
  108. package/build/module/lib/i18nGenerator.js +124 -0
  109. package/build/module/lib/i18nNode.class.d.ts +43 -0
  110. package/build/module/lib/i18nNode.class.js +132 -0
  111. package/build/module/lib/index.d.ts +31 -0
  112. package/build/module/lib/index.js +29 -0
  113. package/build/module/lib/languageNode.class.d.ts +7 -0
  114. package/build/module/lib/languageNode.class.js +13 -0
  115. package/build/module/lib/namespaceNode.class.d.ts +6 -0
  116. package/build/module/lib/namespaceNode.class.js +13 -0
  117. package/build/module/lib/rootNode.class.d.ts +15 -0
  118. package/build/module/lib/rootNode.class.js +43 -0
  119. package/build/module/lib/stringUtil.d.ts +1 -0
  120. package/build/module/lib/stringUtil.js +4 -0
  121. package/build/module/lib/textArrayNode.class.d.ts +9 -0
  122. package/build/module/lib/textArrayNode.class.js +38 -0
  123. package/build/module/lib/textNode.class.d.ts +17 -0
  124. package/build/module/lib/textNode.class.js +104 -0
  125. package/build/module/lib/valueNode.class.d.ts +12 -0
  126. package/build/module/lib/valueNode.class.js +37 -0
  127. package/build/module/lib/writer.class.d.ts +10 -0
  128. package/build/module/lib/writer.class.js +26 -0
  129. package/package.json +122 -0
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importStar = (this && this.__importStar) || function (mod) {
3
+ if (mod && mod.__esModule) return mod;
4
+ var result = {};
5
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
6
+ result["default"] = mod;
7
+ return result;
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ const _ = __importStar(require("lodash"));
11
+ const i18nNode_class_1 = require("./i18nNode.class");
12
+ const arguments_class_1 = require("./arguments.class");
13
+ class ValueNode extends i18nNode_class_1.I18nNode {
14
+ static matches(yamlData) {
15
+ return this.isValue(yamlData) || (_.isArray(yamlData) && _.reject(yamlData, entry => this.isValue(entry)).length == 0);
16
+ }
17
+ static isValue(thing) {
18
+ return _.isNumber(thing) || _.isNil(thing);
19
+ }
20
+ // constructor(parent: Node, private name: String, private children: any) {
21
+ // super(parent);
22
+ // }
23
+ parse(data) {
24
+ this.data = data;
25
+ }
26
+ compile(out) {
27
+ out.createFunction(this.javaScriptName, arguments_class_1.Arguments.empty(), this.returnType(), out => {
28
+ if (_.isArray(this.data)) {
29
+ out.println(` return [${this.data.map(d => this.valueString(d)).join(', ')}];`);
30
+ }
31
+ else {
32
+ out.println(` return ${this.valueString(this.data)};`);
33
+ }
34
+ });
35
+ }
36
+ returnType() {
37
+ return _.isArray(this.data) ? `${this.valueType(this.data[0])}[]` : this.valueType(this.data);
38
+ }
39
+ valueType(value) {
40
+ return _.isNil(value) ? 'string' : typeof value;
41
+ }
42
+ valueString(value) {
43
+ return value;
44
+ }
45
+ }
46
+ exports.ValueNode = ValueNode;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVOb2RlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWx1ZU5vZGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsMENBQTRCO0FBRTVCLHFEQUEwQztBQUUxQyx1REFBNEM7QUFFNUMsTUFBYSxTQUFVLFNBQVEseUJBQVE7SUFHbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFhO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDckIsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSxxQkFBcUI7SUFDckIsSUFBSTtJQUVKLEtBQUssQ0FBQyxJQUFTO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFxQjtRQUN6QixHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsMkJBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckY7aUJBQU07Z0JBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM1RDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVTtRQUNoQixPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQXhDRCw4QkF3Q0MifQ==
@@ -0,0 +1,10 @@
1
+ export interface Writer {
2
+ println(it: string): any;
3
+ indent(func: (nested: Writer) => void): any;
4
+ }
5
+ export declare class RootWriter implements Writer {
6
+ private lines;
7
+ println(it: string): void;
8
+ indent(func: (nested: Writer) => void): void;
9
+ toString(): string;
10
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class RootWriter {
4
+ constructor() {
5
+ this.lines = [];
6
+ }
7
+ println(it) {
8
+ this.lines.push(it);
9
+ }
10
+ indent(func) {
11
+ func(new ChildWriter(this));
12
+ }
13
+ toString() {
14
+ return this.lines.join("\n");
15
+ }
16
+ }
17
+ exports.RootWriter = RootWriter;
18
+ class ChildWriter {
19
+ constructor(parent) {
20
+ this.parent = parent;
21
+ }
22
+ println(it) {
23
+ return this.parent.println(' ' + it);
24
+ }
25
+ indent(func) {
26
+ func(new ChildWriter(this));
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93cml0ZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFhLFVBQVU7SUFBdkI7UUFDWSxVQUFLLEdBQWEsRUFBRSxDQUFDO0lBYWpDLENBQUM7SUFYRyxPQUFPLENBQUMsRUFBVTtRQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBMEI7UUFDN0IsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDSjtBQWRELGdDQWNDO0FBRUQsTUFBTSxXQUFXO0lBRWIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDbEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFVO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUEwQjtRQUM3QixJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0oifQ==
@@ -0,0 +1 @@
1
+ export * from "./lib";
@@ -0,0 +1,2 @@
1
+ export * from "./lib";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUMifQ==
@@ -0,0 +1,11 @@
1
+ export declare class Arg {
2
+ private _argName;
3
+ private _argType;
4
+ readonly formatName: string;
5
+ private _formatValue;
6
+ constructor(name: string, type: string);
7
+ readonly argName: string;
8
+ readonly argType: string;
9
+ readonly formatValue: string;
10
+ asBooleanOptionNamed(name: string): this;
11
+ }
@@ -0,0 +1,24 @@
1
+ export class Arg {
2
+ constructor(name, type) {
3
+ this._argName = name;
4
+ this._argType = type;
5
+ this.formatName = name;
6
+ this._formatValue = this.argName;
7
+ }
8
+ get argName() {
9
+ return this._argName;
10
+ }
11
+ get argType() {
12
+ return this._argType;
13
+ }
14
+ get formatValue() {
15
+ return this._formatValue;
16
+ }
17
+ asBooleanOptionNamed(name) {
18
+ this._argName = name;
19
+ this._argType = 'boolean';
20
+ this._formatValue = `(${this.argName} ? '${name}' : '!${name}')`;
21
+ return this;
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJnLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmcuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLEdBQUc7SUFPWixZQUFZLElBQVcsRUFBRSxJQUFXO1FBRWhDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFFLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sT0FBTyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIn0=
@@ -0,0 +1,20 @@
1
+ import { Arg } from "./arg.class";
2
+ export declare class Arguments {
3
+ static create(name: string, type: string): Arguments;
4
+ static empty(): EmptyArgs;
5
+ private args;
6
+ constructor(args?: Arg[]);
7
+ add(arg: Arg): void;
8
+ asParameterDeclaration(): string;
9
+ asConstructorParameters(visibility?: 'public' | 'private' | 'protected'): string;
10
+ asArgsObject(): string;
11
+ asArray(): Arg[];
12
+ merge(other: Arguments): void;
13
+ any(): boolean;
14
+ private canAdd;
15
+ }
16
+ declare class EmptyArgs extends Arguments {
17
+ constructor();
18
+ merge(other: Arguments): Arguments;
19
+ }
20
+ export {};
@@ -0,0 +1,52 @@
1
+ import { Arg } from "./arg.class";
2
+ export class Arguments {
3
+ static create(name, type) {
4
+ return new Arguments([new Arg(name, type)]);
5
+ }
6
+ static empty() {
7
+ return emptyArgs;
8
+ }
9
+ constructor(args) {
10
+ this.args = args || [];
11
+ }
12
+ add(arg) {
13
+ if (this.canAdd(arg)) {
14
+ this.args.push(arg);
15
+ }
16
+ }
17
+ asParameterDeclaration() {
18
+ return this.args.map(arg => `${arg.argName}:${arg.argType}`).join(', ');
19
+ }
20
+ asConstructorParameters(visibility = 'protected') {
21
+ return this.args.map(arg => `${visibility} ${arg.argName}:${arg.argType}`).join(', ');
22
+ }
23
+ asArgsObject() {
24
+ return `{${this.args.map(arg => `'${arg.formatName}':${arg.formatValue}`).join(', ')}}`;
25
+ }
26
+ asArray() {
27
+ return this.args;
28
+ }
29
+ merge(other) {
30
+ other.args.forEach(arg => this.add(arg));
31
+ }
32
+ any() {
33
+ return this.args.length > 0;
34
+ }
35
+ canAdd(arg) {
36
+ const existing = this.args.find(it => it.argName == arg.argName);
37
+ if (existing && existing.argType != arg.argType) {
38
+ throw new Error(`arg with the same name and different type exists. Exiting type is ${existing.argType}`);
39
+ }
40
+ return !existing;
41
+ }
42
+ }
43
+ class EmptyArgs extends Arguments {
44
+ constructor() {
45
+ super([]);
46
+ }
47
+ merge(other) {
48
+ throw new Error(`'illegal state, can't call Arguments.empty().merge()`);
49
+ }
50
+ }
51
+ const emptyArgs = new EmptyArgs();
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmd1bWVudHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUVoQyxNQUFNLE9BQU8sU0FBUztJQUVsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFXO1FBQ2xDLE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNSLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFJRCxZQUFZLElBQVc7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBTztRQUNQLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUN0QjtJQUNMLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELHVCQUF1QixDQUFDLGFBQTRDLFdBQVc7UUFDM0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO0lBQzNGLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBZ0I7UUFDbEIsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVE7UUFDbkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7U0FDM0c7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQUVELE1BQU0sU0FBVSxTQUFRLFNBQVM7SUFDN0I7UUFDSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBR0QsS0FBSyxDQUFDLEtBQWdCO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0o7QUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDIn0=
@@ -0,0 +1,9 @@
1
+ import { Element } from "./element.class";
2
+ import { AbstractElement } from "./abstractElement";
3
+ import { Constructor } from "../constructor.class";
4
+ export declare abstract class AbstractContainerElement extends AbstractElement {
5
+ private children;
6
+ addElement<T extends Element>(child: T, func?: (def: T) => void): T;
7
+ forEach<T extends Element>(type: Constructor<T>, callback: (item: T) => void): void;
8
+ allOfType<T extends Element>(type: Constructor<T>): T[];
9
+ }
@@ -0,0 +1,21 @@
1
+ import * as _ from 'lodash';
2
+ import { AbstractElement } from "./abstractElement";
3
+ export class AbstractContainerElement extends AbstractElement {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.children = [];
7
+ }
8
+ addElement(child, func) {
9
+ this.children.push(child);
10
+ child.setParent(this);
11
+ func && func(child);
12
+ return child;
13
+ }
14
+ forEach(type, callback) {
15
+ this.allOfType(type).forEach(child => callback(child));
16
+ }
17
+ allOfType(type) {
18
+ return _.filter(this.children, child => child instanceof type);
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RDb250YWluZXJFbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvYWJzdHJhY3RDb250YWluZXJFbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUlsRCxNQUFNLE9BQWdCLHdCQUF5QixTQUFRLGVBQWU7SUFBdEU7O1FBRVksYUFBUSxHQUFjLEVBQUUsQ0FBQztJQWlCckMsQ0FBQztJQWZHLFVBQVUsQ0FBb0IsS0FBUSxFQUFFLElBQXVCO1FBQzNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTyxDQUFvQixJQUFvQixFQUFFLFFBQTJCO1FBQ3hFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVELFNBQVMsQ0FBb0IsSUFBb0I7UUFDN0MsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFRLENBQUM7SUFDMUUsQ0FBQztDQUVKIn0=
@@ -0,0 +1,16 @@
1
+ import { Writer } from "../writer.class";
2
+ import { Element } from "./element.class";
3
+ export declare abstract class AbstractElement implements Element {
4
+ private readonly _name;
5
+ private _parent;
6
+ constructor(_name: string);
7
+ readonly name: string;
8
+ setParent(parent: Element): void;
9
+ readonly parent: Element;
10
+ isRoot(): boolean;
11
+ pathToRoot(): Element[];
12
+ pathTo(parent: Element): Element[];
13
+ rootElement(): Element;
14
+ parentPath(): Element[];
15
+ abstract writeBody(writer: Writer): void;
16
+ }
@@ -0,0 +1,36 @@
1
+ export class AbstractElement {
2
+ constructor(_name) {
3
+ this._name = _name;
4
+ }
5
+ get name() {
6
+ return this._name;
7
+ }
8
+ setParent(parent) {
9
+ this._parent = parent;
10
+ }
11
+ get parent() {
12
+ return this._parent;
13
+ }
14
+ isRoot() {
15
+ return !this.parent;
16
+ }
17
+ pathToRoot() {
18
+ return this.isRoot() ? [this] : this.parent.pathToRoot().concat(this);
19
+ }
20
+ pathTo(parent) {
21
+ const fullPath = this.pathToRoot();
22
+ const parentIndex = fullPath.indexOf(parent);
23
+ if (parentIndex < 0) {
24
+ throw new Error('element not a parent');
25
+ }
26
+ return fullPath.slice(parentIndex);
27
+ }
28
+ rootElement() {
29
+ const path = this.parentPath();
30
+ return path[path.length - 1];
31
+ }
32
+ parentPath() {
33
+ return this.isRoot() ? [] : this.parent.parentPath().concat(this.parent);
34
+ }
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RFbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvYWJzdHJhY3RFbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBZ0IsZUFBZTtJQUlqQyxZQUE2QixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUN6QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZTtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFjO1FBQ2pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVc7UUFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RSxDQUFDO0NBSUoifQ==
@@ -0,0 +1,9 @@
1
+ import { Writer } from "../writer.class";
2
+ import { Arguments } from "../arguments.class";
3
+ import { AbstractContainerElement } from "./abstractContainerElement";
4
+ export declare class ClassDef extends AbstractContainerElement {
5
+ readonly args: Arguments;
6
+ constructor(name: string, args: Arguments);
7
+ createFunction(name: string, args: Arguments, returnType: string, bodyContent: (def: Writer) => void): void;
8
+ writeBody(writer: Writer): void;
9
+ }
@@ -0,0 +1,22 @@
1
+ import { AbstractContainerElement } from "./abstractContainerElement";
2
+ import { FunctionDef } from "./functionDef.class";
3
+ export class ClassDef extends AbstractContainerElement {
4
+ constructor(name, args) {
5
+ super(name);
6
+ this.args = args;
7
+ }
8
+ createFunction(name, args, returnType, bodyContent) {
9
+ this.addElement(new FunctionDef(name, args, returnType, bodyContent));
10
+ }
11
+ writeBody(writer) {
12
+ if (this.args.any()) {
13
+ writer.println(`constructor(${this.args.asConstructorParameters('protected')}) {}`);
14
+ }
15
+ this.forEach(FunctionDef, def => {
16
+ writer.println(`${def.name}(${def.args.asParameterDeclaration()}):${def.returnType} {`);
17
+ writer.indent(writer => def.writeBody(writer));
18
+ writer.println('}');
19
+ });
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NEZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9jbGFzc0RlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsTUFBTSxPQUFPLFFBQVMsU0FBUSx3QkFBd0I7SUFFbEQsWUFBWSxJQUFXLEVBQWtCLElBQWM7UUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRHlCLFNBQUksR0FBSixJQUFJLENBQVU7SUFFdkQsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBZSxFQUFFLFVBQWtCLEVBQUUsV0FBa0M7UUFDaEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUVwQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDO1lBQ3hGLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7Q0FDSiJ9
@@ -0,0 +1,17 @@
1
+ import { Writer } from "../writer.class";
2
+ import { ClassDef } from "./classDef.class";
3
+ import { InterfaceDef } from "./interfaceDef.class";
4
+ import { ObjectDef } from "./objectDef.class";
5
+ import { Arguments } from "../arguments.class";
6
+ import { Element } from "./element.class";
7
+ import { Constructor } from "../constructor.class";
8
+ export interface ContainerElement extends Element {
9
+ nestedContainer(name: string, configure: (context: ContainerElement) => void): void;
10
+ defineInterface(name: string, configure?: (def: InterfaceDef) => void): InterfaceDef;
11
+ defineClass(name: string, args: Arguments, configure?: (def: ClassDef) => void): ClassDef;
12
+ createObject(name: string, configure?: (def: ObjectDef) => void): ObjectDef;
13
+ createFunction(name: string, args: Arguments, returnType: string, configure: (def: Writer) => void): any;
14
+ defineType(name: string, value: string): any;
15
+ forEach<T extends Element>(type: Constructor<T>, callback: (item: T) => void): any;
16
+ allOfType<T extends Element>(type: Constructor<T>): T[];
17
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyRWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2NvbnRhaW5lckVsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,12 @@
1
+ import { Writer } from "../writer.class";
2
+ export interface Element {
3
+ readonly name: string;
4
+ setParent(context: Element): void;
5
+ readonly parent: Element;
6
+ pathToRoot(): Element[];
7
+ parentPath(): Element[];
8
+ isRoot(): boolean;
9
+ rootElement(): Element;
10
+ pathTo(parent: Element): Element[];
11
+ writeBody(writer: Writer): void;
12
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2VsZW1lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,10 @@
1
+ import { Writer } from "../writer.class";
2
+ import { AbstractElement } from "./abstractElement";
3
+ import { Arguments } from "../arguments.class";
4
+ export declare class FunctionDef extends AbstractElement {
5
+ readonly args: Arguments;
6
+ readonly returnType: string;
7
+ readonly bodyWriter: (out: Writer) => void;
8
+ constructor(name: string, args: Arguments, returnType: string, bodyWriter: (out: Writer) => void);
9
+ writeBody(writer: Writer): void;
10
+ }
@@ -0,0 +1,13 @@
1
+ import { AbstractElement } from "./abstractElement";
2
+ export class FunctionDef extends AbstractElement {
3
+ constructor(name, args, returnType, bodyWriter) {
4
+ super(name);
5
+ this.args = args;
6
+ this.returnType = returnType;
7
+ this.bodyWriter = bodyWriter;
8
+ }
9
+ writeBody(writer) {
10
+ this.bodyWriter(writer);
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25EZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9mdW5jdGlvbkRlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQzVDLFlBQVksSUFBWSxFQUNJLElBQWUsRUFDZixVQUFrQixFQUNsQixVQUFpQztRQUN6RCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFIWSxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUF1QjtJQUU3RCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBR0oifQ==
@@ -0,0 +1,9 @@
1
+ import { Writer } from "../writer.class";
2
+ import { Arguments } from "../arguments.class";
3
+ import { AbstractContainerElement } from "./abstractContainerElement";
4
+ export declare class InterfaceDef extends AbstractContainerElement {
5
+ constructor(name: string);
6
+ createFunction(name: string, args: Arguments, returnType: string): void;
7
+ createObject(name: string, type: string): void;
8
+ writeBody(writer: Writer): void;
9
+ }
@@ -0,0 +1,23 @@
1
+ import { FunctionDef } from "./functionDef.class";
2
+ import { AbstractContainerElement } from "./abstractContainerElement";
3
+ import { ObjectDef } from "./objectDef.class";
4
+ export class InterfaceDef extends AbstractContainerElement {
5
+ constructor(name) {
6
+ super(name);
7
+ }
8
+ createFunction(name, args, returnType) {
9
+ this.addElement(new FunctionDef(name, args, returnType, (out) => { }));
10
+ }
11
+ createObject(name, type) {
12
+ this.addElement(new ObjectDef(name).asType(type || 'any'));
13
+ }
14
+ writeBody(writer) {
15
+ this.forEach(FunctionDef, def => {
16
+ writer.println(`${def.name}(${def.args.asParameterDeclaration()}):${def.returnType};`);
17
+ });
18
+ this.forEach(ObjectDef, def => {
19
+ writer.println(`${def.name}:${def.typeName()};`);
20
+ });
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlRGVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvaW50ZXJmYWNlRGVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFNUMsTUFBTSxPQUFPLFlBQWEsU0FBUSx3QkFBd0I7SUFFdEQsWUFBWSxJQUFZO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVksRUFBRSxJQUFlLEVBQUUsVUFBa0I7UUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqRixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVksRUFBRSxJQUFZO1FBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEtBQUssR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=
@@ -0,0 +1,8 @@
1
+ import { Writer } from "../writer.class";
2
+ import { NamespaceDef } from "./namespaceDef.class";
3
+ export declare class Module extends NamespaceDef {
4
+ constructor();
5
+ addHeader(line: string): void;
6
+ addImport(line: string): void;
7
+ writeBody(writer: Writer): void;
8
+ }
@@ -0,0 +1,39 @@
1
+ import { NamespaceDef } from "./namespaceDef.class";
2
+ import { AbstractElement } from "./abstractElement";
3
+ class HeaderLine extends AbstractElement {
4
+ constructor(line) {
5
+ super('');
6
+ this.line = line;
7
+ }
8
+ writeBody(writer) {
9
+ writer.println(this.line);
10
+ }
11
+ }
12
+ class ImportLine extends AbstractElement {
13
+ constructor(line) {
14
+ super('');
15
+ this.line = line;
16
+ }
17
+ writeBody(writer) {
18
+ writer.println(`${this.line};`);
19
+ }
20
+ }
21
+ export class Module extends NamespaceDef {
22
+ constructor() {
23
+ super('');
24
+ }
25
+ addHeader(line) {
26
+ this.addElement(new HeaderLine(line));
27
+ }
28
+ addImport(line) {
29
+ this.addElement(new ImportLine(line));
30
+ }
31
+ writeBody(writer) {
32
+ this.forEach(HeaderLine, line => line.writeBody(writer));
33
+ writer.println('');
34
+ this.forEach(ImportLine, line => line.writeBody(writer));
35
+ writer.println('');
36
+ super.writeBody(writer);
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlRGVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvbW9kdWxlRGVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUdsRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFNbEQsTUFBTSxVQUFXLFNBQVEsZUFBZTtJQUNwQyxZQUFvQixJQUFXO1FBQzNCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQURNLFNBQUksR0FBSixJQUFJLENBQU87SUFFL0IsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzdCLENBQUM7Q0FDSjtBQUNELE1BQU0sVUFBVyxTQUFRLGVBQWU7SUFDcEMsWUFBb0IsSUFBVztRQUMzQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFETSxTQUFJLEdBQUosSUFBSSxDQUFPO0lBRS9CLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBYztRQUNwQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLE1BQU8sU0FBUSxZQUFZO0lBRXBDO1FBQ0ksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFXO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVc7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0oifQ==
@@ -0,0 +1,18 @@
1
+ import { ClassDef } from "./classDef.class";
2
+ import { InterfaceDef } from "./interfaceDef.class";
3
+ import { ObjectDef } from "./objectDef.class";
4
+ import { Writer } from "../writer.class";
5
+ import { AbstractContainerElement } from "./abstractContainerElement";
6
+ import { ContainerElement } from "./containerElement.class";
7
+ import { Arguments } from "../arguments.class";
8
+ import { TypeDef } from "./typeDef.class";
9
+ export declare class NamespaceDef extends AbstractContainerElement implements ContainerElement {
10
+ constructor(name: string);
11
+ nestedContainer(name: string, configure: (def: ContainerElement) => void): ContainerElement;
12
+ defineInterface(name: string, configure?: (def: InterfaceDef) => void): InterfaceDef;
13
+ defineType(name: string, value: string): TypeDef;
14
+ defineClass(name: string, args: Arguments, configure?: (def: ClassDef) => void): ClassDef;
15
+ createObject(name: string, configure?: (def: ObjectDef) => void): ObjectDef;
16
+ createFunction(name: string, args: Arguments, returnType: string, bodyContent: (def: Writer) => void): void;
17
+ writeBody(writer: Writer): void;
18
+ }
@@ -0,0 +1,60 @@
1
+ import { ClassDef } from "./classDef.class";
2
+ import { InterfaceDef } from "./interfaceDef.class";
3
+ import { ObjectDef } from "./objectDef.class";
4
+ import { AbstractContainerElement } from "./abstractContainerElement";
5
+ import { FunctionDef } from "./functionDef.class";
6
+ import { TypeDef } from "./typeDef.class";
7
+ export class NamespaceDef extends AbstractContainerElement {
8
+ constructor(name) {
9
+ super(name);
10
+ }
11
+ nestedContainer(name, configure) {
12
+ return this.addElement(new NamespaceDef(name), configure);
13
+ }
14
+ defineInterface(name, configure) {
15
+ return this.addElement(new InterfaceDef(name), configure);
16
+ }
17
+ defineType(name, value) {
18
+ return this.addElement(new TypeDef(name, value));
19
+ }
20
+ defineClass(name, args, configure) {
21
+ return this.addElement(new ClassDef(name, args), configure);
22
+ }
23
+ createObject(name, configure) {
24
+ return this.addElement(new ObjectDef(name), configure);
25
+ }
26
+ createFunction(name, args, returnType, bodyContent) {
27
+ this.addElement(new FunctionDef(name, args, returnType, bodyContent));
28
+ }
29
+ writeBody(writer) {
30
+ this.forEach(TypeDef, def => {
31
+ writer.println(`export type ${def.name} = ${def.value};`);
32
+ });
33
+ this.forEach(InterfaceDef, def => {
34
+ writer.println(`export interface ${def.name} {`);
35
+ writer.indent(writer => def.writeBody(writer));
36
+ writer.println('}');
37
+ });
38
+ this.forEach(ClassDef, def => {
39
+ writer.println(`export class ${def.name} {`);
40
+ writer.indent(writer => def.writeBody(writer));
41
+ writer.println('}');
42
+ });
43
+ this.forEach(FunctionDef, def => {
44
+ writer.println(`export function ${def.name}(${def.args.asParameterDeclaration()}):${def.returnType} {`);
45
+ writer.indent(writer => def.writeBody(writer));
46
+ writer.println('}');
47
+ });
48
+ this.forEach(ObjectDef, def => {
49
+ writer.println(`export const ${def.name} = {`);
50
+ writer.indent(writer => def.writeBody(writer));
51
+ writer.println(`}${def.asTypeDecl()};`);
52
+ });
53
+ this.forEach(NamespaceDef, def => {
54
+ writer.println(`export namespace ${def.name} {`);
55
+ writer.indent(writer => def.writeBody(writer));
56
+ writer.println('}');
57
+ });
58
+ }
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlRGVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvbmFtZXNwYWNlRGVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFeEMsTUFBTSxPQUFPLFlBQWEsU0FBUSx3QkFBd0I7SUFFdEQsWUFBWSxJQUFZO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVksRUFBRSxTQUEwQztRQUNwRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZLEVBQUUsU0FBdUM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWSxFQUFFLEtBQVk7UUFDakMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWSxFQUFFLElBQWUsRUFBRSxTQUFtQztRQUMxRSxPQUFPLElB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
@@ -0,0 +1,24 @@
1
+ import { Writer } from "../writer.class";
2
+ import { ContainerElement } from "./containerElement.class";
3
+ import { AbstractContainerElement } from "./abstractContainerElement";
4
+ import { InterfaceDef } from "./interfaceDef.class";
5
+ import { ClassDef } from "./classDef.class";
6
+ import { Arguments } from "../arguments.class";
7
+ import { NamespaceDef } from "./namespaceDef.class";
8
+ import { TypeDef } from "./typeDef.class";
9
+ export declare class ObjectDef extends AbstractContainerElement implements ContainerElement {
10
+ private _typeName;
11
+ constructor(name: string);
12
+ asType(typeName: string): this;
13
+ typeName(): string;
14
+ nestedContainer(name: string, configure: (context: ContainerElement) => void): void;
15
+ defineInterface(name: string, configure: (def: InterfaceDef) => void): InterfaceDef;
16
+ defineClass(name: string, args: Arguments, configure: (def: ClassDef) => void): ClassDef;
17
+ defineType(name: string, value: string): TypeDef;
18
+ createObject(name: string, configure: (def: ObjectDef) => void): ObjectDef;
19
+ createFunction(name: string, args: Arguments, returnType: string, bodyContent: (def: Writer) => void): void;
20
+ protected nearestNamespace(): NamespaceDef;
21
+ protected fqName(rawName: string): string;
22
+ asTypeDecl(): string;
23
+ writeBody(writer: Writer): void;
24
+ }