@genapi/presets 3.7.1 → 4.1.0

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 (225) hide show
  1. package/LICENSE.md +21 -21
  2. package/README.md +36 -0
  3. package/dist/_shared/query/config.d.mts +14 -0
  4. package/dist/_shared/query/config.mjs +58 -0
  5. package/dist/_shared/query/index.d.mts +3 -0
  6. package/dist/_shared/query/index.mjs +4 -0
  7. package/dist/_shared/query/parser.d.mts +7 -0
  8. package/dist/_shared/query/parser.mjs +75 -0
  9. package/dist/_shared/schema/compiler.d.mts +10 -0
  10. package/dist/_shared/schema/compiler.mjs +70 -0
  11. package/dist/_shared/schema/config.d.mts +12 -0
  12. package/dist/_shared/schema/config.mjs +48 -0
  13. package/dist/_shared/schema/index.d.mts +4 -0
  14. package/dist/_shared/schema/index.mjs +5 -0
  15. package/dist/_shared/schema/parser.d.mts +14 -0
  16. package/dist/_shared/schema/parser.mjs +49 -0
  17. package/dist/axios/index.d.mts +8 -8
  18. package/dist/axios/index.mjs +11 -8
  19. package/dist/axios/js/config/index.d.mts +4 -1
  20. package/dist/axios/js/config/index.mjs +20 -1
  21. package/dist/axios/js/index.d.mts +16 -3
  22. package/dist/axios/js/index.mjs +16 -4
  23. package/dist/axios/js/parser/index.d.mts +5 -2
  24. package/dist/axios/js/parser/index.mjs +38 -2
  25. package/dist/axios/ts/config/index.d.mts +4 -1
  26. package/dist/axios/ts/config/index.mjs +22 -1
  27. package/dist/axios/ts/index.d.mts +16 -3
  28. package/dist/axios/ts/index.mjs +16 -4
  29. package/dist/axios/ts/parser/index.d.mts +5 -2
  30. package/dist/axios/ts/parser/index.mjs +37 -2
  31. package/dist/chunk-DQk6qfdC.mjs +18 -0
  32. package/dist/fetch/index.d.mts +9 -8
  33. package/dist/fetch/index.mjs +13 -8
  34. package/dist/fetch/js/config/index.d.mts +4 -1
  35. package/dist/fetch/js/config/index.mjs +12 -1
  36. package/dist/fetch/js/index.d.mts +16 -3
  37. package/dist/fetch/js/index.mjs +16 -4
  38. package/dist/fetch/js/parser/index.d.mts +5 -2
  39. package/dist/fetch/js/parser/index.mjs +52 -2
  40. package/dist/fetch/schema/compiler/index.d.mts +6 -0
  41. package/dist/fetch/schema/compiler/index.mjs +7 -0
  42. package/dist/fetch/schema/config/index.d.mts +6 -0
  43. package/dist/fetch/schema/config/index.mjs +7 -0
  44. package/dist/fetch/schema/index.d.mts +20 -0
  45. package/dist/fetch/schema/index.mjs +18 -0
  46. package/dist/fetch/schema/parser/index.d.mts +3 -0
  47. package/dist/fetch/schema/parser/index.mjs +3 -0
  48. package/dist/fetch/ts/config/index.d.mts +4 -1
  49. package/dist/fetch/ts/config/index.mjs +10 -1
  50. package/dist/fetch/ts/index.d.mts +16 -3
  51. package/dist/fetch/ts/index.mjs +16 -4
  52. package/dist/fetch/ts/parser/index.d.mts +5 -2
  53. package/dist/fetch/ts/parser/index.mjs +47 -2
  54. package/dist/got/index.d.mts +8 -8
  55. package/dist/got/index.mjs +11 -8
  56. package/dist/got/js/config/index.d.mts +4 -1
  57. package/dist/got/js/config/index.mjs +20 -1
  58. package/dist/got/js/index.d.mts +16 -3
  59. package/dist/got/js/index.mjs +16 -4
  60. package/dist/got/js/parser/index.d.mts +5 -2
  61. package/dist/got/js/parser/index.mjs +44 -2
  62. package/dist/got/ts/config/index.d.mts +4 -1
  63. package/dist/got/ts/config/index.mjs +22 -1
  64. package/dist/got/ts/index.d.mts +16 -3
  65. package/dist/got/ts/index.mjs +16 -4
  66. package/dist/got/ts/parser/index.d.mts +5 -2
  67. package/dist/got/ts/parser/index.mjs +44 -2
  68. package/dist/index.d.mts +24 -50
  69. package/dist/index.mjs +21 -46
  70. package/dist/ky/index.d.mts +8 -8
  71. package/dist/ky/index.mjs +11 -8
  72. package/dist/ky/js/config/index.d.mts +4 -1
  73. package/dist/ky/js/config/index.mjs +20 -1
  74. package/dist/ky/js/index.d.mts +16 -3
  75. package/dist/ky/js/index.mjs +16 -4
  76. package/dist/ky/js/parser/index.d.mts +5 -2
  77. package/dist/ky/js/parser/index.mjs +44 -2
  78. package/dist/ky/ts/config/index.d.mts +4 -1
  79. package/dist/ky/ts/config/index.mjs +22 -1
  80. package/dist/ky/ts/index.d.mts +16 -3
  81. package/dist/ky/ts/index.mjs +16 -4
  82. package/dist/ky/ts/parser/index.d.mts +5 -2
  83. package/dist/ky/ts/parser/index.mjs +43 -2
  84. package/dist/ofetch/index.d.mts +9 -8
  85. package/dist/ofetch/index.mjs +13 -8
  86. package/dist/ofetch/js/config/index.d.mts +4 -1
  87. package/dist/ofetch/js/config/index.mjs +20 -1
  88. package/dist/ofetch/js/index.d.mts +16 -3
  89. package/dist/ofetch/js/index.mjs +16 -4
  90. package/dist/ofetch/js/parser/index.d.mts +5 -2
  91. package/dist/ofetch/js/parser/index.mjs +42 -2
  92. package/dist/ofetch/schema/compiler/index.d.mts +6 -0
  93. package/dist/ofetch/schema/compiler/index.mjs +7 -0
  94. package/dist/ofetch/schema/config/index.d.mts +6 -0
  95. package/dist/ofetch/schema/config/index.mjs +10 -0
  96. package/dist/ofetch/schema/index.d.mts +20 -0
  97. package/dist/ofetch/schema/index.mjs +18 -0
  98. package/dist/ofetch/schema/parser/index.d.mts +3 -0
  99. package/dist/ofetch/schema/parser/index.mjs +3 -0
  100. package/dist/ofetch/ts/config/index.d.mts +4 -1
  101. package/dist/ofetch/ts/config/index.mjs +21 -1
  102. package/dist/ofetch/ts/index.d.mts +16 -3
  103. package/dist/ofetch/ts/index.mjs +16 -4
  104. package/dist/ofetch/ts/parser/index.d.mts +5 -2
  105. package/dist/ofetch/ts/parser/index.mjs +41 -2
  106. package/dist/tanstack/colada/config/index.d.mts +6 -0
  107. package/dist/tanstack/colada/config/index.mjs +7 -0
  108. package/dist/tanstack/colada/index.d.mts +18 -0
  109. package/dist/tanstack/colada/index.mjs +17 -0
  110. package/dist/tanstack/colada/parser/index.d.mts +6 -0
  111. package/dist/tanstack/colada/parser/index.mjs +7 -0
  112. package/dist/tanstack/index.d.mts +10 -0
  113. package/dist/tanstack/index.mjs +14 -0
  114. package/dist/tanstack/react/config/index.d.mts +6 -0
  115. package/dist/tanstack/react/config/index.mjs +7 -0
  116. package/dist/tanstack/react/index.d.mts +18 -0
  117. package/dist/tanstack/react/index.mjs +17 -0
  118. package/dist/tanstack/react/parser/index.d.mts +6 -0
  119. package/dist/tanstack/react/parser/index.mjs +7 -0
  120. package/dist/tanstack/vue/config/index.d.mts +6 -0
  121. package/dist/tanstack/vue/config/index.mjs +7 -0
  122. package/dist/tanstack/vue/index.d.mts +18 -0
  123. package/dist/tanstack/vue/index.mjs +17 -0
  124. package/dist/tanstack/vue/parser/index.d.mts +6 -0
  125. package/dist/tanstack/vue/parser/index.mjs +7 -0
  126. package/dist/uni/index.d.mts +8 -8
  127. package/dist/uni/index.mjs +11 -8
  128. package/dist/uni/js/config/index.d.mts +4 -1
  129. package/dist/uni/js/config/index.mjs +20 -1
  130. package/dist/uni/js/index.d.mts +16 -3
  131. package/dist/uni/js/index.mjs +16 -4
  132. package/dist/uni/js/parser/index.d.mts +5 -2
  133. package/dist/uni/js/parser/index.mjs +38 -2
  134. package/dist/uni/ts/config/index.d.mts +4 -1
  135. package/dist/uni/ts/config/index.mjs +22 -1
  136. package/dist/uni/ts/index.d.mts +16 -3
  137. package/dist/uni/ts/index.mjs +16 -4
  138. package/dist/uni/ts/parser/index.d.mts +5 -2
  139. package/dist/uni/ts/parser/index.mjs +37 -2
  140. package/package.json +26 -6
  141. package/dist/axios-C-GYxVyS.mjs +0 -13
  142. package/dist/chunk-BL35Yyzp.mjs +0 -12
  143. package/dist/config-Bt-OVtrF.mjs +0 -21
  144. package/dist/config-CCf0xLx5.mjs +0 -12
  145. package/dist/config-CDvaM7ZL.mjs +0 -19
  146. package/dist/config-CEngTpXa.mjs +0 -21
  147. package/dist/config-CRdZhud4.mjs +0 -19
  148. package/dist/config-CTDgiXdv.mjs +0 -19
  149. package/dist/config-Dn-mxTew.mjs +0 -19
  150. package/dist/config-Dp9C4aUE.mjs +0 -21
  151. package/dist/config-Duv2zgs0.mjs +0 -14
  152. package/dist/config-IeVj3de_.mjs +0 -21
  153. package/dist/config-SP_VEcsX.mjs +0 -19
  154. package/dist/config-aVU8JEKy.mjs +0 -21
  155. package/dist/fetch-DNLodiAP.mjs +0 -13
  156. package/dist/got-BIOwnc0x.mjs +0 -13
  157. package/dist/index.d-99mf5fZX.d.mts +0 -7
  158. package/dist/index.d-B0Dj119v.d.mts +0 -7
  159. package/dist/index.d-B1n6Tnt1.d.mts +0 -12
  160. package/dist/index.d-BAZgb_b9.d.mts +0 -18
  161. package/dist/index.d-BG_KI3-b.d.mts +0 -7
  162. package/dist/index.d-BfFQykLh.d.mts +0 -12
  163. package/dist/index.d-BkDRl56J.d.mts +0 -7
  164. package/dist/index.d-BsBf_9LO.d.mts +0 -7
  165. package/dist/index.d-BumPVmi6.d.mts +0 -14
  166. package/dist/index.d-Bxb1Ew8J.d.mts +0 -14
  167. package/dist/index.d-BxhX9ZHb.d.mts +0 -14
  168. package/dist/index.d-C7snKiSp.d.mts +0 -18
  169. package/dist/index.d-CBozMBWF.d.mts +0 -14
  170. package/dist/index.d-CDWq1HYV.d.mts +0 -18
  171. package/dist/index.d-CEAmhQXE.d.mts +0 -14
  172. package/dist/index.d-CJvL62Un.d.mts +0 -12
  173. package/dist/index.d-CTkBXgsL.d.mts +0 -7
  174. package/dist/index.d-CV6YWGPd.d.mts +0 -18
  175. package/dist/index.d-C_cfONoz.d.mts +0 -14
  176. package/dist/index.d-CkaW5o1S.d.mts +0 -7
  177. package/dist/index.d-CoyMx1eg.d.mts +0 -14
  178. package/dist/index.d-D2DYrmcB.d.mts +0 -14
  179. package/dist/index.d-D31630wD.d.mts +0 -18
  180. package/dist/index.d-D4dt4SN4.d.mts +0 -12
  181. package/dist/index.d-D8QZqVyr.d.mts +0 -18
  182. package/dist/index.d-DJrTX9xf.d.mts +0 -18
  183. package/dist/index.d-DMF-u4U9.d.mts +0 -18
  184. package/dist/index.d-DRC1cM3h.d.mts +0 -18
  185. package/dist/index.d-DZt4GzNR.d.mts +0 -18
  186. package/dist/index.d-DbmCOzZ_.d.mts +0 -12
  187. package/dist/index.d-Df6nDub9.d.mts +0 -7
  188. package/dist/index.d-DhevLWeK.d.mts +0 -18
  189. package/dist/index.d-Gm6xdqdc.d.mts +0 -14
  190. package/dist/index.d-KiVamk2z.d.mts +0 -12
  191. package/dist/index.d-Oclhn_rY.d.mts +0 -7
  192. package/dist/index.d-SEFhGKxl.d.mts +0 -7
  193. package/dist/index.d-dxrAw57N.d.mts +0 -7
  194. package/dist/index.d-fRobkY_s.d.mts +0 -18
  195. package/dist/index.d-ltrmOwIz.d.mts +0 -14
  196. package/dist/index.d-lzQFIw8d.d.mts +0 -7
  197. package/dist/index.d-mJ3Pcxey.d.mts +0 -14
  198. package/dist/index.d-xPgxVw9l.d.mts +0 -14
  199. package/dist/js-BIi60-ws.mjs +0 -19
  200. package/dist/js-CbvjSthC.mjs +0 -19
  201. package/dist/js-DrRwXaos.mjs +0 -19
  202. package/dist/js-_HvDqbMK.mjs +0 -19
  203. package/dist/js-rCsJDgHU.mjs +0 -19
  204. package/dist/js-tqiiLynG.mjs +0 -19
  205. package/dist/ky-P-rg3kH4.mjs +0 -13
  206. package/dist/ofetch-B_VRlsTN.mjs +0 -13
  207. package/dist/parser-BMWMb1tW.mjs +0 -65
  208. package/dist/parser-BOXlubkg.mjs +0 -64
  209. package/dist/parser-BYrX-ru-.mjs +0 -71
  210. package/dist/parser-BcgivITa.mjs +0 -79
  211. package/dist/parser-BtnVu9-k.mjs +0 -68
  212. package/dist/parser-ChqBZo9I.mjs +0 -70
  213. package/dist/parser-DqCzNFba.mjs +0 -65
  214. package/dist/parser-ZusEtk4G.mjs +0 -74
  215. package/dist/parser-ie6DpPJX.mjs +0 -64
  216. package/dist/parser-kk99DwsW.mjs +0 -71
  217. package/dist/parser-p29Uia9I.mjs +0 -69
  218. package/dist/parser-v9oBdoth.mjs +0 -71
  219. package/dist/ts-B-VDMOmJ.mjs +0 -19
  220. package/dist/ts-BAOPMwAr.mjs +0 -19
  221. package/dist/ts-BEo8NDau.mjs +0 -19
  222. package/dist/ts-C0RacOIG.mjs +0 -19
  223. package/dist/ts-CBWxAza5.mjs +0 -19
  224. package/dist/ts-UnhKokN_.mjs +0 -19
  225. package/dist/uni-CQMaFViG.mjs +0 -13
package/LICENSE.md CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025-PRESENT Hairyf <https://github.com/hairyf>
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025-PRESENT Hairyf <https://github.com/hairyf>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # @genapi/presets
2
+
3
+ <!-- automd:badges -->
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@genapi/presets)](https://npmjs.com/package/@genapi/presets)
6
+ [![npm downloads](https://img.shields.io/npm/dm/@genapi/presets)](https://npm.chart.dev/@genapi/presets)
7
+
8
+ <!-- /automd -->
9
+
10
+ Prebuilt HTTP client pipelines (axios, fetch, ky, got, ofetch, uni) with TypeScript/JavaScript generation support.
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ pnpm add @genapi/presets
16
+ ```
17
+
18
+ ## API
19
+
20
+ <!-- automd:jsdocs src=src/index.ts -->
21
+
22
+ <!-- ⚠️ (jsdocs) (0 , _parser.createParser) is not a function -->
23
+
24
+ <!-- /automd -->
25
+
26
+ ## License
27
+
28
+ [MIT](https://github.com/hairyf/genapi/blob/main/LICENSE)
29
+
30
+ <!-- automd:with-automd -->
31
+
32
+ ---
33
+
34
+ _🤖 auto updated with [automd](https://automd.unjs.io)_
35
+
36
+ <!-- /automd -->
@@ -0,0 +1,14 @@
1
+ import { ApiPipeline } from "@genapi/shared";
2
+
3
+ //#region src/_shared/query/config.d.ts
4
+ /** Query preset Default Output: main(hooks)、api(apis)、type(types);Query preset only effective output.main / output.api / output.type;type is false, not default api, keep single file main */
5
+ declare function ensureQueryOutput(userConfig: ApiPipeline.Config): void;
6
+ /** main import api file (apis.xxx reference); api import type file (Types reference) */
7
+ declare function addApiImportToMain(configRead: ApiPipeline.ConfigRead): void;
8
+ interface QueryConfigOptions {
9
+ /** Query library name (e.g., @pinia/colada, @tanstack/react-query, @tanstack/vue-query) */
10
+ queryLibrary: string;
11
+ }
12
+ declare function createQueryConfig(options: QueryConfigOptions | string): (userConfig: ApiPipeline.Config) => ApiPipeline.ConfigRead;
13
+ //#endregion
14
+ export { QueryConfigOptions, addApiImportToMain, createQueryConfig, ensureQueryOutput };
@@ -0,0 +1,58 @@
1
+ import { config } from "@genapi/pipeline";
2
+ import { inject } from "@genapi/shared";
3
+ import path from "node:path";
4
+
5
+ //#region src/_shared/query/config.ts
6
+ /** Query preset Default Output: main(hooks)、api(apis)、type(types);Query preset only effective output.main / output.api / output.type;type is false, not default api, keep single file main */
7
+ function ensureQueryOutput(userConfig) {
8
+ userConfig.output = userConfig.output && typeof userConfig.output === "object" ? userConfig.output : {};
9
+ const out = userConfig.output;
10
+ out.main = out.main ?? "src/api/index.ts";
11
+ out.type = out.type !== false ? out.type ?? (typeof out.main === "string" ? out.main.replace(/\.(ts|js)$/, ".type.ts") : "src/api/index.type.ts") : false;
12
+ if (out.type !== false) out.api = out.api ?? (typeof out.main === "string" ? out.main.replace(/index\.(ts|js)$/, "index.api.$1") : "src/api/index.api.ts");
13
+ }
14
+ /** main import api file (apis.xxx reference); api import type file (Types reference) */
15
+ function addApiImportToMain(configRead) {
16
+ const mainOut = configRead.outputs.find((o) => o.type === "main");
17
+ const apiOut = configRead.outputs.find((o) => o.type === "api");
18
+ const typeOut = configRead.outputs.find((o) => o.type === "type");
19
+ const { imports } = inject();
20
+ if (mainOut && apiOut) {
21
+ const rel = path.relative(path.dirname(mainOut.path), apiOut.path).replace(/\.(ts|js)$/, "");
22
+ const value = (rel.startsWith(".") ? rel : `./${rel}`).replace(/\\/g, "/");
23
+ imports.add("main", {
24
+ value,
25
+ namespace: true,
26
+ name: "apis"
27
+ });
28
+ }
29
+ if (apiOut && typeOut) {
30
+ const rel = path.relative(path.dirname(apiOut.path), typeOut.path).replace(/\.(ts|js)$/, "");
31
+ const value = (rel.startsWith(".") ? rel : `./${rel}`).replace(/\\/g, "/");
32
+ imports.add("api", {
33
+ value,
34
+ namespace: true,
35
+ name: "Types",
36
+ type: true
37
+ });
38
+ }
39
+ }
40
+ function createQueryConfig(options) {
41
+ const queryLibrary = typeof options === "string" ? options : options.queryLibrary;
42
+ return function config$1(userConfig) {
43
+ userConfig.meta = userConfig.meta || {};
44
+ userConfig.meta.import = userConfig.meta.import || {};
45
+ ensureQueryOutput(userConfig);
46
+ const configRead = config(userConfig);
47
+ const { imports } = inject();
48
+ addApiImportToMain(configRead);
49
+ imports.add("main", {
50
+ names: ["useQuery", "useMutation"],
51
+ value: queryLibrary
52
+ });
53
+ return configRead;
54
+ };
55
+ }
56
+
57
+ //#endregion
58
+ export { addApiImportToMain, createQueryConfig, ensureQueryOutput };
@@ -0,0 +1,3 @@
1
+ import { QueryConfigOptions, addApiImportToMain, createQueryConfig, ensureQueryOutput } from "./config.mjs";
2
+ import { createQueryParser } from "./parser.mjs";
3
+ export { type QueryConfigOptions, addApiImportToMain, createQueryConfig, createQueryParser, ensureQueryOutput };
@@ -0,0 +1,4 @@
1
+ import { addApiImportToMain, createQueryConfig, ensureQueryOutput } from "./config.mjs";
2
+ import { createQueryParser } from "./parser.mjs";
3
+
4
+ export { addApiImportToMain, createQueryConfig, createQueryParser, ensureQueryOutput };
@@ -0,0 +1,7 @@
1
+ import * as _genapi_shared0 from "@genapi/shared";
2
+
3
+ //#region src/_shared/query/parser.d.ts
4
+ /** Query preset 统一 parser:固定三文件,useQuery(queryKey, queryFn)、useMutation(mutationFn),description 统一 @wraps */
5
+ declare function createQueryParser(): (configRead: _genapi_shared0.ApiPipeline.ConfigRead) => _genapi_shared0.ApiPipeline.ConfigRead;
6
+ //#endregion
7
+ export { createQueryParser };
@@ -0,0 +1,75 @@
1
+ import { createParser, parseMethodMetadata, parseMethodParameters, transformBodyStringify, transformFetchBody, transformHeaderOptions, transformParameters, transformQueryParams, transformUrlSyntax } from "@genapi/parser";
2
+
3
+ //#region src/_shared/query/parser.ts
4
+ function hookName(fetcherName) {
5
+ return `use${fetcherName.charAt(0).toUpperCase()}${fetcherName.slice(1)}`;
6
+ }
7
+ /** Query preset 统一 parser:固定三文件,useQuery(queryKey, queryFn)、useMutation(mutationFn),description 统一 @wraps */
8
+ function createQueryParser() {
9
+ return createParser((config, { configRead, functions, interfaces }) => {
10
+ const { parameters, interfaces: attachInters, options: optList } = parseMethodParameters(config);
11
+ let { name, description, url, responseType, body } = parseMethodMetadata(config);
12
+ attachInters.forEach((i) => interfaces.add("type", i));
13
+ const fetcherParams = [...parameters];
14
+ fetcherParams.push({
15
+ name: "config",
16
+ type: "RequestInit",
17
+ required: false
18
+ });
19
+ if (config.method.toLowerCase() !== "get") optList.unshift(["method", `"${config.method}"`]);
20
+ transformHeaderOptions("body", {
21
+ options: optList,
22
+ parameters
23
+ });
24
+ optList.push(["...", "config"]);
25
+ const { spaceResponseType } = transformParameters(parameters, {
26
+ syntax: "typescript",
27
+ interfaces: interfaces.all(),
28
+ configRead,
29
+ description,
30
+ responseType
31
+ });
32
+ transformBodyStringify("body", {
33
+ options: optList,
34
+ parameters
35
+ });
36
+ url = transformQueryParams("query", {
37
+ body,
38
+ options: optList,
39
+ url
40
+ });
41
+ url = transformUrlSyntax(url, { baseURL: configRead.config.meta?.baseURL });
42
+ const fetchBody = transformFetchBody(url, optList, spaceResponseType);
43
+ const fetcherRef = `apis.${name}`;
44
+ functions.add("api", {
45
+ export: true,
46
+ async: true,
47
+ name,
48
+ description,
49
+ parameters: fetcherParams,
50
+ body: [...body, ...fetchBody]
51
+ });
52
+ const isRead = ["get", "head"].includes(config.method.toLowerCase());
53
+ const hook = hookName(name);
54
+ const paramNames = fetcherParams.map((p) => p.name).join(", ");
55
+ if (isRead) {
56
+ const keyItems = `${fetcherRef}.name, ${paramNames}`;
57
+ functions.add("main", {
58
+ export: true,
59
+ name: hook,
60
+ description: [`@wraps ${name}`],
61
+ parameters: fetcherParams,
62
+ body: [`return useQuery({ queryKey: [${keyItems}], queryFn: () => ${fetcherRef}(${paramNames}) })`]
63
+ });
64
+ } else functions.add("main", {
65
+ export: true,
66
+ name: hook,
67
+ description: [`@wraps ${name}`],
68
+ parameters: [],
69
+ body: [`return useMutation({ mutationFn: ${fetcherRef} })`]
70
+ });
71
+ });
72
+ }
73
+
74
+ //#endregion
75
+ export { createQueryParser };
@@ -0,0 +1,10 @@
1
+ import { ApiPipeline } from "@genapi/shared";
2
+
3
+ //#region src/_shared/schema/compiler.d.ts
4
+ interface SchemaCompilerOptions {
5
+ /** HTTP client function name (e.g., 'fetch' or 'ofetch') */
6
+ httpClient: string;
7
+ }
8
+ declare function createSchemaCompiler(options: SchemaCompilerOptions): (config: ApiPipeline.ConfigRead) => ApiPipeline.ConfigRead<ApiPipeline.Config>;
9
+ //#endregion
10
+ export { SchemaCompilerOptions, createSchemaCompiler };
@@ -0,0 +1,70 @@
1
+ import { compile } from "@genapi/pipeline";
2
+ import { genInterface, genTypeObject } from "knitwork-x";
3
+
4
+ //#region src/_shared/schema/compiler.ts
5
+ const [Endpoint, Dynamic] = [Symbol.for("Endpoint"), Symbol.for("DynamicParam")];
6
+ /** Ultimate type conversion: regex word boundary replacement, covering all complex nested scenarios */
7
+ function convert(str, names) {
8
+ return str?.replace(/\b\w+\b/g, (m) => names.has(m) ? `Types.${m}` : m) || "";
9
+ }
10
+ function createSchemaCompiler(options) {
11
+ return function compiler(config) {
12
+ const routes = config.__schemaRoutes || [];
13
+ const allInterfaces = [...config.graphs.scopes.main?.interfaces || [], ...config.graphs.scopes.type?.interfaces || []];
14
+ const allTypings = config.graphs.scopes.type?.typings || [];
15
+ const interfaceNames = new Set([...allInterfaces.map((i) => i.name), ...allTypings.filter((t) => t.name && !t.value?.includes("{")).map((t) => t.name)]);
16
+ const tree = routes.reduce((root, r) => {
17
+ const node = r.path.split("/").filter(Boolean).reduce((curr, p) => {
18
+ const key = p.startsWith("{") ? Dynamic : p;
19
+ return curr[key] = curr[key] || {};
20
+ }, root);
21
+ const ep = node[Endpoint] = node[Endpoint] || {};
22
+ ep[r.method] = genTypeObject({
23
+ response: convert(r.responseType, interfaceNames),
24
+ ...r.queryType && { query: convert(r.queryType, interfaceNames) },
25
+ ...r.bodyType && { body: convert(r.bodyType, interfaceNames) },
26
+ ...r.headersType && { headers: convert(r.headersType, interfaceNames) }
27
+ });
28
+ return root;
29
+ }, {});
30
+ const toObj = (node, isRoot = false) => {
31
+ const res = {};
32
+ if (node[Endpoint]) res["[Endpoint]"] = genTypeObject(node[Endpoint]);
33
+ if (node[Dynamic]) res["[DynamicParam]"] = genTypeObject(toObj(node[Dynamic]));
34
+ Object.keys(node).forEach((k) => res[isRoot ? `/${k}` : k] = genTypeObject(toObj(node[k])));
35
+ return res;
36
+ };
37
+ config.graphs.scopes.main.functions = [{
38
+ export: true,
39
+ name: "$fetch",
40
+ async: true,
41
+ generics: [{
42
+ name: "T",
43
+ extends: "TypedFetchInput<APISchema>"
44
+ }],
45
+ parameters: [{
46
+ name: "input",
47
+ type: "T",
48
+ required: true
49
+ }, {
50
+ name: "init",
51
+ type: "TypedFetchRequestInit<APISchema, T>",
52
+ required: false
53
+ }],
54
+ body: [`return ${options.httpClient}(input, init as any) as Promise<TypedResponse<TypedFetchResponseBody<APISchema, T>>>`]
55
+ }];
56
+ config.outputs.forEach((out) => {
57
+ if (out.type === "main" && !config.config.meta?.onlyDeclaration) {
58
+ const code = compile(config, "main");
59
+ const schema = `\n// API Schema\n${genInterface("APISchema", toObj(tree, true))}\n`;
60
+ const idx = code.lastIndexOf("import");
61
+ const pos = idx !== -1 ? code.indexOf("\n", idx) + 1 : 0;
62
+ out.code = code.slice(0, pos) + schema + code.slice(pos);
63
+ } else if (out.type === "type") out.code = compile(config, "type");
64
+ });
65
+ return config;
66
+ };
67
+ }
68
+
69
+ //#endregion
70
+ export { createSchemaCompiler };
@@ -0,0 +1,12 @@
1
+ import { ApiPipeline } from "@genapi/shared";
2
+
3
+ //#region src/_shared/schema/config.d.ts
4
+ interface SchemaConfigOptions {
5
+ /** HTTP client package name (e.g., 'ofetch') */
6
+ httpPackage?: string;
7
+ /** HTTP client function name to import (e.g., 'ofetch') */
8
+ httpClientName?: string;
9
+ }
10
+ declare function createSchemaConfig(options?: SchemaConfigOptions): (userConfig: ApiPipeline.Config) => ApiPipeline.ConfigRead;
11
+ //#endregion
12
+ export { SchemaConfigOptions, createSchemaConfig };
@@ -0,0 +1,48 @@
1
+ import { config } from "@genapi/pipeline";
2
+ import { inject } from "@genapi/shared";
3
+
4
+ //#region src/_shared/schema/config.ts
5
+ function createSchemaConfig(options = {}) {
6
+ return function config$1(userConfig) {
7
+ userConfig.meta = userConfig.meta || {};
8
+ userConfig.meta.import = userConfig.meta.import || {};
9
+ if (options.httpPackage && options.httpClientName) {
10
+ userConfig.meta.import.http = userConfig.meta.import.http || options.httpPackage;
11
+ const configRead = config(userConfig);
12
+ const { imports } = inject();
13
+ imports.add("main", {
14
+ names: [options.httpClientName],
15
+ value: userConfig.meta.import.http
16
+ });
17
+ imports.add("main", {
18
+ names: [
19
+ "TypedFetchInput",
20
+ "TypedFetchRequestInit",
21
+ "TypedFetchResponseBody",
22
+ "TypedResponse",
23
+ "Endpoint",
24
+ "DynamicParam"
25
+ ],
26
+ value: "fetchdts"
27
+ });
28
+ return configRead;
29
+ }
30
+ const configRead = config(userConfig);
31
+ const { imports } = inject();
32
+ imports.add("main", {
33
+ names: [
34
+ "TypedFetchInput",
35
+ "TypedFetchRequestInit",
36
+ "TypedFetchResponseBody",
37
+ "TypedResponse",
38
+ "Endpoint",
39
+ "DynamicParam"
40
+ ],
41
+ value: "fetchdts"
42
+ });
43
+ return configRead;
44
+ };
45
+ }
46
+
47
+ //#endregion
48
+ export { createSchemaConfig };
@@ -0,0 +1,4 @@
1
+ import { SchemaCompilerOptions, createSchemaCompiler } from "./compiler.mjs";
2
+ import { SchemaConfigOptions, createSchemaConfig } from "./config.mjs";
3
+ import { SchemaRoute, schemaParser } from "./parser.mjs";
4
+ export { type SchemaCompilerOptions, type SchemaConfigOptions, type SchemaRoute, createSchemaCompiler, createSchemaConfig, schemaParser };
@@ -0,0 +1,5 @@
1
+ import { createSchemaCompiler } from "./compiler.mjs";
2
+ import { createSchemaConfig } from "./config.mjs";
3
+ import { schemaParser } from "./parser.mjs";
4
+
5
+ export { createSchemaCompiler, createSchemaConfig, schemaParser };
@@ -0,0 +1,14 @@
1
+ import * as _genapi_shared0 from "@genapi/shared";
2
+
3
+ //#region src/_shared/schema/parser.d.ts
4
+ interface SchemaRoute {
5
+ path: string;
6
+ method: string;
7
+ queryType?: string;
8
+ bodyType?: string;
9
+ headersType?: string;
10
+ responseType: string;
11
+ }
12
+ declare const schemaParser: (configRead: _genapi_shared0.ApiPipeline.ConfigRead) => _genapi_shared0.ApiPipeline.ConfigRead;
13
+ //#endregion
14
+ export { SchemaRoute, schemaParser };
@@ -0,0 +1,49 @@
1
+ import { createParser, parseSchemaType } from "@genapi/parser";
2
+
3
+ //#region src/_shared/schema/parser.ts
4
+ function hasContent(r) {
5
+ return r != null && typeof r === "object" && "content" in r;
6
+ }
7
+ function getResponseType(responses) {
8
+ const resDefault = responses.default && hasContent(responses.default) ? responses.default : null;
9
+ const res200 = responses["200"] && typeof responses["200"] === "object" ? responses["200"] : null;
10
+ const contentDefault = resDefault?.content?.["application/json"];
11
+ const content200 = res200 && hasContent(res200) ? res200.content?.["application/json"] : null;
12
+ const schemaFromContent = (contentDefault && typeof contentDefault === "object" && "schema" in contentDefault ? contentDefault.schema : null) ?? (content200 && typeof content200 === "object" && "schema" in content200 ? content200.schema : null);
13
+ const schemaFromRes200 = res200 && typeof res200 === "object" && "schema" in res200 && !("content" in res200) ? res200.schema : null;
14
+ const responseSchema = schemaFromContent ?? schemaFromRes200;
15
+ return responseSchema && typeof responseSchema === "object" ? parseSchemaType(responseSchema) : "void";
16
+ }
17
+ const schemaParser = createParser((config, { configRead }) => {
18
+ const { path, method, responses, parameters } = config;
19
+ const queryParams = parameters.filter((p) => p.in === "query");
20
+ const headerParams = parameters.filter((p) => p.in === "header");
21
+ const bodyParams = parameters.filter((p) => p.in === "body");
22
+ const responseType = getResponseType(responses);
23
+ let queryType;
24
+ if (queryParams.length > 0) queryType = `{ ${queryParams.map((p) => {
25
+ const type = parseSchemaType(p);
26
+ const optional = p.required ? "" : "?";
27
+ return `${p.name}${optional}: ${type}`;
28
+ }).join("; ")} }`;
29
+ let bodyType;
30
+ if (bodyParams.length > 0) bodyType = parseSchemaType(bodyParams[0]);
31
+ let headersType;
32
+ if (headerParams.length > 0) headersType = `{ ${headerParams.map((p) => {
33
+ const type = parseSchemaType(p);
34
+ const optional = p.required ? "" : "?";
35
+ return `'${p.name}'${optional}: ${type}`;
36
+ }).join("; ")} }`;
37
+ configRead.__schemaRoutes = configRead.__schemaRoutes || [];
38
+ configRead.__schemaRoutes.push({
39
+ path,
40
+ method: method.toUpperCase(),
41
+ queryType,
42
+ bodyType,
43
+ headersType,
44
+ responseType
45
+ });
46
+ });
47
+
48
+ //#endregion
49
+ export { schemaParser };
@@ -1,9 +1,9 @@
1
- import "../index.d-C_cfONoz.mjs";
2
- import "../index.d-Oclhn_rY.mjs";
3
- import { openapiPipeline$6 as openapiPipeline } from "../index.d-DJrTX9xf.mjs";
4
- import "../index.d-BumPVmi6.mjs";
5
- import "../index.d-SEFhGKxl.mjs";
6
- import { openapiPipeline$2 as openapiPipeline$1 } from "../index.d-fRobkY_s.mjs";
7
- import "../index.d-CJvL62Un.mjs";
1
+ import openapiPipeline from "./js/index.mjs";
2
+ import openapiPipeline$1 from "./ts/index.mjs";
8
3
 
9
- export { openapiPipeline as js, openapiPipeline$1 as ts };
4
+ //#region src/axios/index.d.ts
5
+ declare namespace index_d_exports {
6
+ export { openapiPipeline as js, openapiPipeline$1 as ts };
7
+ }
8
+ //#endregion
9
+ export { openapiPipeline as js, index_d_exports as t, openapiPipeline$1 as ts };
@@ -1,9 +1,12 @@
1
- import "../config-CTDgiXdv.mjs";
2
- import "../parser-DqCzNFba.mjs";
3
- import { js_default$2 as js_default } from "../js-DrRwXaos.mjs";
4
- import "../config-Bt-OVtrF.mjs";
5
- import "../parser-ie6DpPJX.mjs";
6
- import { ts_default$1 as ts_default } from "../ts-UnhKokN_.mjs";
7
- import "../axios-C-GYxVyS.mjs";
1
+ import { t as __exportAll } from "../chunk-DQk6qfdC.mjs";
2
+ import openapiPipeline from "./js/index.mjs";
3
+ import openapiPipeline$1 from "./ts/index.mjs";
8
4
 
9
- export { js_default as js, ts_default as ts };
5
+ //#region src/axios/index.ts
6
+ var axios_exports = /* @__PURE__ */ __exportAll({
7
+ js: () => openapiPipeline,
8
+ ts: () => openapiPipeline$1
9
+ });
10
+
11
+ //#endregion
12
+ export { openapiPipeline as js, axios_exports as t, openapiPipeline$1 as ts };
@@ -1,3 +1,6 @@
1
- import { config$12 as config } from "../../../index.d-Oclhn_rY.mjs";
1
+ import { ApiPipeline } from "@genapi/shared";
2
2
 
3
+ //#region src/axios/js/config/index.d.ts
4
+ declare function config(userConfig: ApiPipeline.Config): ApiPipeline.ConfigRead;
5
+ //#endregion
3
6
  export { config };
@@ -1,3 +1,22 @@
1
- import { config$4 as config } from "../../../config-CTDgiXdv.mjs";
1
+ import { config as config$1 } from "@genapi/pipeline";
2
+ import { replaceMainext } from "@genapi/parser";
3
+ import { inject } from "@genapi/shared";
2
4
 
5
+ //#region src/axios/js/config/index.ts
6
+ function config(userConfig) {
7
+ userConfig.meta = userConfig.meta || {};
8
+ userConfig.meta.import = userConfig.meta.import || {};
9
+ userConfig.output = userConfig.output || {};
10
+ userConfig.meta.import.http = userConfig.meta.import.http || "axios";
11
+ userConfig.output = replaceMainext(userConfig.output) || "src/api/index.js";
12
+ const configRead = config$1(userConfig);
13
+ const { imports } = inject();
14
+ imports.add("main", {
15
+ name: "http",
16
+ value: userConfig.meta.import.http
17
+ });
18
+ return configRead;
19
+ }
20
+
21
+ //#endregion
3
22
  export { config };
@@ -1,5 +1,18 @@
1
- import { parser$14 as parser } from "../../index.d-C_cfONoz.mjs";
2
- import { config$12 as config } from "../../index.d-Oclhn_rY.mjs";
3
- import { compiler$18 as compiler, dest$18 as dest, generate$18 as generate, openapiPipeline$6 as openapiPipeline, original$18 as original } from "../../index.d-DJrTX9xf.mjs";
1
+ import { config } from "./config/index.mjs";
2
+ import { parser } from "./parser/index.mjs";
3
+ import * as _genapi_pipeline0 from "@genapi/pipeline";
4
+ import { compiler, dest, generate, original } from "@genapi/pipeline";
5
+ import { ApiPipeline } from "@genapi/shared";
4
6
 
7
+ //#region src/axios/js/index.d.ts
8
+ declare function openapiPipeline(userConfig: ApiPipeline.Config): Promise<void>;
9
+ declare namespace openapiPipeline {
10
+ var config: typeof config;
11
+ var original: typeof _genapi_pipeline0.original;
12
+ var parser: (configRead: ApiPipeline.ConfigRead) => ApiPipeline.ConfigRead;
13
+ var compiler: typeof _genapi_pipeline0.compiler;
14
+ var generate: typeof _genapi_pipeline0.generate;
15
+ var dest: typeof _genapi_pipeline0.dest;
16
+ }
17
+ //#endregion
5
18
  export { compiler, config, openapiPipeline as default, dest, generate, original, parser };
@@ -1,5 +1,17 @@
1
- import { config$4 as config } from "../../config-CTDgiXdv.mjs";
2
- import { parser$4 as parser } from "../../parser-DqCzNFba.mjs";
3
- import { compiler$4 as compiler, dest$4 as dest, generate$4 as generate, js_default$2 as js_default, original$4 as original } from "../../js-DrRwXaos.mjs";
1
+ import { config } from "./config/index.mjs";
2
+ import { parser } from "./parser/index.mjs";
3
+ import pipeline, { compiler, dest, generate, original } from "@genapi/pipeline";
4
4
 
5
- export { compiler, config, js_default as default, dest, generate, original, parser };
5
+ //#region src/axios/js/index.ts
6
+ function openapiPipeline(userConfig) {
7
+ return pipeline((userConfig) => config(userConfig), (configRead) => original(configRead), (configRead) => parser(configRead), (configRead) => compiler(configRead), (configRead) => generate(configRead), (configRead) => dest(configRead))(userConfig);
8
+ }
9
+ openapiPipeline.config = config;
10
+ openapiPipeline.original = original;
11
+ openapiPipeline.parser = parser;
12
+ openapiPipeline.compiler = compiler;
13
+ openapiPipeline.generate = generate;
14
+ openapiPipeline.dest = dest;
15
+
16
+ //#endregion
17
+ export { compiler, config, openapiPipeline as default, dest, generate, original, parser };
@@ -1,3 +1,6 @@
1
- import { PathsTransformOptions$2 as PathsTransformOptions, parser$14 as parser, transformPaths$14 as transformPaths } from "../../../index.d-C_cfONoz.mjs";
1
+ import * as _genapi_shared0 from "@genapi/shared";
2
2
 
3
- export { PathsTransformOptions, parser, transformPaths };
3
+ //#region src/axios/js/parser/index.d.ts
4
+ declare const parser: (configRead: _genapi_shared0.ApiPipeline.ConfigRead) => _genapi_shared0.ApiPipeline.ConfigRead;
5
+ //#endregion
6
+ export { parser };
@@ -1,3 +1,39 @@
1
- import { parser$4 as parser, transformPaths$4 as transformPaths } from "../../../parser-DqCzNFba.mjs";
1
+ import { createParser, literalFieldsToString, parseMethodMetadata, parseMethodParameters, transformParameters, transformUrlSyntax } from "@genapi/parser";
2
2
 
3
- export { parser, transformPaths };
3
+ //#region src/axios/js/parser/index.ts
4
+ const parser = createParser((config, { configRead, functions, interfaces }) => {
5
+ const { parameters, interfaces: attachInters, options } = parseMethodParameters(config, {
6
+ body: "data",
7
+ query: "params"
8
+ });
9
+ let { name, description, url, responseType } = parseMethodMetadata(config);
10
+ options.push(["...", "config"]);
11
+ attachInters.forEach((i) => interfaces.add("type", i));
12
+ parameters.push({
13
+ type: "import('axios').AxiosRequestConfig",
14
+ name: "config",
15
+ required: false
16
+ });
17
+ options.unshift("url");
18
+ options.unshift(["method", `"${config.method}"`]);
19
+ if (configRead.config.meta?.baseURL) options.unshift("baseURL");
20
+ transformParameters(parameters, {
21
+ syntax: "ecmascript",
22
+ configRead,
23
+ description,
24
+ interfaces: interfaces.all(),
25
+ responseType,
26
+ generic: "import('axios').AxiosResponse<{__type__}>"
27
+ });
28
+ url = transformUrlSyntax(url);
29
+ functions.add("main", {
30
+ export: true,
31
+ name,
32
+ description,
33
+ parameters,
34
+ body: [`const url = ${url}`, `return http.request({ ${literalFieldsToString(options)} })`]
35
+ });
36
+ });
37
+
38
+ //#endregion
39
+ export { parser };