wormajs 0.0.1 → 0.0.2-beta.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/README.md +96 -49
- package/dist/core/loader/astLoader/generates/group.js +6 -1
- package/dist/core/loader/astLoader/generates/interface.js +5 -1
- package/dist/core/loader/astLoader/normalize/rules/mergeAnyOf.js +66 -16
- package/dist/core/loader/astLoader/parsers/const.js +28 -0
- package/dist/core/loader/astLoader/parsers/forward/const.js +13 -0
- package/dist/core/loader/astLoader/parsers/forward/index.js +9 -1
- package/dist/core/loader/astLoader/parsers/index.js +2 -1
- package/dist/core/parser/openApiParser/helper.js +31 -10
- package/dist/plugins/presets/platform.js +1 -1
- package/dist/readConfig.js +3 -3
- package/dist/template/presets/alova/common/helper.cjs.handlebars +5 -3
- package/dist/template/presets/alova/common/services/{tag}.d.cts.handlebars +2 -2
- package/dist/template/presets/alova/module/helper.js.handlebars +5 -3
- package/dist/template/presets/alova/partials/typed-body.handlebars +1 -1
- package/dist/template/presets/alova-globals/common/apiDefinitions.cjs.handlebars +12 -12
- package/dist/template/presets/alova-globals/partials/globals-d-ts.handlebars +2 -2
- package/dist/template/presets/axios/common/helper.cjs.handlebars +7 -0
- package/dist/template/presets/axios/common/services/{tag}.d.cts.handlebars +1 -1
- package/dist/template/presets/axios/module/helper.js.handlebars +7 -0
- package/dist/template/presets/axios/typescript/services/{tag}.ts.handlebars +1 -1
- package/dist/template/presets/config/common/worma.config.js.handlebars +2 -2
- package/dist/template/presets/config/module/worma.config.js.handlebars +2 -2
- package/dist/template/presets/config/typescript/worma.config.ts.handlebars +2 -2
- package/dist/template/presets/fetch/common/helper.cjs.handlebars +7 -0
- package/dist/template/presets/fetch/common/services/{tag}.d.cts.handlebars +1 -1
- package/dist/template/presets/fetch/module/helper.js.handlebars +7 -0
- package/dist/template/presets/ky/module/#index.js.handlebars +14 -14
- package/dist/template/presets/ky/module/helper.js.handlebars +7 -0
- package/dist/template/presets/ky/typescript/#index.ts.handlebars +14 -14
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/base.js +2 -2
- package/package.json +4 -3
- package/typings/plugins.d.ts +1 -1
package/README.md
CHANGED
|
@@ -1,49 +1,96 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img width="200px" src="https://alova.js.org/img/logo-text-vertical.svg" />
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
|
-
<p align="center"><b>
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
1
|
+
# worma - A Universal OpenAPI Code Generator
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img width="200px" src="https://alova.js.org/img/logo-text-vertical.svg" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center"><b>One OpenAPI spec. Code for developers, knowledge for AI.<br />Generate API calling functions, TypeScript types, documentation, and AI Skills in a single command.</b></p>
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## What is worma?
|
|
12
|
+
|
|
13
|
+
worma is a universal OpenAPI code generator that works with any backend language and any frontend request library. Provide an OpenAPI spec, and worma generates:
|
|
14
|
+
|
|
15
|
+
- **API calling functions** — ready to import and use in your project
|
|
16
|
+
- **TypeScript type definitions** — full type safety for request/response
|
|
17
|
+
- **In-editor documentation** — hover docs, sidebar API explorer via VSCode extension
|
|
18
|
+
- **AI Skills** — structured API knowledge for coding agents (Cursor, Copilot, etc.)
|
|
19
|
+
|
|
20
|
+
## Installation
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm i wormajs -D
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Initialize configuration
|
|
30
|
+
npx worma init
|
|
31
|
+
|
|
32
|
+
# Generate API code
|
|
33
|
+
npx worma gen
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Templates
|
|
37
|
+
|
|
38
|
+
worma ships with pre-built templates for popular request libraries:
|
|
39
|
+
|
|
40
|
+
| Template | Library | Notes |
|
|
41
|
+
| -------------- | ------------ | ------------------------------------- |
|
|
42
|
+
| `alova` | alova@3 | Functional, tree-shakeable |
|
|
43
|
+
| `alovaGlobals` | alova@3 | Global `Apis.xxx`, migration-friendly |
|
|
44
|
+
| `axios` | axios | Most popular HTTP client |
|
|
45
|
+
| `fetch` | native fetch | Zero dependencies |
|
|
46
|
+
| `ky` | ky | Lightweight fetch wrapper |
|
|
47
|
+
|
|
48
|
+
Custom Handlebars templates are also supported.
|
|
49
|
+
|
|
50
|
+
## Plugins
|
|
51
|
+
|
|
52
|
+
Built-in plugins include: `aiDoc`, `apifox`, `filterApi`, `importType`, `payloadModifier`, `platform`, `rename`, `tagModifier`.
|
|
53
|
+
|
|
54
|
+
## Documentation
|
|
55
|
+
|
|
56
|
+
Please refer to the [worma documentation](https://worma.js.org) for full details.
|
|
57
|
+
|
|
58
|
+
## Migration from @alova/wormhole
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx skills add alovajs/skills --skill worma-guidelines
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Then ask your coding agent: "Please migrate this project from @alova/wormhole to worma."
|
|
65
|
+
|
|
66
|
+
## Join the community
|
|
67
|
+
|
|
68
|
+
- [Follow us on X to get the latest updates](https://x.com/alovajs)
|
|
69
|
+
- [Join the Discord](https://discord.gg/S47QGJgkVb)
|
|
70
|
+
- [Join the WeChat group](https://alova.js.org/img/wechat_qrcode.jpg)
|
|
71
|
+
|
|
72
|
+
## We need your support
|
|
73
|
+
|
|
74
|
+
If you like worma, please give us a star! It's a recognition and encouragement for our work.
|
|
75
|
+
|
|
76
|
+
## Welcome to contribute
|
|
77
|
+
|
|
78
|
+
We are honored to receive active participation from developers around the world in Issues and Discussions.
|
|
79
|
+
|
|
80
|
+
We hope to make worma a common project for everyone who is willing to participate. We encourage everyone to become a contributor to the worma community with an open and inclusive attitude. Even if you are a junior developer, as long as your ideas meet the development guidelines, please participate generously.
|
|
81
|
+
|
|
82
|
+
Effective contributions will win you a certain reputation in the worma community. Before contributing, please be sure to read the [Contribution Guide](https://github.com/alovajs/alova/blob/main/CONTRIBUTING.md) in detail.
|
|
83
|
+
|
|
84
|
+
## Changelog
|
|
85
|
+
|
|
86
|
+
[Link](https://github.com/alovajs/alova/releases)
|
|
87
|
+
|
|
88
|
+
## Contributors
|
|
89
|
+
|
|
90
|
+
<a href="https://github.com/alovajs/alova/graphs/contributors">
|
|
91
|
+
<img src="https://contrib.rocks/image?repo=alovajs/alova&max=30&columns=10" />
|
|
92
|
+
</a>
|
|
93
|
+
|
|
94
|
+
## LICENSE
|
|
95
|
+
|
|
96
|
+
[MIT](https://en.wikipedia.org/wiki/MIT_License)
|
|
@@ -20,7 +20,12 @@ function groupTypeGenerator(ast, ctx) {
|
|
|
20
20
|
// In UNION (|), INTERSECTION members do NOT need parens because `&` already binds tighter
|
|
21
21
|
const memberTsStr = (0, utils_1.getValue)(nextValue, ctx.options);
|
|
22
22
|
const producesUnionLike = item.type === type_1.ASTType.UNION || item.type === type_1.ASTType.ENUM;
|
|
23
|
-
|
|
23
|
+
let needsParens = ast.type === type_1.ASTType.INTERSECTION && producesUnionLike;
|
|
24
|
+
// In UNION (|), wrap block-like members that contain const discriminators
|
|
25
|
+
// (key:"value" literal properties) so discriminated union branches are clearly
|
|
26
|
+
// delimited (see issue #824).
|
|
27
|
+
if (!needsParens && ast.type === type_1.ASTType.UNION && /\w+:"[^"]*"/.test(memberTsStr))
|
|
28
|
+
needsParens = true;
|
|
24
29
|
groups.push(needsParens ? `(${memberTsStr})` : memberTsStr);
|
|
25
30
|
});
|
|
26
31
|
switch (ast.type) {
|
|
@@ -36,7 +36,11 @@ function normalInterfaceGenerator(ast, ctx) {
|
|
|
36
36
|
ctx.pathKey = keyName;
|
|
37
37
|
const nextResult = ctx.next(param.ast, ctx.options);
|
|
38
38
|
const value = (0, utils_1.getValue)(nextResult, ctx.options);
|
|
39
|
-
|
|
39
|
+
// Literal (const) properties are rendered without a space after the colon
|
|
40
|
+
// so the generated property keeps the form key:"value" (see issue #824).
|
|
41
|
+
const sep = param.ast.type === type_1.ASTType.LITERAL ? ':' : ': ';
|
|
42
|
+
const propLine = `${nextResult.comment ?? ''}${keyName}${optionalFlag}${sep}${value}`;
|
|
43
|
+
propLine.split('\n').forEach(line => lines.push(` ${line}`));
|
|
40
44
|
});
|
|
41
45
|
if (ast.addParams) {
|
|
42
46
|
ctx.pathKey = '[key: string]';
|
|
@@ -1,6 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = mergeAnyOf;
|
|
4
|
+
/**
|
|
5
|
+
* 检测两个 schema 在某个共享属性上是否构成判别式。
|
|
6
|
+
* 当不同分支对同一字段使用不同的 const 或 enum 时,合并这些分支会
|
|
7
|
+
* 丢掉判别信息,因此应保留为独立的联合分支。
|
|
8
|
+
*/
|
|
9
|
+
function hasDiscriminatorConflict(a, b) {
|
|
10
|
+
const aProps = (a.properties ?? {});
|
|
11
|
+
const bProps = (b.properties ?? {});
|
|
12
|
+
for (const key of Object.keys(aProps)) {
|
|
13
|
+
if (!(key in bProps)) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
const ap = aProps[key];
|
|
17
|
+
const bp = bProps[key];
|
|
18
|
+
// 不同的 const 值 → 判别式
|
|
19
|
+
if (ap.const !== undefined && bp.const !== undefined && ap.const !== bp.const) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
// 一个 const、一个 enum → 判别式
|
|
23
|
+
if ((ap.const !== undefined && bp.enum) || (bp.const !== undefined && ap.enum)) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
// 不同的 enum 值 → 判别式
|
|
27
|
+
if (ap.enum && bp.enum) {
|
|
28
|
+
const aKey = JSON.stringify([...ap.enum].sort());
|
|
29
|
+
const bKey = JSON.stringify([...bp.enum].sort());
|
|
30
|
+
if (aKey !== bKey) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 组内任意两个分支存在判别式冲突即视为有冲突。
|
|
39
|
+
*/
|
|
40
|
+
function groupHasDiscriminatorConflict(group) {
|
|
41
|
+
for (let i = 0; i < group.length; i++) {
|
|
42
|
+
for (let j = i + 1; j < group.length; j++) {
|
|
43
|
+
if (hasDiscriminatorConflict(group[i], group[j])) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
4
50
|
function mergeAnyOf(schema) {
|
|
5
51
|
if (!schema.anyOf || schema.anyOf.length < 2) {
|
|
6
52
|
return;
|
|
@@ -17,26 +63,30 @@ function mergeAnyOf(schema) {
|
|
|
17
63
|
for (const group of typeMap.values()) {
|
|
18
64
|
if (group.length === 1) {
|
|
19
65
|
mergedAnyOf.push(group[0]);
|
|
66
|
+
continue;
|
|
20
67
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
68
|
+
// 组内分支之间只要存在判别式冲突,就保留原始分支不做合并
|
|
69
|
+
if (groupHasDiscriminatorConflict(group)) {
|
|
70
|
+
mergedAnyOf.push(...group);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const merged = { type: group[0].type };
|
|
74
|
+
for (const sub of group) {
|
|
75
|
+
for (const [key, value] of Object.entries(sub)) {
|
|
76
|
+
if (key === 'type')
|
|
77
|
+
continue;
|
|
78
|
+
if (merged[key] === undefined) {
|
|
79
|
+
merged[key] = value;
|
|
80
|
+
}
|
|
81
|
+
else if (Array.isArray(merged[key]) && Array.isArray(value)) {
|
|
82
|
+
merged[key] = Array.from(new Set([...merged[key], ...value]));
|
|
83
|
+
}
|
|
84
|
+
else if (typeof merged[key] === 'object' && typeof value === 'object') {
|
|
85
|
+
merged[key] = { ...merged[key], ...value };
|
|
36
86
|
}
|
|
37
87
|
}
|
|
38
|
-
mergedAnyOf.push(merged);
|
|
39
88
|
}
|
|
89
|
+
mergedAnyOf.push(merged);
|
|
40
90
|
}
|
|
41
91
|
if (mergedAnyOf.length === schema.anyOf.length && mergedAnyOf.every((s, i) => s === schema.anyOf[i])) {
|
|
42
92
|
return;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.constTypeParser = constTypeParser;
|
|
4
|
+
const type_1 = require("../../../../type");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
/**
|
|
7
|
+
* 将带有 const 关键字的 JSON Schema 解析为字面量 AST 节点。
|
|
8
|
+
* 例如:
|
|
9
|
+
* { "type": "string", "const": "email" } -> "email"
|
|
10
|
+
* { "type": "number", "const": 1 } -> 1
|
|
11
|
+
* { "const": true } -> true
|
|
12
|
+
* { "const": "authorization_code" } -> "authorization_code"
|
|
13
|
+
*
|
|
14
|
+
* 参考:JSON Schema draft-04+ 允许 `const` 与 `type` 同时出现,
|
|
15
|
+
* 表示该字段必须等于 `const` 的值,对应到 TypeScript 即字面量类型。
|
|
16
|
+
*/
|
|
17
|
+
function constTypeParser(schema, ctx) {
|
|
18
|
+
const result = {
|
|
19
|
+
...(0, utils_1.initAST)(schema, ctx),
|
|
20
|
+
type: type_1.ASTType.LITERAL,
|
|
21
|
+
params: schema.const,
|
|
22
|
+
};
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
exports.default = {
|
|
26
|
+
type: 'const',
|
|
27
|
+
parse: constTypeParser,
|
|
28
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* 带有 const 关键字的 schema 优先路由到 const 解析器,
|
|
5
|
+
* 即使 schema 同时声明了 type(如 `{ "type": "string", "const": "email" }`),
|
|
6
|
+
* 也能正确产出字面量类型。
|
|
7
|
+
*/
|
|
8
|
+
exports.default = {
|
|
9
|
+
is(schema) {
|
|
10
|
+
return schema && schema.const !== undefined && schema.const !== null;
|
|
11
|
+
},
|
|
12
|
+
to: 'const',
|
|
13
|
+
};
|
|
@@ -6,11 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.forwarders = void 0;
|
|
7
7
|
exports.forward = forward;
|
|
8
8
|
const array_1 = __importDefault(require("./array"));
|
|
9
|
+
const const_1 = __importDefault(require("./const"));
|
|
9
10
|
const enum_1 = __importDefault(require("./enum"));
|
|
10
11
|
const group_1 = __importDefault(require("./group"));
|
|
11
12
|
const object_1 = __importDefault(require("./object"));
|
|
12
13
|
const tuple_1 = __importDefault(require("./tuple"));
|
|
13
|
-
exports.forwarders = [
|
|
14
|
+
exports.forwarders = [
|
|
15
|
+
object_1.default,
|
|
16
|
+
enum_1.default,
|
|
17
|
+
tuple_1.default,
|
|
18
|
+
array_1.default,
|
|
19
|
+
const_1.default,
|
|
20
|
+
group_1.default,
|
|
21
|
+
];
|
|
14
22
|
function forward(schema) {
|
|
15
23
|
for (const forwarder of exports.forwarders) {
|
|
16
24
|
if (forwarder.is(schema)) {
|
|
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
exports.astParse = astParse;
|
|
21
21
|
const type_1 = require("../../../../type");
|
|
22
22
|
const array_1 = __importDefault(require("./array"));
|
|
23
|
+
const const_1 = __importDefault(require("./const"));
|
|
23
24
|
const enum_1 = __importDefault(require("./enum"));
|
|
24
25
|
const group_1 = __importDefault(require("./group"));
|
|
25
26
|
const object_1 = __importDefault(require("./object"));
|
|
@@ -33,7 +34,7 @@ function astParse(schema, options) {
|
|
|
33
34
|
const value = (0, utils_1.parse)(schema, {
|
|
34
35
|
type: (0, utils_1.getParserSchemaType)(schema),
|
|
35
36
|
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
|
+
parsers: [array_1.default, object_1.default, enum_1.default, const_1.default, simple_1.default, reference_1.default, tuple_1.default, group_1.default],
|
|
37
38
|
});
|
|
38
39
|
if (!value) {
|
|
39
40
|
return {
|
|
@@ -9,6 +9,7 @@ const node_fs_1 = require("node:fs");
|
|
|
9
9
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
11
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
12
|
+
const swagger2openapi_1 = __importDefault(require("swagger2openapi"));
|
|
12
13
|
const poolManager_1 = require("../../../core/workerPool/poolManager");
|
|
13
14
|
const helper_1 = require("../../../helper");
|
|
14
15
|
const utils_1 = require("../../../utils");
|
|
@@ -16,28 +17,48 @@ const supportedExtname = ['json', 'yaml'];
|
|
|
16
17
|
function isSwagger2(data) {
|
|
17
18
|
return !!data?.swagger;
|
|
18
19
|
}
|
|
19
|
-
/**
|
|
20
|
+
/** Main-thread Swagger2→OpenAPI3 conversion — used as a fallback when the worker pool is unavailable. */
|
|
21
|
+
function convertSwagger2OnMainThread(data) {
|
|
22
|
+
return swagger2openapi_1.default
|
|
23
|
+
.convertObj(data, { warnOnly: true })
|
|
24
|
+
.then(result => result.openapi);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 9.3.4: Run CPU-heavy Swagger2→OpenAPI3 conversion via PoolManager (worker thread).
|
|
28
|
+
* If the worker pool cannot be created or fails at runtime (e.g. test/CI environments
|
|
29
|
+
* where the `.ts` worker cannot be loaded as a worker, or worker_threads is unavailable),
|
|
30
|
+
* gracefully fall back to the main-thread conversion so generation still succeeds.
|
|
31
|
+
*/
|
|
20
32
|
function convertSwagger2Async(data) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
// Resolve worker path: .js for production, .ts for vitest/dev
|
|
34
|
+
// In mocked filesystem envs, existsSync may return false — fall back to trying both paths
|
|
35
|
+
const jsPath = node_path_1.default.resolve(__dirname, '../../workerPool/swagger2Worker.js');
|
|
36
|
+
const tsPath = node_path_1.default.resolve(__dirname, '../../workerPool/swagger2Worker.ts');
|
|
37
|
+
const workerScript = (0, node_fs_1.existsSync)(jsPath) ? jsPath : tsPath;
|
|
38
|
+
let pool;
|
|
39
|
+
try {
|
|
40
|
+
pool = poolManager_1.PoolManager.getInstance().get({
|
|
28
41
|
key: 'swagger2Worker',
|
|
29
42
|
workerScript,
|
|
30
43
|
sharedContext: {},
|
|
31
44
|
poolSize: 1,
|
|
32
45
|
});
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return convertSwagger2OnMainThread(data);
|
|
49
|
+
}
|
|
50
|
+
return new Promise((resolve, reject) => {
|
|
33
51
|
pool.processBatch([data]).then((results) => {
|
|
34
52
|
if (results.length > 0 && results[0].openapi) {
|
|
35
53
|
resolve(results[0].openapi);
|
|
36
54
|
}
|
|
37
55
|
else {
|
|
38
|
-
|
|
56
|
+
convertSwagger2OnMainThread(data).then(resolve, reject);
|
|
39
57
|
}
|
|
40
|
-
}).catch(
|
|
58
|
+
}).catch(() => {
|
|
59
|
+
// Worker failed (script load error, thread crash, etc.) — fall back to main thread
|
|
60
|
+
convertSwagger2OnMainThread(data).then(resolve, reject);
|
|
61
|
+
});
|
|
41
62
|
});
|
|
42
63
|
}
|
|
43
64
|
// Parse local openapi files
|
package/dist/readConfig.js
CHANGED
|
@@ -41,9 +41,9 @@ async function readConfig(projectPath = process.cwd()) {
|
|
|
41
41
|
const userDependencies = await (0, utils_1.getUserInstalledDependencies)(projectPath);
|
|
42
42
|
// 始终将 worma 自身作为外部依赖,防止 esbuild 打包 worma 源码进入临时文件
|
|
43
43
|
// 否则 __dirname 会指向用户项目目录,导致预设模板路径解析失败
|
|
44
|
-
// monorepo 子包可能不直接依赖
|
|
45
|
-
const allExternals = [...new Set([...userDependencies, 'worma', '
|
|
46
|
-
const configTmpFileName = `
|
|
44
|
+
// monorepo 子包可能不直接依赖 wormajs,但 config 文件会 import from 'wormajs'
|
|
45
|
+
const allExternals = [...new Set([...userDependencies, 'worma', 'wormajs/plugin'])];
|
|
46
|
+
const configTmpFileName = `worma_tmp_${Date.now()}.cjs`;
|
|
47
47
|
// 使用绝对路径:esbuild 写入相对 outfile 时按 cwd 解析,
|
|
48
48
|
// 而 require() 解析相对路径时基于调用模块所在目录,二者不一致会导致 require 失败。
|
|
49
49
|
// 绝对路径可保证写入与 require 指向同一文件。
|
|
@@ -4,9 +4,11 @@ function buildPayload(url, defaultConfig, apiName, config) {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @
|
|
8
|
-
* @
|
|
9
|
-
* @
|
|
7
|
+
* @template {Record<string, (config: any) => any>} TagedMap
|
|
8
|
+
* @template \{{ [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> }} ConfigMap
|
|
9
|
+
* @param {TagedMap} _ - tagged api map (unused at runtime)
|
|
10
|
+
* @param {ConfigMap} configMap - default config per api name
|
|
11
|
+
* @returns {ConfigMap}
|
|
10
12
|
*/
|
|
11
13
|
const setMethodDefaultConfig = (_, configMap) => configMap;
|
|
12
14
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { Alova2Method, Alova2MethodConfig } from '../typed';
|
|
1
|
+
import type { Alova2Method, Alova2MethodConfig } from '../typed.d.cts';
|
|
2
2
|
{{#each tagedApis}}
|
|
3
3
|
import type { {{{tagName}}}DefaultConfig } from '.';
|
|
4
4
|
{{/each}}
|
|
5
|
-
import type * as ComponentTypes from '../components';
|
|
5
|
+
import type * as ComponentTypes from '../components.d.cts';
|
|
6
6
|
|
|
7
7
|
{{#each tagedApis}}
|
|
8
8
|
{{> extract-responded}}
|
|
@@ -4,8 +4,10 @@ export function buildPayload(url, defaultConfig, apiName, config) {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @
|
|
8
|
-
* @
|
|
9
|
-
* @
|
|
7
|
+
* @template {Record<string, (config: any) => any>} TagedMap
|
|
8
|
+
* @template \{{ [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> }} ConfigMap
|
|
9
|
+
* @param {TagedMap} _ - tagged api map (unused at runtime)
|
|
10
|
+
* @param {ConfigMap} configMap - default config per api name
|
|
11
|
+
* @returns {ConfigMap}
|
|
10
12
|
*/
|
|
11
13
|
export const setMethodDefaultConfig = (_, configMap) => configMap;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
{{> comment}}
|
|
2
|
-
{{#if config.useImportType}}/// <reference types='./globals.d.
|
|
3
|
-
|
|
4
|
-
const apiDefinitions = {
|
|
5
|
-
{{#each tagedApis}}
|
|
6
|
-
{{#apis}}
|
|
7
|
-
'{{{tag}}}.{{{name}}}': ['{{method}}', '{{{path}}}'],
|
|
8
|
-
{{/apis}}
|
|
9
|
-
{{/each}}
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
module.exports = apiDefinitions;
|
|
1
|
+
{{> comment}}
|
|
2
|
+
{{#if config.useImportType}}/// <reference types='./globals.d.cts' />{{else}}/// <reference types='./globals.d.cts' />{{/if}}
|
|
3
|
+
|
|
4
|
+
const apiDefinitions = {
|
|
5
|
+
{{#each tagedApis}}
|
|
6
|
+
{{#apis}}
|
|
7
|
+
'{{{tag}}}.{{{name}}}': ['{{method}}', '{{{path}}}'],
|
|
8
|
+
{{/apis}}
|
|
9
|
+
{{/each}}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
module.exports = apiDefinitions;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Alova, AlovaMethodCreateConfig, AlovaGenerics, Method } from 'alova';
|
|
2
|
-
import type { alovaInstance, $$userConfigMap } from './index';
|
|
3
|
-
import type apiDefinitions from './apiDefinitions';
|
|
2
|
+
import type { alovaInstance, $$userConfigMap } from './index{{#if (eq type "commonjs")}}.cjs{{/if}}';
|
|
3
|
+
import type apiDefinitions from './apiDefinitions{{#if (eq type "commonjs")}}.cjs{{/if}}';
|
|
4
4
|
|
|
5
5
|
type CollapsedAlova = typeof alovaInstance;
|
|
6
6
|
type UserMethodConfigMap = typeof $$userConfigMap;
|
|
@@ -22,6 +22,13 @@ function buildPayload(url, defaultConfig, apiName, config) {
|
|
|
22
22
|
return { url: resolvedUrl, mergedConfig };
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* @template {Record<string, (config: any) => any>} TagedMap
|
|
27
|
+
* @template \{{ [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> }} ConfigMap
|
|
28
|
+
* @param {TagedMap} _ - tagged api map (unused at runtime)
|
|
29
|
+
* @param {ConfigMap} configMap - default config per api name
|
|
30
|
+
* @returns {ConfigMap}
|
|
31
|
+
*/
|
|
25
32
|
const setDefaultConfig = (_, configMap) => configMap;
|
|
26
33
|
|
|
27
34
|
module.exports = { buildPayload, setDefaultConfig };
|
|
@@ -22,4 +22,11 @@ export function buildPayload(url, defaultConfig, apiName, config) {
|
|
|
22
22
|
return { url: resolvedUrl, mergedConfig };
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* @template {Record<string, (config: any) => any>} TagedMap
|
|
27
|
+
* @template \{{ [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> }} ConfigMap
|
|
28
|
+
* @param {TagedMap} _ - tagged api map (unused at runtime)
|
|
29
|
+
* @param {ConfigMap} configMap - default config per api name
|
|
30
|
+
* @returns {ConfigMap}
|
|
31
|
+
*/
|
|
25
32
|
export const setDefaultConfig = (_, configMap) => configMap;
|
|
@@ -24,7 +24,7 @@ export function {{{name}}}(config: {{{name}}}ExtraConfig): Promise<{{{name}}}Res
|
|
|
24
24
|
url,
|
|
25
25
|
...mergedConfig,{{#if (eq response "Blob")}}
|
|
26
26
|
responseType: 'blob',{{/if}}
|
|
27
|
-
}){{#if (eq response "Blob")}}.then((data: any) => data instanceof Blob ? data : new Blob([data])){{/if}}
|
|
27
|
+
}){{#if (eq response "Blob")}}.then((data: any) => data instanceof Blob ? data : new Blob([data])){{/if}};
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
{{/each}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const { defineConfig } = require('
|
|
2
|
-
const { platform, aiDoc{{#if templateImport}}, {{{templateImport}}}{{/if}} } = require('
|
|
1
|
+
const { defineConfig } = require('wormajs');
|
|
2
|
+
const { platform, aiDoc{{#if templateImport}}, {{{templateImport}}}{{/if}} } = require('wormajs/plugin');
|
|
3
3
|
|
|
4
4
|
// For more config detailed visit:
|
|
5
5
|
// https://github.com/alovajs/devtools
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineConfig } from '
|
|
2
|
-
import { platform, aiDoc{{#if templateImport}}, {{{templateImport}}}{{/if}} } from '
|
|
1
|
+
import { defineConfig } from 'wormajs';
|
|
2
|
+
import { platform, aiDoc{{#if templateImport}}, {{{templateImport}}}{{/if}} } from 'wormajs/plugin';
|
|
3
3
|
|
|
4
4
|
// For more config detailed visit:
|
|
5
5
|
// https://github.com/alovajs/devtools
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineConfig } from '
|
|
2
|
-
import { platform, aiDoc{{#if templateImport}}, {{{templateImport}}}{{/if}} } from '
|
|
1
|
+
import { defineConfig } from 'wormajs';
|
|
2
|
+
import { platform, aiDoc{{#if templateImport}}, {{{templateImport}}}{{/if}} } from 'wormajs/plugin';
|
|
3
3
|
|
|
4
4
|
// For more config detailed visit:
|
|
5
5
|
// https://github.com/alovajs/devtools
|
|
@@ -22,6 +22,13 @@ function buildPayload(url, defaultConfig, apiName, config) {
|
|
|
22
22
|
return { url: resolvedUrl, mergedConfig };
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* @template {Record<string, (config: any) => any>} TagedMap
|
|
27
|
+
* @template \{{ [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> }} ConfigMap
|
|
28
|
+
* @param {TagedMap} _ - tagged api map (unused at runtime)
|
|
29
|
+
* @param {ConfigMap} configMap - default config per api name
|
|
30
|
+
* @returns {ConfigMap}
|
|
31
|
+
*/
|
|
25
32
|
const setDefaultConfig = (_, configMap) => configMap;
|
|
26
33
|
|
|
27
34
|
module.exports = { buildPayload, setDefaultConfig };
|
|
@@ -22,4 +22,11 @@ export function buildPayload(url, defaultConfig, apiName, config) {
|
|
|
22
22
|
return { url: resolvedUrl, mergedConfig };
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* @template {Record<string, (config: any) => any>} TagedMap
|
|
27
|
+
* @template \{{ [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> }} ConfigMap
|
|
28
|
+
* @param {TagedMap} _ - tagged api map (unused at runtime)
|
|
29
|
+
* @param {ConfigMap} configMap - default config per api name
|
|
30
|
+
* @returns {ConfigMap}
|
|
31
|
+
*/
|
|
25
32
|
export const setDefaultConfig = (_, configMap) => configMap;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
{{> comment}}
|
|
2
|
-
import ky from 'ky';
|
|
3
|
-
|
|
4
|
-
export const kyInstance = ky.create({
|
|
5
|
-
prefix: '{{{baseUrl}}}/',
|
|
6
|
-
hooks: {
|
|
7
|
-
beforeRequest: [
|
|
8
|
-
_state => { },
|
|
9
|
-
],
|
|
10
|
-
afterResponse: [
|
|
11
|
-
_state => { },
|
|
12
|
-
],
|
|
13
|
-
},
|
|
14
|
-
});
|
|
1
|
+
{{> comment}}
|
|
2
|
+
import ky from 'ky';
|
|
3
|
+
|
|
4
|
+
export const kyInstance = ky.create({
|
|
5
|
+
prefix: '{{{baseUrl}}}/',
|
|
6
|
+
hooks: {
|
|
7
|
+
beforeRequest: [
|
|
8
|
+
_state => { },
|
|
9
|
+
],
|
|
10
|
+
afterResponse: [
|
|
11
|
+
_state => { },
|
|
12
|
+
],
|
|
13
|
+
},
|
|
14
|
+
});
|
|
@@ -24,4 +24,11 @@ export function buildPayload(url, defaultConfig, apiName, config) {
|
|
|
24
24
|
return { url: resolvedUrl, mergedConfig };
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* @template {Record<string, (config: any) => any>} TagedMap
|
|
29
|
+
* @template \{{ [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> }} ConfigMap
|
|
30
|
+
* @param {TagedMap} _ - tagged api map (unused at runtime)
|
|
31
|
+
* @param {ConfigMap} configMap - default config per api name
|
|
32
|
+
* @returns {ConfigMap}
|
|
33
|
+
*/
|
|
27
34
|
export const setDefaultConfig = (_, configMap) => configMap;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
{{> comment}}
|
|
2
|
-
import ky from 'ky';
|
|
3
|
-
|
|
4
|
-
export const kyInstance = ky.create({
|
|
5
|
-
prefix: '{{{baseUrl}}}/',
|
|
6
|
-
hooks: {
|
|
7
|
-
beforeRequest: [
|
|
8
|
-
_state => { },
|
|
9
|
-
],
|
|
10
|
-
afterResponse: [
|
|
11
|
-
_state => { },
|
|
12
|
-
],
|
|
13
|
-
},
|
|
14
|
-
});
|
|
1
|
+
{{> comment}}
|
|
2
|
+
import ky from 'ky';
|
|
3
|
+
|
|
4
|
+
export const kyInstance = ky.create({
|
|
5
|
+
prefix: '{{{baseUrl}}}/',
|
|
6
|
+
hooks: {
|
|
7
|
+
beforeRequest: [
|
|
8
|
+
_state => { },
|
|
9
|
+
],
|
|
10
|
+
afterResponse: [
|
|
11
|
+
_state => { },
|
|
12
|
+
],
|
|
13
|
+
},
|
|
14
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/config.ts","../src/constant.ts","../src/createConfig.ts","../src/defineConfig.ts","../src/generate.ts","../src/index.ts","../src/readConfig.ts","../src/resolveWorkspaces.ts","../src/bin/actions.ts","../src/bin/cli.ts","../src/bin/progressRenderer.ts","../src/bin/renderer.ts","../src/bin/theme.ts","../src/core/WorkerPool.ts","../src/core/loader/index.ts","../src/core/loader/astLoader/helper.ts","../src/core/loader/astLoader/index.ts","../src/core/loader/astLoader/generates/array.ts","../src/core/loader/astLoader/generates/enum.ts","../src/core/loader/astLoader/generates/group.ts","../src/core/loader/astLoader/generates/index.ts","../src/core/loader/astLoader/generates/interface.ts","../src/core/loader/astLoader/generates/simple.ts","../src/core/loader/astLoader/generates/tuple.ts","../src/core/loader/astLoader/generates/type.ts","../src/core/loader/astLoader/generates/utils.ts","../src/core/loader/astLoader/normalize/index.ts","../src/core/loader/astLoader/normalize/normalizer.ts","../src/core/loader/astLoader/normalize/rules/convertTypeArray.ts","../src/core/loader/astLoader/normalize/rules/handleEmptyType.ts","../src/core/loader/astLoader/normalize/rules/inferType.ts","../src/core/loader/astLoader/normalize/rules/mergeAnyOf.ts","../src/core/loader/astLoader/normalize/rules/normalizeCombiningKeywords.ts","../src/core/loader/astLoader/normalize/rules/normalizeEnum.ts","../src/core/loader/astLoader/normalize/rules/normalizeNullType.ts","../src/core/loader/astLoader/normalize/rules/removeRedundantKeywords.ts","../src/core/loader/astLoader/normalize/rules/simplifySingleType.ts","../src/core/loader/astLoader/normalize/rules/validateSchema.ts","../src/core/loader/astLoader/parsers/array.ts","../src/core/loader/astLoader/parsers/enum.ts","../src/core/loader/astLoader/parsers/group.ts","../src/core/loader/astLoader/parsers/index.ts","../src/core/loader/astLoader/parsers/object.ts","../src/core/loader/astLoader/parsers/reference.ts","../src/core/loader/astLoader/parsers/simple.ts","../src/core/loader/astLoader/parsers/tuple.ts","../src/core/loader/astLoader/parsers/type.ts","../src/core/loader/astLoader/parsers/utils.ts","../src/core/loader/astLoader/parsers/forward/array.ts","../src/core/loader/astLoader/parsers/forward/enum.ts","../src/core/loader/astLoader/parsers/forward/group.ts","../src/core/loader/astLoader/parsers/forward/index.ts","../src/core/loader/astLoader/parsers/forward/object.ts","../src/core/loader/astLoader/parsers/forward/tuple.ts","../src/core/loader/astLoader/parsers/forward/type.ts","../src/core/loader/callingCodeLoader/helper.ts","../src/core/loader/callingCodeLoader/index.ts","../src/core/loader/schemaLoader/index.ts","../src/core/loader/standardLoader/helper.ts","../src/core/loader/standardLoader/index.ts","../src/core/loader/standardLoader/standards.ts","../src/core/parser/index.ts","../src/core/parser/openApiParser/helper.ts","../src/core/parser/openApiParser/index.ts","../src/core/parser/templateParser/helper.ts","../src/core/parser/templateParser/index.ts","../src/core/workerPool/index.ts","../src/core/workerPool/poolManager.ts","../src/core/workerPool/swagger2Worker.ts","../src/core/workerPool/worker.ts","../src/functions/getAutoTemplateType.ts","../src/functions/getFrameworkTag.ts","../src/functions/prepareConfig.ts","../src/functions/readWormaRc.ts","../src/functions/wormaJson.ts","../src/helper/PluginDriver.ts","../src/helper/comment.ts","../src/helper/index.ts","../src/helper/progress.ts","../src/helper/config/ConfigHelper.ts","../src/helper/config/ConfigManager.ts","../src/helper/config/GeneratorHelper.ts","../src/helper/config/index.ts","../src/helper/config/type.ts","../src/helper/config/zType.ts","../src/helper/document/index.ts","../src/helper/logger/index.ts","../src/helper/template/index.ts","../src/plugins/createPlugin.ts","../src/plugins/index.ts","../src/plugins/presets/aiDoc.ts","../src/plugins/presets/apifox.ts","../src/plugins/presets/filterApi.ts","../src/plugins/presets/importType.ts","../src/plugins/presets/platform.ts","../src/plugins/presets/rename.ts","../src/plugins/presets/tagModifier.ts","../src/plugins/presets/utils.ts","../src/plugins/presets/payloadModifier/hepler.ts","../src/plugins/presets/payloadModifier/index.ts","../src/plugins/presets/payloadModifier/type.ts","../src/template/index.ts","../src/type/api.ts","../src/type/ast.ts","../src/type/base.ts","../src/type/index.ts","../src/type/lib.ts","../src/type/openapi.ts","../src/utils/base.ts","../src/utils/format.ts","../src/utils/index.ts","../src/utils/openapi.ts","../src/utils/readPackageJson.ts","../src/utils/template.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/config.ts","../src/constant.ts","../src/createConfig.ts","../src/defineConfig.ts","../src/generate.ts","../src/index.ts","../src/readConfig.ts","../src/resolveWorkspaces.ts","../src/bin/actions.ts","../src/bin/cli.ts","../src/bin/progressRenderer.ts","../src/bin/renderer.ts","../src/bin/theme.ts","../src/core/WorkerPool.ts","../src/core/loader/index.ts","../src/core/loader/astLoader/helper.ts","../src/core/loader/astLoader/index.ts","../src/core/loader/astLoader/generates/array.ts","../src/core/loader/astLoader/generates/enum.ts","../src/core/loader/astLoader/generates/group.ts","../src/core/loader/astLoader/generates/index.ts","../src/core/loader/astLoader/generates/interface.ts","../src/core/loader/astLoader/generates/simple.ts","../src/core/loader/astLoader/generates/tuple.ts","../src/core/loader/astLoader/generates/type.ts","../src/core/loader/astLoader/generates/utils.ts","../src/core/loader/astLoader/normalize/index.ts","../src/core/loader/astLoader/normalize/normalizer.ts","../src/core/loader/astLoader/normalize/rules/convertTypeArray.ts","../src/core/loader/astLoader/normalize/rules/handleEmptyType.ts","../src/core/loader/astLoader/normalize/rules/inferType.ts","../src/core/loader/astLoader/normalize/rules/mergeAnyOf.ts","../src/core/loader/astLoader/normalize/rules/normalizeCombiningKeywords.ts","../src/core/loader/astLoader/normalize/rules/normalizeEnum.ts","../src/core/loader/astLoader/normalize/rules/normalizeNullType.ts","../src/core/loader/astLoader/normalize/rules/removeRedundantKeywords.ts","../src/core/loader/astLoader/normalize/rules/simplifySingleType.ts","../src/core/loader/astLoader/normalize/rules/validateSchema.ts","../src/core/loader/astLoader/parsers/array.ts","../src/core/loader/astLoader/parsers/const.ts","../src/core/loader/astLoader/parsers/enum.ts","../src/core/loader/astLoader/parsers/group.ts","../src/core/loader/astLoader/parsers/index.ts","../src/core/loader/astLoader/parsers/object.ts","../src/core/loader/astLoader/parsers/reference.ts","../src/core/loader/astLoader/parsers/simple.ts","../src/core/loader/astLoader/parsers/tuple.ts","../src/core/loader/astLoader/parsers/type.ts","../src/core/loader/astLoader/parsers/utils.ts","../src/core/loader/astLoader/parsers/forward/array.ts","../src/core/loader/astLoader/parsers/forward/const.ts","../src/core/loader/astLoader/parsers/forward/enum.ts","../src/core/loader/astLoader/parsers/forward/group.ts","../src/core/loader/astLoader/parsers/forward/index.ts","../src/core/loader/astLoader/parsers/forward/object.ts","../src/core/loader/astLoader/parsers/forward/tuple.ts","../src/core/loader/astLoader/parsers/forward/type.ts","../src/core/loader/callingCodeLoader/helper.ts","../src/core/loader/callingCodeLoader/index.ts","../src/core/loader/schemaLoader/index.ts","../src/core/loader/standardLoader/helper.ts","../src/core/loader/standardLoader/index.ts","../src/core/loader/standardLoader/standards.ts","../src/core/parser/index.ts","../src/core/parser/openApiParser/helper.ts","../src/core/parser/openApiParser/index.ts","../src/core/parser/templateParser/helper.ts","../src/core/parser/templateParser/index.ts","../src/core/workerPool/index.ts","../src/core/workerPool/poolManager.ts","../src/core/workerPool/swagger2Worker.ts","../src/core/workerPool/worker.ts","../src/functions/getAutoTemplateType.ts","../src/functions/getFrameworkTag.ts","../src/functions/prepareConfig.ts","../src/functions/readWormaRc.ts","../src/functions/wormaJson.ts","../src/helper/PluginDriver.ts","../src/helper/comment.ts","../src/helper/index.ts","../src/helper/progress.ts","../src/helper/config/ConfigHelper.ts","../src/helper/config/ConfigManager.ts","../src/helper/config/GeneratorHelper.ts","../src/helper/config/index.ts","../src/helper/config/type.ts","../src/helper/config/zType.ts","../src/helper/document/index.ts","../src/helper/logger/index.ts","../src/helper/template/index.ts","../src/plugins/createPlugin.ts","../src/plugins/index.ts","../src/plugins/presets/aiDoc.ts","../src/plugins/presets/apifox.ts","../src/plugins/presets/filterApi.ts","../src/plugins/presets/importType.ts","../src/plugins/presets/platform.ts","../src/plugins/presets/rename.ts","../src/plugins/presets/tagModifier.ts","../src/plugins/presets/utils.ts","../src/plugins/presets/payloadModifier/hepler.ts","../src/plugins/presets/payloadModifier/index.ts","../src/plugins/presets/payloadModifier/type.ts","../src/template/index.ts","../src/type/api.ts","../src/type/ast.ts","../src/type/base.ts","../src/type/index.ts","../src/type/lib.ts","../src/type/openapi.ts","../src/utils/base.ts","../src/utils/format.ts","../src/utils/index.ts","../src/utils/openapi.ts","../src/utils/readPackageJson.ts","../src/utils/template.ts"],"version":"5.9.3"}
|
package/dist/utils/base.js
CHANGED
|
@@ -118,13 +118,13 @@ async function resolveConfigFile(projectPath) {
|
|
|
118
118
|
for (const ext of extensions) {
|
|
119
119
|
const configFile = node_path_1.default.join(projectPath, `worma.config.${ext}`);
|
|
120
120
|
if (await existsPromise(configFile)) {
|
|
121
|
-
return configFile;
|
|
121
|
+
return configFile.replace(/\\/g, '/');
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
// Fallback to .wormarc if no worma.config.* found
|
|
125
125
|
const rcFile = node_path_1.default.join(projectPath, '.wormarc');
|
|
126
126
|
if (await existsPromise(rcFile)) {
|
|
127
|
-
return rcFile;
|
|
127
|
+
return rcFile.replace(/\\/g, '/');
|
|
128
128
|
}
|
|
129
129
|
return null;
|
|
130
130
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wormajs",
|
|
3
|
-
"version": "0.0.1",
|
|
3
|
+
"version": "0.0.2-beta.1",
|
|
4
4
|
"description": "A modern OpenAPI code generator - Generate type-safe API clients from OpenAPI specs",
|
|
5
|
-
"author": "
|
|
5
|
+
"author": "worma",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://github.com/alovajs/devtools",
|
|
8
8
|
"repository": {
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
"main": "./dist/index.js",
|
|
38
38
|
"types": "./typings/index.d.ts",
|
|
39
39
|
"bin": {
|
|
40
|
-
"worma": "dist/bin/cli.js"
|
|
40
|
+
"worma": "dist/bin/cli.js",
|
|
41
|
+
"wormajs": "dist/bin/cli.js"
|
|
41
42
|
},
|
|
42
43
|
"files": [
|
|
43
44
|
"dist",
|
package/typings/plugins.d.ts
CHANGED
|
@@ -604,7 +604,7 @@ export type PlatformType = "swagger" | "knife4j" | "fastapi" | "yapi";
|
|
|
604
604
|
*
|
|
605
605
|
* @example
|
|
606
606
|
* ```ts
|
|
607
|
-
* import { platform, alovaGlobals } from '
|
|
607
|
+
* import { platform, alovaGlobals } from 'wormajs/plugin';
|
|
608
608
|
*
|
|
609
609
|
* defineConfig({
|
|
610
610
|
* generator: [{
|