@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.
- package/LICENSE.md +21 -21
- package/README.md +36 -0
- package/dist/_shared/query/config.d.mts +14 -0
- package/dist/_shared/query/config.mjs +58 -0
- package/dist/_shared/query/index.d.mts +3 -0
- package/dist/_shared/query/index.mjs +4 -0
- package/dist/_shared/query/parser.d.mts +7 -0
- package/dist/_shared/query/parser.mjs +75 -0
- package/dist/_shared/schema/compiler.d.mts +10 -0
- package/dist/_shared/schema/compiler.mjs +70 -0
- package/dist/_shared/schema/config.d.mts +12 -0
- package/dist/_shared/schema/config.mjs +48 -0
- package/dist/_shared/schema/index.d.mts +4 -0
- package/dist/_shared/schema/index.mjs +5 -0
- package/dist/_shared/schema/parser.d.mts +14 -0
- package/dist/_shared/schema/parser.mjs +49 -0
- package/dist/axios/index.d.mts +8 -8
- package/dist/axios/index.mjs +11 -8
- package/dist/axios/js/config/index.d.mts +4 -1
- package/dist/axios/js/config/index.mjs +20 -1
- package/dist/axios/js/index.d.mts +16 -3
- package/dist/axios/js/index.mjs +16 -4
- package/dist/axios/js/parser/index.d.mts +5 -2
- package/dist/axios/js/parser/index.mjs +38 -2
- package/dist/axios/ts/config/index.d.mts +4 -1
- package/dist/axios/ts/config/index.mjs +22 -1
- package/dist/axios/ts/index.d.mts +16 -3
- package/dist/axios/ts/index.mjs +16 -4
- package/dist/axios/ts/parser/index.d.mts +5 -2
- package/dist/axios/ts/parser/index.mjs +37 -2
- package/dist/chunk-DQk6qfdC.mjs +18 -0
- package/dist/fetch/index.d.mts +9 -8
- package/dist/fetch/index.mjs +13 -8
- package/dist/fetch/js/config/index.d.mts +4 -1
- package/dist/fetch/js/config/index.mjs +12 -1
- package/dist/fetch/js/index.d.mts +16 -3
- package/dist/fetch/js/index.mjs +16 -4
- package/dist/fetch/js/parser/index.d.mts +5 -2
- package/dist/fetch/js/parser/index.mjs +52 -2
- package/dist/fetch/schema/compiler/index.d.mts +6 -0
- package/dist/fetch/schema/compiler/index.mjs +7 -0
- package/dist/fetch/schema/config/index.d.mts +6 -0
- package/dist/fetch/schema/config/index.mjs +7 -0
- package/dist/fetch/schema/index.d.mts +20 -0
- package/dist/fetch/schema/index.mjs +18 -0
- package/dist/fetch/schema/parser/index.d.mts +3 -0
- package/dist/fetch/schema/parser/index.mjs +3 -0
- package/dist/fetch/ts/config/index.d.mts +4 -1
- package/dist/fetch/ts/config/index.mjs +10 -1
- package/dist/fetch/ts/index.d.mts +16 -3
- package/dist/fetch/ts/index.mjs +16 -4
- package/dist/fetch/ts/parser/index.d.mts +5 -2
- package/dist/fetch/ts/parser/index.mjs +47 -2
- package/dist/got/index.d.mts +8 -8
- package/dist/got/index.mjs +11 -8
- package/dist/got/js/config/index.d.mts +4 -1
- package/dist/got/js/config/index.mjs +20 -1
- package/dist/got/js/index.d.mts +16 -3
- package/dist/got/js/index.mjs +16 -4
- package/dist/got/js/parser/index.d.mts +5 -2
- package/dist/got/js/parser/index.mjs +44 -2
- package/dist/got/ts/config/index.d.mts +4 -1
- package/dist/got/ts/config/index.mjs +22 -1
- package/dist/got/ts/index.d.mts +16 -3
- package/dist/got/ts/index.mjs +16 -4
- package/dist/got/ts/parser/index.d.mts +5 -2
- package/dist/got/ts/parser/index.mjs +44 -2
- package/dist/index.d.mts +24 -50
- package/dist/index.mjs +21 -46
- package/dist/ky/index.d.mts +8 -8
- package/dist/ky/index.mjs +11 -8
- package/dist/ky/js/config/index.d.mts +4 -1
- package/dist/ky/js/config/index.mjs +20 -1
- package/dist/ky/js/index.d.mts +16 -3
- package/dist/ky/js/index.mjs +16 -4
- package/dist/ky/js/parser/index.d.mts +5 -2
- package/dist/ky/js/parser/index.mjs +44 -2
- package/dist/ky/ts/config/index.d.mts +4 -1
- package/dist/ky/ts/config/index.mjs +22 -1
- package/dist/ky/ts/index.d.mts +16 -3
- package/dist/ky/ts/index.mjs +16 -4
- package/dist/ky/ts/parser/index.d.mts +5 -2
- package/dist/ky/ts/parser/index.mjs +43 -2
- package/dist/ofetch/index.d.mts +9 -8
- package/dist/ofetch/index.mjs +13 -8
- package/dist/ofetch/js/config/index.d.mts +4 -1
- package/dist/ofetch/js/config/index.mjs +20 -1
- package/dist/ofetch/js/index.d.mts +16 -3
- package/dist/ofetch/js/index.mjs +16 -4
- package/dist/ofetch/js/parser/index.d.mts +5 -2
- package/dist/ofetch/js/parser/index.mjs +42 -2
- package/dist/ofetch/schema/compiler/index.d.mts +6 -0
- package/dist/ofetch/schema/compiler/index.mjs +7 -0
- package/dist/ofetch/schema/config/index.d.mts +6 -0
- package/dist/ofetch/schema/config/index.mjs +10 -0
- package/dist/ofetch/schema/index.d.mts +20 -0
- package/dist/ofetch/schema/index.mjs +18 -0
- package/dist/ofetch/schema/parser/index.d.mts +3 -0
- package/dist/ofetch/schema/parser/index.mjs +3 -0
- package/dist/ofetch/ts/config/index.d.mts +4 -1
- package/dist/ofetch/ts/config/index.mjs +21 -1
- package/dist/ofetch/ts/index.d.mts +16 -3
- package/dist/ofetch/ts/index.mjs +16 -4
- package/dist/ofetch/ts/parser/index.d.mts +5 -2
- package/dist/ofetch/ts/parser/index.mjs +41 -2
- package/dist/tanstack/colada/config/index.d.mts +6 -0
- package/dist/tanstack/colada/config/index.mjs +7 -0
- package/dist/tanstack/colada/index.d.mts +18 -0
- package/dist/tanstack/colada/index.mjs +17 -0
- package/dist/tanstack/colada/parser/index.d.mts +6 -0
- package/dist/tanstack/colada/parser/index.mjs +7 -0
- package/dist/tanstack/index.d.mts +10 -0
- package/dist/tanstack/index.mjs +14 -0
- package/dist/tanstack/react/config/index.d.mts +6 -0
- package/dist/tanstack/react/config/index.mjs +7 -0
- package/dist/tanstack/react/index.d.mts +18 -0
- package/dist/tanstack/react/index.mjs +17 -0
- package/dist/tanstack/react/parser/index.d.mts +6 -0
- package/dist/tanstack/react/parser/index.mjs +7 -0
- package/dist/tanstack/vue/config/index.d.mts +6 -0
- package/dist/tanstack/vue/config/index.mjs +7 -0
- package/dist/tanstack/vue/index.d.mts +18 -0
- package/dist/tanstack/vue/index.mjs +17 -0
- package/dist/tanstack/vue/parser/index.d.mts +6 -0
- package/dist/tanstack/vue/parser/index.mjs +7 -0
- package/dist/uni/index.d.mts +8 -8
- package/dist/uni/index.mjs +11 -8
- package/dist/uni/js/config/index.d.mts +4 -1
- package/dist/uni/js/config/index.mjs +20 -1
- package/dist/uni/js/index.d.mts +16 -3
- package/dist/uni/js/index.mjs +16 -4
- package/dist/uni/js/parser/index.d.mts +5 -2
- package/dist/uni/js/parser/index.mjs +38 -2
- package/dist/uni/ts/config/index.d.mts +4 -1
- package/dist/uni/ts/config/index.mjs +22 -1
- package/dist/uni/ts/index.d.mts +16 -3
- package/dist/uni/ts/index.mjs +16 -4
- package/dist/uni/ts/parser/index.d.mts +5 -2
- package/dist/uni/ts/parser/index.mjs +37 -2
- package/package.json +26 -6
- package/dist/axios-C-GYxVyS.mjs +0 -13
- package/dist/chunk-BL35Yyzp.mjs +0 -12
- package/dist/config-Bt-OVtrF.mjs +0 -21
- package/dist/config-CCf0xLx5.mjs +0 -12
- package/dist/config-CDvaM7ZL.mjs +0 -19
- package/dist/config-CEngTpXa.mjs +0 -21
- package/dist/config-CRdZhud4.mjs +0 -19
- package/dist/config-CTDgiXdv.mjs +0 -19
- package/dist/config-Dn-mxTew.mjs +0 -19
- package/dist/config-Dp9C4aUE.mjs +0 -21
- package/dist/config-Duv2zgs0.mjs +0 -14
- package/dist/config-IeVj3de_.mjs +0 -21
- package/dist/config-SP_VEcsX.mjs +0 -19
- package/dist/config-aVU8JEKy.mjs +0 -21
- package/dist/fetch-DNLodiAP.mjs +0 -13
- package/dist/got-BIOwnc0x.mjs +0 -13
- package/dist/index.d-99mf5fZX.d.mts +0 -7
- package/dist/index.d-B0Dj119v.d.mts +0 -7
- package/dist/index.d-B1n6Tnt1.d.mts +0 -12
- package/dist/index.d-BAZgb_b9.d.mts +0 -18
- package/dist/index.d-BG_KI3-b.d.mts +0 -7
- package/dist/index.d-BfFQykLh.d.mts +0 -12
- package/dist/index.d-BkDRl56J.d.mts +0 -7
- package/dist/index.d-BsBf_9LO.d.mts +0 -7
- package/dist/index.d-BumPVmi6.d.mts +0 -14
- package/dist/index.d-Bxb1Ew8J.d.mts +0 -14
- package/dist/index.d-BxhX9ZHb.d.mts +0 -14
- package/dist/index.d-C7snKiSp.d.mts +0 -18
- package/dist/index.d-CBozMBWF.d.mts +0 -14
- package/dist/index.d-CDWq1HYV.d.mts +0 -18
- package/dist/index.d-CEAmhQXE.d.mts +0 -14
- package/dist/index.d-CJvL62Un.d.mts +0 -12
- package/dist/index.d-CTkBXgsL.d.mts +0 -7
- package/dist/index.d-CV6YWGPd.d.mts +0 -18
- package/dist/index.d-C_cfONoz.d.mts +0 -14
- package/dist/index.d-CkaW5o1S.d.mts +0 -7
- package/dist/index.d-CoyMx1eg.d.mts +0 -14
- package/dist/index.d-D2DYrmcB.d.mts +0 -14
- package/dist/index.d-D31630wD.d.mts +0 -18
- package/dist/index.d-D4dt4SN4.d.mts +0 -12
- package/dist/index.d-D8QZqVyr.d.mts +0 -18
- package/dist/index.d-DJrTX9xf.d.mts +0 -18
- package/dist/index.d-DMF-u4U9.d.mts +0 -18
- package/dist/index.d-DRC1cM3h.d.mts +0 -18
- package/dist/index.d-DZt4GzNR.d.mts +0 -18
- package/dist/index.d-DbmCOzZ_.d.mts +0 -12
- package/dist/index.d-Df6nDub9.d.mts +0 -7
- package/dist/index.d-DhevLWeK.d.mts +0 -18
- package/dist/index.d-Gm6xdqdc.d.mts +0 -14
- package/dist/index.d-KiVamk2z.d.mts +0 -12
- package/dist/index.d-Oclhn_rY.d.mts +0 -7
- package/dist/index.d-SEFhGKxl.d.mts +0 -7
- package/dist/index.d-dxrAw57N.d.mts +0 -7
- package/dist/index.d-fRobkY_s.d.mts +0 -18
- package/dist/index.d-ltrmOwIz.d.mts +0 -14
- package/dist/index.d-lzQFIw8d.d.mts +0 -7
- package/dist/index.d-mJ3Pcxey.d.mts +0 -14
- package/dist/index.d-xPgxVw9l.d.mts +0 -14
- package/dist/js-BIi60-ws.mjs +0 -19
- package/dist/js-CbvjSthC.mjs +0 -19
- package/dist/js-DrRwXaos.mjs +0 -19
- package/dist/js-_HvDqbMK.mjs +0 -19
- package/dist/js-rCsJDgHU.mjs +0 -19
- package/dist/js-tqiiLynG.mjs +0 -19
- package/dist/ky-P-rg3kH4.mjs +0 -13
- package/dist/ofetch-B_VRlsTN.mjs +0 -13
- package/dist/parser-BMWMb1tW.mjs +0 -65
- package/dist/parser-BOXlubkg.mjs +0 -64
- package/dist/parser-BYrX-ru-.mjs +0 -71
- package/dist/parser-BcgivITa.mjs +0 -79
- package/dist/parser-BtnVu9-k.mjs +0 -68
- package/dist/parser-ChqBZo9I.mjs +0 -70
- package/dist/parser-DqCzNFba.mjs +0 -65
- package/dist/parser-ZusEtk4G.mjs +0 -74
- package/dist/parser-ie6DpPJX.mjs +0 -64
- package/dist/parser-kk99DwsW.mjs +0 -71
- package/dist/parser-p29Uia9I.mjs +0 -69
- package/dist/parser-v9oBdoth.mjs +0 -71
- package/dist/ts-B-VDMOmJ.mjs +0 -19
- package/dist/ts-BAOPMwAr.mjs +0 -19
- package/dist/ts-BEo8NDau.mjs +0 -19
- package/dist/ts-C0RacOIG.mjs +0 -19
- package/dist/ts-CBWxAza5.mjs +0 -19
- package/dist/ts-UnhKokN_.mjs +0 -19
- 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
|
+
[](https://npmjs.com/package/@genapi/presets)
|
|
6
|
+
[](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,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,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 };
|
package/dist/axios/index.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "
|
|
2
|
-
import "
|
|
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
|
-
|
|
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 };
|
package/dist/axios/index.mjs
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
import "
|
|
3
|
-
import
|
|
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
|
-
|
|
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 {
|
|
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
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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 };
|
package/dist/axios/js/index.mjs
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
import { config
|
|
2
|
-
import { parser
|
|
3
|
-
import { compiler
|
|
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
|
-
|
|
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
|
|
1
|
+
import * as _genapi_shared0 from "@genapi/shared";
|
|
2
2
|
|
|
3
|
-
|
|
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 {
|
|
1
|
+
import { createParser, literalFieldsToString, parseMethodMetadata, parseMethodParameters, transformParameters, transformUrlSyntax } from "@genapi/parser";
|
|
2
2
|
|
|
3
|
-
|
|
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 };
|