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,43 @@
|
|
|
1
|
+
import type { alovaInstance } from './index';
|
|
2
|
+
import type { Alova, AlovaGenerics, AlovaMethodCreateConfig, Method } from 'alova';
|
|
3
|
+
|
|
4
|
+
type CollapsedAlova = typeof alovaInstance;
|
|
5
|
+
|
|
6
|
+
export type Alova2MethodConfig<Responded> = CollapsedAlova extends Alova<
|
|
7
|
+
AlovaGenerics<
|
|
8
|
+
any,
|
|
9
|
+
any,
|
|
10
|
+
infer RequestConfig,
|
|
11
|
+
infer Response,
|
|
12
|
+
infer ResponseHeader,
|
|
13
|
+
infer L1Cache,
|
|
14
|
+
infer L2Cache,
|
|
15
|
+
infer SE
|
|
16
|
+
>
|
|
17
|
+
>
|
|
18
|
+
? Omit<
|
|
19
|
+
AlovaMethodCreateConfig<
|
|
20
|
+
AlovaGenerics<Responded, any, RequestConfig, Response, ResponseHeader, L1Cache, L2Cache, SE>,
|
|
21
|
+
any,
|
|
22
|
+
Responded
|
|
23
|
+
>,
|
|
24
|
+
'params'
|
|
25
|
+
>
|
|
26
|
+
: never;
|
|
27
|
+
|
|
28
|
+
export type Alova2Method<Responded> = CollapsedAlova extends Alova<
|
|
29
|
+
AlovaGenerics<
|
|
30
|
+
any,
|
|
31
|
+
any,
|
|
32
|
+
infer RequestConfig,
|
|
33
|
+
infer Response,
|
|
34
|
+
infer ResponseHeader,
|
|
35
|
+
infer L1Cache,
|
|
36
|
+
infer L2Cache,
|
|
37
|
+
infer SE
|
|
38
|
+
>
|
|
39
|
+
>
|
|
40
|
+
? Method<
|
|
41
|
+
AlovaGenerics<Responded, any, RequestConfig, Response, ResponseHeader, L1Cache, L2Cache, SE>
|
|
42
|
+
>
|
|
43
|
+
: never;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
import { createAlova } from 'alova';
|
|
3
|
+
import fetchAdapter from 'alova/fetch';
|
|
4
|
+
{{> stateshook-import}}
|
|
5
|
+
|
|
6
|
+
export const alovaInstance = createAlova({
|
|
7
|
+
baseURL: "{{{baseUrl}}}",
|
|
8
|
+
{{> stateshook-option}}
|
|
9
|
+
requestAdapter: fetchAdapter(),
|
|
10
|
+
beforeRequest: method => { },
|
|
11
|
+
responded: (res, method) => {
|
|
12
|
+
return method.meta?.blob ? res.blob() : res.json();
|
|
13
|
+
}
|
|
14
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{> components-body}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
export function buildPayload(url: string, defaultConfig: Record<string, any>, apiName: string, config: any) {
|
|
3
|
+
{{> build-payload-body}}
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export const setMethodDefaultConfig = <
|
|
7
|
+
TagedMap extends Record<string, (config: any) => any>,
|
|
8
|
+
ConfigMap extends { [K in keyof TagedMap]?: Partial<Parameters<TagedMap[K]>[0]> },
|
|
9
|
+
>(_: TagedMap, configMap: ConfigMap) => configMap;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
import { setMethodDefaultConfig } from '../helper';
|
|
3
|
+
{{#each tagedApis}}
|
|
4
|
+
import * as {{{tagName}}} from './{{{tagName}}}';
|
|
5
|
+
{{/each}}
|
|
6
|
+
|
|
7
|
+
{{#each tagedApis}}
|
|
8
|
+
export const {{{tagName}}}DefaultConfig = setMethodDefaultConfig({{{tagName}}}, {});
|
|
9
|
+
{{/each}}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
import { alovaInstance } from '../index';
|
|
3
|
+
import { buildPayload } from '../helper';
|
|
4
|
+
import type { Alova2Method, Alova2MethodConfig } from '../typed';
|
|
5
|
+
{{#each tagedApis}}
|
|
6
|
+
import { {{{tagName}}}DefaultConfig } from '.';
|
|
7
|
+
{{/each}}
|
|
8
|
+
import type * as ComponentTypes from '../components';
|
|
9
|
+
|
|
10
|
+
{{#each tagedApis}}
|
|
11
|
+
{{> extract-responded}}
|
|
12
|
+
{{#each apis}}
|
|
13
|
+
|
|
14
|
+
interface {{{name}}}ExtraConfig {
|
|
15
|
+
{{#if pathParameters}}pathParams: {{processType pathParameters @root.componentNames}};
|
|
16
|
+
{{/if}}{{#if queryParameters}}params: {{processType queryParameters @root.componentNames}};
|
|
17
|
+
{{/if}}{{#if requestBody}}data: {{processType requestBody @root.componentNames}};
|
|
18
|
+
{{/if}}
|
|
19
|
+
}
|
|
20
|
+
{{> api-jsdoc}}
|
|
21
|
+
export function {{{name}}}<Config extends Alova2MethodConfig<{{processType response @root.componentNames}}> & {{{name}}}ExtraConfig>(config: Config): Alova2Method<ExtractResponded<Config, '{{{name}}}', {{processType response @root.componentNames}}>> {
|
|
22
|
+
const { url, data, mergedConfig } = buildPayload('{{{path}}}', {{{tag}}}DefaultConfig, {{{name}}}.name, config);
|
|
23
|
+
return alovaInstance.Request<ExtractResponded<Config, '{{{name}}}', {{processType response @root.componentNames}}>>({
|
|
24
|
+
...mergedConfig,
|
|
25
|
+
url,
|
|
26
|
+
data,
|
|
27
|
+
method: '{{method}}',{{#if (eq response "Blob")}}
|
|
28
|
+
meta: {
|
|
29
|
+
blob: true
|
|
30
|
+
}{{/if}}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
{{/each}}
|
|
35
|
+
{{/each}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{> typed-body}}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
const { createAlova } = require('alova');
|
|
3
|
+
const fetchAdapter = require('alova/fetch');
|
|
4
|
+
{{#if (eq framework "vue")}}
|
|
5
|
+
const vueHook = require('alova/vue');
|
|
6
|
+
{{else if (eq framework "react")}}
|
|
7
|
+
const reactHook = require('alova/react');
|
|
8
|
+
{{else if (eq framework "svelte")}}
|
|
9
|
+
const svelteHook = require('alova/svelte');
|
|
10
|
+
{{else if (eq framework "solid")}}
|
|
11
|
+
const solidHook = require('alova/solid');
|
|
12
|
+
{{/if}}
|
|
13
|
+
const { createApis, mountApis, withConfigType } = require('./createApis.cjs');
|
|
14
|
+
|
|
15
|
+
const alovaInstance = createAlova({
|
|
16
|
+
baseURL: "{{{baseUrl}}}",
|
|
17
|
+
{{#if (eq framework "vue")}}
|
|
18
|
+
statesHook: vueHook,
|
|
19
|
+
{{else if (eq framework "react")}}
|
|
20
|
+
statesHook: reactHook,
|
|
21
|
+
{{else if (eq framework "svelte")}}
|
|
22
|
+
statesHook: svelteHook,
|
|
23
|
+
{{else if (eq framework "solid")}}
|
|
24
|
+
statesHook: solidHook,
|
|
25
|
+
{{/if}}
|
|
26
|
+
requestAdapter: fetchAdapter(),
|
|
27
|
+
beforeRequest: method => { },
|
|
28
|
+
responded: res => {
|
|
29
|
+
return res.json();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const $$userConfigMap = withConfigType({});
|
|
34
|
+
|
|
35
|
+
const Apis = createApis(alovaInstance, $$userConfigMap);
|
|
36
|
+
|
|
37
|
+
mountApis(Apis);
|
|
38
|
+
|
|
39
|
+
exports.alovaInstance = alovaInstance;
|
|
40
|
+
exports.$$userConfigMap = $$userConfigMap;
|
|
41
|
+
exports.Apis = Apis;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
{{#if config.useImportType}}/// <reference types='./globals.d.ts' />{{else}}/// <reference types='./globals.d.ts' />{{/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;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
const { Method } = require('alova');
|
|
3
|
+
const apiDefinitions = require('./apiDefinitions.cjs');
|
|
4
|
+
|
|
5
|
+
{{> createApis-proxy-js}}
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {import('alova').Alova<AlovaGenerics>} alovaInstance
|
|
9
|
+
* @param {any} configMap
|
|
10
|
+
* @returns { {{{config.global}}} }
|
|
11
|
+
*/
|
|
12
|
+
const createApis = (alovaInstance, configMap) => {
|
|
13
|
+
const Apis = new Proxy(
|
|
14
|
+
{},
|
|
15
|
+
{
|
|
16
|
+
get(_, property) {
|
|
17
|
+
return createFunctionalProxy([property], alovaInstance, configMap);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
return Apis;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @param { {{{config.global}}} } Apis
|
|
25
|
+
* @returns { void }
|
|
26
|
+
*/
|
|
27
|
+
const mountApis = (Apis) => {
|
|
28
|
+
({{{config.globalHost}}}).{{{config.global}}} = Apis;
|
|
29
|
+
};
|
|
30
|
+
{{> withConfigType-jsdoc}}
|
|
31
|
+
/**
|
|
32
|
+
* @typedef {{#raw "{{ " }}{{/raw}}
|
|
33
|
+
* [P in keyof typeof import('./apiDefinitions')]?: MethodConfig<
|
|
34
|
+
* P extends `${infer Tag}.${infer Url}`
|
|
35
|
+
* ? Parameters<NonNullable<APISofParameters<Tag,Url>[0]>['transform']>[0]
|
|
36
|
+
* : any
|
|
37
|
+
* >
|
|
38
|
+
* {{#raw "}}" }}{{/raw}} MethodsConfigMap
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* @template {MethodsConfigMap} Config
|
|
42
|
+
* @param {Config} config
|
|
43
|
+
*/
|
|
44
|
+
const withConfigType = (config) => config;
|
|
45
|
+
|
|
46
|
+
exports.createApis = createApis;
|
|
47
|
+
exports.mountApis = mountApis;
|
|
48
|
+
exports.withConfigType = withConfigType;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
{{#if config.useImportType}}import './globals.d.ts';{{else}}/// <reference types='./globals.d.ts' />{{/if}}
|
|
3
|
+
|
|
4
|
+
const apiDefinitions = {
|
|
5
|
+
{{#each tagedApis}}
|
|
6
|
+
{{#apis}}
|
|
7
|
+
'{{{tag}}}.{{{name}}}': ['{{method}}', '{{{path}}}'],
|
|
8
|
+
{{/apis}}
|
|
9
|
+
{{/each}}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export default apiDefinitions;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
import { Method } from 'alova';
|
|
3
|
+
import apiDefinitions from './apiDefinitions.js';
|
|
4
|
+
|
|
5
|
+
{{> createApis-proxy-js}}
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {import('alova').Alova<AlovaGenerics>} alovaInstance
|
|
9
|
+
* @param {any} configMap
|
|
10
|
+
* @returns { {{{config.global}}} }
|
|
11
|
+
*/
|
|
12
|
+
export const createApis = (alovaInstance, configMap) => {
|
|
13
|
+
const Apis = new Proxy(
|
|
14
|
+
{},
|
|
15
|
+
{
|
|
16
|
+
get(_, property) {
|
|
17
|
+
return createFunctionalProxy([property], alovaInstance, configMap);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
return Apis;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @param { {{{config.global}}} } Apis
|
|
25
|
+
* @returns { void }
|
|
26
|
+
*/
|
|
27
|
+
export const mountApis = (Apis) => {
|
|
28
|
+
({{{config.globalHost}}}).{{{config.global}}} = Apis;
|
|
29
|
+
};
|
|
30
|
+
{{> withConfigType-jsdoc}}
|
|
31
|
+
/**
|
|
32
|
+
* @typedef {{#raw "{{ " }}{{/raw}}
|
|
33
|
+
* [P in keyof typeof import('./apiDefinitions').default]?: MethodConfig<
|
|
34
|
+
* P extends `${infer Tag}.${infer Url}`
|
|
35
|
+
* ? Parameters<NonNullable<APISofParameters<Tag,Url>[0]>['transform']>[0]
|
|
36
|
+
* : any
|
|
37
|
+
* >
|
|
38
|
+
* {{#raw "}}" }}{{/raw}} MethodsConfigMap
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* @template {MethodsConfigMap} Config
|
|
42
|
+
* @param {Config} config
|
|
43
|
+
*/
|
|
44
|
+
export const withConfigType = (config) => config;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* {{title}} - version {{version}}
|
|
5
|
+
*
|
|
6
|
+
* {{description}}
|
|
7
|
+
*
|
|
8
|
+
* OpenAPI version: {{openapi}}
|
|
9
|
+
*
|
|
10
|
+
{{#contact}}
|
|
11
|
+
* Contact: {{#contact.name}}[{{contact.name}}]{{/contact.name}}{{#contact.url}}{{{contact.url}}}{{/contact.url}}{{^contact.url}}{{{contact.email}}}{{/contact.url}}
|
|
12
|
+
{{/contact}}
|
|
13
|
+
*
|
|
14
|
+
* NOTE: This file is auto generated by the alova's vscode plugin.
|
|
15
|
+
*
|
|
16
|
+
* https://alova.js.org/devtools/vscode
|
|
17
|
+
*
|
|
18
|
+
* **Do not edit the file manually.**
|
|
19
|
+
*/
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const cache = Object.create(null);
|
|
2
|
+
/**
|
|
3
|
+
* @typedef {import('alova').AlovaGenerics} AlovaGenerics
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param {(string|symbol)[]} array
|
|
8
|
+
* @param {import('alova').Alova<AlovaGenerics>} alovaInstance
|
|
9
|
+
* @param {any} configMap
|
|
10
|
+
* @returns {()=>void}
|
|
11
|
+
*/
|
|
12
|
+
const createFunctionalProxy = (array, alovaInstance, configMap) => {
|
|
13
|
+
const apiPathKey = array.join('.');
|
|
14
|
+
if (cache[apiPathKey]) {
|
|
15
|
+
return cache[apiPathKey];
|
|
16
|
+
}
|
|
17
|
+
const proxy = new Proxy(function () {}, {
|
|
18
|
+
get(_, property) {
|
|
19
|
+
const newArray = [...array, property];
|
|
20
|
+
return createFunctionalProxy(newArray, alovaInstance, configMap);
|
|
21
|
+
},
|
|
22
|
+
apply(_, __, [config]) {
|
|
23
|
+
const apiItem = apiDefinitions[apiPathKey];
|
|
24
|
+
if (!apiItem) {
|
|
25
|
+
throw new Error(`the api path of \`${apiPathKey}\` is not found`);
|
|
26
|
+
}
|
|
27
|
+
const mergedConfig = {
|
|
28
|
+
...configMap[apiPathKey],
|
|
29
|
+
...config
|
|
30
|
+
};
|
|
31
|
+
const [method, url] = apiItem;
|
|
32
|
+
const pathParams = mergedConfig.pathParams;
|
|
33
|
+
const urlReplaced = url.replace(/\{([^}]+)\}/g, (_, key) => {
|
|
34
|
+
const pathParam = pathParams[key];
|
|
35
|
+
return pathParam;
|
|
36
|
+
});
|
|
37
|
+
delete mergedConfig.pathParams;
|
|
38
|
+
let data = mergedConfig.data;
|
|
39
|
+
if (Object.prototype.toString.call(data) === '[object Object]' && typeof FormData !== 'undefined') {
|
|
40
|
+
let hasBlobData = false;
|
|
41
|
+
const formData = new FormData();
|
|
42
|
+
for (const key in data) {
|
|
43
|
+
formData.append(key, data[key]);
|
|
44
|
+
if (data[key] instanceof Blob) {
|
|
45
|
+
hasBlobData = true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
data = hasBlobData ? formData : data;
|
|
49
|
+
}
|
|
50
|
+
return new Method(method.toUpperCase(), alovaInstance, urlReplaced, mergedConfig, data);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
cache[apiPathKey] = proxy;
|
|
54
|
+
return proxy;
|
|
55
|
+
};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import type { Alova, AlovaMethodCreateConfig, AlovaGenerics, Method } from 'alova';
|
|
2
|
+
import type { alovaInstance, $$userConfigMap } from './index';
|
|
3
|
+
import type apiDefinitions from './apiDefinitions';
|
|
4
|
+
|
|
5
|
+
type CollapsedAlova = typeof alovaInstance;
|
|
6
|
+
type UserMethodConfigMap = typeof $$userConfigMap;
|
|
7
|
+
|
|
8
|
+
type Alova2MethodConfig<Responded> =
|
|
9
|
+
CollapsedAlova extends Alova<
|
|
10
|
+
AlovaGenerics<
|
|
11
|
+
any,
|
|
12
|
+
any,
|
|
13
|
+
infer RequestConfig,
|
|
14
|
+
infer Response,
|
|
15
|
+
infer ResponseHeader,
|
|
16
|
+
infer L1Cache,
|
|
17
|
+
infer L2Cache,
|
|
18
|
+
infer SE
|
|
19
|
+
>
|
|
20
|
+
>
|
|
21
|
+
? Omit<
|
|
22
|
+
AlovaMethodCreateConfig<
|
|
23
|
+
AlovaGenerics<Responded, any, RequestConfig, Response, ResponseHeader, L1Cache, L2Cache, SE>,
|
|
24
|
+
any,
|
|
25
|
+
Responded
|
|
26
|
+
>,
|
|
27
|
+
'params'
|
|
28
|
+
>
|
|
29
|
+
: never;
|
|
30
|
+
|
|
31
|
+
type ExtractUserDefinedTransformed<
|
|
32
|
+
DefinitionKey extends keyof typeof apiDefinitions,
|
|
33
|
+
Default
|
|
34
|
+
> = DefinitionKey extends keyof UserMethodConfigMap
|
|
35
|
+
? UserMethodConfigMap[DefinitionKey]['transform'] extends (...args: any[]) => any
|
|
36
|
+
? Awaited<ReturnType<UserMethodConfigMap[DefinitionKey]['transform']>>
|
|
37
|
+
: Default
|
|
38
|
+
: Default;
|
|
39
|
+
|
|
40
|
+
type Alova2Method<
|
|
41
|
+
Responded,
|
|
42
|
+
DefinitionKey extends keyof typeof apiDefinitions,
|
|
43
|
+
CurrentConfig extends Alova2MethodConfig<any>
|
|
44
|
+
> =
|
|
45
|
+
CollapsedAlova extends Alova<
|
|
46
|
+
AlovaGenerics<
|
|
47
|
+
any,
|
|
48
|
+
any,
|
|
49
|
+
infer RequestConfig,
|
|
50
|
+
infer Response,
|
|
51
|
+
infer ResponseHeader,
|
|
52
|
+
infer L1Cache,
|
|
53
|
+
infer L2Cache,
|
|
54
|
+
infer SE
|
|
55
|
+
>
|
|
56
|
+
>
|
|
57
|
+
? Method<
|
|
58
|
+
AlovaGenerics<
|
|
59
|
+
CurrentConfig extends undefined
|
|
60
|
+
? ExtractUserDefinedTransformed<DefinitionKey, Responded>
|
|
61
|
+
: CurrentConfig['transform'] extends (...args: any[]) => any
|
|
62
|
+
? Awaited<ReturnType<CurrentConfig['transform']>>
|
|
63
|
+
: ExtractUserDefinedTransformed<DefinitionKey, Responded>,
|
|
64
|
+
any,
|
|
65
|
+
RequestConfig,
|
|
66
|
+
Response,
|
|
67
|
+
ResponseHeader,
|
|
68
|
+
L1Cache,
|
|
69
|
+
L2Cache,
|
|
70
|
+
SE
|
|
71
|
+
>
|
|
72
|
+
>
|
|
73
|
+
: never;
|
|
74
|
+
|
|
75
|
+
{{#each components}}
|
|
76
|
+
{{{.}}}
|
|
77
|
+
{{/each}}
|
|
78
|
+
|
|
79
|
+
declare global {
|
|
80
|
+
interface {{{config.global}}} {
|
|
81
|
+
{{#each tagedApis}}
|
|
82
|
+
{{{tagName}}}: {
|
|
83
|
+
{{#apis}}
|
|
84
|
+
/**
|
|
85
|
+
* ---
|
|
86
|
+
*
|
|
87
|
+
* [{{{method}}}] {{{summary}}}
|
|
88
|
+
*
|
|
89
|
+
* **path:** {{{path}}}
|
|
90
|
+
*
|
|
91
|
+
{{#if pathParametersComment}}
|
|
92
|
+
* ---
|
|
93
|
+
*
|
|
94
|
+
* **Path Parameters**
|
|
95
|
+
* ```ts
|
|
96
|
+
* type PathParameters = {{{pathParametersComment}}}
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
{{/if}}
|
|
100
|
+
{{#if queryParametersComment}}
|
|
101
|
+
* ---
|
|
102
|
+
*
|
|
103
|
+
* **Query Parameters**
|
|
104
|
+
* ```ts
|
|
105
|
+
* type QueryParameters = {{{queryParametersComment}}}
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
{{/if}}
|
|
109
|
+
{{#if requestBodyComment}}
|
|
110
|
+
* ---
|
|
111
|
+
*
|
|
112
|
+
* **RequestBody**
|
|
113
|
+
* ```ts
|
|
114
|
+
* type RequestBody = {{{requestBodyComment}}}
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
{{/if}}
|
|
118
|
+
{{#if responseComment}}
|
|
119
|
+
* ---
|
|
120
|
+
*
|
|
121
|
+
* **Response**
|
|
122
|
+
* ```ts
|
|
123
|
+
* type Response = {{{responseComment}}}
|
|
124
|
+
* ```
|
|
125
|
+
{{/if}}
|
|
126
|
+
*/
|
|
127
|
+
{{{name}}}<Config extends Alova2MethodConfig<{{{response}}}>{{#or pathParameters queryParameters requestBody }} & {
|
|
128
|
+
{{#if pathParameters}}
|
|
129
|
+
pathParams: {{{pathParameters}}};
|
|
130
|
+
{{/if}}
|
|
131
|
+
{{#if queryParameters}}
|
|
132
|
+
params: {{{queryParameters}}};
|
|
133
|
+
{{/if}}
|
|
134
|
+
{{#if requestBody}}
|
|
135
|
+
data: {{{requestBody}}};
|
|
136
|
+
{{/if}}
|
|
137
|
+
}{{/or}}>(
|
|
138
|
+
config{{#or pathParameters queryParameters requestBody }}{{else}}?{{/or}}: Config
|
|
139
|
+
): Alova2Method<{{{response}}}, '{{{tag}}}.{{{name}}}', Config>;
|
|
140
|
+
{{/apis}}
|
|
141
|
+
};
|
|
142
|
+
{{/each}}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
var {{{config.global}}}: {{{config.global}}};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createAlova } from 'alova';
|
|
2
|
+
import fetchAdapter from 'alova/fetch';
|
|
3
|
+
{{#if (eq framework "vue")}}
|
|
4
|
+
import vueHook from 'alova/vue';
|
|
5
|
+
{{else if (eq framework "react")}}
|
|
6
|
+
import reactHook from 'alova/react';
|
|
7
|
+
{{else if (eq framework "svelte")}}
|
|
8
|
+
import svelteHook from 'alova/svelte';
|
|
9
|
+
{{else if (eq framework "solid")}}
|
|
10
|
+
import solidHook from 'alova/solid';
|
|
11
|
+
{{/if}}
|
|
12
|
+
import { createApis, mountApis, withConfigType } from './createApis.js';
|
|
13
|
+
|
|
14
|
+
export const alovaInstance = createAlova({
|
|
15
|
+
baseURL: "{{{baseUrl}}}",
|
|
16
|
+
{{#if (eq framework "vue")}}
|
|
17
|
+
statesHook: vueHook,
|
|
18
|
+
{{else if (eq framework "react")}}
|
|
19
|
+
statesHook: reactHook,
|
|
20
|
+
{{else if (eq framework "svelte")}}
|
|
21
|
+
statesHook: svelteHook,
|
|
22
|
+
{{else if (eq framework "solid")}}
|
|
23
|
+
statesHook: solidHook,
|
|
24
|
+
{{/if}}
|
|
25
|
+
requestAdapter: fetchAdapter(),
|
|
26
|
+
beforeRequest: method => { },
|
|
27
|
+
responded: res => {
|
|
28
|
+
return res.json();
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export const $$userConfigMap = withConfigType({});
|
|
33
|
+
|
|
34
|
+
const Apis = createApis(alovaInstance, $$userConfigMap);
|
|
35
|
+
|
|
36
|
+
mountApis(Apis);
|
|
37
|
+
|
|
38
|
+
export { Apis };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @template T
|
|
3
|
+
* @typedef {import('alova').AlovaMethodCreateConfig<
|
|
4
|
+
* typeof import('./index')['alovaInstance'] extends import('alova').Alova<infer AG>
|
|
5
|
+
* ? AG
|
|
6
|
+
* : any,
|
|
7
|
+
* any,
|
|
8
|
+
* T
|
|
9
|
+
*>} MethodConfig
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* @template {string} Tag
|
|
13
|
+
* @template {string} Url
|
|
14
|
+
* @typedef {Tag extends keyof {{{config.global}}}
|
|
15
|
+
* ? Url extends keyof {{{config.global}}}[Tag]
|
|
16
|
+
* ? {{{config.global}}}[Tag][Url] extends (...args: any) => any
|
|
17
|
+
* ? Parameters<{{{config.global}}}[Tag][Url]>
|
|
18
|
+
* : any
|
|
19
|
+
* : any
|
|
20
|
+
* : any
|
|
21
|
+
* } APISofParameters
|
|
22
|
+
*/
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{{> comment}}
|
|
2
|
+
{{#if config.useImportType}}import './globals.d.ts';{{else}}/// <reference types='./globals.d.ts' />{{/if}}
|
|
3
|
+
|
|
4
|
+
const apiDefinitions = {
|
|
5
|
+
{{#each tagedApis}}
|
|
6
|
+
{{#apis}}
|
|
7
|
+
'{{{tag}}}.{{{name}}}': ['{{method}}', '{{{path}}}'],
|
|
8
|
+
{{/apis}}
|
|
9
|
+
{{/each}}
|
|
10
|
+
} as const;
|
|
11
|
+
|
|
12
|
+
export default apiDefinitions;
|