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,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../../../../../utils");
4
+ exports.default = {
5
+ is(schema) {
6
+ // 判断是否为数组类型
7
+ // 1. type 为 'array'
8
+ // 2. 或者有 items 字段
9
+ return schema && (schema.type === 'array' || (0, utils_1.isMaybeArraySchemaObject)(schema));
10
+ },
11
+ to: 'array',
12
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ is(schema) {
5
+ // 判断是否为枚举类型
6
+ // 有 enum 字段且不为空数组
7
+ return schema && !!schema.enum && Array.isArray(schema.enum) && schema.enum.length > 0;
8
+ },
9
+ to: 'enum',
10
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ is(schema) {
5
+ // 判断是否为组合类型
6
+ // 1. 有 oneOf 字段(联合类型)
7
+ // 2. 或者有 anyOf 字段(联合类型)
8
+ // 3. 或者有 allOf 字段(交叉类型)
9
+ return schema && (!!schema.oneOf || !!schema.anyOf || !!schema.allOf);
10
+ },
11
+ to: 'group',
12
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.forwarders = void 0;
7
+ exports.forward = forward;
8
+ const array_1 = __importDefault(require("./array"));
9
+ const enum_1 = __importDefault(require("./enum"));
10
+ const group_1 = __importDefault(require("./group"));
11
+ const object_1 = __importDefault(require("./object"));
12
+ const tuple_1 = __importDefault(require("./tuple"));
13
+ exports.forwarders = [object_1.default, enum_1.default, tuple_1.default, array_1.default, group_1.default];
14
+ function forward(schema) {
15
+ for (const forwarder of exports.forwarders) {
16
+ if (forwarder.is(schema)) {
17
+ return forwarder.to;
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ is(schema) {
5
+ // 判断是否为对象类型
6
+ // 1. type 为 'object'
7
+ // 2. 或者有 properties 字段
8
+ // 3. 或者有 additionalProperties 字段
9
+ return schema && (schema.type === 'object' || !!schema.properties || !!schema.additionalProperties);
10
+ },
11
+ to: 'object',
12
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ is(schema) {
5
+ // 判断是否为元组类型
6
+ // 1. type 为 'array'
7
+ // 2. 且 items 是数组(表示固定位置的元素类型)
8
+ return schema && schema.type === 'array' && Array.isArray(schema.items) && schema.items.length > 0;
9
+ },
10
+ to: 'tuple',
11
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.groupTypeParser = groupTypeParser;
4
+ const helper_1 = require("../../../../helper");
5
+ const type_1 = require("../../../../type");
6
+ const utils_1 = require("./utils");
7
+ function groupTypeParser(schema, ctx) {
8
+ const result = {
9
+ ...(0, utils_1.initAST)(schema, ctx),
10
+ };
11
+ const items = schema.anyOf || schema.oneOf || schema.allOf || [];
12
+ const params = items.map(value => ctx.next(value, ctx.options));
13
+ const deepCommenter = helper_1.CommentHelper.load({
14
+ type: ctx.options.commentType,
15
+ });
16
+ params.forEach((itemsAst, idx) => {
17
+ const comment = helper_1.CommentHelper.parseStr(itemsAst.comment ?? '');
18
+ const deepComment = helper_1.CommentHelper.parseStr(itemsAst.deepComment ?? '');
19
+ if (comment || deepComment) {
20
+ deepCommenter
21
+ .add(`[params${idx + 1}] start`)
22
+ .add(comment)
23
+ .add(deepComment)
24
+ .add(`[params${idx + 1}] end`);
25
+ }
26
+ });
27
+ result.deepComment = deepCommenter.end();
28
+ if (schema.anyOf || schema.oneOf) {
29
+ return {
30
+ ...result,
31
+ type: type_1.ASTType.UNION,
32
+ params,
33
+ };
34
+ }
35
+ if (schema.allOf) {
36
+ // 显式检查 allOf
37
+ return {
38
+ ...result,
39
+ type: type_1.ASTType.INTERSECTION,
40
+ params,
41
+ };
42
+ }
43
+ throw helper_1.logger.throwError('schema must contain anyOf, oneOf or allOf', {
44
+ schema,
45
+ });
46
+ }
47
+ exports.default = {
48
+ type: 'group',
49
+ parse: groupTypeParser,
50
+ };
@@ -0,0 +1,66 @@
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.astParse = astParse;
21
+ const type_1 = require("../../../../type");
22
+ const array_1 = __importDefault(require("./array"));
23
+ const enum_1 = __importDefault(require("./enum"));
24
+ const group_1 = __importDefault(require("./group"));
25
+ const object_1 = __importDefault(require("./object"));
26
+ const reference_1 = __importDefault(require("./reference"));
27
+ const simple_1 = __importDefault(require("./simple"));
28
+ const tuple_1 = __importDefault(require("./tuple"));
29
+ const utils_1 = require("./utils");
30
+ __exportStar(require("./type"), exports);
31
+ function astParse(schema, options) {
32
+ const doParse = (schema, ctx) => {
33
+ const value = (0, utils_1.parse)(schema, {
34
+ type: (0, utils_1.getParserSchemaType)(schema),
35
+ ctx,
36
+ parsers: [array_1.default, object_1.default, enum_1.default, simple_1.default, reference_1.default, tuple_1.default, group_1.default],
37
+ });
38
+ if (!value) {
39
+ return {
40
+ type: type_1.ASTType.UNKNOWN,
41
+ };
42
+ }
43
+ return value;
44
+ };
45
+ const ctx = {
46
+ options,
47
+ next(schema, options) {
48
+ const hasPathKey = !!ctx.pathKey;
49
+ if (hasPathKey) {
50
+ ctx.path.push(ctx.pathKey);
51
+ ctx.pathKey = '';
52
+ }
53
+ ctx.options = options;
54
+ const nextAST = doParse(schema, ctx);
55
+ if (hasPathKey) {
56
+ ctx.path.pop();
57
+ }
58
+ return nextAST;
59
+ },
60
+ keyName: '',
61
+ visited: new Set(),
62
+ pathMap: new Map(),
63
+ path: ['$'],
64
+ };
65
+ return doParse(schema, ctx);
66
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.objectTypeParser = objectTypeParser;
4
+ const type_1 = require("../../../../type");
5
+ const utils_1 = require("./utils");
6
+ function objectTypeParser(schema, ctx) {
7
+ const result = {
8
+ ...(0, utils_1.initAST)(schema, ctx),
9
+ type: type_1.ASTType.INTERFACE,
10
+ params: [],
11
+ };
12
+ const properties = schema.properties || {};
13
+ const required = new Set(schema.required ?? []);
14
+ for (const [key, value] of Object.entries(properties)) {
15
+ ctx.pathKey = key;
16
+ result.params.push({
17
+ ast: ctx.next(value, ctx.options),
18
+ keyName: key,
19
+ isRequired: required.has(key) || !!ctx.options.defaultRequire,
20
+ });
21
+ }
22
+ if (!result.params.length && !schema.additionalProperties) {
23
+ return {
24
+ ...result,
25
+ type: type_1.ASTType.OBJECT,
26
+ };
27
+ }
28
+ if (schema.additionalProperties) {
29
+ if (typeof schema.additionalProperties === 'boolean') {
30
+ result.addParams = {
31
+ type: type_1.ASTType.ANY,
32
+ };
33
+ }
34
+ else {
35
+ ctx.pathKey = '[key: string]';
36
+ result.addParams = ctx.next(schema.additionalProperties, ctx.options);
37
+ }
38
+ }
39
+ return result;
40
+ }
41
+ exports.default = {
42
+ type: 'object',
43
+ parse: objectTypeParser,
44
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.referenceTypeParser = referenceTypeParser;
7
+ const standardLoader_1 = require("../../../../core/loader/standardLoader");
8
+ const helper_1 = require("../../../../helper");
9
+ const type_1 = require("../../../../type");
10
+ const utils_1 = require("../../../../utils");
11
+ const normalize_1 = __importDefault(require("../normalize"));
12
+ const utils_2 = require("./utils");
13
+ function referenceTypeParser(schema, ctx) {
14
+ const refName = ctx.options.refNameMap?.get(schema.$ref)
15
+ || standardLoader_1.standardLoader.transformRefName(schema.$ref);
16
+ const refernceAST = {
17
+ ...(0, utils_2.initAST)(schema, ctx),
18
+ type: type_1.ASTType.REFERENCE,
19
+ params: refName,
20
+ };
21
+ if (ctx.visited.has(schema.$ref)) {
22
+ refernceAST.deepComment = helper_1.CommentHelper.load({
23
+ type: ctx.options.commentType,
24
+ })
25
+ .add('[cycle]', ctx.pathMap.get(schema.$ref))
26
+ .end();
27
+ return refernceAST;
28
+ }
29
+ const nextSchema = normalize_1.default.normalize((0, utils_1.dereference)(schema, ctx.options.document));
30
+ ctx.visited.add(schema.$ref);
31
+ ctx.pathMap.set(schema.$ref, ctx.path.join('.'));
32
+ ctx.keyName = refName;
33
+ const result = ctx.next(nextSchema, ctx.options);
34
+ ctx.options.onReference?.(result);
35
+ ctx.visited.delete(schema.$ref);
36
+ return result;
37
+ }
38
+ exports.default = {
39
+ type: 'reference',
40
+ parse: referenceTypeParser,
41
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringTypeParser = stringTypeParser;
4
+ exports.simpleTypeParser = simpleTypeParser;
5
+ const type_1 = require("../../../../type");
6
+ const utils_1 = require("./utils");
7
+ function stringTypeParser(schema, init) {
8
+ if (schema.format === 'binary') {
9
+ return {
10
+ ...init,
11
+ type: type_1.ASTType.CUSTOM,
12
+ params: 'Blob',
13
+ };
14
+ }
15
+ return {
16
+ ...init,
17
+ type: type_1.ASTType.STRING,
18
+ };
19
+ }
20
+ function simpleTypeParser(schema, ctx) {
21
+ const result = (0, utils_1.initAST)(schema, ctx);
22
+ switch (schema.type) {
23
+ case 'boolean':
24
+ result.type = type_1.ASTType.BOOLEAN;
25
+ break;
26
+ case 'integer':
27
+ case 'number':
28
+ result.type = type_1.ASTType.NUMBER;
29
+ break;
30
+ case 'string': {
31
+ return stringTypeParser(schema, result);
32
+ }
33
+ case 'null':
34
+ case null:
35
+ result.type = type_1.ASTType.NULL;
36
+ break;
37
+ default:
38
+ // custom
39
+ result.type = type_1.ASTType.CUSTOM;
40
+ result.params = `${schema.type}`;
41
+ break;
42
+ }
43
+ return result;
44
+ }
45
+ exports.default = {
46
+ type: ['boolean', 'integer', 'number', 'string', 'null', 'custom'],
47
+ parse: simpleTypeParser,
48
+ };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tupleTypeParser = tupleTypeParser;
4
+ const helper_1 = require("../../../../helper");
5
+ const type_1 = require("../../../../type");
6
+ const utils_1 = require("./utils");
7
+ function tupleTypeParser(schema, ctx) {
8
+ const params = schema.items.map(item => ctx.next(item, ctx.options));
9
+ const result = {
10
+ ...(0, utils_1.initAST)(schema, ctx),
11
+ type: type_1.ASTType.TUPLE,
12
+ minItems: schema.minItems,
13
+ maxItems: schema.maxItems,
14
+ params,
15
+ };
16
+ const deepCommenter = helper_1.CommentHelper.load({
17
+ type: ctx.options.commentType,
18
+ });
19
+ params.forEach((itemsAst, idx) => {
20
+ const comment = helper_1.CommentHelper.parseStr(itemsAst.comment ?? '');
21
+ const deepComment = helper_1.CommentHelper.parseStr(itemsAst.deepComment ?? '');
22
+ if (comment || deepComment) {
23
+ deepCommenter
24
+ .add(`[params${idx + 1}] start`)
25
+ .add(comment)
26
+ .add(deepComment)
27
+ .add(`[params${idx + 1}] end`);
28
+ }
29
+ });
30
+ result.deepComment = deepCommenter.end();
31
+ return result;
32
+ }
33
+ exports.default = {
34
+ type: 'tuple',
35
+ parse: tupleTypeParser,
36
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaPrimitive = void 0;
4
+ exports.getCommentBySchema = getCommentBySchema;
5
+ exports.initAST = initAST;
6
+ exports.parse = parse;
7
+ exports.getParserSchemaType = getParserSchemaType;
8
+ const helper_1 = require("../../../../helper");
9
+ const type_1 = require("../../../../type");
10
+ const utils_1 = require("../../../../utils");
11
+ const forward_1 = require("./forward");
12
+ exports.SchemaPrimitive = ['boolean', 'object', 'number', 'string', 'integer', 'array', 'null'];
13
+ function getCommentBySchema(schema, options) {
14
+ const commenter = helper_1.CommentHelper.load(options);
15
+ if (!(0, utils_1.isReferenceObject)(schema) && schema.title) {
16
+ commenter.add('[title]', schema.title);
17
+ }
18
+ if ((0, utils_1.isReferenceObject)(schema) && schema.summary) {
19
+ commenter.add('[summary]', schema.summary);
20
+ }
21
+ if (schema.description) {
22
+ commenter.add(schema.description);
23
+ }
24
+ return commenter.end();
25
+ }
26
+ function initAST(schema, ctx) {
27
+ const result = {
28
+ type: type_1.ASTType.UNKNOWN,
29
+ comment: getCommentBySchema(schema, {
30
+ type: ctx.options.commentType,
31
+ }),
32
+ keyName: ctx.keyName,
33
+ deprecated: (0, utils_1.isReferenceObject)(schema) ? false : schema.deprecated,
34
+ };
35
+ ctx.keyName = '';
36
+ return result;
37
+ }
38
+ function parse(schema, options) {
39
+ const { type, ctx, parsers } = options;
40
+ const parser = parsers.find(parser => [parser.type].flat().includes(type));
41
+ if (parser) {
42
+ return parser.parse(schema, ctx);
43
+ }
44
+ return null;
45
+ }
46
+ function getParserSchemaType(schema) {
47
+ if ((0, utils_1.isReferenceObject)(schema)) {
48
+ return 'reference';
49
+ }
50
+ const forwardType = (0, forward_1.forward)(schema);
51
+ if (forwardType) {
52
+ return forwardType;
53
+ }
54
+ if (schema.type && typeof schema.type === 'string') {
55
+ return exports.SchemaPrimitive.includes(schema.type) ? schema.type : 'custom';
56
+ }
57
+ return 'null';
58
+ }
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDefaultValues = void 0;
4
+ exports.removeComments = removeComments;
5
+ exports.generateDefaultValuesFormat = generateDefaultValuesFormat;
6
+ const utils_1 = require("../../../utils");
7
+ // Remove comments
8
+ function removeComments(content) {
9
+ // Remove single line comments
10
+ content = content.replace(/\/\/.*$/gm, '');
11
+ // Remove multi-line comments and documentation comments
12
+ content = content.replace(/\/\*[\s\S]*?\*\//g, '');
13
+ return content;
14
+ }
15
+ const LEFT_BRACKET = ['(', '<', '{', '['];
16
+ const RIGHT_BRACKET = [')', '>', '}', ']'];
17
+ const NOT_SUPPORTED = [/^\[key: string\]/];
18
+ function parseTypeBody(typeBody) {
19
+ const processedTypeBody = typeBody
20
+ .replace(/:[\t\v\f\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*\n\s*\|/g, ':') // Handle union type after colon
21
+ .replace(/:[\t\v\f\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*\n\s*&/g, ':') // Handle intersection type after colon
22
+ .replace(/\n\s*\|/g, '|') // Handle union type line breaks
23
+ .replace(/\n\s*&/g, '&'); // Handle intersection type line breaks
24
+ const properties = [];
25
+ let bracketCount = 0;
26
+ let currentProperty = '';
27
+ for (let i = 0; i < processedTypeBody.length; i += 1) {
28
+ const char = processedTypeBody[i];
29
+ if (LEFT_BRACKET.includes(char)) {
30
+ bracketCount += 1;
31
+ }
32
+ else if (RIGHT_BRACKET.includes(char)) {
33
+ bracketCount -= 1;
34
+ }
35
+ currentProperty += char;
36
+ if (currentProperty.trim() && /\n/.test(char) && bracketCount === 0) {
37
+ properties.push(currentProperty.trim());
38
+ currentProperty = '';
39
+ }
40
+ }
41
+ if (currentProperty.trim()) {
42
+ properties.push(currentProperty.trim());
43
+ }
44
+ const parsedProperties = properties.filter(item => !NOT_SUPPORTED.some(regex => regex.test(item)))
45
+ .map((prop) => {
46
+ const [keyOrigin, ...valueOrigin] = prop.split(':');
47
+ const key = keyOrigin.trim();
48
+ const value = valueOrigin.join(':').trim();
49
+ const isOptional = key.endsWith('?');
50
+ const defaultValue = getDefaultValue(value);
51
+ return { key: key.replace('?', ''), value: defaultValue, isOptional };
52
+ })
53
+ .filter(prop => !prop.isOptional)
54
+ .map(prop => `${prop.key}: ${prop.value}`)
55
+ .join(',\n');
56
+ return `{\n${parsedProperties}\n}`;
57
+ }
58
+ function isSplitType(type, c) {
59
+ if (!type.includes(c)) {
60
+ return false;
61
+ }
62
+ let bracketCount = 0;
63
+ for (let i = 0; i < type.length; i += 1) {
64
+ const char = type[i];
65
+ if (LEFT_BRACKET.includes(char)) {
66
+ bracketCount += 1;
67
+ }
68
+ else if (RIGHT_BRACKET.includes(char)) {
69
+ bracketCount -= 1;
70
+ }
71
+ if (bracketCount === 0 && char === c) {
72
+ return true;
73
+ }
74
+ }
75
+ return false;
76
+ }
77
+ function splitTypes(typeStr, c) {
78
+ const result = [];
79
+ let bracketCount = 0;
80
+ let currentType = '';
81
+ for (let i = 0; i < typeStr.length; i += 1) {
82
+ const char = typeStr[i];
83
+ if (LEFT_BRACKET.includes(char)) {
84
+ bracketCount += 1;
85
+ }
86
+ else if (RIGHT_BRACKET.includes(char)) {
87
+ bracketCount -= 1;
88
+ }
89
+ if (char === c && bracketCount === 0) {
90
+ result.push(currentType.trim());
91
+ currentType = '';
92
+ }
93
+ else {
94
+ currentType += char;
95
+ }
96
+ }
97
+ if (currentType.trim()) {
98
+ result.push(currentType.trim());
99
+ }
100
+ return result;
101
+ }
102
+ function isIntersectionType(type) {
103
+ return isSplitType(type, '&');
104
+ }
105
+ function isUnionType(type) {
106
+ return isSplitType(type, '|');
107
+ }
108
+ function getDefaultValue(type) {
109
+ // Remove trailing semicolon
110
+ type = type.replace(/;$/, '');
111
+ if (isUnionType(type)) {
112
+ const types = splitTypes(type, '|');
113
+ return getDefaultValue(types[0]);
114
+ }
115
+ if (isIntersectionType(type)) {
116
+ const types = splitTypes(type, '&');
117
+ const mergedDefaults = types.map(t => getDefaultValue(t));
118
+ return mergedDefaults.reduce((acc, curr) => {
119
+ if (curr.startsWith('{') && curr.endsWith('}')) {
120
+ const currProperties = curr.slice(1, -1).trim();
121
+ if (acc === '{ }') {
122
+ return `{\n ${currProperties} \n}`;
123
+ }
124
+ return `${acc.slice(0, -2)},\n ${currProperties} \n}`;
125
+ }
126
+ return acc;
127
+ }, '{ }');
128
+ }
129
+ if (type.startsWith('(') && type.endsWith(')')) {
130
+ return getDefaultValue(type.slice(1, -1).trim());
131
+ }
132
+ if (type.startsWith('{') && type.endsWith('}')) {
133
+ return parseTypeBody(type.slice(1, -1).trim());
134
+ }
135
+ if (type.endsWith(')[]') && type.startsWith('(')) {
136
+ return '[]';
137
+ }
138
+ if (type.endsWith('[]') || type.startsWith('Array<')) {
139
+ return '[]';
140
+ }
141
+ if (type.startsWith('[') && type.endsWith(']')) {
142
+ return parseTuple(type);
143
+ }
144
+ if ((type.startsWith('\'') && type.endsWith('\'')) || (type.startsWith('"') && type.endsWith('"'))) {
145
+ return type;
146
+ }
147
+ if (Number.parseInt(type, 10)) {
148
+ return type;
149
+ }
150
+ switch (type) {
151
+ case 'string':
152
+ return '""';
153
+ case 'number':
154
+ return '0';
155
+ case 'boolean':
156
+ return 'false';
157
+ case 'null':
158
+ case 'undefined':
159
+ return type;
160
+ default:
161
+ return '{ }';
162
+ }
163
+ }
164
+ function parseTuple(tupleType) {
165
+ const elements = tupleType
166
+ .slice(1, -1)
167
+ .split(',')
168
+ .map(el => el.trim());
169
+ const parsedElements = elements.map(el => getDefaultValue(el));
170
+ return `[${parsedElements.join(', ')}]`;
171
+ }
172
+ const generateDefaultValues = (sourceCode) => getDefaultValue(removeComments(sourceCode).trim());
173
+ exports.generateDefaultValues = generateDefaultValues;
174
+ /**
175
+ * Generates default value objects for types and interfaces from the given TypeScript source code.
176
+ * @param sourceCode -TypeScript source code string
177
+ * @returns Object containing type and interface default values
178
+ */
179
+ function generateDefaultValuesFormat(sourceCode) {
180
+ return (0, utils_1.format)((0, exports.generateDefaultValues)(sourceCode), {
181
+ parser: 'json',
182
+ });
183
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callingCodeLoader = exports.CallingCodeLoader = void 0;
4
+ const utils_1 = require("../../../utils");
5
+ const helper_1 = require("./helper");
6
+ class CallingCodeLoader {
7
+ constructor() {
8
+ this.name = 'callingCodeLoader';
9
+ }
10
+ transform(input, options) {
11
+ if (options?.format) {
12
+ return (0, helper_1.generateDefaultValuesFormat)(input);
13
+ }
14
+ return Promise.resolve((0, helper_1.generateDefaultValues)(input));
15
+ }
16
+ async transformApi(api) {
17
+ const configStrArr = [];
18
+ if (api.pathParametersComment) {
19
+ configStrArr.push(`pathParams: ${await this.transform(api.pathParametersComment.replace(/\*/g, ''))}`);
20
+ }
21
+ if (api.queryParametersComment) {
22
+ configStrArr.push(`params: ${await this.transform(api.queryParametersComment.replace(/\*/g, ''))}`);
23
+ }
24
+ if (api.requestBodyComment) {
25
+ configStrArr.push(`data: ${await this.transform(api.requestBodyComment.replace(/\*/g, ''))}`);
26
+ }
27
+ return (0, utils_1.format)(`${api.name}({${configStrArr.join(',\n')}})`, {
28
+ printWidth: 40, // Shorten print width to force line breaks
29
+ tabWidth: 2,
30
+ semi: false, // Remove the trailing semicolon
31
+ useTabs: false,
32
+ trailingComma: 'none',
33
+ endOfLine: 'lf',
34
+ bracketSpacing: true,
35
+ arrowParens: 'always',
36
+ });
37
+ }
38
+ }
39
+ exports.CallingCodeLoader = CallingCodeLoader;
40
+ exports.callingCodeLoader = new CallingCodeLoader();