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.
- package/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/bin/actions.js +245 -0
- package/dist/bin/cli.js +27 -0
- package/dist/bin/progressRenderer.js +47 -0
- package/dist/bin/renderer.js +551 -0
- package/dist/bin/theme.js +26 -0
- package/dist/config.js +19 -0
- package/dist/constant.js +162 -0
- package/dist/core/WorkerPool.js +102 -0
- package/dist/core/loader/astLoader/generates/array.js +34 -0
- package/dist/core/loader/astLoader/generates/enum.js +61 -0
- package/dist/core/loader/astLoader/generates/group.js +41 -0
- package/dist/core/loader/astLoader/generates/index.js +71 -0
- package/dist/core/loader/astLoader/generates/interface.js +59 -0
- package/dist/core/loader/astLoader/generates/simple.js +67 -0
- package/dist/core/loader/astLoader/generates/tuple.js +54 -0
- package/dist/core/loader/astLoader/generates/type.js +2 -0
- package/dist/core/loader/astLoader/generates/utils.js +86 -0
- package/dist/core/loader/astLoader/helper.js +21 -0
- package/dist/core/loader/astLoader/index.js +24 -0
- package/dist/core/loader/astLoader/normalize/index.js +70 -0
- package/dist/core/loader/astLoader/normalize/normalizer.js +69 -0
- package/dist/core/loader/astLoader/normalize/rules/convertTypeArray.js +68 -0
- package/dist/core/loader/astLoader/normalize/rules/handleEmptyType.js +8 -0
- package/dist/core/loader/astLoader/normalize/rules/inferType.js +43 -0
- package/dist/core/loader/astLoader/normalize/rules/mergeAnyOf.js +45 -0
- package/dist/core/loader/astLoader/normalize/rules/normalizeCombiningKeywords.js +26 -0
- package/dist/core/loader/astLoader/normalize/rules/normalizeEnum.js +38 -0
- package/dist/core/loader/astLoader/normalize/rules/normalizeNullType.js +24 -0
- package/dist/core/loader/astLoader/normalize/rules/removeRedundantKeywords.js +27 -0
- package/dist/core/loader/astLoader/normalize/rules/simplifySingleType.js +8 -0
- package/dist/core/loader/astLoader/normalize/rules/validateSchema.js +14 -0
- package/dist/core/loader/astLoader/parsers/array.js +28 -0
- package/dist/core/loader/astLoader/parsers/enum.js +49 -0
- package/dist/core/loader/astLoader/parsers/forward/array.js +12 -0
- package/dist/core/loader/astLoader/parsers/forward/enum.js +10 -0
- package/dist/core/loader/astLoader/parsers/forward/group.js +12 -0
- package/dist/core/loader/astLoader/parsers/forward/index.js +20 -0
- package/dist/core/loader/astLoader/parsers/forward/object.js +12 -0
- package/dist/core/loader/astLoader/parsers/forward/tuple.js +11 -0
- package/dist/core/loader/astLoader/parsers/forward/type.js +2 -0
- package/dist/core/loader/astLoader/parsers/group.js +50 -0
- package/dist/core/loader/astLoader/parsers/index.js +66 -0
- package/dist/core/loader/astLoader/parsers/object.js +44 -0
- package/dist/core/loader/astLoader/parsers/reference.js +41 -0
- package/dist/core/loader/astLoader/parsers/simple.js +48 -0
- package/dist/core/loader/astLoader/parsers/tuple.js +36 -0
- package/dist/core/loader/astLoader/parsers/type.js +2 -0
- package/dist/core/loader/astLoader/parsers/utils.js +58 -0
- package/dist/core/loader/callingCodeLoader/helper.js +183 -0
- package/dist/core/loader/callingCodeLoader/index.js +40 -0
- package/dist/core/loader/index.js +20 -0
- package/dist/core/loader/schemaLoader/index.js +101 -0
- package/dist/core/loader/standardLoader/helper.js +142 -0
- package/dist/core/loader/standardLoader/index.js +38 -0
- package/dist/core/loader/standardLoader/standards.js +105 -0
- package/dist/core/parser/index.js +18 -0
- package/dist/core/parser/openApiParser/helper.js +165 -0
- package/dist/core/parser/openApiParser/index.js +14 -0
- package/dist/core/parser/templateParser/helper.js +333 -0
- package/dist/core/parser/templateParser/index.js +314 -0
- package/dist/core/workerPool/index.js +6 -0
- package/dist/core/workerPool/poolManager.js +45 -0
- package/dist/core/workerPool/swagger2Worker.js +24 -0
- package/dist/core/workerPool/worker.js +61 -0
- package/dist/createConfig.js +37 -0
- package/dist/defineConfig.js +6 -0
- package/dist/functions/getAutoTemplateType.js +37 -0
- package/dist/functions/getFrameworkTag.js +18 -0
- package/dist/functions/prepareConfig.js +41 -0
- package/dist/functions/readWormaRc.js +155 -0
- package/dist/functions/wormaJson.js +232 -0
- package/dist/generate.js +84 -0
- package/dist/helper/PluginDriver.js +98 -0
- package/dist/helper/comment.js +88 -0
- package/dist/helper/config/ConfigHelper.js +79 -0
- package/dist/helper/config/ConfigManager.js +88 -0
- package/dist/helper/config/GeneratorHelper.js +343 -0
- package/dist/helper/config/index.js +19 -0
- package/dist/helper/config/type.js +2 -0
- package/dist/helper/config/zType.js +170 -0
- package/dist/helper/document/index.js +160 -0
- package/dist/helper/index.js +23 -0
- package/dist/helper/logger/index.js +76 -0
- package/dist/helper/progress.js +66 -0
- package/dist/helper/template/index.js +475 -0
- package/dist/index.js +33 -0
- package/dist/plugins/createPlugin.js +30 -0
- package/dist/plugins/index.js +34 -0
- package/dist/plugins/presets/aiDoc.js +173 -0
- package/dist/plugins/presets/apifox.js +56 -0
- package/dist/plugins/presets/filterApi.js +129 -0
- package/dist/plugins/presets/importType.js +49 -0
- package/dist/plugins/presets/payloadModifier/hepler.js +195 -0
- package/dist/plugins/presets/payloadModifier/index.js +122 -0
- package/dist/plugins/presets/payloadModifier/type.js +2 -0
- package/dist/plugins/presets/platform.js +73 -0
- package/dist/plugins/presets/rename.js +209 -0
- package/dist/plugins/presets/tagModifier.js +104 -0
- package/dist/plugins/presets/utils.js +36 -0
- package/dist/readConfig.js +92 -0
- package/dist/resolveWorkspaces.js +83 -0
- package/dist/template/index.js +180 -0
- package/dist/template/presets/ai-doc/SKILL.md.handlebars +29 -0
- package/dist/template/presets/ai-doc/references/{tag}/{api}.md.handlebars +54 -0
- package/dist/template/presets/alova/common/#index.cjs.handlebars +12 -0
- package/dist/template/presets/alova/common/components.d.cts.handlebars +1 -0
- package/dist/template/presets/alova/common/helper.cjs.handlebars +13 -0
- package/dist/template/presets/alova/common/services/#index.cjs.handlebars +13 -0
- package/dist/template/presets/alova/common/services/{tag}.cjs.handlebars +28 -0
- package/dist/template/presets/alova/common/services/{tag}.d.cts.handlebars +15 -0
- package/dist/template/presets/alova/common/typed.d.cts.handlebars +1 -0
- package/dist/template/presets/alova/module/#index.js.handlebars +12 -0
- package/dist/template/presets/alova/module/components.d.ts.handlebars +1 -0
- package/dist/template/presets/alova/module/helper.js.handlebars +11 -0
- package/dist/template/presets/alova/module/services/#index.js.handlebars +9 -0
- package/dist/template/presets/alova/module/services/{tag}.d.ts.handlebars +15 -0
- package/dist/template/presets/alova/module/services/{tag}.js.handlebars +21 -0
- package/dist/template/presets/alova/module/typed.d.ts.handlebars +1 -0
- package/dist/template/presets/alova/partials/api-jsdoc.handlebars +44 -0
- package/dist/template/presets/alova/partials/build-payload-body.handlebars +22 -0
- package/dist/template/presets/alova/partials/comment.handlebars +19 -0
- package/dist/template/presets/alova/partials/components-body.handlebars +4 -0
- package/dist/template/presets/alova/partials/dts-extra-config.handlebars +8 -0
- package/dist/template/presets/alova/partials/dts-fn-declare.handlebars +1 -0
- package/dist/template/presets/alova/partials/extract-responded.handlebars +11 -0
- package/dist/template/presets/alova/partials/stateshook-import.handlebars +9 -0
- package/dist/template/presets/alova/partials/stateshook-option.handlebars +9 -0
- package/dist/template/presets/alova/partials/typed-body.handlebars +43 -0
- package/dist/template/presets/alova/typescript/#index.ts.handlebars +14 -0
- package/dist/template/presets/alova/typescript/components.d.ts.handlebars +1 -0
- package/dist/template/presets/alova/typescript/helper.ts.handlebars +9 -0
- package/dist/template/presets/alova/typescript/services/#index.ts.handlebars +9 -0
- package/dist/template/presets/alova/typescript/services/{tag}.ts.handlebars +35 -0
- package/dist/template/presets/alova/typescript/typed.ts.handlebars +1 -0
- package/dist/template/presets/alova-globals/common/#index.cjs.handlebars +41 -0
- package/dist/template/presets/alova-globals/common/apiDefinitions.cjs.handlebars +12 -0
- package/dist/template/presets/alova-globals/common/createApis.cjs.handlebars +48 -0
- package/dist/template/presets/alova-globals/common/globals.d.cts.handlebars +2 -0
- package/dist/template/presets/alova-globals/module/#index.js.handlebars +2 -0
- package/dist/template/presets/alova-globals/module/apiDefinitions.js.handlebars +12 -0
- package/dist/template/presets/alova-globals/module/createApis.js.handlebars +44 -0
- package/dist/template/presets/alova-globals/module/globals.d.ts.handlebars +2 -0
- package/dist/template/presets/alova-globals/partials/comment.handlebars +19 -0
- package/dist/template/presets/alova-globals/partials/createApis-proxy-js.handlebars +55 -0
- package/dist/template/presets/alova-globals/partials/globals-d-ts.handlebars +148 -0
- package/dist/template/presets/alova-globals/partials/index-esm.handlebars +38 -0
- package/dist/template/presets/alova-globals/partials/withConfigType-jsdoc.handlebars +22 -0
- package/dist/template/presets/alova-globals/typescript/#index.ts.handlebars +2 -0
- package/dist/template/presets/alova-globals/typescript/apiDefinitions.ts.handlebars +12 -0
- package/dist/template/presets/alova-globals/typescript/createApis.ts.handlebars +99 -0
- package/dist/template/presets/alova-globals/typescript/globals.d.ts.handlebars +2 -0
- package/dist/template/presets/axios/common/#index.cjs.handlebars +22 -0
- package/dist/template/presets/axios/common/components.d.cts.handlebars +1 -0
- package/dist/template/presets/axios/common/helper.cjs.handlebars +27 -0
- package/dist/template/presets/axios/common/services/#index.cjs.handlebars +13 -0
- package/dist/template/presets/axios/common/services/{tag}.cjs.handlebars +28 -0
- package/dist/template/presets/axios/common/services/{tag}.d.cts.handlebars +11 -0
- package/dist/template/presets/axios/module/#index.js.handlebars +20 -0
- package/dist/template/presets/axios/module/components.d.ts.handlebars +1 -0
- package/dist/template/presets/axios/module/helper.js.handlebars +25 -0
- package/dist/template/presets/axios/module/services/#index.js.handlebars +9 -0
- package/dist/template/presets/axios/module/services/{tag}.d.ts.handlebars +11 -0
- package/dist/template/presets/axios/module/services/{tag}.js.handlebars +20 -0
- package/dist/template/presets/axios/partials/api-jsdoc.handlebars +44 -0
- package/dist/template/presets/axios/partials/comment.handlebars +19 -0
- package/dist/template/presets/axios/partials/components-body.handlebars +4 -0
- package/dist/template/presets/axios/partials/dts-fn-declare.handlebars +1 -0
- package/dist/template/presets/axios/partials/dts-types.handlebars +7 -0
- package/dist/template/presets/axios/typescript/#index.ts.handlebars +20 -0
- package/dist/template/presets/axios/typescript/components.d.ts.handlebars +1 -0
- package/dist/template/presets/axios/typescript/helper.ts.handlebars +28 -0
- package/dist/template/presets/axios/typescript/services/#index.ts.handlebars +9 -0
- package/dist/template/presets/axios/typescript/services/{tag}.ts.handlebars +31 -0
- package/dist/template/presets/config/common/worma.config.js.handlebars +9 -0
- package/dist/template/presets/config/module/worma.config.js.handlebars +9 -0
- package/dist/template/presets/config/partials/generator-content.handlebars +45 -0
- package/dist/template/presets/config/typescript/worma.config.ts.handlebars +9 -0
- package/dist/template/presets/fetch/common/#index.cjs.handlebars +17 -0
- package/dist/template/presets/fetch/common/FetchClient.cjs.handlebars +48 -0
- package/dist/template/presets/fetch/common/components.d.cts.handlebars +1 -0
- package/dist/template/presets/fetch/common/helper.cjs.handlebars +27 -0
- package/dist/template/presets/fetch/common/services/#index.cjs.handlebars +13 -0
- package/dist/template/presets/fetch/common/services/{tag}.cjs.handlebars +23 -0
- package/dist/template/presets/fetch/common/services/{tag}.d.cts.handlebars +10 -0
- package/dist/template/presets/fetch/module/#index.js.handlebars +15 -0
- package/dist/template/presets/fetch/module/FetchClient.js.handlebars +46 -0
- package/dist/template/presets/fetch/module/components.d.ts.handlebars +1 -0
- package/dist/template/presets/fetch/module/helper.js.handlebars +25 -0
- package/dist/template/presets/fetch/module/services/#index.js.handlebars +9 -0
- package/dist/template/presets/fetch/module/services/{tag}.d.ts.handlebars +10 -0
- package/dist/template/presets/fetch/module/services/{tag}.js.handlebars +15 -0
- package/dist/template/presets/fetch/partials/api-jsdoc.handlebars +44 -0
- package/dist/template/presets/fetch/partials/comment.handlebars +19 -0
- package/dist/template/presets/fetch/partials/components-body.handlebars +4 -0
- package/dist/template/presets/fetch/partials/dts-fn-declare.handlebars +1 -0
- package/dist/template/presets/fetch/partials/dts-types.handlebars +7 -0
- package/dist/template/presets/fetch/typescript/#index.ts.handlebars +15 -0
- package/dist/template/presets/fetch/typescript/FetchClient.ts.handlebars +59 -0
- package/dist/template/presets/fetch/typescript/components.d.ts.handlebars +1 -0
- package/dist/template/presets/fetch/typescript/helper.ts.handlebars +28 -0
- package/dist/template/presets/fetch/typescript/services/#index.ts.handlebars +9 -0
- package/dist/template/presets/fetch/typescript/services/{tag}.ts.handlebars +25 -0
- package/dist/template/presets/ky/module/#index.js.handlebars +14 -0
- package/dist/template/presets/ky/module/components.d.ts.handlebars +1 -0
- package/dist/template/presets/ky/module/helper.js.handlebars +27 -0
- package/dist/template/presets/ky/module/services/#index.js.handlebars +9 -0
- package/dist/template/presets/ky/module/services/{tag}.d.ts.handlebars +11 -0
- package/dist/template/presets/ky/module/services/{tag}.js.handlebars +19 -0
- package/dist/template/presets/ky/partials/api-jsdoc.handlebars +44 -0
- package/dist/template/presets/ky/partials/comment.handlebars +19 -0
- package/dist/template/presets/ky/partials/components-body.handlebars +4 -0
- package/dist/template/presets/ky/partials/dts-fn-declare.handlebars +1 -0
- package/dist/template/presets/ky/partials/dts-types.handlebars +9 -0
- package/dist/template/presets/ky/typescript/#index.ts.handlebars +14 -0
- package/dist/template/presets/ky/typescript/components.d.ts.handlebars +1 -0
- package/dist/template/presets/ky/typescript/helper.ts.handlebars +30 -0
- package/dist/template/presets/ky/typescript/services/#index.ts.handlebars +9 -0
- package/dist/template/presets/ky/typescript/services/{tag}.ts.handlebars +30 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/type/api.js +14 -0
- package/dist/type/ast.js +24 -0
- package/dist/type/base.js +17 -0
- package/dist/type/index.js +20 -0
- package/dist/type/lib.js +17 -0
- package/dist/type/openapi.js +2 -0
- package/dist/utils/base.js +212 -0
- package/dist/utils/format.js +64 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/openapi.js +417 -0
- package/dist/utils/readPackageJson.js +35 -0
- package/dist/utils/template.js +93 -0
- package/package.json +88 -0
- package/typings/index.d.ts +512 -0
- package/typings/plugins.d.ts +727 -0
package/dist/constant.js
ADDED
|
@@ -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
|
+
};
|