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.
Files changed (236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/dist/bin/actions.js +245 -0
  4. package/dist/bin/cli.js +27 -0
  5. package/dist/bin/progressRenderer.js +47 -0
  6. package/dist/bin/renderer.js +551 -0
  7. package/dist/bin/theme.js +26 -0
  8. package/dist/config.js +19 -0
  9. package/dist/constant.js +162 -0
  10. package/dist/core/WorkerPool.js +102 -0
  11. package/dist/core/loader/astLoader/generates/array.js +34 -0
  12. package/dist/core/loader/astLoader/generates/enum.js +61 -0
  13. package/dist/core/loader/astLoader/generates/group.js +41 -0
  14. package/dist/core/loader/astLoader/generates/index.js +71 -0
  15. package/dist/core/loader/astLoader/generates/interface.js +59 -0
  16. package/dist/core/loader/astLoader/generates/simple.js +67 -0
  17. package/dist/core/loader/astLoader/generates/tuple.js +54 -0
  18. package/dist/core/loader/astLoader/generates/type.js +2 -0
  19. package/dist/core/loader/astLoader/generates/utils.js +86 -0
  20. package/dist/core/loader/astLoader/helper.js +21 -0
  21. package/dist/core/loader/astLoader/index.js +24 -0
  22. package/dist/core/loader/astLoader/normalize/index.js +70 -0
  23. package/dist/core/loader/astLoader/normalize/normalizer.js +69 -0
  24. package/dist/core/loader/astLoader/normalize/rules/convertTypeArray.js +68 -0
  25. package/dist/core/loader/astLoader/normalize/rules/handleEmptyType.js +8 -0
  26. package/dist/core/loader/astLoader/normalize/rules/inferType.js +43 -0
  27. package/dist/core/loader/astLoader/normalize/rules/mergeAnyOf.js +45 -0
  28. package/dist/core/loader/astLoader/normalize/rules/normalizeCombiningKeywords.js +26 -0
  29. package/dist/core/loader/astLoader/normalize/rules/normalizeEnum.js +38 -0
  30. package/dist/core/loader/astLoader/normalize/rules/normalizeNullType.js +24 -0
  31. package/dist/core/loader/astLoader/normalize/rules/removeRedundantKeywords.js +27 -0
  32. package/dist/core/loader/astLoader/normalize/rules/simplifySingleType.js +8 -0
  33. package/dist/core/loader/astLoader/normalize/rules/validateSchema.js +14 -0
  34. package/dist/core/loader/astLoader/parsers/array.js +28 -0
  35. package/dist/core/loader/astLoader/parsers/enum.js +49 -0
  36. package/dist/core/loader/astLoader/parsers/forward/array.js +12 -0
  37. package/dist/core/loader/astLoader/parsers/forward/enum.js +10 -0
  38. package/dist/core/loader/astLoader/parsers/forward/group.js +12 -0
  39. package/dist/core/loader/astLoader/parsers/forward/index.js +20 -0
  40. package/dist/core/loader/astLoader/parsers/forward/object.js +12 -0
  41. package/dist/core/loader/astLoader/parsers/forward/tuple.js +11 -0
  42. package/dist/core/loader/astLoader/parsers/forward/type.js +2 -0
  43. package/dist/core/loader/astLoader/parsers/group.js +50 -0
  44. package/dist/core/loader/astLoader/parsers/index.js +66 -0
  45. package/dist/core/loader/astLoader/parsers/object.js +44 -0
  46. package/dist/core/loader/astLoader/parsers/reference.js +41 -0
  47. package/dist/core/loader/astLoader/parsers/simple.js +48 -0
  48. package/dist/core/loader/astLoader/parsers/tuple.js +36 -0
  49. package/dist/core/loader/astLoader/parsers/type.js +2 -0
  50. package/dist/core/loader/astLoader/parsers/utils.js +58 -0
  51. package/dist/core/loader/callingCodeLoader/helper.js +183 -0
  52. package/dist/core/loader/callingCodeLoader/index.js +40 -0
  53. package/dist/core/loader/index.js +20 -0
  54. package/dist/core/loader/schemaLoader/index.js +101 -0
  55. package/dist/core/loader/standardLoader/helper.js +142 -0
  56. package/dist/core/loader/standardLoader/index.js +38 -0
  57. package/dist/core/loader/standardLoader/standards.js +105 -0
  58. package/dist/core/parser/index.js +18 -0
  59. package/dist/core/parser/openApiParser/helper.js +165 -0
  60. package/dist/core/parser/openApiParser/index.js +14 -0
  61. package/dist/core/parser/templateParser/helper.js +333 -0
  62. package/dist/core/parser/templateParser/index.js +314 -0
  63. package/dist/core/workerPool/index.js +6 -0
  64. package/dist/core/workerPool/poolManager.js +45 -0
  65. package/dist/core/workerPool/swagger2Worker.js +24 -0
  66. package/dist/core/workerPool/worker.js +61 -0
  67. package/dist/createConfig.js +37 -0
  68. package/dist/defineConfig.js +6 -0
  69. package/dist/functions/getAutoTemplateType.js +37 -0
  70. package/dist/functions/getFrameworkTag.js +18 -0
  71. package/dist/functions/prepareConfig.js +41 -0
  72. package/dist/functions/readWormaRc.js +155 -0
  73. package/dist/functions/wormaJson.js +232 -0
  74. package/dist/generate.js +84 -0
  75. package/dist/helper/PluginDriver.js +98 -0
  76. package/dist/helper/comment.js +88 -0
  77. package/dist/helper/config/ConfigHelper.js +79 -0
  78. package/dist/helper/config/ConfigManager.js +88 -0
  79. package/dist/helper/config/GeneratorHelper.js +343 -0
  80. package/dist/helper/config/index.js +19 -0
  81. package/dist/helper/config/type.js +2 -0
  82. package/dist/helper/config/zType.js +170 -0
  83. package/dist/helper/document/index.js +160 -0
  84. package/dist/helper/index.js +23 -0
  85. package/dist/helper/logger/index.js +76 -0
  86. package/dist/helper/progress.js +66 -0
  87. package/dist/helper/template/index.js +475 -0
  88. package/dist/index.js +33 -0
  89. package/dist/plugins/createPlugin.js +30 -0
  90. package/dist/plugins/index.js +34 -0
  91. package/dist/plugins/presets/aiDoc.js +173 -0
  92. package/dist/plugins/presets/apifox.js +56 -0
  93. package/dist/plugins/presets/filterApi.js +129 -0
  94. package/dist/plugins/presets/importType.js +49 -0
  95. package/dist/plugins/presets/payloadModifier/hepler.js +195 -0
  96. package/dist/plugins/presets/payloadModifier/index.js +122 -0
  97. package/dist/plugins/presets/payloadModifier/type.js +2 -0
  98. package/dist/plugins/presets/platform.js +73 -0
  99. package/dist/plugins/presets/rename.js +209 -0
  100. package/dist/plugins/presets/tagModifier.js +104 -0
  101. package/dist/plugins/presets/utils.js +36 -0
  102. package/dist/readConfig.js +92 -0
  103. package/dist/resolveWorkspaces.js +83 -0
  104. package/dist/template/index.js +180 -0
  105. package/dist/template/presets/ai-doc/SKILL.md.handlebars +29 -0
  106. package/dist/template/presets/ai-doc/references/{tag}/{api}.md.handlebars +54 -0
  107. package/dist/template/presets/alova/common/#index.cjs.handlebars +12 -0
  108. package/dist/template/presets/alova/common/components.d.cts.handlebars +1 -0
  109. package/dist/template/presets/alova/common/helper.cjs.handlebars +13 -0
  110. package/dist/template/presets/alova/common/services/#index.cjs.handlebars +13 -0
  111. package/dist/template/presets/alova/common/services/{tag}.cjs.handlebars +28 -0
  112. package/dist/template/presets/alova/common/services/{tag}.d.cts.handlebars +15 -0
  113. package/dist/template/presets/alova/common/typed.d.cts.handlebars +1 -0
  114. package/dist/template/presets/alova/module/#index.js.handlebars +12 -0
  115. package/dist/template/presets/alova/module/components.d.ts.handlebars +1 -0
  116. package/dist/template/presets/alova/module/helper.js.handlebars +11 -0
  117. package/dist/template/presets/alova/module/services/#index.js.handlebars +9 -0
  118. package/dist/template/presets/alova/module/services/{tag}.d.ts.handlebars +15 -0
  119. package/dist/template/presets/alova/module/services/{tag}.js.handlebars +21 -0
  120. package/dist/template/presets/alova/module/typed.d.ts.handlebars +1 -0
  121. package/dist/template/presets/alova/partials/api-jsdoc.handlebars +44 -0
  122. package/dist/template/presets/alova/partials/build-payload-body.handlebars +22 -0
  123. package/dist/template/presets/alova/partials/comment.handlebars +19 -0
  124. package/dist/template/presets/alova/partials/components-body.handlebars +4 -0
  125. package/dist/template/presets/alova/partials/dts-extra-config.handlebars +8 -0
  126. package/dist/template/presets/alova/partials/dts-fn-declare.handlebars +1 -0
  127. package/dist/template/presets/alova/partials/extract-responded.handlebars +11 -0
  128. package/dist/template/presets/alova/partials/stateshook-import.handlebars +9 -0
  129. package/dist/template/presets/alova/partials/stateshook-option.handlebars +9 -0
  130. package/dist/template/presets/alova/partials/typed-body.handlebars +43 -0
  131. package/dist/template/presets/alova/typescript/#index.ts.handlebars +14 -0
  132. package/dist/template/presets/alova/typescript/components.d.ts.handlebars +1 -0
  133. package/dist/template/presets/alova/typescript/helper.ts.handlebars +9 -0
  134. package/dist/template/presets/alova/typescript/services/#index.ts.handlebars +9 -0
  135. package/dist/template/presets/alova/typescript/services/{tag}.ts.handlebars +35 -0
  136. package/dist/template/presets/alova/typescript/typed.ts.handlebars +1 -0
  137. package/dist/template/presets/alova-globals/common/#index.cjs.handlebars +41 -0
  138. package/dist/template/presets/alova-globals/common/apiDefinitions.cjs.handlebars +12 -0
  139. package/dist/template/presets/alova-globals/common/createApis.cjs.handlebars +48 -0
  140. package/dist/template/presets/alova-globals/common/globals.d.cts.handlebars +2 -0
  141. package/dist/template/presets/alova-globals/module/#index.js.handlebars +2 -0
  142. package/dist/template/presets/alova-globals/module/apiDefinitions.js.handlebars +12 -0
  143. package/dist/template/presets/alova-globals/module/createApis.js.handlebars +44 -0
  144. package/dist/template/presets/alova-globals/module/globals.d.ts.handlebars +2 -0
  145. package/dist/template/presets/alova-globals/partials/comment.handlebars +19 -0
  146. package/dist/template/presets/alova-globals/partials/createApis-proxy-js.handlebars +55 -0
  147. package/dist/template/presets/alova-globals/partials/globals-d-ts.handlebars +148 -0
  148. package/dist/template/presets/alova-globals/partials/index-esm.handlebars +38 -0
  149. package/dist/template/presets/alova-globals/partials/withConfigType-jsdoc.handlebars +22 -0
  150. package/dist/template/presets/alova-globals/typescript/#index.ts.handlebars +2 -0
  151. package/dist/template/presets/alova-globals/typescript/apiDefinitions.ts.handlebars +12 -0
  152. package/dist/template/presets/alova-globals/typescript/createApis.ts.handlebars +99 -0
  153. package/dist/template/presets/alova-globals/typescript/globals.d.ts.handlebars +2 -0
  154. package/dist/template/presets/axios/common/#index.cjs.handlebars +22 -0
  155. package/dist/template/presets/axios/common/components.d.cts.handlebars +1 -0
  156. package/dist/template/presets/axios/common/helper.cjs.handlebars +27 -0
  157. package/dist/template/presets/axios/common/services/#index.cjs.handlebars +13 -0
  158. package/dist/template/presets/axios/common/services/{tag}.cjs.handlebars +28 -0
  159. package/dist/template/presets/axios/common/services/{tag}.d.cts.handlebars +11 -0
  160. package/dist/template/presets/axios/module/#index.js.handlebars +20 -0
  161. package/dist/template/presets/axios/module/components.d.ts.handlebars +1 -0
  162. package/dist/template/presets/axios/module/helper.js.handlebars +25 -0
  163. package/dist/template/presets/axios/module/services/#index.js.handlebars +9 -0
  164. package/dist/template/presets/axios/module/services/{tag}.d.ts.handlebars +11 -0
  165. package/dist/template/presets/axios/module/services/{tag}.js.handlebars +20 -0
  166. package/dist/template/presets/axios/partials/api-jsdoc.handlebars +44 -0
  167. package/dist/template/presets/axios/partials/comment.handlebars +19 -0
  168. package/dist/template/presets/axios/partials/components-body.handlebars +4 -0
  169. package/dist/template/presets/axios/partials/dts-fn-declare.handlebars +1 -0
  170. package/dist/template/presets/axios/partials/dts-types.handlebars +7 -0
  171. package/dist/template/presets/axios/typescript/#index.ts.handlebars +20 -0
  172. package/dist/template/presets/axios/typescript/components.d.ts.handlebars +1 -0
  173. package/dist/template/presets/axios/typescript/helper.ts.handlebars +28 -0
  174. package/dist/template/presets/axios/typescript/services/#index.ts.handlebars +9 -0
  175. package/dist/template/presets/axios/typescript/services/{tag}.ts.handlebars +31 -0
  176. package/dist/template/presets/config/common/worma.config.js.handlebars +9 -0
  177. package/dist/template/presets/config/module/worma.config.js.handlebars +9 -0
  178. package/dist/template/presets/config/partials/generator-content.handlebars +45 -0
  179. package/dist/template/presets/config/typescript/worma.config.ts.handlebars +9 -0
  180. package/dist/template/presets/fetch/common/#index.cjs.handlebars +17 -0
  181. package/dist/template/presets/fetch/common/FetchClient.cjs.handlebars +48 -0
  182. package/dist/template/presets/fetch/common/components.d.cts.handlebars +1 -0
  183. package/dist/template/presets/fetch/common/helper.cjs.handlebars +27 -0
  184. package/dist/template/presets/fetch/common/services/#index.cjs.handlebars +13 -0
  185. package/dist/template/presets/fetch/common/services/{tag}.cjs.handlebars +23 -0
  186. package/dist/template/presets/fetch/common/services/{tag}.d.cts.handlebars +10 -0
  187. package/dist/template/presets/fetch/module/#index.js.handlebars +15 -0
  188. package/dist/template/presets/fetch/module/FetchClient.js.handlebars +46 -0
  189. package/dist/template/presets/fetch/module/components.d.ts.handlebars +1 -0
  190. package/dist/template/presets/fetch/module/helper.js.handlebars +25 -0
  191. package/dist/template/presets/fetch/module/services/#index.js.handlebars +9 -0
  192. package/dist/template/presets/fetch/module/services/{tag}.d.ts.handlebars +10 -0
  193. package/dist/template/presets/fetch/module/services/{tag}.js.handlebars +15 -0
  194. package/dist/template/presets/fetch/partials/api-jsdoc.handlebars +44 -0
  195. package/dist/template/presets/fetch/partials/comment.handlebars +19 -0
  196. package/dist/template/presets/fetch/partials/components-body.handlebars +4 -0
  197. package/dist/template/presets/fetch/partials/dts-fn-declare.handlebars +1 -0
  198. package/dist/template/presets/fetch/partials/dts-types.handlebars +7 -0
  199. package/dist/template/presets/fetch/typescript/#index.ts.handlebars +15 -0
  200. package/dist/template/presets/fetch/typescript/FetchClient.ts.handlebars +59 -0
  201. package/dist/template/presets/fetch/typescript/components.d.ts.handlebars +1 -0
  202. package/dist/template/presets/fetch/typescript/helper.ts.handlebars +28 -0
  203. package/dist/template/presets/fetch/typescript/services/#index.ts.handlebars +9 -0
  204. package/dist/template/presets/fetch/typescript/services/{tag}.ts.handlebars +25 -0
  205. package/dist/template/presets/ky/module/#index.js.handlebars +14 -0
  206. package/dist/template/presets/ky/module/components.d.ts.handlebars +1 -0
  207. package/dist/template/presets/ky/module/helper.js.handlebars +27 -0
  208. package/dist/template/presets/ky/module/services/#index.js.handlebars +9 -0
  209. package/dist/template/presets/ky/module/services/{tag}.d.ts.handlebars +11 -0
  210. package/dist/template/presets/ky/module/services/{tag}.js.handlebars +19 -0
  211. package/dist/template/presets/ky/partials/api-jsdoc.handlebars +44 -0
  212. package/dist/template/presets/ky/partials/comment.handlebars +19 -0
  213. package/dist/template/presets/ky/partials/components-body.handlebars +4 -0
  214. package/dist/template/presets/ky/partials/dts-fn-declare.handlebars +1 -0
  215. package/dist/template/presets/ky/partials/dts-types.handlebars +9 -0
  216. package/dist/template/presets/ky/typescript/#index.ts.handlebars +14 -0
  217. package/dist/template/presets/ky/typescript/components.d.ts.handlebars +1 -0
  218. package/dist/template/presets/ky/typescript/helper.ts.handlebars +30 -0
  219. package/dist/template/presets/ky/typescript/services/#index.ts.handlebars +9 -0
  220. package/dist/template/presets/ky/typescript/services/{tag}.ts.handlebars +30 -0
  221. package/dist/tsconfig.build.tsbuildinfo +1 -0
  222. package/dist/type/api.js +14 -0
  223. package/dist/type/ast.js +24 -0
  224. package/dist/type/base.js +17 -0
  225. package/dist/type/index.js +20 -0
  226. package/dist/type/lib.js +17 -0
  227. package/dist/type/openapi.js +2 -0
  228. package/dist/utils/base.js +212 -0
  229. package/dist/utils/format.js +64 -0
  230. package/dist/utils/index.js +21 -0
  231. package/dist/utils/openapi.js +417 -0
  232. package/dist/utils/readPackageJson.js +35 -0
  233. package/dist/utils/template.js +93 -0
  234. package/package.json +88 -0
  235. package/typings/index.d.ts +512 -0
  236. 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,2 @@
1
+ {{> comment}}
2
+ {{> globals-d-ts}}
@@ -0,0 +1,2 @@
1
+ {{> comment}}
2
+ {{> index-esm}}
@@ -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,2 @@
1
+ {{> comment}}
2
+ {{> globals-d-ts}}
@@ -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,2 @@
1
+ {{> comment}}
2
+ {{> index-esm}}
@@ -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;