@coolon/i18n-resource-generator 3.2.3 → 3.2.4

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 (186) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/main/lib/arg.js +28 -0
  3. package/build/{module/lib/arguments.class.d.ts → main/lib/arguments.d.ts} +1 -1
  4. package/build/main/lib/arguments.js +66 -0
  5. package/build/main/lib/ast/abstractContainerElement.d.ts +2 -2
  6. package/build/main/lib/ast/abstractElement.d.ts +2 -2
  7. package/build/main/lib/ast/{classDef.class.d.ts → classDef.d.ts} +2 -2
  8. package/build/main/lib/ast/classDef.js +26 -0
  9. package/build/main/lib/ast/{containerElement.class.d.ts → containerElement.d.ts} +7 -7
  10. package/build/main/lib/ast/containerElement.js +3 -0
  11. package/build/{module/lib/ast/element.class.d.ts → main/lib/ast/element.d.ts} +1 -1
  12. package/build/main/lib/ast/element.js +3 -0
  13. package/build/{module/lib/ast/functionDef.class.d.ts → main/lib/ast/functionDef.d.ts} +2 -2
  14. package/build/main/lib/ast/functionDef.js +17 -0
  15. package/build/main/lib/ast/{interfaceDef.class.d.ts → interfaceDef.d.ts} +2 -2
  16. package/build/main/lib/ast/interfaceDef.js +28 -0
  17. package/build/{module/lib/ast/jsonModule.class.d.ts → main/lib/ast/jsonModule.d.ts} +2 -2
  18. package/build/main/lib/ast/jsonModule.js +22 -0
  19. package/build/{module/lib/ast/moduleDef.class.d.ts → main/lib/ast/moduleDef.d.ts} +2 -2
  20. package/build/main/lib/ast/moduleDef.js +43 -0
  21. package/build/main/lib/ast/{namespaceDef.class.d.ts → namespaceDef.d.ts} +7 -7
  22. package/build/main/lib/ast/namespaceDef.js +71 -0
  23. package/build/main/lib/ast/{objectDef.class.d.ts → objectDef.d.ts} +7 -7
  24. package/build/main/lib/ast/objectDef.js +86 -0
  25. package/build/{module/lib/ast/statementDef.class.d.ts → main/lib/ast/statementDef.d.ts} +1 -1
  26. package/build/main/lib/ast/statementDef.js +15 -0
  27. package/build/main/lib/ast/{tempContainer.class.d.ts → tempContainer.d.ts} +1 -1
  28. package/build/main/lib/ast/tempContainer.js +13 -0
  29. package/build/main/lib/ast/{typeDef.class.d.ts → typeDef.d.ts} +1 -1
  30. package/build/main/lib/ast/{typeDef.class.js → typeDef.js} +1 -1
  31. package/build/main/lib/constructor.js +3 -0
  32. package/build/main/lib/customTextArrayNode.d.ts +2 -2
  33. package/build/main/lib/customTextArrayNode.js +6 -6
  34. package/build/main/lib/customTextNode.d.ts +2 -2
  35. package/build/main/lib/customTextNode.js +6 -6
  36. package/build/main/lib/{customTypeArrayNode.class.d.ts → customTypeArrayNode.d.ts} +3 -3
  37. package/build/main/lib/customTypeArrayNode.js +23 -0
  38. package/build/main/lib/{customTypeNode.class.d.ts → customTypeNode.d.ts} +2 -2
  39. package/build/main/lib/customTypeNode.js +50 -0
  40. package/build/main/lib/emptyTextNode.d.ts +10 -0
  41. package/build/main/lib/emptyTextNode.js +46 -0
  42. package/build/main/lib/enumEntryNode.d.ts +5 -3
  43. package/build/main/lib/enumEntryNode.js +27 -8
  44. package/build/main/lib/{enumNode.class.d.ts → enumNode.d.ts} +3 -3
  45. package/build/main/lib/enumNode.js +124 -0
  46. package/build/main/lib/i18nGenerator.d.ts +1 -1
  47. package/build/main/lib/i18nGenerator.js +16 -16
  48. package/build/main/lib/{i18nNode.class.d.ts → i18nNode.d.ts} +5 -5
  49. package/build/main/lib/i18nNode.js +188 -0
  50. package/build/main/lib/index.d.ts +25 -25
  51. package/build/main/lib/index.js +26 -26
  52. package/build/main/lib/leafNode.d.ts +4 -0
  53. package/build/main/lib/leafNode.js +8 -0
  54. package/build/{module/lib/namespaceNode.class.d.ts → main/lib/namespaceNode.d.ts} +2 -2
  55. package/build/main/lib/namespaceNode.js +17 -0
  56. package/build/main/lib/nullNode.d.ts +10 -0
  57. package/build/main/lib/nullNode.js +43 -0
  58. package/build/main/lib/{rootNode.class.d.ts → rootNode..d.ts} +2 -2
  59. package/build/main/lib/rootNode..js +89 -0
  60. package/build/main/lib/{textArrayNode.class.d.ts → textArrayNode.d.ts} +3 -3
  61. package/build/main/lib/{textArrayNode.class.js → textArrayNode.js} +5 -5
  62. package/build/main/lib/{textNode.class.d.ts → textNode.d.ts} +6 -5
  63. package/build/main/lib/textNode.js +158 -0
  64. package/build/main/lib/{valueNode.class.d.ts → valueNode.d.ts} +2 -2
  65. package/build/main/lib/valueNode.js +60 -0
  66. package/build/main/lib/writer.js +30 -0
  67. package/build/module/lib/arg.js +24 -0
  68. package/build/{main/lib/arguments.class.d.ts → module/lib/arguments.d.ts} +1 -1
  69. package/build/module/lib/arguments.js +62 -0
  70. package/build/module/lib/ast/abstractContainerElement.d.ts +2 -2
  71. package/build/module/lib/ast/abstractElement.d.ts +2 -2
  72. package/build/module/lib/ast/{classDef.class.d.ts → classDef.d.ts} +2 -2
  73. package/build/module/lib/ast/classDef.js +22 -0
  74. package/build/module/lib/ast/{containerElement.class.d.ts → containerElement.d.ts} +7 -7
  75. package/build/module/lib/ast/containerElement.js +2 -0
  76. package/build/{main/lib/ast/element.class.d.ts → module/lib/ast/element.d.ts} +1 -1
  77. package/build/module/lib/ast/element.js +2 -0
  78. package/build/{main/lib/ast/functionDef.class.d.ts → module/lib/ast/functionDef.d.ts} +2 -2
  79. package/build/module/lib/ast/functionDef.js +13 -0
  80. package/build/module/lib/ast/{interfaceDef.class.d.ts → interfaceDef.d.ts} +2 -2
  81. package/build/module/lib/ast/interfaceDef.js +24 -0
  82. package/build/{main/lib/ast/jsonModule.class.d.ts → module/lib/ast/jsonModule.d.ts} +2 -2
  83. package/build/module/lib/ast/jsonModule.js +18 -0
  84. package/build/{main/lib/ast/moduleDef.class.d.ts → module/lib/ast/moduleDef.d.ts} +2 -2
  85. package/build/module/lib/ast/moduleDef.js +39 -0
  86. package/build/module/lib/ast/{namespaceDef.class.d.ts → namespaceDef.d.ts} +7 -7
  87. package/build/module/lib/ast/namespaceDef.js +67 -0
  88. package/build/module/lib/ast/{objectDef.class.d.ts → objectDef.d.ts} +7 -7
  89. package/build/module/lib/ast/objectDef.js +63 -0
  90. package/build/{main/lib/ast/statementDef.class.d.ts → module/lib/ast/statementDef.d.ts} +1 -1
  91. package/build/module/lib/ast/statementDef.js +11 -0
  92. package/build/module/lib/ast/{tempContainer.class.d.ts → tempContainer.d.ts} +1 -1
  93. package/build/module/lib/ast/tempContainer.js +9 -0
  94. package/build/module/lib/ast/{typeDef.class.d.ts → typeDef.d.ts} +1 -1
  95. package/build/module/lib/ast/typeDef.js +11 -0
  96. package/build/module/lib/constructor.js +2 -0
  97. package/build/module/lib/customTextArrayNode.d.ts +2 -2
  98. package/build/module/lib/customTextArrayNode.js +3 -3
  99. package/build/module/lib/customTextNode.d.ts +2 -2
  100. package/build/module/lib/customTextNode.js +3 -3
  101. package/build/module/lib/{customTypeArrayNode.class.d.ts → customTypeArrayNode.d.ts} +3 -3
  102. package/build/module/lib/customTypeArrayNode.js +19 -0
  103. package/build/module/lib/{customTypeNode.class.d.ts → customTypeNode.d.ts} +2 -2
  104. package/build/module/lib/customTypeNode.js +46 -0
  105. package/build/module/lib/emptyTextNode.d.ts +10 -0
  106. package/build/module/lib/emptyTextNode.js +23 -0
  107. package/build/module/lib/enumEntryNode.d.ts +5 -3
  108. package/build/module/lib/enumEntryNode.js +25 -6
  109. package/build/module/lib/{enumNode.class.d.ts → enumNode.d.ts} +3 -3
  110. package/build/module/lib/enumNode.js +101 -0
  111. package/build/module/lib/i18nGenerator.d.ts +1 -1
  112. package/build/module/lib/i18nGenerator.js +11 -11
  113. package/build/module/lib/{i18nNode.class.d.ts → i18nNode.d.ts} +5 -5
  114. package/build/module/lib/i18nNode.js +162 -0
  115. package/build/module/lib/index.d.ts +25 -25
  116. package/build/module/lib/index.js +26 -26
  117. package/build/module/lib/leafNode.d.ts +4 -0
  118. package/build/module/lib/leafNode.js +4 -0
  119. package/build/{main/lib/namespaceNode.class.d.ts → module/lib/namespaceNode.d.ts} +2 -2
  120. package/build/module/lib/namespaceNode.js +13 -0
  121. package/build/module/lib/nullNode.d.ts +10 -0
  122. package/build/module/lib/nullNode.js +20 -0
  123. package/build/module/lib/{rootNode.class.d.ts → rootNode..d.ts} +2 -2
  124. package/build/module/lib/rootNode..js +85 -0
  125. package/build/module/lib/{textArrayNode.class.d.ts → textArrayNode.d.ts} +3 -3
  126. package/build/module/lib/textArrayNode.js +26 -0
  127. package/build/module/lib/{textNode.class.d.ts → textNode.d.ts} +6 -5
  128. package/build/module/lib/textNode.js +132 -0
  129. package/build/module/lib/{valueNode.class.d.ts → valueNode.d.ts} +2 -2
  130. package/build/module/lib/valueNode.js +37 -0
  131. package/build/module/lib/writer.js +26 -0
  132. package/package.json +3 -2
  133. package/build/main/lib/arg.class.js +0 -28
  134. package/build/main/lib/arguments.class.js +0 -66
  135. package/build/main/lib/ast/classDef.class.js +0 -26
  136. package/build/main/lib/ast/containerElement.class.js +0 -3
  137. package/build/main/lib/ast/element.class.js +0 -3
  138. package/build/main/lib/ast/functionDef.class.js +0 -17
  139. package/build/main/lib/ast/interfaceDef.class.js +0 -28
  140. package/build/main/lib/ast/jsonModule.class.js +0 -22
  141. package/build/main/lib/ast/moduleDef.class.js +0 -43
  142. package/build/main/lib/ast/namespaceDef.class.js +0 -71
  143. package/build/main/lib/ast/objectDef.class.js +0 -86
  144. package/build/main/lib/ast/statementDef.class.js +0 -15
  145. package/build/main/lib/ast/tempContainer.class.js +0 -13
  146. package/build/main/lib/constructor.class.js +0 -3
  147. package/build/main/lib/customTypeArrayNode.class.js +0 -23
  148. package/build/main/lib/customTypeNode.class.js +0 -48
  149. package/build/main/lib/enumNode.class.js +0 -117
  150. package/build/main/lib/i18nNode.class.js +0 -188
  151. package/build/main/lib/namespaceNode.class.js +0 -17
  152. package/build/main/lib/rootNode.class.js +0 -89
  153. package/build/main/lib/textNode.class.js +0 -155
  154. package/build/main/lib/valueNode.class.js +0 -60
  155. package/build/main/lib/writer.class.js +0 -30
  156. package/build/module/lib/arg.class.js +0 -24
  157. package/build/module/lib/arguments.class.js +0 -62
  158. package/build/module/lib/ast/classDef.class.js +0 -22
  159. package/build/module/lib/ast/containerElement.class.js +0 -2
  160. package/build/module/lib/ast/element.class.js +0 -2
  161. package/build/module/lib/ast/functionDef.class.js +0 -13
  162. package/build/module/lib/ast/interfaceDef.class.js +0 -24
  163. package/build/module/lib/ast/jsonModule.class.js +0 -18
  164. package/build/module/lib/ast/moduleDef.class.js +0 -39
  165. package/build/module/lib/ast/namespaceDef.class.js +0 -67
  166. package/build/module/lib/ast/objectDef.class.js +0 -63
  167. package/build/module/lib/ast/statementDef.class.js +0 -11
  168. package/build/module/lib/ast/tempContainer.class.js +0 -9
  169. package/build/module/lib/ast/typeDef.class.js +0 -11
  170. package/build/module/lib/constructor.class.js +0 -2
  171. package/build/module/lib/customTypeArrayNode.class.js +0 -19
  172. package/build/module/lib/customTypeNode.class.js +0 -44
  173. package/build/module/lib/enumNode.class.js +0 -94
  174. package/build/module/lib/i18nNode.class.js +0 -162
  175. package/build/module/lib/namespaceNode.class.js +0 -13
  176. package/build/module/lib/rootNode.class.js +0 -85
  177. package/build/module/lib/textArrayNode.class.js +0 -26
  178. package/build/module/lib/textNode.class.js +0 -129
  179. package/build/module/lib/valueNode.class.js +0 -37
  180. package/build/module/lib/writer.class.js +0 -26
  181. /package/build/main/lib/{arg.class.d.ts → arg.d.ts} +0 -0
  182. /package/build/main/lib/{constructor.class.d.ts → constructor.d.ts} +0 -0
  183. /package/build/main/lib/{writer.class.d.ts → writer.d.ts} +0 -0
  184. /package/build/module/lib/{arg.class.d.ts → arg.d.ts} +0 -0
  185. /package/build/module/lib/{constructor.class.d.ts → constructor.d.ts} +0 -0
  186. /package/build/module/lib/{writer.class.d.ts → writer.d.ts} +0 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.TextNode = void 0;
26
+ const format_message_parse_1 = __importDefault(require("format-message-parse"));
27
+ const _ = __importStar(require("lodash"));
28
+ const arg_1 = require("./arg");
29
+ const leafNode_1 = require("./leafNode");
30
+ // the result is an array. <message_container> = <message_part>[]
31
+ // <message_part> == string | [argument_element]
32
+ // <argument_element> =
33
+ // ["<argName>"] OR
34
+ // ["<argName>", "<argFormat>"] OR
35
+ // ["<argName>", "<argFormat>", "<formatOptions>"] for argFormat == date|time|number
36
+ // ["<argName>", "<argFormat>", {option_a: <message_container>, option_b: <message_container>, other: <messsage_container>] for argFormat == select, plural
37
+ //
38
+ class TextNode extends leafNode_1.LeafNode {
39
+ static matches(name, yamlData) {
40
+ return _.isString(yamlData);
41
+ }
42
+ parse(data) {
43
+ this.text = data;
44
+ try {
45
+ this.messageSchema = format_message_parse_1.default(this.text);
46
+ this.scanContainer(this.messageSchema);
47
+ }
48
+ catch (e) {
49
+ throw new Error(`Invalid message format ${this.key}=${data} -> ${e.message}`);
50
+ }
51
+ }
52
+ generateApi(container) {
53
+ // TODO: Make this take the args as an interface so callers use it like I18n.hello({name: 'World'}) with type safety.
54
+ container.createFunction(this.name.asJsIdentifier, this.getArgs(), 'string', out => {
55
+ this.createFunctionBody(out);
56
+ });
57
+ }
58
+ generateMessageBundle(parent, include) {
59
+ parent[this.name.asJsIdentifier] = include === 'text' ? this.text : this.key;
60
+ }
61
+ createFunctionBody(out) {
62
+ out.println(`try {`);
63
+ out.indent(out => {
64
+ out.println(`const translation = _activeBundle.${this.key};`);
65
+ out.println(`if ((isEmpty(translation) && !isNumber(translation)) || isNaN(translation)) {`);
66
+ out.indent(out => {
67
+ out.println(`return "missing key " + "${this.key}";`);
68
+ });
69
+ out.println('} else { ');
70
+ out.indent(out => {
71
+ if (this.getArgs().any()) {
72
+ out.println(`return new MessageFormat(translation, _locale).format(${this.getArgs().asArgsObject()});`);
73
+ }
74
+ else {
75
+ out.println(`return translation;`);
76
+ }
77
+ });
78
+ out.println('}');
79
+ });
80
+ out.println(`} catch (error) { `);
81
+ out.indent(out => {
82
+ out.println(`return "missing key " + "${this.key}";`);
83
+ });
84
+ out.println(`}`);
85
+ }
86
+ valueString(value) {
87
+ return `"${value}"`;
88
+ }
89
+ scanContainer(elements) {
90
+ elements.forEach(element => {
91
+ if (_.isArray(element)) {
92
+ this.createArgument(element);
93
+ }
94
+ });
95
+ }
96
+ scanFormatOptions(options) {
97
+ _.forOwn(options, (val, key) => {
98
+ this.scanContainer(val);
99
+ });
100
+ }
101
+ createArgument(messagePart) {
102
+ const [argName, argType] = messagePart;
103
+ if (argName == '#') {
104
+ return;
105
+ }
106
+ // console.log(`createArgument -> ${JSON.stringify(messagePart)}`)
107
+ switch (argType) {
108
+ case 'number':
109
+ this.addArgument(new arg_1.Arg(argName, 'number'));
110
+ break;
111
+ case 'date':
112
+ this.addArgument(new arg_1.Arg(argName, 'Date'));
113
+ break;
114
+ case 'time':
115
+ this.addArgument(new arg_1.Arg(argName, 'Time'));
116
+ break;
117
+ case 'plural':
118
+ this.addArgument(new arg_1.Arg(argName, 'number'));
119
+ // console.log(`plural bits: ${JSON.stringify(messagePart[3])}`);
120
+ this.scanFormatOptions(messagePart[3]);
121
+ break;
122
+ case 'select':
123
+ const formatOptions = messagePart[2];
124
+ this.createSelectArgument(argName, formatOptions);
125
+ // console.log(`select bits: ${JSON.stringify(formatOptions)}`);
126
+ this.scanFormatOptions(formatOptions);
127
+ break;
128
+ default:
129
+ // the arg been used with no type, so we only add it if it hasn't
130
+ // already been defined.
131
+ if (!this.getArgs().contains(argName)) {
132
+ this.addArgument(new arg_1.Arg(argName, 'string'));
133
+ }
134
+ break;
135
+ }
136
+ }
137
+ createSelectArgument(name, formatOptions) {
138
+ // check if it's a boolean option.
139
+ const arg = new arg_1.Arg(name, 'string');
140
+ const options = Object.keys(formatOptions);
141
+ if (options.length == 2) {
142
+ const optionName = formatOptions[options[0]] == 'other' ? options[1] : options[0];
143
+ this.addArgument(arg.asBooleanOptionNamed(optionName));
144
+ }
145
+ else {
146
+ this.addArgument(arg);
147
+ }
148
+ }
149
+ addArgument(arg) {
150
+ // console.log(`addArgument -> ${JSON.stringify(arg)}`);
151
+ this.getArgs().add(arg);
152
+ }
153
+ returnType() {
154
+ return "string";
155
+ }
156
+ }
157
+ exports.TextNode = TextNode;
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RleHROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRkFBc0Q7QUFDdEQsMENBQTRCO0FBQzVCLCtCQUE0QjtBQUk1Qix5Q0FBc0M7QUFJdEMsaUVBQWlFO0FBQ2pFLGdEQUFnRDtBQUNoRCx1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLHFDQUFxQztBQUNyQyx1RkFBdUY7QUFDdkYsOEpBQThKO0FBQzlKLEVBQUU7QUFHRixNQUFhLFFBQVMsU0FBUSxtQkFBUTtJQUtwQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxRQUFhO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQWMsQ0FBQztRQUMzQixJQUFJO1lBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBRyw4QkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDeEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUEyQjtRQUNyQyxxSEFBcUg7UUFDckgsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxH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
@@ -1,5 +1,5 @@
1
- import { ContainerElement } from './ast/containerElement.class';
2
- import { I18nNode } from './i18nNode.class';
1
+ import { ContainerElement } from './ast/containerElement';
2
+ import { I18nNode } from './i18nNode';
3
3
  import { NodeName } from './nodeName';
4
4
  export declare class ValueNode extends I18nNode {
5
5
  private data;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ValueNode = void 0;
23
+ const _ = __importStar(require("lodash"));
24
+ const arguments_1 = require("./arguments");
25
+ const i18nNode_1 = require("./i18nNode");
26
+ class ValueNode extends i18nNode_1.I18nNode {
27
+ static matches(name, yamlData) {
28
+ return this.isValue(yamlData) || (_.isArray(yamlData) && _.reject(yamlData, entry => this.isValue(entry)).length == 0);
29
+ }
30
+ static isValue(thing) {
31
+ return _.isBoolean(thing) || _.isNumber(thing) || _.isNil(thing);
32
+ }
33
+ // constructor(parent: Node, private name: String, private children: any) {
34
+ // super(parent);
35
+ // }
36
+ parse(data) {
37
+ this.data = data;
38
+ }
39
+ generateApi(out) {
40
+ out.createFunction(this.name.asJsIdentifier, arguments_1.Arguments.empty(), this.returnType(), out => {
41
+ if (_.isArray(this.data)) {
42
+ out.println(` return [${this.data.map(d => this.valueString(d)).join(', ')}];`);
43
+ }
44
+ else {
45
+ out.println(` return ${this.valueString(this.data)};`);
46
+ }
47
+ });
48
+ }
49
+ returnType() {
50
+ return _.isArray(this.data) ? `${this.valueType(this.data[0])}[]` : this.valueType(this.data);
51
+ }
52
+ valueType(value) {
53
+ return _.isNil(value) ? 'string' : typeof value;
54
+ }
55
+ valueString(value) {
56
+ return value;
57
+ }
58
+ }
59
+ exports.ValueNode = ValueNode;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92YWx1ZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUE0QjtBQUM1QiwyQ0FBd0M7QUFHeEMseUNBQXNDO0FBR3RDLE1BQWEsU0FBVSxTQUFRLG1CQUFRO0lBR3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLFFBQWE7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBVTtRQUN2QixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCwyRUFBMkU7SUFDM0UscUJBQXFCO0lBQ3JCLElBQUk7SUFFSixLQUFLLENBQUMsSUFBUztRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBcUI7UUFFL0IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxxQkFBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUN2RixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuRjtpQkFBTTtnQkFDTCxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzFEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUF6Q0QsOEJBeUNDIn0=
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RootWriter = void 0;
4
+ class RootWriter {
5
+ constructor() {
6
+ this.lines = [];
7
+ }
8
+ println(it) {
9
+ this.lines.push(it);
10
+ }
11
+ indent(func) {
12
+ func(new ChildWriter(this));
13
+ }
14
+ toString() {
15
+ return this.lines.join('\n');
16
+ }
17
+ }
18
+ exports.RootWriter = RootWriter;
19
+ class ChildWriter {
20
+ constructor(parent) {
21
+ this.parent = parent;
22
+ }
23
+ println(it) {
24
+ return this.parent.println(' ' + it);
25
+ }
26
+ indent(func) {
27
+ func(new ChildWriter(this));
28
+ }
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsTUFBYSxVQUFVO0lBQXZCO1FBQ1UsVUFBSyxHQUFhLEVBQUUsQ0FBQztJQWEvQixDQUFDO0lBWEMsT0FBTyxDQUFDLEVBQVU7UUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE4QjtRQUNuQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBZEQsZ0NBY0M7QUFFRCxNQUFNLFdBQVc7SUFFZixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUE4QjtRQUNuQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLEdBQUc7SUFPWixZQUFZLElBQVcsRUFBRSxJQUFXO1FBRWhDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFFLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sT0FBTyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIn0=
@@ -1,4 +1,4 @@
1
- import { Arg } from './arg.class';
1
+ import { Arg } from './arg';
2
2
  export declare class Arguments {
3
3
  static createSingle(name: string, type: string): Arguments;
4
4
  static createAll(def: {
@@ -0,0 +1,62 @@
1
+ import { Arg } from './arg';
2
+ export class Arguments {
3
+ constructor(args) {
4
+ this.args = args || [];
5
+ }
6
+ static createSingle(name, type) {
7
+ return new Arguments([new Arg(name, type)]);
8
+ }
9
+ static createAll(def) {
10
+ const args = new Arguments();
11
+ for (let key in def) {
12
+ args.add(new Arg(key, def[key]));
13
+ }
14
+ return args;
15
+ }
16
+ static empty() {
17
+ return emptyArgs;
18
+ }
19
+ add(arg) {
20
+ if (this.canAdd(arg)) {
21
+ this.args.push(arg);
22
+ }
23
+ }
24
+ asParameterDeclaration() {
25
+ return this.args.map(arg => `${arg.argName}:${arg.argType}`).join(', ');
26
+ }
27
+ asConstructorParameters(visibility = 'protected') {
28
+ return this.args.map(arg => `${visibility} ${arg.argName}:${arg.argType}`).join(', ');
29
+ }
30
+ asArgsObject() {
31
+ return `{${this.args.map(arg => `'${arg.formatName}':${arg.formatValue}`).join(', ')}}`;
32
+ }
33
+ asArray() {
34
+ return this.args;
35
+ }
36
+ merge(other) {
37
+ other.args.forEach(arg => this.add(arg));
38
+ }
39
+ any() {
40
+ return this.args.length > 0;
41
+ }
42
+ canAdd(arg) {
43
+ const existing = this.args.find(it => it.argName === arg.argName);
44
+ if (existing && existing.argType !== arg.argType) {
45
+ throw new Error(`arg with the same name and different type exists. Exiting arg is ${existing.argName}:${existing.argType}, other type is ${arg.argName}:${arg.argType}`);
46
+ }
47
+ return !existing;
48
+ }
49
+ contains(argName) {
50
+ return !!this.args.find(arg => arg.argName === argName);
51
+ }
52
+ }
53
+ class EmptyArgs extends Arguments {
54
+ constructor() {
55
+ super([]);
56
+ }
57
+ merge(other) {
58
+ throw new Error(`'illegal state, can't call Arguments.empty().merge()`);
59
+ }
60
+ }
61
+ const emptyArgs = new EmptyArgs();
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcmd1bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1QixNQUFNLE9BQU8sU0FBUztJQW9CcEIsWUFBWSxJQUFZO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBcEJELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDNUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBOEI7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUM3QixLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDVixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBUUQsR0FBRyxDQUFDLEdBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxhQUFpRCxXQUFXO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMxRixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWdCO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxHQUFRO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sbUJBQW1CLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDMUs7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBWTtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBRUQsTUFBTSxTQUFVLFNBQVEsU0FBUztJQUMvQjtRQUNFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLENBQUM7SUFHRCxLQUFLLENBQUMsS0FBZ0I7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQUVELE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUMifQ==
@@ -1,6 +1,6 @@
1
- import { Constructor } from '../constructor.class';
1
+ import { Constructor } from '../constructor';
2
2
  import { AbstractElement } from './abstractElement';
3
- import { Element } from './element.class';
3
+ import { Element } from './element';
4
4
  export declare abstract class AbstractContainerElement extends AbstractElement {
5
5
  private children;
6
6
  addElement<T extends Element>(child: T, func?: (def: T) => void): T;
@@ -1,5 +1,5 @@
1
- import { Writer } from '../writer.class';
2
- import { Element } from './element.class';
1
+ import { Writer } from '../writer';
2
+ import { Element } from './element';
3
3
  export declare abstract class AbstractElement implements Element {
4
4
  private readonly _name;
5
5
  private _parent;
@@ -1,5 +1,5 @@
1
- import { Writer } from "../writer.class";
2
- import { Arguments } from "../arguments.class";
1
+ import { Writer } from "../writer";
2
+ import { Arguments } from "../arguments";
3
3
  import { AbstractContainerElement } from "./abstractContainerElement";
4
4
  export declare class ClassDef extends AbstractContainerElement {
5
5
  readonly args: Arguments;
@@ -0,0 +1,22 @@
1
+ import { AbstractContainerElement } from "./abstractContainerElement";
2
+ import { FunctionDef } from "./functionDef";
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NEZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9jbGFzc0RlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE1BQU0sT0FBTyxRQUFTLFNBQVEsd0JBQXdCO0lBRWxELFlBQVksSUFBVyxFQUFrQixJQUFjO1FBQ25ELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUR5QixTQUFJLEdBQUosSUFBSSxDQUFVO0lBRXZELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWSxFQUFFLElBQWUsRUFBRSxVQUFrQixFQUFFLFdBQWtDO1FBQ2hHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFFcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2RjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztZQUN4RixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0NBQ0oifQ==
@@ -1,10 +1,10 @@
1
- import { Arguments } from '../arguments.class';
2
- import { Constructor } from '../constructor.class';
3
- import { Writer } from '../writer.class';
4
- import { ClassDef } from './classDef.class';
5
- import { Element } from './element.class';
6
- import { InterfaceDef } from './interfaceDef.class';
7
- import { ObjectDef } from './objectDef.class';
1
+ import { Arguments } from '../arguments';
2
+ import { Constructor } from '../constructor';
3
+ import { Writer } from '../writer';
4
+ import { ClassDef } from './classDef';
5
+ import { Element } from './element';
6
+ import { InterfaceDef } from './interfaceDef';
7
+ import { ObjectDef } from './objectDef';
8
8
  export interface ContainerElement extends Element {
9
9
  nestedContainer(name: string, configure: (context: ContainerElement) => void): void;
10
10
  createStatement(statement: string): void;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyRWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2NvbnRhaW5lckVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,4 +1,4 @@
1
- import { Writer } from '../writer.class';
1
+ import { Writer } from '../writer';
2
2
  export interface Element {
3
3
  readonly name: string;
4
4
  readonly fqNamespaceName: string;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2VsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,5 +1,5 @@
1
- import { Arguments } from '../arguments.class';
2
- import { Writer } from '../writer.class';
1
+ import { Arguments } from '../arguments';
2
+ import { Writer } from '../writer';
3
3
  import { AbstractElement } from './abstractElement';
4
4
  export declare class FunctionDef extends AbstractElement {
5
5
  readonly args: Arguments;
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25EZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FzdC9mdW5jdGlvbkRlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQzlDLFlBQVksSUFBWSxFQUNJLElBQWUsRUFDZixVQUFrQixFQUNsQixVQUFpQztRQUMzRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFIYyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUF1QjtJQUU3RCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBRUYifQ==
@@ -1,5 +1,5 @@
1
- import { Writer } from '../writer.class';
2
- import { Arguments } from '../arguments.class';
1
+ import { Writer } from '../writer';
2
+ import { Arguments } from '../arguments';
3
3
  import { AbstractContainerElement } from './abstractContainerElement';
4
4
  export declare class InterfaceDef extends AbstractContainerElement {
5
5
  constructor(name: string);
@@ -0,0 +1,24 @@
1
+ import { FunctionDef } from './functionDef';
2
+ import { AbstractContainerElement } from './abstractContainerElement';
3
+ import { ObjectDef } from './objectDef';
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
+ }
12
+ createObject(name, type) {
13
+ this.addElement(new ObjectDef(name).asType(type || 'any'));
14
+ }
15
+ writeBody(writer) {
16
+ this.forEach(FunctionDef, def => {
17
+ writer.println(`${def.name}(${def.args.asParameterDeclaration()}):${def.returnType};`);
18
+ });
19
+ this.forEach(ObjectDef, def => {
20
+ writer.println(`${def.name}:${def.typeName()};`);
21
+ });
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlRGVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvaW50ZXJmYWNlRGVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxNQUFNLE9BQU8sWUFBYSxTQUFRLHdCQUF3QjtJQUV4RCxZQUFZLElBQVk7UUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBZSxFQUFFLFVBQWtCO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRTtRQUN4RSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3pGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiJ9
@@ -1,5 +1,5 @@
1
- import { Writer } from '../writer.class';
2
- import { ObjectDef } from './objectDef.class';
1
+ import { Writer } from '../writer';
2
+ import { ObjectDef } from './objectDef';
3
3
  export declare class JsonModule extends ObjectDef {
4
4
  private rootObject;
5
5
  constructor();
@@ -0,0 +1,18 @@
1
+ import { ObjectDef } from './objectDef';
2
+ export class JsonModule extends ObjectDef {
3
+ constructor() {
4
+ super('');
5
+ }
6
+ defineObject(callback) {
7
+ this.rootObject = new JsonModule();
8
+ callback(this.rootObject);
9
+ }
10
+ writeBody(writer) {
11
+ writer.println(`{`);
12
+ writer.indent(w => {
13
+ super.writeBody(w);
14
+ });
15
+ writer.println(`}`);
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbk1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXN0L2pzb25Nb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxNQUFNLE9BQU8sVUFBVyxTQUFRLFNBQVM7SUFHdkM7UUFDRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWtDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNuQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztDQUNGIn0=
@@ -1,5 +1,5 @@
1
- import { Writer } from '../writer.class';
2
- import { NamespaceDef } from './namespaceDef.class';
1
+ import { Writer } from '../writer';
2
+ import { NamespaceDef } from './namespaceDef';
3
3
  export declare class Module extends NamespaceDef {
4
4
  constructor();
5
5
  addHeader(line: string): void;
@@ -0,0 +1,39 @@
1
+ import { AbstractElement } from './abstractElement';
2
+ import { NamespaceDef } from './namespaceDef';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlRGVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9hc3QvbW9kdWxlRGVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxVQUFXLFNBQVEsZUFBZTtJQUN0QyxZQUFvQixJQUFZO1FBQzlCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQURRLFNBQUksR0FBSixJQUFJLENBQVE7SUFFaEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVyxTQUFRLGVBQWU7SUFDdEMsWUFBb0IsSUFBWTtRQUM5QixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFEUSxTQUFJLEdBQUosSUFBSSxDQUFRO0lBRWhDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLE1BQU8sU0FBUSxZQUFZO0lBRXRDO1FBQ0UsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBYztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBQ0YifQ==
@@ -1,11 +1,11 @@
1
- import { Arguments } from '../arguments.class';
2
- import { Writer } from '../writer.class';
1
+ import { Arguments } from '../arguments';
2
+ import { Writer } from '../writer';
3
3
  import { AbstractContainerElement } from './abstractContainerElement';
4
- import { ClassDef } from './classDef.class';
5
- import { ContainerElement } from './containerElement.class';
6
- import { InterfaceDef } from './interfaceDef.class';
7
- import { ObjectDef } from './objectDef.class';
8
- import { TypeDef } from './typeDef.class';
4
+ import { ClassDef } from './classDef';
5
+ import { ContainerElement } from './containerElement';
6
+ import { InterfaceDef } from './interfaceDef';
7
+ import { ObjectDef } from './objectDef';
8
+ import { TypeDef } from './typeDef';
9
9
  export declare class NamespaceDef extends AbstractContainerElement implements ContainerElement {
10
10
  constructor(name: string);
11
11
  nestedContainer(name: string, configure: (def: ContainerElement) => void): ContainerElement;