wormajs 0.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 (236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/dist/bin/actions.js +245 -0
  4. package/dist/bin/cli.js +27 -0
  5. package/dist/bin/progressRenderer.js +47 -0
  6. package/dist/bin/renderer.js +551 -0
  7. package/dist/bin/theme.js +26 -0
  8. package/dist/config.js +19 -0
  9. package/dist/constant.js +162 -0
  10. package/dist/core/WorkerPool.js +102 -0
  11. package/dist/core/loader/astLoader/generates/array.js +34 -0
  12. package/dist/core/loader/astLoader/generates/enum.js +61 -0
  13. package/dist/core/loader/astLoader/generates/group.js +41 -0
  14. package/dist/core/loader/astLoader/generates/index.js +71 -0
  15. package/dist/core/loader/astLoader/generates/interface.js +59 -0
  16. package/dist/core/loader/astLoader/generates/simple.js +67 -0
  17. package/dist/core/loader/astLoader/generates/tuple.js +54 -0
  18. package/dist/core/loader/astLoader/generates/type.js +2 -0
  19. package/dist/core/loader/astLoader/generates/utils.js +86 -0
  20. package/dist/core/loader/astLoader/helper.js +21 -0
  21. package/dist/core/loader/astLoader/index.js +24 -0
  22. package/dist/core/loader/astLoader/normalize/index.js +70 -0
  23. package/dist/core/loader/astLoader/normalize/normalizer.js +69 -0
  24. package/dist/core/loader/astLoader/normalize/rules/convertTypeArray.js +68 -0
  25. package/dist/core/loader/astLoader/normalize/rules/handleEmptyType.js +8 -0
  26. package/dist/core/loader/astLoader/normalize/rules/inferType.js +43 -0
  27. package/dist/core/loader/astLoader/normalize/rules/mergeAnyOf.js +45 -0
  28. package/dist/core/loader/astLoader/normalize/rules/normalizeCombiningKeywords.js +26 -0
  29. package/dist/core/loader/astLoader/normalize/rules/normalizeEnum.js +38 -0
  30. package/dist/core/loader/astLoader/normalize/rules/normalizeNullType.js +24 -0
  31. package/dist/core/loader/astLoader/normalize/rules/removeRedundantKeywords.js +27 -0
  32. package/dist/core/loader/astLoader/normalize/rules/simplifySingleType.js +8 -0
  33. package/dist/core/loader/astLoader/normalize/rules/validateSchema.js +14 -0
  34. package/dist/core/loader/astLoader/parsers/array.js +28 -0
  35. package/dist/core/loader/astLoader/parsers/enum.js +49 -0
  36. package/dist/core/loader/astLoader/parsers/forward/array.js +12 -0
  37. package/dist/core/loader/astLoader/parsers/forward/enum.js +10 -0
  38. package/dist/core/loader/astLoader/parsers/forward/group.js +12 -0
  39. package/dist/core/loader/astLoader/parsers/forward/index.js +20 -0
  40. package/dist/core/loader/astLoader/parsers/forward/object.js +12 -0
  41. package/dist/core/loader/astLoader/parsers/forward/tuple.js +11 -0
  42. package/dist/core/loader/astLoader/parsers/forward/type.js +2 -0
  43. package/dist/core/loader/astLoader/parsers/group.js +50 -0
  44. package/dist/core/loader/astLoader/parsers/index.js +66 -0
  45. package/dist/core/loader/astLoader/parsers/object.js +44 -0
  46. package/dist/core/loader/astLoader/parsers/reference.js +41 -0
  47. package/dist/core/loader/astLoader/parsers/simple.js +48 -0
  48. package/dist/core/loader/astLoader/parsers/tuple.js +36 -0
  49. package/dist/core/loader/astLoader/parsers/type.js +2 -0
  50. package/dist/core/loader/astLoader/parsers/utils.js +58 -0
  51. package/dist/core/loader/callingCodeLoader/helper.js +183 -0
  52. package/dist/core/loader/callingCodeLoader/index.js +40 -0
  53. package/dist/core/loader/index.js +20 -0
  54. package/dist/core/loader/schemaLoader/index.js +101 -0
  55. package/dist/core/loader/standardLoader/helper.js +142 -0
  56. package/dist/core/loader/standardLoader/index.js +38 -0
  57. package/dist/core/loader/standardLoader/standards.js +105 -0
  58. package/dist/core/parser/index.js +18 -0
  59. package/dist/core/parser/openApiParser/helper.js +165 -0
  60. package/dist/core/parser/openApiParser/index.js +14 -0
  61. package/dist/core/parser/templateParser/helper.js +333 -0
  62. package/dist/core/parser/templateParser/index.js +314 -0
  63. package/dist/core/workerPool/index.js +6 -0
  64. package/dist/core/workerPool/poolManager.js +45 -0
  65. package/dist/core/workerPool/swagger2Worker.js +24 -0
  66. package/dist/core/workerPool/worker.js +61 -0
  67. package/dist/createConfig.js +37 -0
  68. package/dist/defineConfig.js +6 -0
  69. package/dist/functions/getAutoTemplateType.js +37 -0
  70. package/dist/functions/getFrameworkTag.js +18 -0
  71. package/dist/functions/prepareConfig.js +41 -0
  72. package/dist/functions/readWormaRc.js +155 -0
  73. package/dist/functions/wormaJson.js +232 -0
  74. package/dist/generate.js +84 -0
  75. package/dist/helper/PluginDriver.js +98 -0
  76. package/dist/helper/comment.js +88 -0
  77. package/dist/helper/config/ConfigHelper.js +79 -0
  78. package/dist/helper/config/ConfigManager.js +88 -0
  79. package/dist/helper/config/GeneratorHelper.js +343 -0
  80. package/dist/helper/config/index.js +19 -0
  81. package/dist/helper/config/type.js +2 -0
  82. package/dist/helper/config/zType.js +170 -0
  83. package/dist/helper/document/index.js +160 -0
  84. package/dist/helper/index.js +23 -0
  85. package/dist/helper/logger/index.js +76 -0
  86. package/dist/helper/progress.js +66 -0
  87. package/dist/helper/template/index.js +475 -0
  88. package/dist/index.js +33 -0
  89. package/dist/plugins/createPlugin.js +30 -0
  90. package/dist/plugins/index.js +34 -0
  91. package/dist/plugins/presets/aiDoc.js +173 -0
  92. package/dist/plugins/presets/apifox.js +56 -0
  93. package/dist/plugins/presets/filterApi.js +129 -0
  94. package/dist/plugins/presets/importType.js +49 -0
  95. package/dist/plugins/presets/payloadModifier/hepler.js +195 -0
  96. package/dist/plugins/presets/payloadModifier/index.js +122 -0
  97. package/dist/plugins/presets/payloadModifier/type.js +2 -0
  98. package/dist/plugins/presets/platform.js +73 -0
  99. package/dist/plugins/presets/rename.js +209 -0
  100. package/dist/plugins/presets/tagModifier.js +104 -0
  101. package/dist/plugins/presets/utils.js +36 -0
  102. package/dist/readConfig.js +92 -0
  103. package/dist/resolveWorkspaces.js +83 -0
  104. package/dist/template/index.js +180 -0
  105. package/dist/template/presets/ai-doc/SKILL.md.handlebars +29 -0
  106. package/dist/template/presets/ai-doc/references/{tag}/{api}.md.handlebars +54 -0
  107. package/dist/template/presets/alova/common/#index.cjs.handlebars +12 -0
  108. package/dist/template/presets/alova/common/components.d.cts.handlebars +1 -0
  109. package/dist/template/presets/alova/common/helper.cjs.handlebars +13 -0
  110. package/dist/template/presets/alova/common/services/#index.cjs.handlebars +13 -0
  111. package/dist/template/presets/alova/common/services/{tag}.cjs.handlebars +28 -0
  112. package/dist/template/presets/alova/common/services/{tag}.d.cts.handlebars +15 -0
  113. package/dist/template/presets/alova/common/typed.d.cts.handlebars +1 -0
  114. package/dist/template/presets/alova/module/#index.js.handlebars +12 -0
  115. package/dist/template/presets/alova/module/components.d.ts.handlebars +1 -0
  116. package/dist/template/presets/alova/module/helper.js.handlebars +11 -0
  117. package/dist/template/presets/alova/module/services/#index.js.handlebars +9 -0
  118. package/dist/template/presets/alova/module/services/{tag}.d.ts.handlebars +15 -0
  119. package/dist/template/presets/alova/module/services/{tag}.js.handlebars +21 -0
  120. package/dist/template/presets/alova/module/typed.d.ts.handlebars +1 -0
  121. package/dist/template/presets/alova/partials/api-jsdoc.handlebars +44 -0
  122. package/dist/template/presets/alova/partials/build-payload-body.handlebars +22 -0
  123. package/dist/template/presets/alova/partials/comment.handlebars +19 -0
  124. package/dist/template/presets/alova/partials/components-body.handlebars +4 -0
  125. package/dist/template/presets/alova/partials/dts-extra-config.handlebars +8 -0
  126. package/dist/template/presets/alova/partials/dts-fn-declare.handlebars +1 -0
  127. package/dist/template/presets/alova/partials/extract-responded.handlebars +11 -0
  128. package/dist/template/presets/alova/partials/stateshook-import.handlebars +9 -0
  129. package/dist/template/presets/alova/partials/stateshook-option.handlebars +9 -0
  130. package/dist/template/presets/alova/partials/typed-body.handlebars +43 -0
  131. package/dist/template/presets/alova/typescript/#index.ts.handlebars +14 -0
  132. package/dist/template/presets/alova/typescript/components.d.ts.handlebars +1 -0
  133. package/dist/template/presets/alova/typescript/helper.ts.handlebars +9 -0
  134. package/dist/template/presets/alova/typescript/services/#index.ts.handlebars +9 -0
  135. package/dist/template/presets/alova/typescript/services/{tag}.ts.handlebars +35 -0
  136. package/dist/template/presets/alova/typescript/typed.ts.handlebars +1 -0
  137. package/dist/template/presets/alova-globals/common/#index.cjs.handlebars +41 -0
  138. package/dist/template/presets/alova-globals/common/apiDefinitions.cjs.handlebars +12 -0
  139. package/dist/template/presets/alova-globals/common/createApis.cjs.handlebars +48 -0
  140. package/dist/template/presets/alova-globals/common/globals.d.cts.handlebars +2 -0
  141. package/dist/template/presets/alova-globals/module/#index.js.handlebars +2 -0
  142. package/dist/template/presets/alova-globals/module/apiDefinitions.js.handlebars +12 -0
  143. package/dist/template/presets/alova-globals/module/createApis.js.handlebars +44 -0
  144. package/dist/template/presets/alova-globals/module/globals.d.ts.handlebars +2 -0
  145. package/dist/template/presets/alova-globals/partials/comment.handlebars +19 -0
  146. package/dist/template/presets/alova-globals/partials/createApis-proxy-js.handlebars +55 -0
  147. package/dist/template/presets/alova-globals/partials/globals-d-ts.handlebars +148 -0
  148. package/dist/template/presets/alova-globals/partials/index-esm.handlebars +38 -0
  149. package/dist/template/presets/alova-globals/partials/withConfigType-jsdoc.handlebars +22 -0
  150. package/dist/template/presets/alova-globals/typescript/#index.ts.handlebars +2 -0
  151. package/dist/template/presets/alova-globals/typescript/apiDefinitions.ts.handlebars +12 -0
  152. package/dist/template/presets/alova-globals/typescript/createApis.ts.handlebars +99 -0
  153. package/dist/template/presets/alova-globals/typescript/globals.d.ts.handlebars +2 -0
  154. package/dist/template/presets/axios/common/#index.cjs.handlebars +22 -0
  155. package/dist/template/presets/axios/common/components.d.cts.handlebars +1 -0
  156. package/dist/template/presets/axios/common/helper.cjs.handlebars +27 -0
  157. package/dist/template/presets/axios/common/services/#index.cjs.handlebars +13 -0
  158. package/dist/template/presets/axios/common/services/{tag}.cjs.handlebars +28 -0
  159. package/dist/template/presets/axios/common/services/{tag}.d.cts.handlebars +11 -0
  160. package/dist/template/presets/axios/module/#index.js.handlebars +20 -0
  161. package/dist/template/presets/axios/module/components.d.ts.handlebars +1 -0
  162. package/dist/template/presets/axios/module/helper.js.handlebars +25 -0
  163. package/dist/template/presets/axios/module/services/#index.js.handlebars +9 -0
  164. package/dist/template/presets/axios/module/services/{tag}.d.ts.handlebars +11 -0
  165. package/dist/template/presets/axios/module/services/{tag}.js.handlebars +20 -0
  166. package/dist/template/presets/axios/partials/api-jsdoc.handlebars +44 -0
  167. package/dist/template/presets/axios/partials/comment.handlebars +19 -0
  168. package/dist/template/presets/axios/partials/components-body.handlebars +4 -0
  169. package/dist/template/presets/axios/partials/dts-fn-declare.handlebars +1 -0
  170. package/dist/template/presets/axios/partials/dts-types.handlebars +7 -0
  171. package/dist/template/presets/axios/typescript/#index.ts.handlebars +20 -0
  172. package/dist/template/presets/axios/typescript/components.d.ts.handlebars +1 -0
  173. package/dist/template/presets/axios/typescript/helper.ts.handlebars +28 -0
  174. package/dist/template/presets/axios/typescript/services/#index.ts.handlebars +9 -0
  175. package/dist/template/presets/axios/typescript/services/{tag}.ts.handlebars +31 -0
  176. package/dist/template/presets/config/common/worma.config.js.handlebars +9 -0
  177. package/dist/template/presets/config/module/worma.config.js.handlebars +9 -0
  178. package/dist/template/presets/config/partials/generator-content.handlebars +45 -0
  179. package/dist/template/presets/config/typescript/worma.config.ts.handlebars +9 -0
  180. package/dist/template/presets/fetch/common/#index.cjs.handlebars +17 -0
  181. package/dist/template/presets/fetch/common/FetchClient.cjs.handlebars +48 -0
  182. package/dist/template/presets/fetch/common/components.d.cts.handlebars +1 -0
  183. package/dist/template/presets/fetch/common/helper.cjs.handlebars +27 -0
  184. package/dist/template/presets/fetch/common/services/#index.cjs.handlebars +13 -0
  185. package/dist/template/presets/fetch/common/services/{tag}.cjs.handlebars +23 -0
  186. package/dist/template/presets/fetch/common/services/{tag}.d.cts.handlebars +10 -0
  187. package/dist/template/presets/fetch/module/#index.js.handlebars +15 -0
  188. package/dist/template/presets/fetch/module/FetchClient.js.handlebars +46 -0
  189. package/dist/template/presets/fetch/module/components.d.ts.handlebars +1 -0
  190. package/dist/template/presets/fetch/module/helper.js.handlebars +25 -0
  191. package/dist/template/presets/fetch/module/services/#index.js.handlebars +9 -0
  192. package/dist/template/presets/fetch/module/services/{tag}.d.ts.handlebars +10 -0
  193. package/dist/template/presets/fetch/module/services/{tag}.js.handlebars +15 -0
  194. package/dist/template/presets/fetch/partials/api-jsdoc.handlebars +44 -0
  195. package/dist/template/presets/fetch/partials/comment.handlebars +19 -0
  196. package/dist/template/presets/fetch/partials/components-body.handlebars +4 -0
  197. package/dist/template/presets/fetch/partials/dts-fn-declare.handlebars +1 -0
  198. package/dist/template/presets/fetch/partials/dts-types.handlebars +7 -0
  199. package/dist/template/presets/fetch/typescript/#index.ts.handlebars +15 -0
  200. package/dist/template/presets/fetch/typescript/FetchClient.ts.handlebars +59 -0
  201. package/dist/template/presets/fetch/typescript/components.d.ts.handlebars +1 -0
  202. package/dist/template/presets/fetch/typescript/helper.ts.handlebars +28 -0
  203. package/dist/template/presets/fetch/typescript/services/#index.ts.handlebars +9 -0
  204. package/dist/template/presets/fetch/typescript/services/{tag}.ts.handlebars +25 -0
  205. package/dist/template/presets/ky/module/#index.js.handlebars +14 -0
  206. package/dist/template/presets/ky/module/components.d.ts.handlebars +1 -0
  207. package/dist/template/presets/ky/module/helper.js.handlebars +27 -0
  208. package/dist/template/presets/ky/module/services/#index.js.handlebars +9 -0
  209. package/dist/template/presets/ky/module/services/{tag}.d.ts.handlebars +11 -0
  210. package/dist/template/presets/ky/module/services/{tag}.js.handlebars +19 -0
  211. package/dist/template/presets/ky/partials/api-jsdoc.handlebars +44 -0
  212. package/dist/template/presets/ky/partials/comment.handlebars +19 -0
  213. package/dist/template/presets/ky/partials/components-body.handlebars +4 -0
  214. package/dist/template/presets/ky/partials/dts-fn-declare.handlebars +1 -0
  215. package/dist/template/presets/ky/partials/dts-types.handlebars +9 -0
  216. package/dist/template/presets/ky/typescript/#index.ts.handlebars +14 -0
  217. package/dist/template/presets/ky/typescript/components.d.ts.handlebars +1 -0
  218. package/dist/template/presets/ky/typescript/helper.ts.handlebars +30 -0
  219. package/dist/template/presets/ky/typescript/services/#index.ts.handlebars +9 -0
  220. package/dist/template/presets/ky/typescript/services/{tag}.ts.handlebars +30 -0
  221. package/dist/tsconfig.build.tsbuildinfo +1 -0
  222. package/dist/type/api.js +14 -0
  223. package/dist/type/ast.js +24 -0
  224. package/dist/type/base.js +17 -0
  225. package/dist/type/index.js +20 -0
  226. package/dist/type/lib.js +17 -0
  227. package/dist/type/openapi.js +2 -0
  228. package/dist/utils/base.js +212 -0
  229. package/dist/utils/format.js +64 -0
  230. package/dist/utils/index.js +21 -0
  231. package/dist/utils/openapi.js +417 -0
  232. package/dist/utils/readPackageJson.js +35 -0
  233. package/dist/utils/template.js +93 -0
  234. package/package.json +88 -0
  235. package/typings/index.d.ts +512 -0
  236. package/typings/plugins.d.ts +727 -0
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // 枚举常量定义 — 统一管理项目中所有硬编码的字符串/数字常量
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FRAMEWORK_NAMES = exports.MODULE_TYPE_TO_KIND = exports.MODULE_TYPE_DIRS = exports.ModuleTypeDir = exports.PresetTemplateName = exports.TemplateSkipDir = exports.TemplatePlaceholder = exports.PluginName = exports.ModifierScope = exports.FilterScope = exports.RenameScope = exports.ParameterIn = exports.TEMPLATE_EXTENSIONS = exports.FileExtension = exports.FrameworkName = exports.ModuleKind = exports.PlatformTypeEnum = exports.ConfigTypeEnum = exports.TemplateTypeEnum = void 0;
7
+ exports.getTypeFileExtension = getTypeFileExtension;
8
+ /** 模板代码生成类型 */
9
+ var TemplateTypeEnum;
10
+ (function (TemplateTypeEnum) {
11
+ TemplateTypeEnum["TYPESCRIPT"] = "typescript";
12
+ TemplateTypeEnum["MODULE"] = "module";
13
+ TemplateTypeEnum["COMMONJS"] = "commonjs";
14
+ })(TemplateTypeEnum || (exports.TemplateTypeEnum = TemplateTypeEnum = {}));
15
+ /** 配置中的 type 字段值(比 TemplateTypeEnum 多了 auto/ts 选项) */
16
+ var ConfigTypeEnum;
17
+ (function (ConfigTypeEnum) {
18
+ ConfigTypeEnum["AUTO"] = "auto";
19
+ ConfigTypeEnum["TS"] = "ts";
20
+ ConfigTypeEnum["TYPESCRIPT"] = "typescript";
21
+ ConfigTypeEnum["MODULE"] = "module";
22
+ ConfigTypeEnum["COMMONJS"] = "commonjs";
23
+ })(ConfigTypeEnum || (exports.ConfigTypeEnum = ConfigTypeEnum = {}));
24
+ /** 支持的 OpenAPI 平台 */
25
+ var PlatformTypeEnum;
26
+ (function (PlatformTypeEnum) {
27
+ PlatformTypeEnum["SWAGGER"] = "swagger";
28
+ PlatformTypeEnum["KNIFE4J"] = "knife4j";
29
+ PlatformTypeEnum["YAPI"] = "yapi";
30
+ })(PlatformTypeEnum || (exports.PlatformTypeEnum = PlatformTypeEnum = {}));
31
+ /** 模块体系类型 */
32
+ var ModuleKind;
33
+ (function (ModuleKind) {
34
+ ModuleKind["ES_MODULE"] = "ESModule";
35
+ ModuleKind["COMMON_JS"] = "commonJs";
36
+ })(ModuleKind || (exports.ModuleKind = ModuleKind = {}));
37
+ /** 前端框架名称 */
38
+ var FrameworkName;
39
+ (function (FrameworkName) {
40
+ FrameworkName["VUE"] = "vue";
41
+ FrameworkName["REACT"] = "react";
42
+ FrameworkName["SVELTE"] = "svelte";
43
+ FrameworkName["SOLID_JS"] = "solid-js";
44
+ FrameworkName["NUXT"] = "nuxt";
45
+ })(FrameworkName || (exports.FrameworkName = FrameworkName = {}));
46
+ /** 模板文件扩展名 */
47
+ var FileExtension;
48
+ (function (FileExtension) {
49
+ FileExtension["HBS"] = ".hbs";
50
+ FileExtension["HANDLEBARS"] = ".handlebars";
51
+ FileExtension["TS"] = ".ts";
52
+ FileExtension["TSX"] = ".tsx";
53
+ FileExtension["JS"] = ".js";
54
+ FileExtension["JSX"] = ".jsx";
55
+ FileExtension["MJS"] = ".mjs";
56
+ FileExtension["CJS"] = ".cjs";
57
+ FileExtension["D_TS"] = ".d.ts";
58
+ FileExtension["D_CTS"] = ".d.cts";
59
+ FileExtension["D_MTS"] = ".d.mts";
60
+ })(FileExtension || (exports.FileExtension = FileExtension = {}));
61
+ /** Handlebars 模板文件扩展名列表(不含普通 ts/js 扩展) */
62
+ exports.TEMPLATE_EXTENSIONS = Object.values(FileExtension);
63
+ /** OpenAPI 参数位置 */
64
+ var ParameterIn;
65
+ (function (ParameterIn) {
66
+ ParameterIn["QUERY"] = "query";
67
+ ParameterIn["PATH"] = "path";
68
+ ParameterIn["HEADER"] = "header";
69
+ ParameterIn["COOKIE"] = "cookie";
70
+ })(ParameterIn || (exports.ParameterIn = ParameterIn = {}));
71
+ /** 重命名的 scope 类型 */
72
+ var RenameScope;
73
+ (function (RenameScope) {
74
+ RenameScope["URL"] = "url";
75
+ RenameScope["PARAMS"] = "params";
76
+ RenameScope["PATH_PARAMS"] = "pathParams";
77
+ RenameScope["DATA"] = "data";
78
+ RenameScope["RESPONSE"] = "response";
79
+ RenameScope["REF_NAME"] = "refName";
80
+ })(RenameScope || (exports.RenameScope = RenameScope = {}));
81
+ /** 过滤 scope 类型 */
82
+ var FilterScope;
83
+ (function (FilterScope) {
84
+ FilterScope["URL"] = "url";
85
+ FilterScope["TAG"] = "tag";
86
+ })(FilterScope || (exports.FilterScope = FilterScope = {}));
87
+ /** 参数修改 scope 类型 */
88
+ var ModifierScope;
89
+ (function (ModifierScope) {
90
+ ModifierScope["PARAMS"] = "params";
91
+ ModifierScope["PATH_PARAMS"] = "pathParams";
92
+ ModifierScope["DATA"] = "data";
93
+ ModifierScope["RESPONSE"] = "response";
94
+ })(ModifierScope || (exports.ModifierScope = ModifierScope = {}));
95
+ /** 内建插件名称 */
96
+ var PluginName;
97
+ (function (PluginName) {
98
+ PluginName["TAG_MODIFIER"] = "tagModifier";
99
+ PluginName["FILTER_API"] = "filterApi";
100
+ PluginName["RENAME"] = "rename";
101
+ PluginName["PAYLOAD_MODIFIER"] = "payloadModifier";
102
+ PluginName["IMPORT_TYPE"] = "importType";
103
+ PluginName["AI_DOC"] = "aiDoc";
104
+ PluginName["APIFOX"] = "apifox";
105
+ PluginName["PLATFORM"] = "platform";
106
+ PluginName["TEMPLATE_ALOVA"] = "templateAlova";
107
+ PluginName["TEMPLATE_ALOVA_GLOBALS"] = "templateAlovaGlobals";
108
+ PluginName["TEMPLATE_AXIOS"] = "templateAxios";
109
+ PluginName["TEMPLATE_FETCH"] = "templateFetch";
110
+ PluginName["TEMPLATE_KY"] = "templateKy";
111
+ PluginName["TEMPLATE_CONFIG"] = "templateConfig";
112
+ })(PluginName || (exports.PluginName = PluginName = {}));
113
+ /** 模板占位符 */
114
+ var TemplatePlaceholder;
115
+ (function (TemplatePlaceholder) {
116
+ TemplatePlaceholder["TAG"] = "{tag}";
117
+ TemplatePlaceholder["API"] = "{api}";
118
+ })(TemplatePlaceholder || (exports.TemplatePlaceholder = TemplatePlaceholder = {}));
119
+ /** 模板扫描时跳过的目录 */
120
+ var TemplateSkipDir;
121
+ (function (TemplateSkipDir) {
122
+ TemplateSkipDir["PARTIALS"] = "partials";
123
+ TemplateSkipDir["TAG_DIR"] = "{tag}";
124
+ })(TemplateSkipDir || (exports.TemplateSkipDir = TemplateSkipDir = {}));
125
+ /** 预设模板名称 */
126
+ var PresetTemplateName;
127
+ (function (PresetTemplateName) {
128
+ PresetTemplateName["ALOVA"] = "alova";
129
+ PresetTemplateName["AXIOS"] = "axios";
130
+ PresetTemplateName["FETCH"] = "fetch";
131
+ PresetTemplateName["KY"] = "ky";
132
+ PresetTemplateName["GLOBALS"] = "alova-globals";
133
+ PresetTemplateName["CONFIG"] = "config";
134
+ PresetTemplateName["AI_DOC"] = "ai-doc";
135
+ })(PresetTemplateName || (exports.PresetTemplateName = PresetTemplateName = {}));
136
+ /** 模板目录名(与 config.type 不同:commonjs -> common) */
137
+ var ModuleTypeDir;
138
+ (function (ModuleTypeDir) {
139
+ ModuleTypeDir["TYPESCRIPT"] = "typescript";
140
+ ModuleTypeDir["MODULE"] = "module";
141
+ ModuleTypeDir["COMMON"] = "common";
142
+ })(ModuleTypeDir || (exports.ModuleTypeDir = ModuleTypeDir = {}));
143
+ /** 模块类型目录名数组 */
144
+ exports.MODULE_TYPE_DIRS = [ModuleTypeDir.TYPESCRIPT, ModuleTypeDir.MODULE, ModuleTypeDir.COMMON];
145
+ /** 模块类型 -> ModuleKind 映射 */
146
+ exports.MODULE_TYPE_TO_KIND = {
147
+ [TemplateTypeEnum.TYPESCRIPT]: ModuleKind.ES_MODULE,
148
+ [TemplateTypeEnum.MODULE]: ModuleKind.ES_MODULE,
149
+ [TemplateTypeEnum.COMMONJS]: ModuleKind.COMMON_JS,
150
+ };
151
+ /** 文件扩展名 -> 输出文件名映射 */
152
+ function getTypeFileExtension(type) {
153
+ return type === TemplateTypeEnum.TYPESCRIPT ? FileExtension.TS : FileExtension.JS;
154
+ }
155
+ /** 框架名称列表 */
156
+ exports.FRAMEWORK_NAMES = [
157
+ FrameworkName.VUE,
158
+ FrameworkName.REACT,
159
+ FrameworkName.SVELTE,
160
+ FrameworkName.SOLID_JS,
161
+ FrameworkName.NUXT,
162
+ ];
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkerPool = void 0;
4
+ exports.pickPoolSize = pickPoolSize;
5
+ /**
6
+ * 9.3.1: Generic WorkerPool — pure thread pool for task/result patterns.
7
+ * Handles lifecycle, task distribution, and result collection.
8
+ */
9
+ const node_os_1 = require("node:os");
10
+ const node_worker_threads_1 = require("node:worker_threads");
11
+ function pickPoolSize(apiCount) {
12
+ const cpu = Math.max(1, (0, node_os_1.cpus)().length);
13
+ // P2: Lowered threshold from 200→20 so moderate API counts benefit from workers
14
+ if (apiCount <= 20)
15
+ return 0;
16
+ if (apiCount <= 1000)
17
+ return Math.min(2, cpu);
18
+ if (apiCount <= 3000)
19
+ return Math.min(4, cpu);
20
+ if (apiCount <= 8000)
21
+ return Math.min(Math.ceil(cpu * 0.75), cpu);
22
+ return Math.max(2, cpu - 1);
23
+ }
24
+ class WorkerPool {
25
+ constructor(options) {
26
+ this.options = options;
27
+ this.workers = [];
28
+ this.idleTimer = null;
29
+ this.terminated = false;
30
+ this.idleTimeout = options.idleTimeout ?? 30000;
31
+ }
32
+ get size() {
33
+ return this.options.poolSize;
34
+ }
35
+ /** Spawn workers lazily on first batch */
36
+ ensureWorkers() {
37
+ if (this.workers.length > 0)
38
+ return;
39
+ for (let i = 0; i < this.options.poolSize; i++) {
40
+ const w = new node_worker_threads_1.Worker(this.options.workerScript, {
41
+ workerData: this.options.sharedContext,
42
+ });
43
+ this.workers.push(w);
44
+ }
45
+ this.resetIdleTimer();
46
+ }
47
+ /** Reset the idle timer — auto-terminate after idleTimeout ms of inactivity */
48
+ resetIdleTimer() {
49
+ if (this.idleTimer)
50
+ clearTimeout(this.idleTimer);
51
+ this.idleTimer = setTimeout(() => this.terminate(), this.idleTimeout);
52
+ }
53
+ /**
54
+ * Process a batch of tasks via the worker pool.
55
+ * Distributes tasks round-robin across workers for even load balancing.
56
+ */
57
+ async processBatch(tasks) {
58
+ if (this.terminated)
59
+ return [];
60
+ this.ensureWorkers();
61
+ // Round-robin distribution — even load across all workers
62
+ const batches = Array.from({ length: this.workers.length }, () => []);
63
+ tasks.forEach((task, i) => batches[i % this.workers.length].push(task));
64
+ const nonEmpty = batches.filter(b => b.length > 0);
65
+ const results = await Promise.all(nonEmpty.map((batch, i) => this.sendToWorker(i, batch)));
66
+ this.resetIdleTimer();
67
+ return results.flat();
68
+ }
69
+ /** Send a batch to a specific worker and wait for result */
70
+ sendToWorker(workerIdx, batch) {
71
+ return new Promise((resolve, reject) => {
72
+ const worker = this.workers[workerIdx];
73
+ const handler = (msg) => {
74
+ worker.off('message', handler);
75
+ if (msg.type === 'result') {
76
+ resolve(msg.data);
77
+ }
78
+ else {
79
+ reject(new Error(msg.message ?? 'Unknown worker error'));
80
+ }
81
+ };
82
+ worker.on('message', handler);
83
+ worker.on('error', (err) => {
84
+ worker.off('message', handler);
85
+ reject(err);
86
+ });
87
+ worker.postMessage(batch);
88
+ });
89
+ }
90
+ /** Terminate all workers and cleanup */
91
+ terminate() {
92
+ if (this.idleTimer)
93
+ clearTimeout(this.idleTimer);
94
+ this.idleTimer = null;
95
+ this.terminated = true;
96
+ for (const w of this.workers) {
97
+ w.terminate();
98
+ }
99
+ this.workers.length = 0;
100
+ }
101
+ }
102
+ exports.WorkerPool = WorkerPool;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrayTypeGenerator = arrayTypeGenerator;
4
+ const type_1 = require("../../../../type");
5
+ const utils_1 = require("./utils");
6
+ function arrayTypeGenerator(ast, ctx) {
7
+ const result = {
8
+ name: ast.keyName ?? '',
9
+ comment: (0, utils_1.setComment)(ast, ctx.options),
10
+ type: 'type',
11
+ code: '',
12
+ };
13
+ ctx.pathKey = '[]';
14
+ const paramsResult = ctx.next(ast.params, ctx.options);
15
+ const tsStr = (0, utils_1.getValue)(paramsResult, ctx.options);
16
+ if (ast.params.type !== type_1.ASTType.INTERFACE || tsStr === paramsResult.name) {
17
+ // Only wrap in parentheses when needed for operator precedence:
18
+ // UNION / INTERSECTION / TUPLE elements need parens to prevent ambiguity
19
+ // ENUM can produce union-like output (via otherEnumTypeGenerator), so also needs parens
20
+ const needsParens = ast.params.type === type_1.ASTType.UNION
21
+ || ast.params.type === type_1.ASTType.INTERSECTION
22
+ || ast.params.type === type_1.ASTType.TUPLE
23
+ || ast.params.type === type_1.ASTType.ENUM;
24
+ result.code = needsParens ? `(${tsStr})[]` : `${tsStr}[]`;
25
+ }
26
+ else {
27
+ result.code = `Array<${tsStr}>`;
28
+ }
29
+ return result;
30
+ }
31
+ exports.default = {
32
+ type: type_1.ASTType.ARRAY,
33
+ generate: arrayTypeGenerator,
34
+ };
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalEnumTypeGenerator = normalEnumTypeGenerator;
4
+ exports.isNormalEnum = isNormalEnum;
5
+ exports.enumTypeGenerator = enumTypeGenerator;
6
+ const loader_1 = require("../../../../core/loader");
7
+ const type_1 = require("../../../../type");
8
+ const utils_1 = require("../../../../utils");
9
+ const utils_2 = require("./utils");
10
+ function normalEnumTypeGenerator(ast, ctx) {
11
+ const result = {
12
+ name: ast.keyName ?? '',
13
+ comment: (0, utils_2.setComment)(ast, ctx.options),
14
+ type: 'enum',
15
+ code: '',
16
+ };
17
+ const lines = [`{`];
18
+ ast.params.forEach((param, idx, arr) => {
19
+ ctx.pathKey = param.keyName;
20
+ const paramResult = ctx.next(param.ast, ctx.options);
21
+ const endText = idx === arr.length - 1 ? '' : ',';
22
+ const keyName = loader_1.standardLoader.validate(param.keyName) ? param.keyName : `"${param.keyName || paramResult.code}"`;
23
+ `${param.ast.comment ?? ''}${keyName} = ${paramResult.code}${endText}`
24
+ .split('\n')
25
+ .forEach(line => lines.push(` ${line}`));
26
+ });
27
+ lines.push(`}`);
28
+ result.code = lines.join('\n');
29
+ return result;
30
+ }
31
+ function otherEnumTypeGenerator(ast, ctx) {
32
+ const result = {
33
+ name: ast.keyName ?? '',
34
+ comment: (0, utils_2.setComment)(ast, ctx.options),
35
+ type: 'type',
36
+ code: '',
37
+ };
38
+ result.code = ast.params
39
+ .map((param) => {
40
+ ctx.pathKey = param.keyName;
41
+ return (0, utils_2.getValue)(ctx.next(param.ast, ctx.options), ctx.options);
42
+ })
43
+ .join(' | ');
44
+ return result;
45
+ }
46
+ function isNormalEnum(ast, ctx) {
47
+ return !ctx.options.noEnum
48
+ && ast.params.every(item => item.ast.type === type_1.ASTType.LITERAL
49
+ && ['string', 'number', 'integer'].includes((0, utils_1.getType)(item.ast.params))
50
+ && item.keyName);
51
+ }
52
+ function enumTypeGenerator(ast, ctx) {
53
+ if (ctx.path.length <= 1 && isNormalEnum(ast, ctx)) {
54
+ return normalEnumTypeGenerator(ast, ctx);
55
+ }
56
+ return otherEnumTypeGenerator(ast, ctx);
57
+ }
58
+ exports.default = {
59
+ type: type_1.ASTType.ENUM,
60
+ generate: enumTypeGenerator,
61
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.groupTypeGenerator = groupTypeGenerator;
4
+ const type_1 = require("../../../../type");
5
+ const utils_1 = require("./utils");
6
+ function groupTypeGenerator(ast, ctx) {
7
+ const result = {
8
+ name: ast.keyName ?? '',
9
+ comment: (0, utils_1.setComment)(ast, ctx.options),
10
+ type: 'type',
11
+ code: '',
12
+ };
13
+ const groups = [];
14
+ ast.params.forEach((item) => {
15
+ ctx.pathKey = `${item.keyName}`;
16
+ const nextValue = ctx.next(item, ctx.options);
17
+ // Only wrap in parentheses when needed for operator precedence:
18
+ // In INTERSECTION (&), UNION/ENUM members need parens because `|` has lower precedence than `&`
19
+ // e.g. (string | number) & Pet vs string | number & Pet (= string | (number & Pet))
20
+ // In UNION (|), INTERSECTION members do NOT need parens because `&` already binds tighter
21
+ const memberTsStr = (0, utils_1.getValue)(nextValue, ctx.options);
22
+ const producesUnionLike = item.type === type_1.ASTType.UNION || item.type === type_1.ASTType.ENUM;
23
+ const needsParens = ast.type === type_1.ASTType.INTERSECTION && producesUnionLike;
24
+ groups.push(needsParens ? `(${memberTsStr})` : memberTsStr);
25
+ });
26
+ switch (ast.type) {
27
+ case type_1.ASTType.INTERSECTION:
28
+ result.code = groups.join(' & ');
29
+ break;
30
+ case type_1.ASTType.UNION:
31
+ result.code = groups.join(' | ');
32
+ break;
33
+ default:
34
+ break;
35
+ }
36
+ return result;
37
+ }
38
+ exports.default = {
39
+ type: [type_1.ASTType.INTERSECTION, type_1.ASTType.UNION],
40
+ generate: groupTypeGenerator,
41
+ };
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.normalizeCode = exports.getValue = exports.getTsStr = void 0;
21
+ exports.astGenerate = astGenerate;
22
+ const type_1 = require("../../../../type");
23
+ const array_1 = __importDefault(require("./array"));
24
+ const enum_1 = __importDefault(require("./enum"));
25
+ const group_1 = __importDefault(require("./group"));
26
+ const interface_1 = __importDefault(require("./interface"));
27
+ const simple_1 = __importDefault(require("./simple"));
28
+ const tuple_1 = __importDefault(require("./tuple"));
29
+ const utils_1 = require("./utils");
30
+ Object.defineProperty(exports, "getTsStr", { enumerable: true, get: function () { return utils_1.getTsStr; } });
31
+ Object.defineProperty(exports, "getValue", { enumerable: true, get: function () { return utils_1.getValue; } });
32
+ Object.defineProperty(exports, "normalizeCode", { enumerable: true, get: function () { return utils_1.normalizeCode; } });
33
+ __exportStar(require("./type"), exports);
34
+ const supportGenerator = [
35
+ simple_1.default,
36
+ enum_1.default,
37
+ interface_1.default,
38
+ group_1.default,
39
+ array_1.default,
40
+ tuple_1.default,
41
+ ];
42
+ function astGenerate(ast, options) {
43
+ const doGenerate = (ast, ctx) => {
44
+ const value = (0, utils_1.generate)(ast, ctx, supportGenerator);
45
+ if (!value) {
46
+ return simple_1.default.generate({
47
+ ...ast,
48
+ type: type_1.ASTType.UNKNOWN,
49
+ }, ctx);
50
+ }
51
+ return value;
52
+ };
53
+ const ctx = {
54
+ options,
55
+ path: ['$'],
56
+ next(ast, options) {
57
+ const { pathKey } = ctx;
58
+ if (pathKey) {
59
+ ctx.path.push(pathKey);
60
+ ctx.pathKey = '';
61
+ }
62
+ ctx.options = options;
63
+ const result = doGenerate(ast, ctx);
64
+ if (pathKey) {
65
+ ctx.path.pop();
66
+ }
67
+ return result;
68
+ },
69
+ };
70
+ return doGenerate(ast, ctx);
71
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordTypeGenerator = recordTypeGenerator;
4
+ exports.normalInterfaceGenerator = normalInterfaceGenerator;
5
+ exports.interfaceTypeGenerator = interfaceTypeGenerator;
6
+ const loader_1 = require("../../../../core/loader");
7
+ const type_1 = require("../../../../type");
8
+ const utils_1 = require("./utils");
9
+ function recordTypeGenerator(ast, ctx) {
10
+ const result = {
11
+ name: ast.keyName ?? '',
12
+ comment: (0, utils_1.setComment)(ast, ctx.options),
13
+ type: 'type',
14
+ code: '',
15
+ };
16
+ let addParamsStr = 'any';
17
+ if (ast.addParams) {
18
+ ctx.pathKey = '[key: string]';
19
+ const nextResult = ctx.next(ast.addParams, ctx.options);
20
+ addParamsStr = (0, utils_1.getValue)(nextResult, ctx.options);
21
+ }
22
+ result.code = `Record<string, ${addParamsStr}>`;
23
+ return result;
24
+ }
25
+ function normalInterfaceGenerator(ast, ctx) {
26
+ const result = {
27
+ name: ast.keyName ?? '',
28
+ comment: (0, utils_1.setComment)(ast, ctx.options),
29
+ type: 'interface',
30
+ code: '',
31
+ };
32
+ const lines = [`{`];
33
+ ast.params.forEach((param) => {
34
+ const optionalFlag = param.isRequired ? '' : '?';
35
+ const keyName = loader_1.standardLoader.validate(param.keyName) ? param.keyName : `"${param.keyName}"`;
36
+ ctx.pathKey = keyName;
37
+ const nextResult = ctx.next(param.ast, ctx.options);
38
+ const value = (0, utils_1.getValue)(nextResult, ctx.options);
39
+ `${nextResult.comment ?? ''}${keyName}${optionalFlag}: ${value}`.split('\n').forEach(line => lines.push(` ${line}`));
40
+ });
41
+ if (ast.addParams) {
42
+ ctx.pathKey = '[key: string]';
43
+ const nextResult = ctx.next(ast.addParams, ctx.options);
44
+ lines.push(` [key: string]: ${(0, utils_1.getValue)(nextResult, ctx.options) || 'any'}`);
45
+ }
46
+ lines.push(`}`);
47
+ result.code = lines.join('\n');
48
+ return result;
49
+ }
50
+ function interfaceTypeGenerator(ast, ctx) {
51
+ if (ast.params.length > 0) {
52
+ return normalInterfaceGenerator(ast, ctx);
53
+ }
54
+ return recordTypeGenerator(ast, ctx);
55
+ }
56
+ exports.default = {
57
+ type: type_1.ASTType.INTERFACE,
58
+ generate: interfaceTypeGenerator,
59
+ };
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.simpleTypeGenerator = simpleTypeGenerator;
4
+ const type_1 = require("../../../../type");
5
+ const utils_1 = require("./utils");
6
+ function simpleTypeGenerator(ast, ctx) {
7
+ const result = {
8
+ name: ast.keyName ?? '',
9
+ comment: (0, utils_1.setComment)(ast, ctx.options),
10
+ type: 'type',
11
+ code: '',
12
+ };
13
+ switch (ast.type) {
14
+ case type_1.ASTType.BOOLEAN:
15
+ result.code = 'boolean';
16
+ break;
17
+ case type_1.ASTType.NUMBER:
18
+ result.code = 'number';
19
+ break;
20
+ case type_1.ASTType.STRING:
21
+ result.code = 'string';
22
+ break;
23
+ case type_1.ASTType.OBJECT:
24
+ result.code = 'object';
25
+ break;
26
+ case type_1.ASTType.ANY:
27
+ result.code = 'any';
28
+ break;
29
+ case type_1.ASTType.NULL:
30
+ result.code = 'null';
31
+ break;
32
+ case type_1.ASTType.UNKNOWN:
33
+ result.code = 'unknown';
34
+ break;
35
+ case type_1.ASTType.NEVER:
36
+ result.code = 'never';
37
+ break;
38
+ case type_1.ASTType.LITERAL:
39
+ result.code = JSON.stringify(ast.params);
40
+ break;
41
+ case type_1.ASTType.REFERENCE: // reference
42
+ result.code = ast.params;
43
+ break;
44
+ case type_1.ASTType.CUSTOM:
45
+ result.code = ast.params;
46
+ break;
47
+ default:
48
+ break;
49
+ }
50
+ return result;
51
+ }
52
+ exports.default = {
53
+ type: [
54
+ type_1.ASTType.BOOLEAN,
55
+ type_1.ASTType.NUMBER,
56
+ type_1.ASTType.STRING,
57
+ type_1.ASTType.OBJECT,
58
+ type_1.ASTType.ANY,
59
+ type_1.ASTType.NULL,
60
+ type_1.ASTType.UNKNOWN,
61
+ type_1.ASTType.NEVER,
62
+ type_1.ASTType.REFERENCE,
63
+ type_1.ASTType.LITERAL,
64
+ type_1.ASTType.CUSTOM,
65
+ ],
66
+ generate: simpleTypeGenerator,
67
+ };
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tupleTypeGenerator = tupleTypeGenerator;
4
+ const type_1 = require("../../../../type");
5
+ const utils_1 = require("./utils");
6
+ function tupleTypeGenerator(ast, ctx) {
7
+ const result = {
8
+ name: ast.keyName ?? '',
9
+ comment: (0, utils_1.setComment)(ast, ctx.options),
10
+ type: 'type',
11
+ code: '',
12
+ };
13
+ const params = [...ast.params];
14
+ const minItems = Math.max(ast.minItems ?? 0, params.length);
15
+ const maxItems = Math.max(ast.maxItems ?? minItems - 1, params.length);
16
+ const spreadParam = ast.spreadParam ?? {
17
+ type: type_1.ASTType.ANY,
18
+ };
19
+ while (params.length < minItems) {
20
+ params.push(spreadParam);
21
+ }
22
+ const lines = [`[`];
23
+ params.forEach((param, idx, arr) => {
24
+ ctx.pathKey = param.keyName;
25
+ const value = (0, utils_1.getValue)(ctx.next(param, ctx.options), ctx.options);
26
+ const endText = idx === arr.length - 1 ? '' : ',';
27
+ `${value}${endText}`.split('\n').forEach(line => lines.push(` ${line}`));
28
+ });
29
+ if (maxItems < minItems) {
30
+ ctx.pathKey = spreadParam.keyName;
31
+ lines.push(`,\n...Array<${(0, utils_1.getValue)(ctx.next(spreadParam, ctx.options), ctx.options)}>`);
32
+ }
33
+ lines.push(`]`);
34
+ if (maxItems > minItems) {
35
+ const nextParams = [...params];
36
+ for (let i = 0; i < maxItems - minItems; i += 1) {
37
+ nextParams.push(spreadParam);
38
+ const nextResult = tupleTypeGenerator({
39
+ ...ast,
40
+ keyName: '',
41
+ params: nextParams,
42
+ minItems: nextParams.length,
43
+ maxItems: nextParams.length,
44
+ }, ctx);
45
+ lines.push(`\n| ${(0, utils_1.getValue)(nextResult, ctx.options)}`);
46
+ }
47
+ }
48
+ result.code = lines.join('\n');
49
+ return result;
50
+ }
51
+ exports.default = {
52
+ type: type_1.ASTType.TUPLE,
53
+ generate: tupleTypeGenerator,
54
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });