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,417 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isReferenceObject = isReferenceObject;
|
|
4
|
+
exports.isMaybeArraySchemaObject = isMaybeArraySchemaObject;
|
|
5
|
+
exports.findBy$ref = findBy$ref;
|
|
6
|
+
exports.parseReference = parseReference;
|
|
7
|
+
exports.dereference = dereference;
|
|
8
|
+
exports.nextReference = nextReference;
|
|
9
|
+
exports.setComponentsBy$ref = setComponentsBy$ref;
|
|
10
|
+
exports.get$refName = get$refName;
|
|
11
|
+
exports.removeAll$ref = removeAll$ref;
|
|
12
|
+
exports.isEqualObject = isEqualObject;
|
|
13
|
+
exports.next$ref = next$ref;
|
|
14
|
+
exports.optimizeRefsMap = optimizeRefsMap;
|
|
15
|
+
exports.mergeObject = mergeObject;
|
|
16
|
+
exports.getResponseSuccessKey = getResponseSuccessKey;
|
|
17
|
+
const lodash_1 = require("lodash");
|
|
18
|
+
const config_1 = require("../config");
|
|
19
|
+
const loader_1 = require("../core/loader");
|
|
20
|
+
const utils_1 = require("../utils");
|
|
21
|
+
/**
|
|
22
|
+
* Determine whether it is a $ref object
|
|
23
|
+
* @param obj Judgment object
|
|
24
|
+
* @returns Whether it is a $ref object
|
|
25
|
+
*/
|
|
26
|
+
function isReferenceObject(obj) {
|
|
27
|
+
return !!obj?.$ref;
|
|
28
|
+
}
|
|
29
|
+
function isBaseReferenceObject(obj) {
|
|
30
|
+
return !!obj?._$ref;
|
|
31
|
+
}
|
|
32
|
+
function isMaybeArraySchemaObject(obj) {
|
|
33
|
+
return !!obj?.items;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param path $ref search path
|
|
38
|
+
* @param openApi openApi document object
|
|
39
|
+
* @param isDeep Whether to deep copy
|
|
40
|
+
* @returns SchemaObject found
|
|
41
|
+
*/
|
|
42
|
+
function findBy$ref(path, openApi, isDeep = false) {
|
|
43
|
+
const pathArr = path.split('/');
|
|
44
|
+
let find = {
|
|
45
|
+
'#': openApi,
|
|
46
|
+
};
|
|
47
|
+
pathArr.forEach((key) => {
|
|
48
|
+
const tryKeys = [key, decodeURIComponent(key)];
|
|
49
|
+
if (find) {
|
|
50
|
+
find = find[tryKeys.find(k => !!find[k]) ?? key];
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (!find) {
|
|
54
|
+
const DEFAULT_CONFIG = (0, config_1.getGlobalConfig)();
|
|
55
|
+
throw new DEFAULT_CONFIG.Error(`cannot find $ref '${path}'`);
|
|
56
|
+
}
|
|
57
|
+
return (isDeep ? (0, lodash_1.cloneDeep)(find) : find);
|
|
58
|
+
}
|
|
59
|
+
function parseReference(obj, document, isDeep = false) {
|
|
60
|
+
if (isReferenceObject(obj)) {
|
|
61
|
+
return findBy$ref(obj.$ref, document, isDeep);
|
|
62
|
+
}
|
|
63
|
+
return obj;
|
|
64
|
+
}
|
|
65
|
+
function dereference(obj, document, isDeep = false) {
|
|
66
|
+
if (isReferenceObject(obj)) {
|
|
67
|
+
const result = findBy$ref(obj.$ref, document, isDeep);
|
|
68
|
+
const description = obj.description || result.description;
|
|
69
|
+
return {
|
|
70
|
+
...result,
|
|
71
|
+
description,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return obj;
|
|
75
|
+
}
|
|
76
|
+
function nextReference(schema) {
|
|
77
|
+
for (const keyStr of Object.keys(schema)) {
|
|
78
|
+
const key = keyStr;
|
|
79
|
+
if (schema[key] && typeof schema[key] === 'object' && isReferenceObject(schema[key])) {
|
|
80
|
+
return schema[key];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
*
|
|
87
|
+
* @param path $ref path
|
|
88
|
+
* @param data Reuse object
|
|
89
|
+
* @param openApi Inserted openapi document object
|
|
90
|
+
*/
|
|
91
|
+
function setComponentsBy$ref(path, data, openApi) {
|
|
92
|
+
const pathArr = path.split('/');
|
|
93
|
+
let find = {
|
|
94
|
+
'#': openApi,
|
|
95
|
+
};
|
|
96
|
+
pathArr.forEach((key, idx) => {
|
|
97
|
+
if (idx + 1 === pathArr.length) {
|
|
98
|
+
find[key] = data;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (find[key]) {
|
|
102
|
+
find = find[key];
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
find = find[key] = {};
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
*
|
|
111
|
+
* @param path $ref path
|
|
112
|
+
* @param toUpperCase Whether the initial letter size
|
|
113
|
+
* @returns Reference object name
|
|
114
|
+
*/
|
|
115
|
+
function get$refName(path, toUpperCase = true) {
|
|
116
|
+
const pathArr = path.split('/');
|
|
117
|
+
const name = pathArr[pathArr.length - 1];
|
|
118
|
+
if (!toUpperCase) {
|
|
119
|
+
return name;
|
|
120
|
+
}
|
|
121
|
+
return (0, utils_1.capitalizeFirstLetter)(name);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
*
|
|
125
|
+
* @param schemaOrigin Object with $ref
|
|
126
|
+
* @param openApi openApi document object
|
|
127
|
+
* @returns Removed $ref object
|
|
128
|
+
*/
|
|
129
|
+
/**
|
|
130
|
+
* M2-B1: $ref 解引用缓存优化 —— 命中 searchMap 时跳过 cloneDeep
|
|
131
|
+
*/
|
|
132
|
+
function removeAll$ref(schemaOrigin, openApi, optons) {
|
|
133
|
+
const { searchMap = new Map(), refNameMap = new Map() } = optons ?? {};
|
|
134
|
+
// 先检查缓存,命中则直接返回(避免 cloneDeep 开销)
|
|
135
|
+
if (isReferenceObject(schemaOrigin)) {
|
|
136
|
+
if (searchMap.has(schemaOrigin.$ref)) {
|
|
137
|
+
return searchMap.get(schemaOrigin.$ref);
|
|
138
|
+
}
|
|
139
|
+
const schema = findBy$ref(schemaOrigin.$ref, openApi, true);
|
|
140
|
+
refNameMap.set(schemaOrigin.$ref, loader_1.standardLoader.transformRefName(schemaOrigin.$ref));
|
|
141
|
+
// Mark for easy restoration
|
|
142
|
+
schema._$ref = schemaOrigin.$ref;
|
|
143
|
+
searchMap.set(schemaOrigin.$ref, schema);
|
|
144
|
+
for (const key of Object.keys(schema)) {
|
|
145
|
+
if (schema[key] && typeof schema[key] === 'object') {
|
|
146
|
+
schema[key] = removeAll$ref(schema[key], openApi, { searchMap, refNameMap });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return schema;
|
|
150
|
+
}
|
|
151
|
+
// 非 $ref 节点:仍需 cloneDeep 防止污染原始文档,但子节点走 searchMap 去重
|
|
152
|
+
const deepSchemaOrigin = (0, lodash_1.cloneDeep)(schemaOrigin);
|
|
153
|
+
for (const key of Object.keys(deepSchemaOrigin)) {
|
|
154
|
+
if (deepSchemaOrigin[key] && typeof deepSchemaOrigin[key] === 'object') {
|
|
155
|
+
deepSchemaOrigin[key] = removeAll$ref(deepSchemaOrigin[key], openApi, { searchMap, refNameMap });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return deepSchemaOrigin;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
*
|
|
162
|
+
* @param objValue object to be compared
|
|
163
|
+
* @param srcValue source object
|
|
164
|
+
* @param openApi openApi document object
|
|
165
|
+
* @returns Are they equal?
|
|
166
|
+
*/
|
|
167
|
+
function isEqualObject(objValue, srcValue, openApi) {
|
|
168
|
+
const visited = new WeakMap();
|
|
169
|
+
const ignoreKeyArr = ['_$ref'];
|
|
170
|
+
function customizer(objValueOrigin, otherValueOrigin) {
|
|
171
|
+
if (objValueOrigin === otherValueOrigin) {
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
let objValue = objValueOrigin;
|
|
175
|
+
let otherValue = otherValueOrigin;
|
|
176
|
+
if (isReferenceObject(objValueOrigin)) {
|
|
177
|
+
objValue = findBy$ref(objValueOrigin.$ref, openApi);
|
|
178
|
+
}
|
|
179
|
+
if (isReferenceObject(otherValueOrigin)) {
|
|
180
|
+
otherValue = findBy$ref(otherValueOrigin.$ref, openApi);
|
|
181
|
+
}
|
|
182
|
+
// Ignore the effect of array order
|
|
183
|
+
if ((0, lodash_1.isArray)(objValue) && (0, lodash_1.isArray)(otherValue)) {
|
|
184
|
+
const sortObjValue = (0, lodash_1.sortBy)(objValue);
|
|
185
|
+
const sortOtherValue = (0, lodash_1.sortBy)(otherValue);
|
|
186
|
+
const keys = [...new Set([...Object.keys(sortObjValue), ...Object.keys(sortOtherValue)])].filter(key => !ignoreKeyArr.includes(key));
|
|
187
|
+
return keys.every(key => (0, lodash_1.isEqualWith)(sortObjValue[key], sortOtherValue[key], customizer));
|
|
188
|
+
}
|
|
189
|
+
// If it is an object, compare recursively
|
|
190
|
+
if ((0, lodash_1.isObject)(objValue) && (0, lodash_1.isObject)(otherValue)) {
|
|
191
|
+
if (visited.has(objValue) && visited.get(objValue) === otherValue) {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
visited.set(objValue, otherValue);
|
|
195
|
+
const keys = [...new Set([...Object.keys(objValue), ...Object.keys(otherValue)])].filter(key => !ignoreKeyArr.includes(key));
|
|
196
|
+
return keys.every(key => (0, lodash_1.isEqualWith)(objValue[key], otherValue[key], customizer));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return (0, lodash_1.isEqualWith)(objValue, srcValue, customizer);
|
|
200
|
+
}
|
|
201
|
+
function next$ref() {
|
|
202
|
+
function getNameVersion(path) {
|
|
203
|
+
const name = loader_1.standardLoader.transformRefName(path, {
|
|
204
|
+
toUpperCase: false,
|
|
205
|
+
});
|
|
206
|
+
const [, nameVersion = 0] = /(\d+)$/.exec(name) ?? [];
|
|
207
|
+
return Number(nameVersion);
|
|
208
|
+
}
|
|
209
|
+
function getOnlyName(path) {
|
|
210
|
+
const name = loader_1.standardLoader.transformRefName(path, {
|
|
211
|
+
toUpperCase: false,
|
|
212
|
+
});
|
|
213
|
+
return name.replace(/\d+$/, '');
|
|
214
|
+
}
|
|
215
|
+
function getOnlyPath(path) {
|
|
216
|
+
return path.split('/').slice(0, -1).join('/');
|
|
217
|
+
}
|
|
218
|
+
function getNext(path, map = []) {
|
|
219
|
+
const name = getOnlyName(path);
|
|
220
|
+
const basePath = getOnlyPath(path);
|
|
221
|
+
let nameVersion = getNameVersion(path);
|
|
222
|
+
map.forEach(([key]) => {
|
|
223
|
+
if (getOnlyName(key) === name && getOnlyPath(path) === basePath) {
|
|
224
|
+
nameVersion = Math.max(nameVersion, getNameVersion(key));
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
return `${basePath}/${name}${nameVersion + 1}`;
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
getNameVersion,
|
|
231
|
+
getOnlyName,
|
|
232
|
+
getOnlyPath,
|
|
233
|
+
getNext,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* 根据 usedRefs 优化 refsMap:
|
|
238
|
+
* 1) 移除未使用的 key;
|
|
239
|
+
* 2) 同组(相同 basePath+onlyName)内按版本升序将值左移,
|
|
240
|
+
* 即剩余键依次接收原始值的前 N 个(N 为剩余键数量)。
|
|
241
|
+
*/
|
|
242
|
+
function optimizeRefsMap(refsMap, usedRefs) {
|
|
243
|
+
const helper = next$ref();
|
|
244
|
+
const usedSet = new Set(usedRefs.map(v => (typeof v === 'string' ? v : v.$ref)));
|
|
245
|
+
const grouped = {};
|
|
246
|
+
for (const [key, value] of Object.entries(refsMap || {})) {
|
|
247
|
+
const groupId = `${helper.getOnlyPath(key)}::${helper.getOnlyName(key)}`;
|
|
248
|
+
const arr = grouped[groupId] || (grouped[groupId] = []);
|
|
249
|
+
arr.push({ key, value, version: helper.getNameVersion(key) });
|
|
250
|
+
}
|
|
251
|
+
const newRefsMap = {};
|
|
252
|
+
for (const groupId of Object.keys(grouped)) {
|
|
253
|
+
const list = grouped[groupId].sort((a, b) => a.version - b.version);
|
|
254
|
+
const remain = list.filter(item => usedSet.has(item.key));
|
|
255
|
+
if (remain.length === 0) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
const assignValues = list.map(item => item.value).slice(0, remain.length);
|
|
259
|
+
remain.forEach((item, idx) => {
|
|
260
|
+
newRefsMap[item.key] = assignValues[idx];
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return newRefsMap;
|
|
264
|
+
}
|
|
265
|
+
function isCircular(obj) {
|
|
266
|
+
const seenObjects = new WeakSet();
|
|
267
|
+
function detect(obj) {
|
|
268
|
+
if (obj && typeof obj === 'object') {
|
|
269
|
+
if (seenObjects.has(obj)) {
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
seenObjects.add(obj);
|
|
273
|
+
for (const key in obj) {
|
|
274
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
275
|
+
if (detect(obj[key])) {
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
return detect(obj);
|
|
284
|
+
}
|
|
285
|
+
function hasBaseReferenceObject(obj) {
|
|
286
|
+
if (obj && typeof obj === 'object') {
|
|
287
|
+
if (isBaseReferenceObject(obj)) {
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
for (const key in obj) {
|
|
291
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
292
|
+
if (hasBaseReferenceObject(obj[key])) {
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
function removeBaseReference(obj, options) {
|
|
301
|
+
const { openApi, map = [], refNameMap = new Map() } = options;
|
|
302
|
+
if (isBaseReferenceObject(obj)) {
|
|
303
|
+
const refObj = { $ref: obj._$ref };
|
|
304
|
+
if (isEqualObject(obj, refObj, openApi)) {
|
|
305
|
+
return refObj;
|
|
306
|
+
}
|
|
307
|
+
for (const key in obj) {
|
|
308
|
+
if (Object.prototype.hasOwnProperty.call(obj, key) && hasBaseReferenceObject(obj[key])) {
|
|
309
|
+
obj[key] = removeBaseReference(obj[key], { openApi, map, refNameMap });
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const [path] = map.find(([, item]) => isEqualObject(item, obj, openApi)) ?? [];
|
|
313
|
+
if (path) {
|
|
314
|
+
return {
|
|
315
|
+
$ref: path,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
const refHelper = next$ref();
|
|
319
|
+
const nextPath = refHelper.getNext(refObj.$ref, map);
|
|
320
|
+
if (refNameMap.has(refObj.$ref)) {
|
|
321
|
+
refNameMap.set(nextPath, `${refNameMap.get(refObj.$ref) ?? ''}${refHelper.getNameVersion(nextPath)}`);
|
|
322
|
+
}
|
|
323
|
+
map.push([nextPath, obj]);
|
|
324
|
+
setComponentsBy$ref(nextPath, obj, openApi);
|
|
325
|
+
return {
|
|
326
|
+
$ref: nextPath,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
for (const key in obj) {
|
|
330
|
+
if (Object.prototype.hasOwnProperty.call(obj, key) && hasBaseReferenceObject(obj[key])) {
|
|
331
|
+
obj[key] = removeBaseReference(obj[key], { openApi, map, refNameMap });
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return obj;
|
|
335
|
+
}
|
|
336
|
+
function unCircular(obj, options) {
|
|
337
|
+
const { openApi, map = [], objPath = '$', seen = new WeakMap(), refNameMap = new Map() } = options;
|
|
338
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
339
|
+
return obj; // 原始值直接返回
|
|
340
|
+
}
|
|
341
|
+
if (seen.has(obj)) {
|
|
342
|
+
return seen.get(obj);
|
|
343
|
+
}
|
|
344
|
+
const setSeen = (obj, refOjec) => {
|
|
345
|
+
const oldRefObj = seen.get(obj) ?? refOjec;
|
|
346
|
+
oldRefObj.$ref = refOjec.$ref;
|
|
347
|
+
seen.set(obj, oldRefObj);
|
|
348
|
+
};
|
|
349
|
+
const $ref = `#/components/schemas/${loader_1.standardLoader.transform(loader_1.standardLoader.transformRadomVariable(objPath), {
|
|
350
|
+
style: 'camelCase',
|
|
351
|
+
})}`;
|
|
352
|
+
setSeen(obj, { $ref });
|
|
353
|
+
if (isBaseReferenceObject(obj)) {
|
|
354
|
+
const refObj = { $ref: obj._$ref };
|
|
355
|
+
if (isEqualObject(obj, refObj, openApi)) {
|
|
356
|
+
setSeen(obj, refObj);
|
|
357
|
+
return refObj;
|
|
358
|
+
}
|
|
359
|
+
const refHelper = next$ref();
|
|
360
|
+
const nextPath = refHelper.getNext(refObj.$ref, map);
|
|
361
|
+
if (refNameMap.has(refObj.$ref)) {
|
|
362
|
+
refNameMap.set(nextPath, `${refNameMap.get(refObj.$ref) ?? ''}${refHelper.getNameVersion(nextPath)}`);
|
|
363
|
+
}
|
|
364
|
+
seen.set(obj, { $ref: nextPath });
|
|
365
|
+
map.push([nextPath, obj]);
|
|
366
|
+
for (const key in obj) {
|
|
367
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
368
|
+
obj[key] = unCircular(obj[key], { openApi, map, objPath: `${objPath}.${key}`, seen, refNameMap });
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
setComponentsBy$ref(nextPath, obj, openApi);
|
|
372
|
+
return {
|
|
373
|
+
$ref: nextPath,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
map.push([$ref, obj]);
|
|
377
|
+
for (const key in obj) {
|
|
378
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
379
|
+
obj[key] = unCircular(obj[key], { openApi, map, objPath: `${objPath}.${key}`, seen, refNameMap });
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
setComponentsBy$ref($ref, obj, openApi);
|
|
383
|
+
return obj;
|
|
384
|
+
}
|
|
385
|
+
function mergeObject(objValue, srcValue, options) {
|
|
386
|
+
const { openApi, map = [], refNameMap = new Map() } = options;
|
|
387
|
+
function customizer(objValue, srcValue) {
|
|
388
|
+
// If they are all arrays and the src value is an empty array, the src value will be returned directly.
|
|
389
|
+
if ((0, lodash_1.isArray)(objValue) && (0, lodash_1.isArray)(srcValue) && !srcValue.length) {
|
|
390
|
+
return srcValue;
|
|
391
|
+
}
|
|
392
|
+
if (isEqualObject(objValue, srcValue, openApi)) {
|
|
393
|
+
return objValue;
|
|
394
|
+
}
|
|
395
|
+
// Handle circular references
|
|
396
|
+
if (isCircular(srcValue)) {
|
|
397
|
+
srcValue = unCircular(srcValue, { openApi, map, objPath: loader_1.standardLoader.transformRadomVariable(JSON.stringify(objValue)), refNameMap });
|
|
398
|
+
}
|
|
399
|
+
// Is there also a $ref attribute?
|
|
400
|
+
if (hasBaseReferenceObject(srcValue)) {
|
|
401
|
+
return removeBaseReference(srcValue, { openApi, map, refNameMap });
|
|
402
|
+
}
|
|
403
|
+
return srcValue;
|
|
404
|
+
}
|
|
405
|
+
// M2-B1: mergeWith 自身不污染首参(返回新对象),去掉冗余 cloneDeep
|
|
406
|
+
return (0, lodash_1.mergeWith)(objValue, srcValue, customizer);
|
|
407
|
+
}
|
|
408
|
+
function getResponseSuccessKey(responsesObject) {
|
|
409
|
+
if (!responsesObject) {
|
|
410
|
+
return '200';
|
|
411
|
+
}
|
|
412
|
+
const successKeys = Object.keys(responsesObject)
|
|
413
|
+
.map(key => Number(key))
|
|
414
|
+
.filter(key => !Number.isNaN(key) && key >= 200 && key < 300)
|
|
415
|
+
.sort((a, b) => a - b);
|
|
416
|
+
return `${successKeys[0] ?? 'default'}`;
|
|
417
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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.readPackageJson = readPackageJson;
|
|
7
|
+
exports.clearPackageJsonCache = clearPackageJsonCache;
|
|
8
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
/** In-memory cache: projectPath → parsed package.json. Valid for the lifetime of one generate run. */
|
|
11
|
+
const pkgCache = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Read and cache package.json for a given project directory.
|
|
14
|
+
* Returns null if the file doesn't exist or can't be parsed.
|
|
15
|
+
*/
|
|
16
|
+
async function readPackageJson(projectPath) {
|
|
17
|
+
const cached = pkgCache.get(projectPath);
|
|
18
|
+
if (cached !== undefined)
|
|
19
|
+
return cached;
|
|
20
|
+
try {
|
|
21
|
+
const pkgPath = node_path_1.default.resolve(projectPath, 'package.json');
|
|
22
|
+
const content = await promises_1.default.readFile(pkgPath, 'utf-8');
|
|
23
|
+
const pkg = JSON.parse(content);
|
|
24
|
+
pkgCache.set(projectPath, pkg);
|
|
25
|
+
return pkg;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
pkgCache.set(projectPath, null);
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Clear the in-memory cache (useful for testing). */
|
|
33
|
+
function clearPackageJsonCache() {
|
|
34
|
+
pkgCache.clear();
|
|
35
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
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.registerPartials = registerPartials;
|
|
7
|
+
exports.registerCommonHelpers = registerCommonHelpers;
|
|
8
|
+
exports.generateFile = generateFile;
|
|
9
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const glob_1 = require("glob");
|
|
12
|
+
const handlebars_1 = __importDefault(require("handlebars"));
|
|
13
|
+
const base_1 = require("./base");
|
|
14
|
+
const format_1 = require("./format");
|
|
15
|
+
// Register partials for template reuse, supports passing an hbs instance
|
|
16
|
+
async function registerPartials(baseTemplatePath, hbs = handlebars_1.default) {
|
|
17
|
+
const partialsDir = node_path_1.default.resolve(baseTemplatePath, 'partials');
|
|
18
|
+
try {
|
|
19
|
+
const partialFiles = await (0, glob_1.glob)('**/*.handlebars', {
|
|
20
|
+
ignore: 'node_modules/**',
|
|
21
|
+
cwd: partialsDir,
|
|
22
|
+
});
|
|
23
|
+
for (const file of partialFiles) {
|
|
24
|
+
const partialName = file.replace('.handlebars', '').replace(/\\/g, '/');
|
|
25
|
+
const partialContent = await promises_1.default.readFile(node_path_1.default.join(partialsDir, file), 'utf-8');
|
|
26
|
+
hbs.registerPartial(partialName, partialContent);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// partials dir may not exist — that's fine
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const getType = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
|
|
34
|
+
/**
|
|
35
|
+
* Register the common set of Handlebars helpers onto the given instance.
|
|
36
|
+
* Call this on every newly created isolated Handlebars instance.
|
|
37
|
+
*/
|
|
38
|
+
function registerCommonHelpers(hbs) {
|
|
39
|
+
hbs.registerHelper('isType', function (value, type, options) {
|
|
40
|
+
if (getType(value) === type) {
|
|
41
|
+
return options.fn(this);
|
|
42
|
+
}
|
|
43
|
+
return options.inverse(this);
|
|
44
|
+
});
|
|
45
|
+
hbs.registerHelper('and', function (...rest) {
|
|
46
|
+
const args = Array.prototype.slice.call(rest, 0, -1);
|
|
47
|
+
const options = rest[rest.length - 1];
|
|
48
|
+
const result = args.every((arg) => {
|
|
49
|
+
if (Array.isArray(arg)) {
|
|
50
|
+
return arg.length === 0;
|
|
51
|
+
}
|
|
52
|
+
return Boolean(arg);
|
|
53
|
+
});
|
|
54
|
+
return result ? options.fn(this) : options.inverse(this);
|
|
55
|
+
});
|
|
56
|
+
hbs.registerHelper('or', function (...rest) {
|
|
57
|
+
const args = Array.prototype.slice.call(rest, 0, -1);
|
|
58
|
+
const options = rest[rest.length - 1];
|
|
59
|
+
const result = args.some((arg) => {
|
|
60
|
+
if (Array.isArray(arg)) {
|
|
61
|
+
return arg.length !== 0;
|
|
62
|
+
}
|
|
63
|
+
return Boolean(arg);
|
|
64
|
+
});
|
|
65
|
+
return result ? options.fn(this) : options.inverse(this);
|
|
66
|
+
});
|
|
67
|
+
hbs.registerHelper('eq', (a, b) => a === b);
|
|
68
|
+
hbs.registerHelper('not', (a, b) => a !== b);
|
|
69
|
+
hbs.registerHelper('join', (...rest) => {
|
|
70
|
+
const args = Array.prototype.slice.call(rest, 0, -1);
|
|
71
|
+
return args.join('');
|
|
72
|
+
});
|
|
73
|
+
hbs.registerHelper('raw', text => new hbs.SafeString(text));
|
|
74
|
+
hbs.registerHelper('stripStarPrefix', (text) => {
|
|
75
|
+
if (!text || typeof text !== 'string')
|
|
76
|
+
return text;
|
|
77
|
+
return text.split('\n').map(line => line.replace(/^\* ?/, '')).join('\n');
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Pass in text content and generate a custom file in the specified directory
|
|
82
|
+
* @param distDir The directory where the file to be generated is located
|
|
83
|
+
* @param fileName File name to be generated
|
|
84
|
+
* @param content File content
|
|
85
|
+
*/
|
|
86
|
+
async function generateFile(distDir, fileName, content) {
|
|
87
|
+
if (!(await (0, base_1.existsPromise)(distDir))) {
|
|
88
|
+
await promises_1.default.mkdir(distDir, { recursive: true });
|
|
89
|
+
}
|
|
90
|
+
const filePath = node_path_1.default.join(distDir, fileName);
|
|
91
|
+
const formattedText = await (0, format_1.format)(content);
|
|
92
|
+
await promises_1.default.writeFile(filePath, formattedText);
|
|
93
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wormajs",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A modern OpenAPI code generator - Generate type-safe API clients from OpenAPI specs",
|
|
5
|
+
"author": "alova",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://github.com/alovajs/devtools",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/alovajs/devtools.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/alovajs/devtools/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"openapi",
|
|
17
|
+
"auto-generating",
|
|
18
|
+
"api",
|
|
19
|
+
"apis",
|
|
20
|
+
"fetch",
|
|
21
|
+
"axios",
|
|
22
|
+
"request",
|
|
23
|
+
"fetch-api",
|
|
24
|
+
"superagent",
|
|
25
|
+
"worma"
|
|
26
|
+
],
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./typings/index.d.ts",
|
|
30
|
+
"default": "./dist/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./plugin": {
|
|
33
|
+
"types": "./typings/plugins.d.ts",
|
|
34
|
+
"default": "./dist/plugins/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"main": "./dist/index.js",
|
|
38
|
+
"types": "./typings/index.d.ts",
|
|
39
|
+
"bin": {
|
|
40
|
+
"worma": "dist/bin/cli.js"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"dist",
|
|
44
|
+
"typings"
|
|
45
|
+
],
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"alova": "^3.3.4",
|
|
51
|
+
"chalk": "4.1.2",
|
|
52
|
+
"cli-truncate": "^4.0.0",
|
|
53
|
+
"commander": "^14.0.0",
|
|
54
|
+
"esbuild": "^0.25.6",
|
|
55
|
+
"glob": "^11.0.3",
|
|
56
|
+
"handlebars": "^4.7.8",
|
|
57
|
+
"js-yaml": "^4.1.0",
|
|
58
|
+
"lodash": "^4.17.21",
|
|
59
|
+
"log-update": "^6.1.0",
|
|
60
|
+
"openapi-types": "^12.1.3",
|
|
61
|
+
"ora": "5.4.1",
|
|
62
|
+
"prettier": "^3.6.2",
|
|
63
|
+
"skills": "^1.5.13",
|
|
64
|
+
"string-width": "^7.2.0",
|
|
65
|
+
"swagger2openapi": "^7.0.8",
|
|
66
|
+
"zod": "^3.25.68-alpha.11",
|
|
67
|
+
"zod-validation-error": "^3.5.3"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@types/fs-extra": "^11.0.4",
|
|
71
|
+
"@types/js-yaml": "^4.0.9",
|
|
72
|
+
"@types/lodash": "^4.17.24",
|
|
73
|
+
"@types/swagger2openapi": "^7.0.4",
|
|
74
|
+
"axios": "^1.17.0",
|
|
75
|
+
"fs-extra": "^11.3.1",
|
|
76
|
+
"ky": "^2.0.2",
|
|
77
|
+
"memfs": "^4.17.2",
|
|
78
|
+
"tsc-alias": "^1.8.16"
|
|
79
|
+
},
|
|
80
|
+
"scripts": {
|
|
81
|
+
"test": "vitest run",
|
|
82
|
+
"build": "run-s build:*",
|
|
83
|
+
"build:ts": "tsc --build tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
84
|
+
"build:dts": "dts-bundle-generator -o typings/index.d.ts src/index.ts --no-check --no-banner --project tsconfig.dts.json",
|
|
85
|
+
"build:plugin-dts": "dts-bundle-generator -o typings/plugins.d.ts src/plugins/index.ts --no-check --no-banner --project tsconfig.dts.json",
|
|
86
|
+
"build:copy": "ncp ./src/template/presets ./dist/template/presets"
|
|
87
|
+
}
|
|
88
|
+
}
|