@goast/typescript 0.0.5 → 0.2.0

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 (217) hide show
  1. package/assets/{service → client}/angular/request-builder.ts +6 -2
  2. package/assets/client/fetch/{url-builder.ts → fetch-client.utils.ts} +15 -0
  3. package/assets/stubs/easy-network-stub/easy-network-stub.utils.ts +235 -0
  4. package/cjs/lib/ast/_index.js +108 -0
  5. package/cjs/lib/ast/common.js +2 -0
  6. package/cjs/lib/ast/index.js +5 -0
  7. package/cjs/lib/ast/node.js +10 -0
  8. package/cjs/lib/ast/nodes/argument.js +20 -0
  9. package/cjs/lib/ast/nodes/array-type.js +27 -0
  10. package/cjs/lib/ast/nodes/arrow-function.js +51 -0
  11. package/cjs/lib/ast/nodes/call.js +26 -0
  12. package/cjs/lib/ast/nodes/class.js +70 -0
  13. package/cjs/lib/ast/nodes/constructor-parameter.js +46 -0
  14. package/cjs/lib/ast/nodes/constructor.js +42 -0
  15. package/cjs/lib/ast/nodes/decorator.js +38 -0
  16. package/cjs/lib/ast/nodes/doc-tag.js +64 -0
  17. package/cjs/lib/ast/nodes/doc.js +57 -0
  18. package/cjs/lib/ast/nodes/enum-value.js +35 -0
  19. package/cjs/lib/ast/nodes/enum.js +46 -0
  20. package/cjs/lib/ast/nodes/export.js +27 -0
  21. package/cjs/lib/ast/nodes/function-type.js +35 -0
  22. package/cjs/lib/ast/nodes/function.js +60 -0
  23. package/cjs/lib/ast/nodes/generic-parameter.js +40 -0
  24. package/cjs/lib/ast/nodes/indexer.js +32 -0
  25. package/cjs/lib/ast/nodes/interface.js +60 -0
  26. package/cjs/lib/ast/nodes/intersection-type.js +44 -0
  27. package/cjs/lib/ast/nodes/lookup-type.js +30 -0
  28. package/cjs/lib/ast/nodes/method.js +82 -0
  29. package/cjs/lib/ast/nodes/object-type.js +24 -0
  30. package/cjs/lib/ast/nodes/object.js +24 -0
  31. package/cjs/lib/ast/nodes/parameter.js +45 -0
  32. package/cjs/lib/ast/nodes/property-accessor.js +128 -0
  33. package/cjs/lib/ast/nodes/property.js +119 -0
  34. package/cjs/lib/ast/nodes/reference.js +63 -0
  35. package/cjs/lib/ast/nodes/string.js +30 -0
  36. package/cjs/lib/ast/nodes/tuple.js +28 -0
  37. package/cjs/lib/ast/nodes/type-alias.js +36 -0
  38. package/cjs/lib/ast/nodes/typeof.js +23 -0
  39. package/cjs/lib/ast/nodes/types.js +2 -0
  40. package/cjs/lib/ast/nodes/union-type.js +44 -0
  41. package/cjs/lib/ast/nodes/variable.js +38 -0
  42. package/cjs/lib/ast/references/angular.js +12 -0
  43. package/cjs/lib/ast/references/easy-network-stub.js +8 -0
  44. package/cjs/lib/ast/references/index.js +7 -0
  45. package/cjs/lib/ast/references/rxjs.js +9 -0
  46. package/cjs/lib/ast/references/typescript.js +33 -0
  47. package/cjs/lib/ast/utils/get-type-script-builder-options.js +19 -0
  48. package/cjs/lib/ast/utils/to-ts-node.js +24 -0
  49. package/cjs/lib/ast/utils/write-ts-generic-parameters.js +11 -0
  50. package/cjs/lib/ast/utils/write-ts-members.js +18 -0
  51. package/cjs/lib/ast/utils/write-ts-nodes.js +24 -0
  52. package/cjs/lib/ast/utils/write-ts-parameters.js +14 -0
  53. package/cjs/lib/config.js +5 -3
  54. package/cjs/lib/file-builder.js +45 -202
  55. package/cjs/lib/generators/file-generator.js +2 -18
  56. package/cjs/lib/generators/index.js +1 -0
  57. package/cjs/lib/generators/models/model-generator.js +144 -205
  58. package/cjs/lib/generators/models/models-generator.js +12 -26
  59. package/cjs/lib/generators/models/models.js +1 -1
  60. package/cjs/lib/generators/services/angular-services/angular-service-generator.js +183 -306
  61. package/cjs/lib/generators/services/angular-services/angular-services-generator.js +168 -76
  62. package/cjs/lib/generators/services/angular-services/models.js +10 -1
  63. package/cjs/lib/generators/services/angular-services/refs.js +24 -0
  64. package/cjs/lib/generators/services/easy-network-stub/easy-network-stub-generator.js +169 -0
  65. package/cjs/lib/generators/services/easy-network-stub/easy-network-stubs-generator.js +73 -0
  66. package/cjs/lib/generators/services/easy-network-stub/index.js +6 -0
  67. package/cjs/lib/generators/services/easy-network-stub/models.js +10 -0
  68. package/cjs/lib/generators/services/easy-network-stub/refs.js +21 -0
  69. package/cjs/lib/generators/services/fetch-clients/fetch-client-generator.js +121 -181
  70. package/cjs/lib/generators/services/fetch-clients/fetch-clients-generator.js +5 -1
  71. package/cjs/lib/generators/services/fetch-clients/refs.js +17 -0
  72. package/cjs/lib/import-collection.js +18 -19
  73. package/esm/lib/ast/_index.js +37 -0
  74. package/esm/lib/ast/common.js +1 -0
  75. package/esm/lib/ast/index.js +2 -0
  76. package/esm/lib/ast/node.js +6 -0
  77. package/esm/lib/ast/nodes/argument.js +16 -0
  78. package/esm/lib/ast/nodes/array-type.js +23 -0
  79. package/esm/lib/ast/nodes/arrow-function.js +47 -0
  80. package/esm/lib/ast/nodes/call.js +22 -0
  81. package/esm/lib/ast/nodes/class.js +66 -0
  82. package/esm/lib/ast/nodes/constructor-parameter.js +42 -0
  83. package/esm/lib/ast/nodes/constructor.js +38 -0
  84. package/esm/lib/ast/nodes/decorator.js +34 -0
  85. package/esm/lib/ast/nodes/doc-tag.js +60 -0
  86. package/esm/lib/ast/nodes/doc.js +53 -0
  87. package/esm/lib/ast/nodes/enum-value.js +31 -0
  88. package/esm/lib/ast/nodes/enum.js +42 -0
  89. package/esm/lib/ast/nodes/export.js +22 -0
  90. package/esm/lib/ast/nodes/function-type.js +31 -0
  91. package/esm/lib/ast/nodes/function.js +56 -0
  92. package/esm/lib/ast/nodes/generic-parameter.js +36 -0
  93. package/esm/lib/ast/nodes/indexer.js +28 -0
  94. package/esm/lib/ast/nodes/interface.js +56 -0
  95. package/esm/lib/ast/nodes/intersection-type.js +40 -0
  96. package/esm/lib/ast/nodes/lookup-type.js +26 -0
  97. package/esm/lib/ast/nodes/method.js +77 -0
  98. package/esm/lib/ast/nodes/object-type.js +20 -0
  99. package/esm/lib/ast/nodes/object.js +20 -0
  100. package/esm/lib/ast/nodes/parameter.js +41 -0
  101. package/esm/lib/ast/nodes/property-accessor.js +121 -0
  102. package/esm/lib/ast/nodes/property.js +113 -0
  103. package/esm/lib/ast/nodes/reference.js +59 -0
  104. package/esm/lib/ast/nodes/string.js +26 -0
  105. package/esm/lib/ast/nodes/tuple.js +24 -0
  106. package/esm/lib/ast/nodes/type-alias.js +32 -0
  107. package/esm/lib/ast/nodes/typeof.js +18 -0
  108. package/esm/lib/ast/nodes/types.js +1 -0
  109. package/esm/lib/ast/nodes/union-type.js +40 -0
  110. package/esm/lib/ast/nodes/variable.js +34 -0
  111. package/esm/lib/ast/references/angular.js +9 -0
  112. package/esm/lib/ast/references/easy-network-stub.js +5 -0
  113. package/esm/lib/ast/references/index.js +5 -0
  114. package/esm/lib/ast/references/rxjs.js +6 -0
  115. package/esm/lib/ast/references/typescript.js +30 -0
  116. package/esm/lib/ast/utils/get-type-script-builder-options.js +15 -0
  117. package/esm/lib/ast/utils/to-ts-node.js +20 -0
  118. package/esm/lib/ast/utils/write-ts-generic-parameters.js +7 -0
  119. package/esm/lib/ast/utils/write-ts-members.js +14 -0
  120. package/esm/lib/ast/utils/write-ts-nodes.js +19 -0
  121. package/esm/lib/ast/utils/write-ts-parameters.js +10 -0
  122. package/esm/lib/config.js +5 -3
  123. package/esm/lib/file-builder.js +44 -202
  124. package/esm/lib/generators/file-generator.js +2 -18
  125. package/esm/lib/generators/index.js +1 -0
  126. package/esm/lib/generators/models/model-generator.js +149 -210
  127. package/esm/lib/generators/models/models-generator.js +15 -29
  128. package/esm/lib/generators/models/models.js +1 -1
  129. package/esm/lib/generators/services/angular-services/angular-service-generator.js +186 -309
  130. package/esm/lib/generators/services/angular-services/angular-services-generator.js +170 -78
  131. package/esm/lib/generators/services/angular-services/models.js +10 -1
  132. package/esm/lib/generators/services/angular-services/refs.js +20 -0
  133. package/esm/lib/generators/services/easy-network-stub/easy-network-stub-generator.js +165 -0
  134. package/esm/lib/generators/services/easy-network-stub/easy-network-stubs-generator.js +69 -0
  135. package/esm/lib/generators/services/easy-network-stub/index.js +3 -0
  136. package/esm/lib/generators/services/easy-network-stub/models.js +7 -0
  137. package/esm/lib/generators/services/easy-network-stub/refs.js +17 -0
  138. package/esm/lib/generators/services/fetch-clients/fetch-client-generator.js +123 -183
  139. package/esm/lib/generators/services/fetch-clients/fetch-clients-generator.js +5 -1
  140. package/esm/lib/generators/services/fetch-clients/refs.js +13 -0
  141. package/esm/lib/import-collection.js +17 -18
  142. package/package.json +6 -6
  143. package/types/lib/ast/_index.d.ts +38 -0
  144. package/types/lib/ast/common.d.ts +1 -0
  145. package/types/lib/ast/index.d.ts +1 -0
  146. package/types/lib/ast/node.d.ts +4 -0
  147. package/types/lib/ast/nodes/argument.d.ts +17 -0
  148. package/types/lib/ast/nodes/array-type.d.ts +19 -0
  149. package/types/lib/ast/nodes/arrow-function.d.ts +29 -0
  150. package/types/lib/ast/nodes/call.d.ts +20 -0
  151. package/types/lib/ast/nodes/class.d.ts +41 -0
  152. package/types/lib/ast/nodes/constructor-parameter.d.ts +19 -0
  153. package/types/lib/ast/nodes/constructor.d.ts +25 -0
  154. package/types/lib/ast/nodes/decorator.d.ts +22 -0
  155. package/types/lib/ast/nodes/doc-tag.d.ts +73 -0
  156. package/types/lib/ast/nodes/doc.d.ts +28 -0
  157. package/types/lib/ast/nodes/enum-value.d.ts +21 -0
  158. package/types/lib/ast/nodes/enum.d.ts +26 -0
  159. package/types/lib/ast/nodes/export.d.ts +19 -0
  160. package/types/lib/ast/nodes/function-type.d.ts +23 -0
  161. package/types/lib/ast/nodes/function.d.ts +35 -0
  162. package/types/lib/ast/nodes/generic-parameter.d.ts +25 -0
  163. package/types/lib/ast/nodes/indexer.d.ts +23 -0
  164. package/types/lib/ast/nodes/interface.d.ts +36 -0
  165. package/types/lib/ast/nodes/intersection-type.d.ts +17 -0
  166. package/types/lib/ast/nodes/lookup-type.d.ts +19 -0
  167. package/types/lib/ast/nodes/method.d.ts +45 -0
  168. package/types/lib/ast/nodes/object-type.d.ts +20 -0
  169. package/types/lib/ast/nodes/object.d.ts +19 -0
  170. package/types/lib/ast/nodes/parameter.d.ts +28 -0
  171. package/types/lib/ast/nodes/property-accessor.d.ts +53 -0
  172. package/types/lib/ast/nodes/property.d.ts +84 -0
  173. package/types/lib/ast/nodes/reference.d.ts +46 -0
  174. package/types/lib/ast/nodes/string.d.ts +18 -0
  175. package/types/lib/ast/nodes/tuple.d.ts +17 -0
  176. package/types/lib/ast/nodes/type-alias.d.ts +27 -0
  177. package/types/lib/ast/nodes/typeof.d.ts +18 -0
  178. package/types/lib/ast/nodes/types.d.ts +18 -0
  179. package/types/lib/ast/nodes/union-type.d.ts +17 -0
  180. package/types/lib/ast/nodes/variable.d.ts +28 -0
  181. package/types/lib/ast/references/angular.d.ts +37 -0
  182. package/types/lib/ast/references/easy-network-stub.d.ts +26 -0
  183. package/types/lib/ast/references/index.d.ts +3 -0
  184. package/types/lib/ast/references/rxjs.d.ts +30 -0
  185. package/types/lib/ast/references/typescript.d.ts +133 -0
  186. package/types/lib/ast/utils/get-type-script-builder-options.d.ts +3 -0
  187. package/types/lib/ast/utils/to-ts-node.d.ts +8 -0
  188. package/types/lib/ast/utils/write-ts-generic-parameters.d.ts +3 -0
  189. package/types/lib/ast/utils/write-ts-members.d.ts +5 -0
  190. package/types/lib/ast/utils/write-ts-nodes.d.ts +6 -0
  191. package/types/lib/ast/utils/write-ts-parameters.d.ts +3 -0
  192. package/types/lib/common-results.d.ts +4 -0
  193. package/types/lib/config.d.ts +5 -2
  194. package/types/lib/file-builder.d.ts +21 -98
  195. package/types/lib/generators/file-generator.d.ts +3 -7
  196. package/types/lib/generators/index.d.ts +1 -0
  197. package/types/lib/generators/models/model-generator.d.ts +18 -23
  198. package/types/lib/generators/models/models-generator.d.ts +4 -5
  199. package/types/lib/generators/models/models.d.ts +4 -4
  200. package/types/lib/generators/services/angular-services/angular-service-generator.d.ts +15 -35
  201. package/types/lib/generators/services/angular-services/angular-services-generator.d.ts +12 -10
  202. package/types/lib/generators/services/angular-services/models.d.ts +67 -22
  203. package/types/lib/generators/services/angular-services/refs.d.ts +34 -0
  204. package/types/lib/generators/services/easy-network-stub/easy-network-stub-generator.d.ts +32 -0
  205. package/types/lib/generators/services/easy-network-stub/easy-network-stubs-generator.d.ts +25 -0
  206. package/types/lib/generators/services/easy-network-stub/index.d.ts +3 -0
  207. package/types/lib/generators/services/easy-network-stub/models.d.ts +51 -0
  208. package/types/lib/generators/services/easy-network-stub/refs.d.ts +49 -0
  209. package/types/lib/generators/services/fetch-clients/fetch-client-generator.d.ts +10 -22
  210. package/types/lib/generators/services/fetch-clients/models.d.ts +4 -1
  211. package/types/lib/generators/services/fetch-clients/refs.d.ts +23 -0
  212. package/types/lib/import-collection.d.ts +13 -5
  213. package/assets/client/fetch/types.ts +0 -14
  214. package/assets/service/angular/api-configuration.ts +0 -18
  215. package/assets/service/angular/base-service.ts +0 -29
  216. package/assets/service/angular/response-handlers.ts +0 -127
  217. package/assets/service/angular/strict-http-response.ts +0 -8
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsMethod = exports.createMethod = exports.TsMethod = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const decorator_1 = require("./decorator");
6
+ const doc_1 = require("./doc");
7
+ const generic_parameter_1 = require("./generic-parameter");
8
+ const object_1 = require("./object");
9
+ const parameter_1 = require("./parameter");
10
+ const node_1 = require("../node");
11
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
12
+ class TsMethod extends node_1.TsNode {
13
+ constructor(options) {
14
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
15
+ super(options);
16
+ this.doc = (_a = options.doc) !== null && _a !== void 0 ? _a : null;
17
+ this.decorators = (_c = (_b = options.decorators) === null || _b === void 0 ? void 0 : _b.filter(core_1.notNullish)) !== null && _c !== void 0 ? _c : [];
18
+ this.accessModifier = (_d = options.accessModifier) !== null && _d !== void 0 ? _d : null;
19
+ this.static = (_e = options.static) !== null && _e !== void 0 ? _e : false;
20
+ this.abstract = (_f = options.abstract) !== null && _f !== void 0 ? _f : false;
21
+ this.override = (_g = options.override) !== null && _g !== void 0 ? _g : false;
22
+ this.name = options.name;
23
+ this.optional = (_h = options.optional) !== null && _h !== void 0 ? _h : false;
24
+ this.generics = (_k = (_j = options.generics) === null || _j === void 0 ? void 0 : _j.filter(core_1.notNullish)) !== null && _k !== void 0 ? _k : [];
25
+ this.parameters = (_m = (_l = options.parameters) === null || _l === void 0 ? void 0 : _l.filter(core_1.notNullish)) !== null && _m !== void 0 ? _m : [];
26
+ this.returnType = (_o = options.returnType) !== null && _o !== void 0 ? _o : null;
27
+ this.body = (_p = options.body) !== null && _p !== void 0 ? _p : null;
28
+ }
29
+ onWrite(builder) {
30
+ const isInObjectDeclaration = this.getParentNode(builder) instanceof object_1.TsObject;
31
+ builder.append(this.inject.beforeDoc);
32
+ doc_1.tsDoc.write(builder, doc_1.tsDoc.get(this.doc, { generics: this.generics, parameters: this.parameters }));
33
+ builder.append(this.inject.afterDoc);
34
+ builder.append(this.inject.beforeDecorators);
35
+ decorator_1.tsDecorator.write(builder, this.decorators, { multiline: true });
36
+ builder.append(this.inject.afterDecorators);
37
+ builder.append(this.inject.beforeModifiers);
38
+ if (this.accessModifier)
39
+ builder.append(this.accessModifier, ' ');
40
+ if (this.static)
41
+ builder.append('static ');
42
+ if (this.abstract)
43
+ builder.append('abstract ');
44
+ if (this.override)
45
+ builder.append('override ');
46
+ builder.append(this.inject.afterModifiers);
47
+ builder.append(this.inject.beforeName, this.name, this.inject.afterName);
48
+ if (this.optional)
49
+ builder.append('?');
50
+ builder.append(this.inject.beforeGenerics);
51
+ generic_parameter_1.tsGenericParameter.write(builder, this.generics);
52
+ builder.append(this.inject.afterGenerics);
53
+ builder.append(this.inject.beforeParams);
54
+ parameter_1.tsParameter.write(builder, this.parameters);
55
+ builder.append(this.inject.afterParams);
56
+ if (this.returnType) {
57
+ builder.append(': ');
58
+ builder.append(this.inject.beforeReturnType);
59
+ (0, write_ts_nodes_1.writeTsNode)(builder, this.returnType);
60
+ builder.append(this.inject.afterReturnType);
61
+ }
62
+ if (this.body) {
63
+ builder.append(' ');
64
+ builder.append(this.inject.beforeBody);
65
+ builder.parenthesize('{}', this.body, { multiline: !!this.body });
66
+ builder.append(this.inject.afterBody);
67
+ }
68
+ else if (!isInObjectDeclaration) {
69
+ builder.append(';');
70
+ }
71
+ if (isInObjectDeclaration) {
72
+ builder.append(',');
73
+ }
74
+ builder.appendLine();
75
+ }
76
+ }
77
+ exports.TsMethod = TsMethod;
78
+ const createMethod = (name, options) => new TsMethod(Object.assign(Object.assign({}, options), { name }));
79
+ exports.createMethod = createMethod;
80
+ exports.tsMethod = Object.assign(exports.createMethod, {
81
+ write: write_ts_nodes_1.writeTsNodes,
82
+ });
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsObjectType = exports.TsObjectType = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const node_1 = require("../node");
6
+ const write_ts_members_1 = require("../utils/write-ts-members");
7
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
8
+ class TsObjectType extends node_1.TsNode {
9
+ constructor(options) {
10
+ var _a, _b;
11
+ super(options);
12
+ this.members = (_b = (_a = options.members) === null || _a === void 0 ? void 0 : _a.filter(core_1.notNullish)) !== null && _b !== void 0 ? _b : [];
13
+ }
14
+ onWrite(builder) {
15
+ builder.parenthesize('{}', (b) => {
16
+ (0, write_ts_members_1.writeTsMembers)(b, this.members);
17
+ }, { multiline: this.members.length > 0 });
18
+ }
19
+ }
20
+ exports.TsObjectType = TsObjectType;
21
+ const createObjectType = (options) => new TsObjectType(options !== null && options !== void 0 ? options : {});
22
+ exports.tsObjectType = Object.assign(createObjectType, {
23
+ write: write_ts_nodes_1.writeTsNodes,
24
+ });
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsObject = exports.TsObject = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const node_1 = require("../node");
6
+ const write_ts_members_1 = require("../utils/write-ts-members");
7
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
8
+ class TsObject extends node_1.TsNode {
9
+ constructor(options) {
10
+ var _a, _b;
11
+ super(options);
12
+ this.members = (_b = (_a = options.members) === null || _a === void 0 ? void 0 : _a.filter(core_1.notNullish)) !== null && _b !== void 0 ? _b : [];
13
+ }
14
+ onWrite(builder) {
15
+ builder.parenthesize('{}', (b) => {
16
+ (0, write_ts_members_1.writeTsMembers)(b, this.members);
17
+ }, { multiline: this.members.length > 0 });
18
+ }
19
+ }
20
+ exports.TsObject = TsObject;
21
+ const createObject = (options) => new TsObject(options !== null && options !== void 0 ? options : {});
22
+ exports.tsObject = Object.assign(createObject, {
23
+ write: write_ts_nodes_1.writeTsNodes,
24
+ });
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsParameter = exports.TsParameter = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const decorator_1 = require("./decorator");
6
+ const node_1 = require("../node");
7
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
8
+ const write_ts_parameters_1 = require("../utils/write-ts-parameters");
9
+ class TsParameter extends node_1.TsNode {
10
+ constructor(options) {
11
+ var _a, _b, _c, _d, _e, _f;
12
+ super(options);
13
+ this.name = options.name;
14
+ this.description = (_a = options.description) !== null && _a !== void 0 ? _a : null;
15
+ this.decorators = (_c = (_b = options.decorators) === null || _b === void 0 ? void 0 : _b.filter(core_1.notNullish)) !== null && _c !== void 0 ? _c : [];
16
+ this.type = (_d = options.type) !== null && _d !== void 0 ? _d : null;
17
+ this.optional = (_e = options.optional) !== null && _e !== void 0 ? _e : false;
18
+ this.default = (_f = options.default) !== null && _f !== void 0 ? _f : null;
19
+ }
20
+ onWrite(builder) {
21
+ builder.append(this.inject.beforeDecorators);
22
+ decorator_1.tsDecorator.write(builder, this.decorators);
23
+ builder.append(this.inject.afterDecorators);
24
+ builder.append(this.inject.beforeName, this.name, this.inject.afterName);
25
+ if (this.optional)
26
+ builder.append('?');
27
+ if (this.type) {
28
+ builder.append(': ');
29
+ builder.append(this.inject.beforeType);
30
+ (0, write_ts_nodes_1.writeTsNode)(builder, this.type);
31
+ builder.append(this.inject.afterType);
32
+ }
33
+ if (this.default) {
34
+ builder.append(' = ');
35
+ builder.append(this.inject.beforeDefault);
36
+ (0, write_ts_nodes_1.writeTsNode)(builder, this.default);
37
+ builder.append(this.inject.afterDefault);
38
+ }
39
+ }
40
+ }
41
+ exports.TsParameter = TsParameter;
42
+ const createParameter = (name, options) => new TsParameter(Object.assign(Object.assign({}, options), { name }));
43
+ exports.tsParameter = Object.assign(createParameter, {
44
+ write: write_ts_parameters_1.writeTsParameters,
45
+ });
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPropertyGetter = exports.createPropertySetter = exports.TsPropertyGetter = exports.TsPropertySetter = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const decorator_1 = require("./decorator");
6
+ const doc_1 = require("./doc");
7
+ const node_1 = require("../node");
8
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
9
+ class TsPropertyAccessor extends node_1.TsNode {
10
+ get propertyName() {
11
+ var _a, _b, _c;
12
+ return (_c = (_b = (_a = this.property) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this._propertyName) !== null && _c !== void 0 ? _c : 'someProperty';
13
+ }
14
+ set propertyName(value) {
15
+ this._propertyName = value;
16
+ }
17
+ get type() {
18
+ var _a, _b;
19
+ return (_b = (_a = this.property) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : this._type;
20
+ }
21
+ set type(value) {
22
+ this._type = value;
23
+ }
24
+ get accessModifier() {
25
+ var _a, _b;
26
+ return (_b = (_a = this.property) === null || _a === void 0 ? void 0 : _a.accessModifier) !== null && _b !== void 0 ? _b : this._accessModifier;
27
+ }
28
+ set accessModifier(value) {
29
+ this._accessModifier = value;
30
+ }
31
+ get static() {
32
+ var _a, _b;
33
+ return (_b = (_a = this.property) === null || _a === void 0 ? void 0 : _a.static) !== null && _b !== void 0 ? _b : this._static;
34
+ }
35
+ set static(value) {
36
+ this._static = value;
37
+ }
38
+ get abstract() {
39
+ var _a, _b;
40
+ return (_b = (_a = this.property) === null || _a === void 0 ? void 0 : _a.abstract) !== null && _b !== void 0 ? _b : this._abstract;
41
+ }
42
+ set abstract(value) {
43
+ this._abstract = value;
44
+ }
45
+ get override() {
46
+ var _a, _b;
47
+ return (_b = (_a = this.property) === null || _a === void 0 ? void 0 : _a.override) !== null && _b !== void 0 ? _b : this._override;
48
+ }
49
+ set override(value) {
50
+ this._override = value;
51
+ }
52
+ constructor(options) {
53
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
54
+ super(options);
55
+ this._propertyName = (_a = options.propertyName) !== null && _a !== void 0 ? _a : null;
56
+ this.doc = (_b = options.doc) !== null && _b !== void 0 ? _b : null;
57
+ this._type = (_c = options.type) !== null && _c !== void 0 ? _c : null;
58
+ this.decorators = (_e = (_d = options.decorators) === null || _d === void 0 ? void 0 : _d.filter(core_1.notNullish)) !== null && _e !== void 0 ? _e : [];
59
+ this.body = (_f = options.body) !== null && _f !== void 0 ? _f : null;
60
+ this._accessModifier = (_g = options.accessModifier) !== null && _g !== void 0 ? _g : null;
61
+ this._static = (_h = options.static) !== null && _h !== void 0 ? _h : false;
62
+ this._abstract = (_j = options.abstract) !== null && _j !== void 0 ? _j : false;
63
+ this._override = (_k = options.override) !== null && _k !== void 0 ? _k : false;
64
+ }
65
+ }
66
+ class TsPropertySetter extends TsPropertyAccessor {
67
+ onWrite(builder) {
68
+ doc_1.tsDoc.write(builder, this.doc);
69
+ decorator_1.tsDecorator.write(builder, this.decorators);
70
+ if (this.accessModifier)
71
+ builder.append(this.accessModifier, ' ');
72
+ if (this.static)
73
+ builder.append('static ');
74
+ if (this.abstract)
75
+ builder.append('abstract ');
76
+ if (this.override)
77
+ builder.append('override ');
78
+ builder.append('set ', this.propertyName);
79
+ builder.parenthesize('()', (b) => {
80
+ b.append('value');
81
+ if (this.type !== null) {
82
+ b.append(': ');
83
+ (0, write_ts_nodes_1.writeTsNode)(b, this.type);
84
+ }
85
+ });
86
+ if (this.body !== null) {
87
+ builder.append(' ');
88
+ builder.parenthesize('{}', this.body, { multiline: true });
89
+ }
90
+ else {
91
+ builder.append(';');
92
+ }
93
+ builder.appendLine();
94
+ }
95
+ }
96
+ exports.TsPropertySetter = TsPropertySetter;
97
+ class TsPropertyGetter extends TsPropertyAccessor {
98
+ onWrite(builder) {
99
+ doc_1.tsDoc.write(builder, this.doc);
100
+ decorator_1.tsDecorator.write(builder, this.decorators);
101
+ if (this.accessModifier)
102
+ builder.append(this.accessModifier, ' ');
103
+ if (this.static)
104
+ builder.append('static ');
105
+ if (this.abstract)
106
+ builder.append('abstract ');
107
+ if (this.override)
108
+ builder.append('override ');
109
+ builder.append('get ', this.propertyName, '()');
110
+ if (this.type) {
111
+ builder.append(': ');
112
+ (0, write_ts_nodes_1.writeTsNode)(builder, this.type);
113
+ }
114
+ if (this.body !== null) {
115
+ builder.append(' ');
116
+ builder.parenthesize('{}', this.body, { multiline: true });
117
+ }
118
+ else {
119
+ builder.append(';');
120
+ }
121
+ builder.appendLine();
122
+ }
123
+ }
124
+ exports.TsPropertyGetter = TsPropertyGetter;
125
+ const createPropertySetter = (options) => new TsPropertySetter(options !== null && options !== void 0 ? options : {});
126
+ exports.createPropertySetter = createPropertySetter;
127
+ const createPropertyGetter = (options) => new TsPropertyGetter(options !== null && options !== void 0 ? options : {});
128
+ exports.createPropertyGetter = createPropertyGetter;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsProperty = exports.TsAccessorProperty = exports.TsSimpleProperty = exports.TsProperty = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const decorator_1 = require("./decorator");
6
+ const doc_1 = require("./doc");
7
+ const object_1 = require("./object");
8
+ const property_accessor_1 = require("./property-accessor");
9
+ const string_1 = require("./string");
10
+ const node_1 = require("../node");
11
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
12
+ class TsProperty extends node_1.TsNode {
13
+ constructor(options) {
14
+ var _a, _b, _c, _d, _e, _f, _g, _h;
15
+ super(options);
16
+ this.name = options.name;
17
+ this.doc = (_a = options.doc) !== null && _a !== void 0 ? _a : null;
18
+ this.decorators = (_c = (_b = options.decorators) === null || _b === void 0 ? void 0 : _b.filter(core_1.notNullish)) !== null && _c !== void 0 ? _c : [];
19
+ this.type = (_d = options.type) !== null && _d !== void 0 ? _d : null;
20
+ this.accessModifier = (_e = options.accessModifier) !== null && _e !== void 0 ? _e : null;
21
+ this.static = (_f = options.static) !== null && _f !== void 0 ? _f : null;
22
+ this.abstract = (_g = options.abstract) !== null && _g !== void 0 ? _g : null;
23
+ this.override = (_h = options.override) !== null && _h !== void 0 ? _h : null;
24
+ }
25
+ }
26
+ exports.TsProperty = TsProperty;
27
+ class TsSimpleProperty extends TsProperty {
28
+ constructor(options) {
29
+ var _a, _b, _c;
30
+ super(options);
31
+ this.value = (_a = options.value) !== null && _a !== void 0 ? _a : null;
32
+ this.readonly = (_b = options.readonly) !== null && _b !== void 0 ? _b : false;
33
+ this.optional = (_c = options.optional) !== null && _c !== void 0 ? _c : false;
34
+ }
35
+ onWrite(builder) {
36
+ const isInObjectDeclaration = this.getParentNode(builder) instanceof object_1.TsObject;
37
+ doc_1.tsDoc.write(builder, this.doc);
38
+ decorator_1.tsDecorator.write(builder, this.decorators);
39
+ if (this.accessModifier)
40
+ builder.append(this.accessModifier, ' ');
41
+ if (this.static)
42
+ builder.append('static ');
43
+ if (this.abstract)
44
+ builder.append('abstract ');
45
+ if (this.override)
46
+ builder.append('override ');
47
+ if (this.readonly)
48
+ builder.append('readonly ');
49
+ (0, write_ts_nodes_1.writeTsNode)(builder, /^([a-zA-Z_$][a-zA-Z_$0-9]*|[0-9]+)$/.test(this.name) ? this.name : (0, string_1.tsString)(this.name));
50
+ if (this.optional)
51
+ builder.append('?');
52
+ if (this.type && !isInObjectDeclaration) {
53
+ builder.append(': ');
54
+ (0, write_ts_nodes_1.writeTsNode)(builder, this.type);
55
+ }
56
+ if (this.value) {
57
+ builder.append(isInObjectDeclaration ? ': ' : ' = ');
58
+ (0, write_ts_nodes_1.writeTsNode)(builder, this.value);
59
+ }
60
+ builder.append(isInObjectDeclaration ? ',' : ';');
61
+ builder.appendLine();
62
+ }
63
+ }
64
+ exports.TsSimpleProperty = TsSimpleProperty;
65
+ class TsAccessorProperty extends TsProperty {
66
+ get get() {
67
+ return this._get;
68
+ }
69
+ set get(value) {
70
+ if (value) {
71
+ value['property'] = this;
72
+ }
73
+ if (this._get) {
74
+ this._get['property'] = undefined;
75
+ }
76
+ this._get = value;
77
+ }
78
+ get set() {
79
+ return this._set;
80
+ }
81
+ set set(value) {
82
+ if (value) {
83
+ value['property'] = this;
84
+ }
85
+ if (this._set) {
86
+ this._set['property'] = undefined;
87
+ }
88
+ this._set = value;
89
+ }
90
+ constructor(options) {
91
+ var _a, _b;
92
+ super(options);
93
+ this._get = null;
94
+ this._set = null;
95
+ this.get = (_a = options.get) !== null && _a !== void 0 ? _a : null;
96
+ this.set = (_b = options.set) !== null && _b !== void 0 ? _b : null;
97
+ }
98
+ onWrite(builder) {
99
+ builder.append((b) => doc_1.tsDoc.write(b, this.doc), (b) => decorator_1.tsDecorator.write(b, this.decorators));
100
+ if (this.get) {
101
+ this.get.write(builder);
102
+ }
103
+ if (this.set) {
104
+ this.set.write(builder);
105
+ }
106
+ }
107
+ }
108
+ exports.TsAccessorProperty = TsAccessorProperty;
109
+ const createProperty = (name, options) => {
110
+ if (options && ('get' in options || 'set' in options)) {
111
+ return new TsAccessorProperty(Object.assign(Object.assign({}, options), { name }));
112
+ }
113
+ return new TsSimpleProperty(Object.assign(Object.assign({}, options), { name }));
114
+ };
115
+ exports.tsProperty = Object.assign(createProperty, {
116
+ write: write_ts_nodes_1.writeTsNodes,
117
+ getter: property_accessor_1.createPropertyGetter,
118
+ setter: property_accessor_1.createPropertySetter,
119
+ });
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsReference = exports.TsReference = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const file_builder_1 = require("../../file-builder");
6
+ const node_1 = require("../node");
7
+ const write_ts_generic_parameters_1 = require("../utils/write-ts-generic-parameters");
8
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
9
+ class TsReference extends node_1.TsNode {
10
+ constructor(options) {
11
+ var _a, _b, _c;
12
+ super(options);
13
+ this.name = options.name;
14
+ this.moduleNameOrfilePath = (_a = options.moduleNameOrfilePath) !== null && _a !== void 0 ? _a : null;
15
+ this.generics = (_c = (_b = options.generics) === null || _b === void 0 ? void 0 : _b.filter(core_1.notNullish)) !== null && _c !== void 0 ? _c : [];
16
+ }
17
+ onWrite(builder) {
18
+ builder.append(this.name);
19
+ (0, write_ts_generic_parameters_1.writeTsGenericParameters)(builder, this.generics);
20
+ if (this.moduleNameOrfilePath) {
21
+ const handler = TsReference.addImportHandlers.find((h) => builder instanceof h.builderClass);
22
+ if (handler) {
23
+ handler.handler(builder, this);
24
+ }
25
+ }
26
+ }
27
+ static registerAddImportHandler(builderClass, handler) {
28
+ TsReference.addImportHandlers.push({ builderClass, handler });
29
+ }
30
+ }
31
+ exports.TsReference = TsReference;
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ TsReference.addImportHandlers = [
34
+ {
35
+ builderClass: file_builder_1.TypeScriptFileBuilder,
36
+ handler: (builder, reference) => builder.addImport(reference.name, reference.moduleNameOrfilePath),
37
+ },
38
+ ];
39
+ const createReference = (name, moduleNameOrfilePath, options) => new TsReference(Object.assign(Object.assign({}, options), { name, moduleNameOrfilePath }));
40
+ function _createFactory(name, moduleNameOrfilePath) {
41
+ return Object.assign(() => createReference(name, moduleNameOrfilePath), {
42
+ refName: name,
43
+ moduleNameOrfilePath,
44
+ });
45
+ }
46
+ function createFactory(name, moduleNameOrfilePath) {
47
+ return _createFactory(name, moduleNameOrfilePath);
48
+ }
49
+ function _createGenericFactory(name, moduleNameOrfilePath) {
50
+ return Object.assign((generics) => createReference(name, moduleNameOrfilePath, { generics }), {
51
+ refName: name,
52
+ moduleNameOrfilePath,
53
+ infer: () => createReference(name, moduleNameOrfilePath),
54
+ });
55
+ }
56
+ function createGenericFactory(name, moduleNameOrfilePath) {
57
+ return _createGenericFactory(name, moduleNameOrfilePath);
58
+ }
59
+ exports.tsReference = Object.assign(createReference, {
60
+ factory: createFactory,
61
+ genericFactory: createGenericFactory,
62
+ write: write_ts_nodes_1.writeTsNodes,
63
+ });
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsString = exports.TsString = void 0;
4
+ const node_1 = require("../node");
5
+ const get_type_script_builder_options_1 = require("../utils/get-type-script-builder-options");
6
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
7
+ class TsString extends node_1.TsNode {
8
+ constructor(options) {
9
+ var _a;
10
+ super(options);
11
+ this.value = options.value;
12
+ this.template = (_a = options.template) !== null && _a !== void 0 ? _a : false;
13
+ }
14
+ onWrite(builder) {
15
+ const builderOptions = (0, get_type_script_builder_options_1.getTypeScriptBuilderOptions)(builder);
16
+ let value = JSON.stringify(this.value);
17
+ if (this.template) {
18
+ value = `\`${value.slice(1, -1).replace(/`/g, '\\`')}\``;
19
+ }
20
+ else if (builderOptions.useSingleQuotes) {
21
+ value = `'${value.slice(1, -1).replace(/'/g, "\\'")}'`;
22
+ }
23
+ builder.append(value);
24
+ }
25
+ }
26
+ exports.TsString = TsString;
27
+ const createString = (value, options) => new TsString(Object.assign(Object.assign({}, options), { value }));
28
+ exports.tsString = Object.assign(createString, {
29
+ write: write_ts_nodes_1.writeTsNodes,
30
+ });
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsTuple = exports.TsTuple = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const node_1 = require("../node");
6
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
7
+ class TsTuple extends node_1.TsNode {
8
+ constructor(options) {
9
+ super(options);
10
+ this.elements = options.elements.filter(core_1.notNullish);
11
+ }
12
+ onWrite(builder) {
13
+ if (this.elements.length === 0) {
14
+ builder.append('[]');
15
+ }
16
+ else {
17
+ const multiline = this.elements.length > 3;
18
+ builder.parenthesize('[]', (b) => (0, write_ts_nodes_1.writeTsNodes)(b, this.elements, { separator: multiline ? ',\n' : ', ' }), {
19
+ multiline,
20
+ });
21
+ }
22
+ }
23
+ }
24
+ exports.TsTuple = TsTuple;
25
+ const createTuple = (elements, options) => new TsTuple(Object.assign(Object.assign({}, options), { elements }));
26
+ exports.tsTuple = Object.assign(createTuple, {
27
+ write: write_ts_nodes_1.writeTsNodes,
28
+ });
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsTypeAlias = exports.TsTypeAlias = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const generic_parameter_1 = require("./generic-parameter");
6
+ const node_1 = require("../node");
7
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
8
+ class TsTypeAlias extends node_1.TsNode {
9
+ constructor(options) {
10
+ var _a, _b, _c, _d;
11
+ super(options);
12
+ this.name = options.name;
13
+ this.doc = (_a = options.doc) !== null && _a !== void 0 ? _a : null;
14
+ this.generics = (_c = (_b = options.generics) === null || _b === void 0 ? void 0 : _b.filter(core_1.notNullish)) !== null && _c !== void 0 ? _c : [];
15
+ this.type = options.type;
16
+ this.export = (_d = options.export) !== null && _d !== void 0 ? _d : false;
17
+ }
18
+ onWrite(builder) {
19
+ if (this.export)
20
+ builder.append('export ');
21
+ builder.append('type ');
22
+ builder.append(this.name);
23
+ generic_parameter_1.tsGenericParameter.write(builder, this.generics);
24
+ builder.append(' = ');
25
+ builder.indent((b) => {
26
+ (0, write_ts_nodes_1.writeTsNode)(b, this.type);
27
+ });
28
+ builder.append(';');
29
+ builder.appendLine();
30
+ }
31
+ }
32
+ exports.TsTypeAlias = TsTypeAlias;
33
+ const createTypeAlias = (name, type, options) => new TsTypeAlias(Object.assign(Object.assign({}, options), { name, type }));
34
+ exports.tsTypeAlias = Object.assign(createTypeAlias, {
35
+ write: write_ts_nodes_1.writeTsNodes,
36
+ });
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsTypeof = exports.createTypeof = exports.TsTypeof = void 0;
4
+ const node_1 = require("../node");
5
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
6
+ class TsTypeof extends node_1.TsNode {
7
+ constructor(options) {
8
+ super(options);
9
+ this.value = options.value;
10
+ }
11
+ onWrite(builder) {
12
+ builder.append('typeof ');
13
+ builder.append(this.inject.beforeValue);
14
+ (0, write_ts_nodes_1.writeTsNode)(builder, this.value);
15
+ builder.append(this.inject.afterValue);
16
+ }
17
+ }
18
+ exports.TsTypeof = TsTypeof;
19
+ const createTypeof = (value, options) => new TsTypeof(Object.assign(Object.assign({}, options), { value }));
20
+ exports.createTypeof = createTypeof;
21
+ exports.tsTypeof = Object.assign(exports.createTypeof, {
22
+ write: write_ts_nodes_1.writeTsNodes,
23
+ });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsUnionType = exports.TsUnionType = void 0;
4
+ const core_1 = require("@goast/core");
5
+ const node_1 = require("../node");
6
+ const write_ts_nodes_1 = require("../utils/write-ts-nodes");
7
+ class TsUnionType extends node_1.TsNode {
8
+ constructor(options) {
9
+ super(options);
10
+ this.types = options.types.filter(core_1.notNullish);
11
+ }
12
+ onWrite(builder) {
13
+ const types = this.types.length === 0 ? ['never'] : resolveNestedUnionTypes(this);
14
+ if (types.length === 1) {
15
+ (0, write_ts_nodes_1.writeTsNode)(builder, types[0]);
16
+ }
17
+ else {
18
+ const multiline = types.length > 3;
19
+ if (multiline) {
20
+ builder.appendLine().append('| ');
21
+ }
22
+ builder.forEach(types, (b, t) => b.parenthesize('()', (b) => (0, write_ts_nodes_1.writeTsNode)(b, t)), {
23
+ separator: multiline ? '\n| ' : ' | ',
24
+ });
25
+ }
26
+ }
27
+ }
28
+ exports.TsUnionType = TsUnionType;
29
+ const createUnionType = (types, options) => new TsUnionType(Object.assign(Object.assign({}, options), { types }));
30
+ exports.tsUnionType = Object.assign(createUnionType, {
31
+ write: write_ts_nodes_1.writeTsNodes,
32
+ });
33
+ function resolveNestedUnionTypes(node) {
34
+ const types = [];
35
+ for (const type of node.types) {
36
+ if (type instanceof TsUnionType) {
37
+ types.push(...resolveNestedUnionTypes(type));
38
+ }
39
+ else {
40
+ types.push(type);
41
+ }
42
+ }
43
+ return types;
44
+ }