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
|
@@ -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,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,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();
|