@kubb/plugin-react-query 5.0.0-beta.4 → 5.0.0-beta.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -91
- package/dist/{components-DTGLu4UV.js → components-DL0Cai7l.js} +570 -514
- package/dist/components-DL0Cai7l.js.map +1 -0
- package/dist/{components-dAKJEn9b.cjs → components-yMQOuFmI.cjs} +600 -514
- package/dist/components-yMQOuFmI.cjs.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.d.ts +5 -77
- package/dist/components.js +1 -1
- package/dist/{generators-C_fbcjpG.js → generators-BG-Vcvfg.js} +444 -597
- package/dist/generators-BG-Vcvfg.js.map +1 -0
- package/dist/{generators-CWEQsdO9.cjs → generators-zGKP8yII.cjs} +442 -595
- package/dist/generators-zGKP8yII.cjs.map +1 -0
- package/dist/generators.cjs +1 -1
- package/dist/generators.d.ts +49 -10
- package/dist/generators.js +1 -1
- package/dist/index.cjs +201 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +32 -4
- package/dist/index.js +203 -30
- package/dist/index.js.map +1 -1
- package/dist/types-X7D0NSvJ.d.ts +396 -0
- package/package.json +18 -27
- package/src/components/InfiniteQuery.tsx +27 -17
- package/src/components/InfiniteQueryOptions.tsx +60 -81
- package/src/components/Mutation.tsx +39 -20
- package/src/components/MutationOptions.tsx +15 -14
- package/src/components/Query.tsx +18 -15
- package/src/components/QueryOptions.tsx +20 -56
- package/src/components/SuspenseInfiniteQuery.tsx +22 -17
- package/src/components/SuspenseInfiniteQueryOptions.tsx +51 -76
- package/src/components/SuspenseQuery.tsx +13 -15
- package/src/generators/customHookOptionsFileGenerator.tsx +16 -12
- package/src/generators/hookOptionsGenerator.tsx +42 -49
- package/src/generators/infiniteQueryGenerator.tsx +55 -80
- package/src/generators/mutationGenerator.tsx +54 -66
- package/src/generators/queryGenerator.tsx +52 -65
- package/src/generators/suspenseInfiniteQueryGenerator.tsx +50 -67
- package/src/generators/suspenseQueryGenerator.tsx +54 -78
- package/src/plugin.ts +47 -33
- package/src/resolvers/resolverReactQuery.ts +104 -8
- package/src/types.ts +202 -68
- package/src/utils.ts +11 -33
- package/dist/components-DTGLu4UV.js.map +0 -1
- package/dist/components-dAKJEn9b.cjs.map +0 -1
- package/dist/generators-CWEQsdO9.cjs.map +0 -1
- package/dist/generators-C_fbcjpG.js.map +0 -1
- package/dist/types-DfaFRSBf.d.ts +0 -284
- package/extension.yaml +0 -938
- /package/dist/{chunk--u3MIqq1.js → chunk-C0LytTxp.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_components = require("./components-
|
|
1
|
+
const require_components = require("./components-yMQOuFmI.cjs");
|
|
2
2
|
let node_path = require("node:path");
|
|
3
3
|
node_path = require_components.__toESM(node_path);
|
|
4
4
|
let _kubb_core = require("@kubb/core");
|
|
@@ -9,23 +9,29 @@ let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
|
|
|
9
9
|
let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
|
|
10
10
|
let node_fs = require("node:fs");
|
|
11
11
|
node_fs = require_components.__toESM(node_fs);
|
|
12
|
-
let remeda = require("remeda");
|
|
13
12
|
//#region src/generators/customHookOptionsFileGenerator.tsx
|
|
13
|
+
/**
|
|
14
|
+
* Scaffolds the user-editable `useCustomHookOptions` file when
|
|
15
|
+
* `pluginReactQuery({ customOptions: { ... } })` is configured. The file is
|
|
16
|
+
* only created when it does not already exist, so user edits persist across
|
|
17
|
+
* regeneration.
|
|
18
|
+
*/
|
|
14
19
|
const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
15
20
|
name: "react-query-custom-hook-options-file",
|
|
16
21
|
renderer: _kubb_renderer_jsx.jsxRenderer,
|
|
17
22
|
operations(nodes, ctx) {
|
|
18
23
|
const { resolver, config, root } = ctx;
|
|
19
|
-
const { output, customOptions, query, group
|
|
24
|
+
const { output, customOptions, query, group } = ctx.options;
|
|
20
25
|
if (!customOptions) return null;
|
|
21
26
|
const override = output.override ?? config.output.override ?? false;
|
|
22
27
|
const { importPath, name } = customOptions;
|
|
28
|
+
const hookOptionsName = resolver.resolveHookOptionsName();
|
|
29
|
+
const customHookOptionsName = resolver.resolveCustomHookOptionsName();
|
|
23
30
|
const reactQueryImportPath = query ? query.importPath : "@tanstack/react-query";
|
|
24
|
-
const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
25
31
|
let hookFilePath;
|
|
26
32
|
const firstNode = nodes[0];
|
|
27
33
|
if (firstNode) {
|
|
28
|
-
const hookName =
|
|
34
|
+
const hookName = resolver.resolveQueryName(firstNode);
|
|
29
35
|
hookFilePath = resolver.resolveFile({
|
|
30
36
|
name: hookName,
|
|
31
37
|
extname: ".ts",
|
|
@@ -34,7 +40,7 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
34
40
|
}, {
|
|
35
41
|
root,
|
|
36
42
|
output,
|
|
37
|
-
group
|
|
43
|
+
group: group ?? void 0
|
|
38
44
|
}).path;
|
|
39
45
|
} else hookFilePath = node_path.default.resolve(root, "index.ts");
|
|
40
46
|
const ensureExtension = (filePath, extname) => {
|
|
@@ -63,7 +69,7 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
63
69
|
path: reactQueryImportPath
|
|
64
70
|
}),
|
|
65
71
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
66
|
-
name: [
|
|
72
|
+
name: [hookOptionsName],
|
|
67
73
|
root: file.path,
|
|
68
74
|
path: node_path.default.resolve(root, "./index.ts")
|
|
69
75
|
}),
|
|
@@ -72,9 +78,9 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
72
78
|
isExportable: true,
|
|
73
79
|
isIndexable: true,
|
|
74
80
|
children: [/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
|
|
75
|
-
name:
|
|
81
|
+
name: customHookOptionsName,
|
|
76
82
|
params: "{ queryClient }: { queryClient: QueryClient }",
|
|
77
|
-
returnType:
|
|
83
|
+
returnType: `Partial<${hookOptionsName}>`,
|
|
78
84
|
children: `return {
|
|
79
85
|
// TODO: Define custom hook options here
|
|
80
86
|
// Example:
|
|
@@ -86,12 +92,12 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
86
92
|
}`
|
|
87
93
|
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
|
|
88
94
|
name,
|
|
89
|
-
generics:
|
|
95
|
+
generics: `T extends keyof ${hookOptionsName}`,
|
|
90
96
|
params: "{ hookName, operationId }: { hookName: T, operationId: string }",
|
|
91
|
-
returnType:
|
|
97
|
+
returnType: `${hookOptionsName}[T]`,
|
|
92
98
|
export: true,
|
|
93
99
|
children: `const queryClient = useQueryClient()
|
|
94
|
-
const customOptions =
|
|
100
|
+
const customOptions = ${customHookOptionsName}({ queryClient })
|
|
95
101
|
return customOptions[hookName] ?? {}`
|
|
96
102
|
})]
|
|
97
103
|
})
|
|
@@ -101,52 +107,54 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
101
107
|
});
|
|
102
108
|
//#endregion
|
|
103
109
|
//#region src/generators/hookOptionsGenerator.tsx
|
|
110
|
+
/**
|
|
111
|
+
* Emits the `HookOptions` type used by `customOptions`. Enabled when
|
|
112
|
+
* `pluginReactQuery({ customOptions: { ... } })`. The generated type lists
|
|
113
|
+
* every hook keyed by name so user-supplied options stay in sync with the
|
|
114
|
+
* generated hooks at compile time.
|
|
115
|
+
*/
|
|
104
116
|
const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
105
117
|
name: "react-query-hook-options",
|
|
106
118
|
renderer: _kubb_renderer_jsx.jsxRenderer,
|
|
107
119
|
operations(nodes, ctx) {
|
|
108
|
-
const { resolver, config, root
|
|
109
|
-
const { output, customOptions, query, mutation, suspense, infinite, group,
|
|
120
|
+
const { resolver, config, root } = ctx;
|
|
121
|
+
const { output, customOptions, query, mutation, suspense, infinite, group, override } = ctx.options;
|
|
110
122
|
if (!customOptions) return null;
|
|
123
|
+
const name = resolver.resolveHookOptionsName();
|
|
111
124
|
const resolvedFile = resolver.resolveFile({
|
|
112
|
-
name
|
|
125
|
+
name,
|
|
113
126
|
extname: ".ts"
|
|
114
127
|
}, {
|
|
115
128
|
root,
|
|
116
129
|
output,
|
|
117
|
-
group
|
|
130
|
+
group: group ?? void 0
|
|
118
131
|
});
|
|
119
132
|
const hookOptionsFile = {
|
|
120
133
|
...resolvedFile,
|
|
121
|
-
baseName:
|
|
122
|
-
path: resolvedFile.path.replace(/
|
|
134
|
+
baseName: `${name}.ts`,
|
|
135
|
+
path: resolvedFile.path.replace(/[^/\\]+\.ts$/, `${name}.ts`)
|
|
123
136
|
};
|
|
124
|
-
const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
125
137
|
const imports = [];
|
|
126
138
|
const hookOptions = {};
|
|
127
139
|
for (const node of nodes) {
|
|
128
|
-
|
|
140
|
+
if (!_kubb_core.ast.isHttpOperationNode(node)) continue;
|
|
129
141
|
const opOverrides = require_components.resolveOperationOverrides(node, override);
|
|
130
142
|
const nodeQuery = "query" in opOverrides ? opOverrides.query : query;
|
|
131
143
|
const nodeMutation = "mutation" in opOverrides ? opOverrides.mutation : mutation;
|
|
132
144
|
const nodeInfinite = "infinite" in opOverrides ? opOverrides.infinite : infinite;
|
|
133
|
-
const nodeInfiniteOptions = nodeInfinite && typeof nodeInfinite === "object" ? nodeInfinite :
|
|
145
|
+
const nodeInfiniteOptions = nodeInfinite && typeof nodeInfinite === "object" ? nodeInfinite : null;
|
|
134
146
|
const isQueryOp = nodeQuery === false ? !!query && query.methods.some((m) => node.method.toLowerCase() === m.toLowerCase()) : !!nodeQuery && nodeQuery.methods.some((m) => node.method.toLowerCase() === m.toLowerCase());
|
|
135
|
-
const
|
|
147
|
+
const nodeQueryMethods = new Set(nodeQuery ? nodeQuery.methods : []);
|
|
148
|
+
const isMutationOp = nodeMutation !== false && !isQueryOp && (nodeMutation ? nodeMutation.methods : []).some((m) => !nodeQueryMethods.has(m) && node.method.toLowerCase() === m.toLowerCase());
|
|
136
149
|
const isSuspenseOp = !!suspense;
|
|
137
150
|
const isInfiniteOp = !!nodeInfiniteOptions;
|
|
138
151
|
if (isQueryOp) {
|
|
139
|
-
const queryOptionsName =
|
|
140
|
-
const queryHookName =
|
|
141
|
-
const queryHookFile = resolver.resolveFile({
|
|
142
|
-
name: queryHookName,
|
|
143
|
-
extname: ".ts",
|
|
144
|
-
tag: node.tags[0] ?? "default",
|
|
145
|
-
path: node.path
|
|
146
|
-
}, {
|
|
152
|
+
const queryOptionsName = resolver.resolveQueryOptionsName(node);
|
|
153
|
+
const queryHookName = resolver.resolveQueryName(node);
|
|
154
|
+
const queryHookFile = resolver.resolveFile(require_components.operationFileEntry(node, queryHookName), {
|
|
147
155
|
root,
|
|
148
156
|
output,
|
|
149
|
-
group
|
|
157
|
+
group: group ?? void 0
|
|
150
158
|
});
|
|
151
159
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
152
160
|
name: [queryOptionsName],
|
|
@@ -155,17 +163,12 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
155
163
|
}));
|
|
156
164
|
hookOptions[queryHookName] = `Partial<ReturnType<typeof ${queryOptionsName}>>`;
|
|
157
165
|
if (isSuspenseOp) {
|
|
158
|
-
const suspenseOptionsName =
|
|
159
|
-
const suspenseHookName =
|
|
160
|
-
const suspenseHookFile = resolver.resolveFile({
|
|
161
|
-
name: suspenseHookName,
|
|
162
|
-
extname: ".ts",
|
|
163
|
-
tag: node.tags[0] ?? "default",
|
|
164
|
-
path: node.path
|
|
165
|
-
}, {
|
|
166
|
+
const suspenseOptionsName = resolver.resolveSuspenseQueryOptionsName(node);
|
|
167
|
+
const suspenseHookName = resolver.resolveSuspenseQueryName(node);
|
|
168
|
+
const suspenseHookFile = resolver.resolveFile(require_components.operationFileEntry(node, suspenseHookName), {
|
|
166
169
|
root,
|
|
167
170
|
output,
|
|
168
|
-
group
|
|
171
|
+
group: group ?? void 0
|
|
169
172
|
});
|
|
170
173
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
171
174
|
name: [suspenseOptionsName],
|
|
@@ -176,19 +179,14 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
176
179
|
}
|
|
177
180
|
if (isInfiniteOp) {
|
|
178
181
|
const normalizeKey = (key) => key.replace(/\?$/, "");
|
|
179
|
-
const queryParamKeys =
|
|
182
|
+
const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
|
|
180
183
|
if (nodeInfiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === nodeInfiniteOptions.queryParam) : false) {
|
|
181
|
-
const infiniteOptionsName =
|
|
182
|
-
const infiniteHookName =
|
|
183
|
-
const infiniteHookFile = resolver.resolveFile({
|
|
184
|
-
name: infiniteHookName,
|
|
185
|
-
extname: ".ts",
|
|
186
|
-
tag: node.tags[0] ?? "default",
|
|
187
|
-
path: node.path
|
|
188
|
-
}, {
|
|
184
|
+
const infiniteOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
|
|
185
|
+
const infiniteHookName = resolver.resolveInfiniteQueryName(node);
|
|
186
|
+
const infiniteHookFile = resolver.resolveFile(require_components.operationFileEntry(node, infiniteHookName), {
|
|
189
187
|
root,
|
|
190
188
|
output,
|
|
191
|
-
group
|
|
189
|
+
group: group ?? void 0
|
|
192
190
|
});
|
|
193
191
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
194
192
|
name: [infiniteOptionsName],
|
|
@@ -197,17 +195,12 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
197
195
|
}));
|
|
198
196
|
hookOptions[infiniteHookName] = `Partial<ReturnType<typeof ${infiniteOptionsName}>>`;
|
|
199
197
|
if (isSuspenseOp) {
|
|
200
|
-
const suspenseInfiniteOptionsName =
|
|
201
|
-
const suspenseInfiniteHookName =
|
|
202
|
-
const suspenseInfiniteHookFile = resolver.resolveFile({
|
|
203
|
-
name: suspenseInfiniteHookName,
|
|
204
|
-
extname: ".ts",
|
|
205
|
-
tag: node.tags[0] ?? "default",
|
|
206
|
-
path: node.path
|
|
207
|
-
}, {
|
|
198
|
+
const suspenseInfiniteOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node);
|
|
199
|
+
const suspenseInfiniteHookName = resolver.resolveSuspenseInfiniteQueryName(node);
|
|
200
|
+
const suspenseInfiniteHookFile = resolver.resolveFile(require_components.operationFileEntry(node, suspenseInfiniteHookName), {
|
|
208
201
|
root,
|
|
209
202
|
output,
|
|
210
|
-
group
|
|
203
|
+
group: group ?? void 0
|
|
211
204
|
});
|
|
212
205
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
213
206
|
name: [suspenseInfiniteOptionsName],
|
|
@@ -220,17 +213,12 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
220
213
|
}
|
|
221
214
|
}
|
|
222
215
|
if (isMutationOp) {
|
|
223
|
-
const mutationOptionsName =
|
|
224
|
-
const mutationHookName =
|
|
225
|
-
const mutationHookFile = resolver.resolveFile({
|
|
226
|
-
name: mutationHookName,
|
|
227
|
-
extname: ".ts",
|
|
228
|
-
tag: node.tags[0] ?? "default",
|
|
229
|
-
path: node.path
|
|
230
|
-
}, {
|
|
216
|
+
const mutationOptionsName = resolver.resolveMutationOptionsName(node);
|
|
217
|
+
const mutationHookName = resolver.resolveMutationName(node);
|
|
218
|
+
const mutationHookFile = resolver.resolveFile(require_components.operationFileEntry(node, mutationHookName), {
|
|
231
219
|
root,
|
|
232
220
|
output,
|
|
233
|
-
group
|
|
221
|
+
group: group ?? void 0
|
|
234
222
|
});
|
|
235
223
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
236
224
|
name: [mutationOptionsName],
|
|
@@ -240,18 +228,25 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
240
228
|
hookOptions[mutationHookName] = `Partial<ReturnType<typeof ${mutationOptionsName}>>`;
|
|
241
229
|
}
|
|
242
230
|
}
|
|
243
|
-
const name = "HookOptions";
|
|
244
231
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
245
232
|
baseName: hookOptionsFile.baseName,
|
|
246
233
|
path: hookOptionsFile.path,
|
|
247
234
|
meta: hookOptionsFile.meta,
|
|
248
|
-
banner: resolver.resolveBanner(
|
|
235
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
249
236
|
output,
|
|
250
|
-
config
|
|
237
|
+
config,
|
|
238
|
+
file: {
|
|
239
|
+
path: hookOptionsFile.path,
|
|
240
|
+
baseName: hookOptionsFile.baseName
|
|
241
|
+
}
|
|
251
242
|
}),
|
|
252
|
-
footer: resolver.resolveFooter(
|
|
243
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
253
244
|
output,
|
|
254
|
-
config
|
|
245
|
+
config,
|
|
246
|
+
file: {
|
|
247
|
+
path: hookOptionsFile.path,
|
|
248
|
+
baseName: hookOptionsFile.baseName
|
|
249
|
+
}
|
|
255
250
|
}),
|
|
256
251
|
children: [imports, /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Source, {
|
|
257
252
|
name,
|
|
@@ -269,153 +264,123 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
269
264
|
});
|
|
270
265
|
//#endregion
|
|
271
266
|
//#region src/generators/infiniteQueryGenerator.tsx
|
|
267
|
+
/**
|
|
268
|
+
* Built-in generator for `useInfiniteQuery` hooks. Enabled when
|
|
269
|
+
* `pluginReactQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`
|
|
270
|
+
* hook per query operation, wiring the configured `nextParam` /
|
|
271
|
+
* `previousParam` paths into TanStack Query's cursor-based pagination.
|
|
272
|
+
*/
|
|
272
273
|
const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
273
274
|
name: "react-infinite-query",
|
|
274
275
|
renderer: _kubb_renderer_jsx.jsxRenderer,
|
|
275
276
|
operation(node, ctx) {
|
|
276
|
-
|
|
277
|
-
const {
|
|
277
|
+
if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
|
|
278
|
+
const { config, driver, resolver, root } = ctx;
|
|
279
|
+
const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
278
280
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
279
281
|
if (!pluginTs) return null;
|
|
280
282
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
281
283
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
282
|
-
const
|
|
283
|
-
const
|
|
284
|
+
const queryMethods = new Set(query ? query.methods : []);
|
|
285
|
+
const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
|
|
286
|
+
const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
|
|
284
287
|
if (!isQuery || isMutation || !infiniteOptions) return null;
|
|
285
288
|
const normalizeKey = (key) => key.replace(/\?$/, "");
|
|
286
|
-
const queryParamKeys =
|
|
289
|
+
const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
|
|
287
290
|
const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
|
|
288
291
|
const hasCursorParam = !infiniteOptions.cursorParam || true;
|
|
289
292
|
if (!hasQueryParam || !hasCursorParam) return null;
|
|
290
293
|
const importPath = query ? query.importPath : "@tanstack/react-query";
|
|
291
|
-
const
|
|
292
|
-
const
|
|
293
|
-
const
|
|
294
|
-
const
|
|
295
|
-
const
|
|
296
|
-
const queryKeyTypeName = require_components.transformName(`${capitalize(baseName)}InfiniteQueryKey`, "type", transformers);
|
|
297
|
-
const clientBaseName = require_components.transformName(`${baseName}Infinite`, "function", transformers);
|
|
294
|
+
const queryName = resolver.resolveInfiniteQueryName(node);
|
|
295
|
+
const queryOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
|
|
296
|
+
const queryKeyName = resolver.resolveInfiniteQueryKeyName(node);
|
|
297
|
+
const queryKeyTypeName = resolver.resolveInfiniteQueryKeyTypeName(node);
|
|
298
|
+
const clientBaseName = resolver.resolveInfiniteClientName(node);
|
|
298
299
|
const meta = {
|
|
299
|
-
file: resolver.resolveFile({
|
|
300
|
-
name: queryName,
|
|
301
|
-
extname: ".ts",
|
|
302
|
-
tag: node.tags[0] ?? "default",
|
|
303
|
-
path: node.path
|
|
304
|
-
}, {
|
|
300
|
+
file: resolver.resolveFile(require_components.operationFileEntry(node, queryName), {
|
|
305
301
|
root,
|
|
306
302
|
output,
|
|
307
|
-
group
|
|
303
|
+
group: group ?? void 0
|
|
308
304
|
}),
|
|
309
|
-
fileTs: tsResolver.resolveFile({
|
|
310
|
-
name: node.operationId,
|
|
311
|
-
extname: ".ts",
|
|
312
|
-
tag: node.tags[0] ?? "default",
|
|
313
|
-
path: node.path
|
|
314
|
-
}, {
|
|
305
|
+
fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
315
306
|
root,
|
|
316
307
|
output: pluginTs.options?.output ?? output,
|
|
317
|
-
group: pluginTs.options?.group
|
|
308
|
+
group: pluginTs.options?.group ?? void 0
|
|
318
309
|
})
|
|
319
310
|
};
|
|
320
|
-
const
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
|
|
329
|
-
...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
|
|
330
|
-
...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
|
|
331
|
-
].filter((name) => !!name && name !== queryKeyTypeName);
|
|
332
|
-
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
333
|
-
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
334
|
-
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
335
|
-
name: node.operationId,
|
|
336
|
-
extname: ".ts",
|
|
337
|
-
tag: node.tags[0] ?? "default",
|
|
338
|
-
path: node.path
|
|
339
|
-
}, {
|
|
311
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
312
|
+
paramsCasing,
|
|
313
|
+
exclude: [queryKeyTypeName],
|
|
314
|
+
order: "body-response-first"
|
|
315
|
+
});
|
|
316
|
+
const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
317
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
318
|
+
const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
340
319
|
root,
|
|
341
320
|
output: pluginZod?.options?.output ?? output,
|
|
342
|
-
group: pluginZod?.options?.group
|
|
343
|
-
}) :
|
|
344
|
-
const zodSchemaNames =
|
|
321
|
+
group: pluginZod?.options?.group ?? void 0
|
|
322
|
+
}) : null;
|
|
323
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
|
|
345
324
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
346
325
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
347
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
348
|
-
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
349
|
-
name: node.operationId,
|
|
350
|
-
extname: ".ts",
|
|
351
|
-
tag: node.tags[0] ?? "default",
|
|
352
|
-
path: node.path
|
|
353
|
-
}, {
|
|
326
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
327
|
+
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
354
328
|
root,
|
|
355
329
|
output: clientPlugin?.options?.output ?? output,
|
|
356
|
-
group: clientPlugin?.options?.group
|
|
357
|
-
}) :
|
|
330
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
331
|
+
}) : null;
|
|
358
332
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
|
|
359
333
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
360
334
|
baseName: meta.file.baseName,
|
|
361
335
|
path: meta.file.path,
|
|
362
336
|
meta: meta.file.meta,
|
|
363
|
-
banner: resolver.resolveBanner(
|
|
337
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
364
338
|
output,
|
|
365
|
-
config
|
|
339
|
+
config,
|
|
340
|
+
file: {
|
|
341
|
+
path: meta.file.path,
|
|
342
|
+
baseName: meta.file.baseName
|
|
343
|
+
}
|
|
366
344
|
}),
|
|
367
|
-
footer: resolver.resolveFooter(
|
|
345
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
368
346
|
output,
|
|
369
|
-
config
|
|
347
|
+
config,
|
|
348
|
+
file: {
|
|
349
|
+
path: meta.file.path,
|
|
350
|
+
baseName: meta.file.baseName
|
|
351
|
+
}
|
|
370
352
|
}),
|
|
371
353
|
children: [
|
|
372
|
-
|
|
354
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
373
355
|
name: zodSchemaNames,
|
|
374
356
|
root: meta.file.path,
|
|
375
357
|
path: fileZod.path
|
|
376
358
|
}),
|
|
377
|
-
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
403
|
-
name: [
|
|
404
|
-
"Client",
|
|
405
|
-
"RequestConfig",
|
|
406
|
-
"ResponseErrorConfig"
|
|
407
|
-
],
|
|
408
|
-
root: meta.file.path,
|
|
409
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
410
|
-
isTypeOnly: true
|
|
411
|
-
}),
|
|
412
|
-
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
413
|
-
name: ["ResponseConfig"],
|
|
414
|
-
root: meta.file.path,
|
|
415
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
416
|
-
isTypeOnly: true
|
|
417
|
-
})
|
|
418
|
-
] }),
|
|
359
|
+
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
360
|
+
name: "client",
|
|
361
|
+
path: clientOptions.importPath
|
|
362
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
363
|
+
name: [
|
|
364
|
+
"Client",
|
|
365
|
+
"RequestConfig",
|
|
366
|
+
"ResponseErrorConfig"
|
|
367
|
+
],
|
|
368
|
+
path: clientOptions.importPath,
|
|
369
|
+
isTypeOnly: true
|
|
370
|
+
})] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
371
|
+
name: ["client"],
|
|
372
|
+
root: meta.file.path,
|
|
373
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
374
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
375
|
+
name: [
|
|
376
|
+
"Client",
|
|
377
|
+
"RequestConfig",
|
|
378
|
+
"ResponseErrorConfig"
|
|
379
|
+
],
|
|
380
|
+
root: meta.file.path,
|
|
381
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
382
|
+
isTypeOnly: true
|
|
383
|
+
})] }),
|
|
419
384
|
shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
420
385
|
name: [resolvedClientName],
|
|
421
386
|
root: meta.file.path,
|
|
@@ -517,156 +482,129 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
517
482
|
});
|
|
518
483
|
//#endregion
|
|
519
484
|
//#region src/generators/mutationGenerator.tsx
|
|
485
|
+
/**
|
|
486
|
+
* Built-in generator for `useMutation` hooks. Emits one `useFooMutation` hook
|
|
487
|
+
* per POST/PUT/DELETE operation (configurable via `mutation.methods`) plus
|
|
488
|
+
* the matching `fooMutationKey` / `fooMutationOptions` helpers.
|
|
489
|
+
*/
|
|
520
490
|
const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
521
491
|
name: "react-query-mutation",
|
|
522
492
|
renderer: _kubb_renderer_jsx.jsxRenderer,
|
|
523
493
|
operation(node, ctx) {
|
|
524
|
-
|
|
525
|
-
const {
|
|
494
|
+
if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
|
|
495
|
+
const { config, driver, resolver, root } = ctx;
|
|
496
|
+
const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
526
497
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
527
498
|
if (!pluginTs) return null;
|
|
528
499
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
529
500
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
530
|
-
|
|
501
|
+
const queryMethods = new Set(query ? query.methods : []);
|
|
502
|
+
if (!(mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase()))) return null;
|
|
531
503
|
const importPath = mutation ? mutation.importPath : "@tanstack/react-query";
|
|
532
|
-
const
|
|
533
|
-
const
|
|
534
|
-
const
|
|
535
|
-
const
|
|
536
|
-
const
|
|
537
|
-
const mutationKeyName = require_components.transformName(`${baseName}MutationKey`, "const", transformers);
|
|
538
|
-
const clientName = require_components.transformName(baseName, "function", transformers);
|
|
504
|
+
const mutationHookName = resolver.resolveMutationName(node);
|
|
505
|
+
const mutationTypeName = resolver.resolveMutationTypeName(node);
|
|
506
|
+
const mutationOptionsName = resolver.resolveMutationOptionsName(node);
|
|
507
|
+
const mutationKeyName = resolver.resolveMutationKeyName(node);
|
|
508
|
+
const clientName = resolver.resolveClientName(node);
|
|
539
509
|
const meta = {
|
|
540
|
-
file: resolver.resolveFile({
|
|
541
|
-
name: mutationHookName,
|
|
542
|
-
extname: ".ts",
|
|
543
|
-
tag: node.tags[0] ?? "default",
|
|
544
|
-
path: node.path
|
|
545
|
-
}, {
|
|
510
|
+
file: resolver.resolveFile(require_components.operationFileEntry(node, mutationHookName), {
|
|
546
511
|
root,
|
|
547
512
|
output,
|
|
548
|
-
group
|
|
513
|
+
group: group ?? void 0
|
|
549
514
|
}),
|
|
550
|
-
fileTs: tsResolver.resolveFile({
|
|
551
|
-
name: node.operationId,
|
|
552
|
-
extname: ".ts",
|
|
553
|
-
tag: node.tags[0] ?? "default",
|
|
554
|
-
path: node.path
|
|
555
|
-
}, {
|
|
515
|
+
fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
556
516
|
root,
|
|
557
517
|
output: pluginTs.options?.output ?? output,
|
|
558
|
-
group: pluginTs.options?.group
|
|
518
|
+
group: pluginTs.options?.group ?? void 0
|
|
559
519
|
})
|
|
560
520
|
};
|
|
561
|
-
const
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
const
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
|
|
569
|
-
...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
|
|
570
|
-
...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
|
|
571
|
-
...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
|
|
572
|
-
].filter((name) => !!name);
|
|
573
|
-
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
574
|
-
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
575
|
-
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
576
|
-
name: node.operationId,
|
|
577
|
-
extname: ".ts",
|
|
578
|
-
tag: node.tags[0] ?? "default",
|
|
579
|
-
path: node.path
|
|
580
|
-
}, {
|
|
521
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
522
|
+
paramsCasing,
|
|
523
|
+
order: "body-response-first"
|
|
524
|
+
});
|
|
525
|
+
const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
526
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
527
|
+
const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
581
528
|
root,
|
|
582
529
|
output: pluginZod?.options?.output ?? output,
|
|
583
|
-
group: pluginZod?.options?.group
|
|
584
|
-
}) :
|
|
585
|
-
const zodSchemaNames =
|
|
530
|
+
group: pluginZod?.options?.group ?? void 0
|
|
531
|
+
}) : null;
|
|
532
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
|
|
586
533
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
587
534
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
588
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
589
|
-
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
590
|
-
name: node.operationId,
|
|
591
|
-
extname: ".ts",
|
|
592
|
-
tag: node.tags[0] ?? "default",
|
|
593
|
-
path: node.path
|
|
594
|
-
}, {
|
|
535
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
536
|
+
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
595
537
|
root,
|
|
596
538
|
output: clientPlugin?.options?.output ?? output,
|
|
597
|
-
group: clientPlugin?.options?.group
|
|
598
|
-
}) :
|
|
539
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
540
|
+
}) : null;
|
|
599
541
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
|
|
600
542
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
601
543
|
baseName: meta.file.baseName,
|
|
602
544
|
path: meta.file.path,
|
|
603
545
|
meta: meta.file.meta,
|
|
604
|
-
banner: resolver.resolveBanner(
|
|
546
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
605
547
|
output,
|
|
606
|
-
config
|
|
548
|
+
config,
|
|
549
|
+
file: {
|
|
550
|
+
path: meta.file.path,
|
|
551
|
+
baseName: meta.file.baseName
|
|
552
|
+
}
|
|
607
553
|
}),
|
|
608
|
-
footer: resolver.resolveFooter(
|
|
554
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
609
555
|
output,
|
|
610
|
-
config
|
|
556
|
+
config,
|
|
557
|
+
file: {
|
|
558
|
+
path: meta.file.path,
|
|
559
|
+
baseName: meta.file.baseName
|
|
560
|
+
}
|
|
611
561
|
}),
|
|
612
562
|
children: [
|
|
613
|
-
|
|
563
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
614
564
|
name: zodSchemaNames,
|
|
615
565
|
root: meta.file.path,
|
|
616
566
|
path: fileZod.path
|
|
617
567
|
}),
|
|
618
|
-
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
644
|
-
name: [
|
|
645
|
-
"Client",
|
|
646
|
-
"RequestConfig",
|
|
647
|
-
"ResponseErrorConfig"
|
|
648
|
-
],
|
|
649
|
-
root: meta.file.path,
|
|
650
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
651
|
-
isTypeOnly: true
|
|
652
|
-
}),
|
|
653
|
-
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
654
|
-
name: ["ResponseConfig"],
|
|
655
|
-
root: meta.file.path,
|
|
656
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
657
|
-
isTypeOnly: true
|
|
658
|
-
})
|
|
659
|
-
] }),
|
|
568
|
+
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
569
|
+
name: "client",
|
|
570
|
+
path: clientOptions.importPath
|
|
571
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
572
|
+
name: [
|
|
573
|
+
"Client",
|
|
574
|
+
"RequestConfig",
|
|
575
|
+
"ResponseErrorConfig"
|
|
576
|
+
],
|
|
577
|
+
path: clientOptions.importPath,
|
|
578
|
+
isTypeOnly: true
|
|
579
|
+
})] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
580
|
+
name: ["client"],
|
|
581
|
+
root: meta.file.path,
|
|
582
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
583
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
584
|
+
name: [
|
|
585
|
+
"Client",
|
|
586
|
+
"RequestConfig",
|
|
587
|
+
"ResponseErrorConfig"
|
|
588
|
+
],
|
|
589
|
+
root: meta.file.path,
|
|
590
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
591
|
+
isTypeOnly: true
|
|
592
|
+
})] }),
|
|
660
593
|
shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
661
594
|
name: [resolvedClientName],
|
|
662
595
|
root: meta.file.path,
|
|
663
596
|
path: clientFile.path
|
|
664
597
|
}),
|
|
665
|
-
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
598
|
+
!shouldUseClientPlugin && node.requestBody?.content?.some((e) => e.contentType === "multipart/form-data") && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
666
599
|
name: ["buildFormData"],
|
|
667
600
|
root: meta.file.path,
|
|
668
601
|
path: node_path.default.resolve(root, ".kubb/config.ts")
|
|
669
602
|
}),
|
|
603
|
+
!shouldUseClientPlugin && parser === "zod" && zodResolver && node.requestBody?.content?.[0]?.schema && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
604
|
+
name: ["z"],
|
|
605
|
+
path: "zod",
|
|
606
|
+
isTypeOnly: true
|
|
607
|
+
}),
|
|
670
608
|
customOptions && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
671
609
|
name: [customOptions.name],
|
|
672
610
|
path: customOptions.importPath
|
|
@@ -744,147 +682,116 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
744
682
|
});
|
|
745
683
|
//#endregion
|
|
746
684
|
//#region src/generators/queryGenerator.tsx
|
|
685
|
+
/**
|
|
686
|
+
* Built-in generator for `useQuery` hooks. Emits one `useFooQuery` hook per
|
|
687
|
+
* GET operation (configurable via `query.methods`) plus the matching
|
|
688
|
+
* `fooQueryKey` / `fooQueryOptions` helpers.
|
|
689
|
+
*/
|
|
747
690
|
const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
748
691
|
name: "react-query",
|
|
749
692
|
renderer: _kubb_renderer_jsx.jsxRenderer,
|
|
750
693
|
operation(node, ctx) {
|
|
751
|
-
|
|
752
|
-
const {
|
|
694
|
+
if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
|
|
695
|
+
const { config, driver, resolver, root } = ctx;
|
|
696
|
+
const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
753
697
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
754
698
|
if (!pluginTs) return null;
|
|
755
699
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
756
700
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
757
|
-
const
|
|
701
|
+
const queryMethods = new Set(query ? query.methods : []);
|
|
702
|
+
const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
|
|
758
703
|
if (!isQuery || isMutation) return null;
|
|
759
704
|
const importPath = query ? query.importPath : "@tanstack/react-query";
|
|
760
|
-
const
|
|
761
|
-
const
|
|
762
|
-
const
|
|
763
|
-
const
|
|
764
|
-
const
|
|
765
|
-
const queryKeyTypeName = require_components.transformName(`${capitalize(baseName)}QueryKey`, "type", transformers);
|
|
766
|
-
const clientName = require_components.transformName(baseName, "function", transformers);
|
|
705
|
+
const queryName = resolver.resolveQueryName(node);
|
|
706
|
+
const queryOptionsName = resolver.resolveQueryOptionsName(node);
|
|
707
|
+
const queryKeyName = resolver.resolveQueryKeyName(node);
|
|
708
|
+
const queryKeyTypeName = resolver.resolveQueryKeyTypeName(node);
|
|
709
|
+
const clientName = resolver.resolveClientName(node);
|
|
767
710
|
const meta = {
|
|
768
|
-
file: resolver.resolveFile({
|
|
769
|
-
name: queryName,
|
|
770
|
-
extname: ".ts",
|
|
771
|
-
tag: node.tags[0] ?? "default",
|
|
772
|
-
path: node.path
|
|
773
|
-
}, {
|
|
711
|
+
file: resolver.resolveFile(require_components.operationFileEntry(node, queryName), {
|
|
774
712
|
root,
|
|
775
713
|
output,
|
|
776
|
-
group
|
|
714
|
+
group: group ?? void 0
|
|
777
715
|
}),
|
|
778
|
-
fileTs: tsResolver.resolveFile({
|
|
779
|
-
name: node.operationId,
|
|
780
|
-
extname: ".ts",
|
|
781
|
-
tag: node.tags[0] ?? "default",
|
|
782
|
-
path: node.path
|
|
783
|
-
}, {
|
|
716
|
+
fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
784
717
|
root,
|
|
785
718
|
output: pluginTs.options?.output ?? output,
|
|
786
|
-
group: pluginTs.options?.group
|
|
719
|
+
group: pluginTs.options?.group ?? void 0
|
|
787
720
|
})
|
|
788
721
|
};
|
|
789
|
-
const
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
|
|
798
|
-
...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
|
|
799
|
-
...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
|
|
800
|
-
].filter((name) => !!name && name !== queryKeyTypeName);
|
|
801
|
-
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
802
|
-
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
803
|
-
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
804
|
-
name: node.operationId,
|
|
805
|
-
extname: ".ts",
|
|
806
|
-
tag: node.tags[0] ?? "default",
|
|
807
|
-
path: node.path
|
|
808
|
-
}, {
|
|
722
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
723
|
+
paramsCasing,
|
|
724
|
+
exclude: [queryKeyTypeName],
|
|
725
|
+
order: "body-response-first"
|
|
726
|
+
});
|
|
727
|
+
const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
728
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
729
|
+
const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
809
730
|
root,
|
|
810
731
|
output: pluginZod?.options?.output ?? output,
|
|
811
|
-
group: pluginZod?.options?.group
|
|
812
|
-
}) :
|
|
813
|
-
const zodSchemaNames =
|
|
732
|
+
group: pluginZod?.options?.group ?? void 0
|
|
733
|
+
}) : null;
|
|
734
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
|
|
814
735
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
815
736
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
816
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
817
|
-
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
818
|
-
name: node.operationId,
|
|
819
|
-
extname: ".ts",
|
|
820
|
-
tag: node.tags[0] ?? "default",
|
|
821
|
-
path: node.path
|
|
822
|
-
}, {
|
|
737
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
738
|
+
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
823
739
|
root,
|
|
824
740
|
output: clientPlugin?.options?.output ?? output,
|
|
825
|
-
group: clientPlugin?.options?.group
|
|
826
|
-
}) :
|
|
741
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
742
|
+
}) : null;
|
|
827
743
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
|
|
828
744
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
829
745
|
baseName: meta.file.baseName,
|
|
830
746
|
path: meta.file.path,
|
|
831
747
|
meta: meta.file.meta,
|
|
832
|
-
banner: resolver.resolveBanner(
|
|
748
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
833
749
|
output,
|
|
834
|
-
config
|
|
750
|
+
config,
|
|
751
|
+
file: {
|
|
752
|
+
path: meta.file.path,
|
|
753
|
+
baseName: meta.file.baseName
|
|
754
|
+
}
|
|
835
755
|
}),
|
|
836
|
-
footer: resolver.resolveFooter(
|
|
756
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
837
757
|
output,
|
|
838
|
-
config
|
|
758
|
+
config,
|
|
759
|
+
file: {
|
|
760
|
+
path: meta.file.path,
|
|
761
|
+
baseName: meta.file.baseName
|
|
762
|
+
}
|
|
839
763
|
}),
|
|
840
764
|
children: [
|
|
841
|
-
|
|
765
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
842
766
|
name: zodSchemaNames,
|
|
843
767
|
root: meta.file.path,
|
|
844
768
|
path: fileZod.path
|
|
845
769
|
}),
|
|
846
|
-
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
872
|
-
name: [
|
|
873
|
-
"Client",
|
|
874
|
-
"RequestConfig",
|
|
875
|
-
"ResponseErrorConfig"
|
|
876
|
-
],
|
|
877
|
-
root: meta.file.path,
|
|
878
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
879
|
-
isTypeOnly: true
|
|
880
|
-
}),
|
|
881
|
-
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
882
|
-
name: ["ResponseConfig"],
|
|
883
|
-
root: meta.file.path,
|
|
884
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
885
|
-
isTypeOnly: true
|
|
886
|
-
})
|
|
887
|
-
] }),
|
|
770
|
+
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
771
|
+
name: "client",
|
|
772
|
+
path: clientOptions.importPath
|
|
773
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
774
|
+
name: [
|
|
775
|
+
"Client",
|
|
776
|
+
"RequestConfig",
|
|
777
|
+
"ResponseErrorConfig"
|
|
778
|
+
],
|
|
779
|
+
path: clientOptions.importPath,
|
|
780
|
+
isTypeOnly: true
|
|
781
|
+
})] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
782
|
+
name: ["client"],
|
|
783
|
+
root: meta.file.path,
|
|
784
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
785
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
786
|
+
name: [
|
|
787
|
+
"Client",
|
|
788
|
+
"RequestConfig",
|
|
789
|
+
"ResponseErrorConfig"
|
|
790
|
+
],
|
|
791
|
+
root: meta.file.path,
|
|
792
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
793
|
+
isTypeOnly: true
|
|
794
|
+
})] }),
|
|
888
795
|
shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
889
796
|
name: [resolvedClientName],
|
|
890
797
|
root: meta.file.path,
|
|
@@ -976,154 +883,123 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
976
883
|
});
|
|
977
884
|
//#endregion
|
|
978
885
|
//#region src/generators/suspenseInfiniteQueryGenerator.tsx
|
|
886
|
+
/**
|
|
887
|
+
* Built-in generator for `useSuspenseInfiniteQuery` hooks. Enabled when both
|
|
888
|
+
* `suspense` and `infinite` are configured. Combines suspense semantics with
|
|
889
|
+
* cursor-based pagination — handlers throw promises while loading and pull
|
|
890
|
+
* additional pages on demand.
|
|
891
|
+
*/
|
|
979
892
|
const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
980
893
|
name: "react-suspense-infinite-query",
|
|
981
894
|
renderer: _kubb_renderer_jsx.jsxRenderer,
|
|
982
895
|
operation(node, ctx) {
|
|
983
|
-
|
|
984
|
-
const {
|
|
896
|
+
if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
|
|
897
|
+
const { config, driver, resolver, root } = ctx;
|
|
898
|
+
const { output, query, mutation, infinite, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
985
899
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
986
900
|
if (!pluginTs) return null;
|
|
987
901
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
988
902
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
989
|
-
const
|
|
903
|
+
const queryMethods = new Set(query ? query.methods : []);
|
|
904
|
+
const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
|
|
990
905
|
const isSuspense = !!suspense;
|
|
991
|
-
const infiniteOptions = infinite && typeof infinite === "object" ? infinite :
|
|
906
|
+
const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
|
|
992
907
|
if (!isQuery || isMutation || !isSuspense || !infiniteOptions) return null;
|
|
993
908
|
const normalizeKey = (key) => key.replace(/\?$/, "");
|
|
994
|
-
const queryParamKeys =
|
|
909
|
+
const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
|
|
995
910
|
const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
|
|
996
911
|
const hasCursorParam = !infiniteOptions.cursorParam || true;
|
|
997
912
|
if (!hasQueryParam || !hasCursorParam) return null;
|
|
998
913
|
const importPath = query ? query.importPath : "@tanstack/react-query";
|
|
999
|
-
const
|
|
1000
|
-
const
|
|
1001
|
-
const
|
|
1002
|
-
const
|
|
1003
|
-
const
|
|
1004
|
-
const queryKeyTypeName = require_components.transformName(`${capitalize(baseName)}SuspenseInfiniteQueryKey`, "type", transformers);
|
|
1005
|
-
const clientBaseName = require_components.transformName(`${baseName}SuspenseInfinite`, "function", transformers);
|
|
914
|
+
const queryName = resolver.resolveSuspenseInfiniteQueryName(node);
|
|
915
|
+
const queryOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node);
|
|
916
|
+
const queryKeyName = resolver.resolveSuspenseInfiniteQueryKeyName(node);
|
|
917
|
+
const queryKeyTypeName = resolver.resolveSuspenseInfiniteQueryKeyTypeName(node);
|
|
918
|
+
const clientBaseName = resolver.resolveSuspenseInfiniteClientName(node);
|
|
1006
919
|
const meta = {
|
|
1007
|
-
file: resolver.resolveFile({
|
|
1008
|
-
name: queryName,
|
|
1009
|
-
extname: ".ts",
|
|
1010
|
-
tag: node.tags[0] ?? "default",
|
|
1011
|
-
path: node.path
|
|
1012
|
-
}, {
|
|
920
|
+
file: resolver.resolveFile(require_components.operationFileEntry(node, queryName), {
|
|
1013
921
|
root,
|
|
1014
922
|
output,
|
|
1015
|
-
group
|
|
923
|
+
group: group ?? void 0
|
|
1016
924
|
}),
|
|
1017
|
-
fileTs: tsResolver.resolveFile({
|
|
1018
|
-
name: node.operationId,
|
|
1019
|
-
extname: ".ts",
|
|
1020
|
-
tag: node.tags[0] ?? "default",
|
|
1021
|
-
path: node.path
|
|
1022
|
-
}, {
|
|
925
|
+
fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
1023
926
|
root,
|
|
1024
927
|
output: pluginTs.options?.output ?? output,
|
|
1025
|
-
group: pluginTs.options?.group
|
|
928
|
+
group: pluginTs.options?.group ?? void 0
|
|
1026
929
|
})
|
|
1027
930
|
};
|
|
1028
|
-
const
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
const
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
|
|
1036
|
-
...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
|
|
1037
|
-
...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
|
|
1038
|
-
...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
|
|
1039
|
-
].filter(Boolean);
|
|
1040
|
-
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
1041
|
-
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
1042
|
-
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
1043
|
-
name: node.operationId,
|
|
1044
|
-
extname: ".ts",
|
|
1045
|
-
tag: node.tags[0] ?? "default",
|
|
1046
|
-
path: node.path
|
|
1047
|
-
}, {
|
|
931
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
932
|
+
paramsCasing,
|
|
933
|
+
order: "body-response-first"
|
|
934
|
+
});
|
|
935
|
+
const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
936
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
937
|
+
const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
1048
938
|
root,
|
|
1049
939
|
output: pluginZod?.options?.output ?? output,
|
|
1050
|
-
group: pluginZod?.options?.group
|
|
1051
|
-
}) :
|
|
1052
|
-
const zodSchemaNames =
|
|
940
|
+
group: pluginZod?.options?.group ?? void 0
|
|
941
|
+
}) : null;
|
|
942
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
|
|
1053
943
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
1054
944
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
1055
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
1056
|
-
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
1057
|
-
name: node.operationId,
|
|
1058
|
-
extname: ".ts",
|
|
1059
|
-
tag: node.tags[0] ?? "default",
|
|
1060
|
-
path: node.path
|
|
1061
|
-
}, {
|
|
945
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
946
|
+
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
1062
947
|
root,
|
|
1063
948
|
output: clientPlugin?.options?.output ?? output,
|
|
1064
|
-
group: clientPlugin?.options?.group
|
|
1065
|
-
}) :
|
|
949
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
950
|
+
}) : null;
|
|
1066
951
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
|
|
1067
952
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
1068
953
|
baseName: meta.file.baseName,
|
|
1069
954
|
path: meta.file.path,
|
|
1070
955
|
meta: meta.file.meta,
|
|
1071
|
-
banner: resolver.resolveBanner(
|
|
956
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1072
957
|
output,
|
|
1073
|
-
config
|
|
958
|
+
config,
|
|
959
|
+
file: {
|
|
960
|
+
path: meta.file.path,
|
|
961
|
+
baseName: meta.file.baseName
|
|
962
|
+
}
|
|
1074
963
|
}),
|
|
1075
|
-
footer: resolver.resolveFooter(
|
|
964
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1076
965
|
output,
|
|
1077
|
-
config
|
|
966
|
+
config,
|
|
967
|
+
file: {
|
|
968
|
+
path: meta.file.path,
|
|
969
|
+
baseName: meta.file.baseName
|
|
970
|
+
}
|
|
1078
971
|
}),
|
|
1079
972
|
children: [
|
|
1080
|
-
|
|
973
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1081
974
|
name: zodSchemaNames,
|
|
1082
975
|
root: meta.file.path,
|
|
1083
976
|
path: fileZod.path
|
|
1084
977
|
}),
|
|
1085
|
-
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1111
|
-
name: [
|
|
1112
|
-
"Client",
|
|
1113
|
-
"RequestConfig",
|
|
1114
|
-
"ResponseErrorConfig"
|
|
1115
|
-
],
|
|
1116
|
-
root: meta.file.path,
|
|
1117
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
1118
|
-
isTypeOnly: true
|
|
1119
|
-
}),
|
|
1120
|
-
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1121
|
-
name: ["ResponseConfig"],
|
|
1122
|
-
root: meta.file.path,
|
|
1123
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
1124
|
-
isTypeOnly: true
|
|
1125
|
-
})
|
|
1126
|
-
] }),
|
|
978
|
+
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
979
|
+
name: "client",
|
|
980
|
+
path: clientOptions.importPath
|
|
981
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
982
|
+
name: [
|
|
983
|
+
"Client",
|
|
984
|
+
"RequestConfig",
|
|
985
|
+
"ResponseErrorConfig"
|
|
986
|
+
],
|
|
987
|
+
path: clientOptions.importPath,
|
|
988
|
+
isTypeOnly: true
|
|
989
|
+
})] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
990
|
+
name: ["client"],
|
|
991
|
+
root: meta.file.path,
|
|
992
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
993
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
994
|
+
name: [
|
|
995
|
+
"Client",
|
|
996
|
+
"RequestConfig",
|
|
997
|
+
"ResponseErrorConfig"
|
|
998
|
+
],
|
|
999
|
+
root: meta.file.path,
|
|
1000
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
1001
|
+
isTypeOnly: true
|
|
1002
|
+
})] }),
|
|
1127
1003
|
shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1128
1004
|
name: [resolvedClientName],
|
|
1129
1005
|
root: meta.file.path,
|
|
@@ -1225,147 +1101,117 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1225
1101
|
});
|
|
1226
1102
|
//#endregion
|
|
1227
1103
|
//#region src/generators/suspenseQueryGenerator.tsx
|
|
1104
|
+
/**
|
|
1105
|
+
* Built-in generator for `useSuspenseQuery` hooks. Enabled when
|
|
1106
|
+
* `pluginReactQuery({ suspense: {} })`. Emits one `useFooSuspenseQuery` hook
|
|
1107
|
+
* per query operation. Suspense queries throw promises while loading and
|
|
1108
|
+
* require a `<Suspense>` boundary in the React tree. TanStack Query v5+ only.
|
|
1109
|
+
*/
|
|
1228
1110
|
const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
1229
1111
|
name: "react-suspense-query",
|
|
1230
1112
|
renderer: _kubb_renderer_jsx.jsxRenderer,
|
|
1231
1113
|
operation(node, ctx) {
|
|
1232
|
-
|
|
1233
|
-
const {
|
|
1114
|
+
if (!_kubb_core.ast.isHttpOperationNode(node)) return null;
|
|
1115
|
+
const { config, driver, resolver, root } = ctx;
|
|
1116
|
+
const { output, query, mutation, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
1234
1117
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
1235
1118
|
if (!pluginTs) return null;
|
|
1236
1119
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
1237
1120
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
1238
|
-
const
|
|
1121
|
+
const queryMethods = new Set(query ? query.methods : []);
|
|
1122
|
+
const isMutation = mutation !== false && !isQuery && (mutation ? mutation.methods : []).some((method) => !queryMethods.has(method) && node.method.toLowerCase() === method.toLowerCase());
|
|
1239
1123
|
if (!isQuery || isMutation || !!!suspense) return null;
|
|
1240
1124
|
const importPath = query ? query.importPath : "@tanstack/react-query";
|
|
1241
|
-
const
|
|
1242
|
-
const
|
|
1243
|
-
const
|
|
1244
|
-
const
|
|
1245
|
-
const
|
|
1246
|
-
const queryKeyTypeName = require_components.transformName(`${capitalize(baseName)}SuspenseQueryKey`, "type", transformers);
|
|
1247
|
-
const clientName = require_components.transformName(`${baseName}Suspense`, "function", transformers);
|
|
1125
|
+
const queryName = resolver.resolveSuspenseQueryName(node);
|
|
1126
|
+
const queryOptionsName = resolver.resolveSuspenseQueryOptionsName(node);
|
|
1127
|
+
const queryKeyName = resolver.resolveSuspenseQueryKeyName(node);
|
|
1128
|
+
const queryKeyTypeName = resolver.resolveSuspenseQueryKeyTypeName(node);
|
|
1129
|
+
const clientName = resolver.resolveSuspenseClientName(node);
|
|
1248
1130
|
const meta = {
|
|
1249
|
-
file: resolver.resolveFile({
|
|
1250
|
-
name: queryName,
|
|
1251
|
-
extname: ".ts",
|
|
1252
|
-
tag: node.tags[0] ?? "default",
|
|
1253
|
-
path: node.path
|
|
1254
|
-
}, {
|
|
1131
|
+
file: resolver.resolveFile(require_components.operationFileEntry(node, queryName), {
|
|
1255
1132
|
root,
|
|
1256
1133
|
output,
|
|
1257
|
-
group
|
|
1134
|
+
group: group ?? void 0
|
|
1258
1135
|
}),
|
|
1259
|
-
fileTs: tsResolver.resolveFile({
|
|
1260
|
-
name: node.operationId,
|
|
1261
|
-
extname: ".ts",
|
|
1262
|
-
tag: node.tags[0] ?? "default",
|
|
1263
|
-
path: node.path
|
|
1264
|
-
}, {
|
|
1136
|
+
fileTs: tsResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
1265
1137
|
root,
|
|
1266
1138
|
output: pluginTs.options?.output ?? output,
|
|
1267
|
-
group: pluginTs.options?.group
|
|
1139
|
+
group: pluginTs.options?.group ?? void 0
|
|
1268
1140
|
})
|
|
1269
1141
|
};
|
|
1270
|
-
const
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
...queryParams.map((p) => tsResolver.resolveQueryParamsName(node, p)),
|
|
1279
|
-
...headerParams.map((p) => tsResolver.resolveHeaderParamsName(node, p)),
|
|
1280
|
-
...node.responses.map((res) => tsResolver.resolveResponseStatusName(node, res.statusCode))
|
|
1281
|
-
].filter((name) => !!name && name !== queryKeyTypeName);
|
|
1282
|
-
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
1283
|
-
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : void 0;
|
|
1284
|
-
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
1285
|
-
name: node.operationId,
|
|
1286
|
-
extname: ".ts",
|
|
1287
|
-
tag: node.tags[0] ?? "default",
|
|
1288
|
-
path: node.path
|
|
1289
|
-
}, {
|
|
1142
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
1143
|
+
paramsCasing,
|
|
1144
|
+
exclude: [queryKeyTypeName],
|
|
1145
|
+
order: "body-response-first"
|
|
1146
|
+
});
|
|
1147
|
+
const pluginZod = (0, _kubb_plugin_client.isParserEnabled)(parser) ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
1148
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
1149
|
+
const fileZod = zodResolver ? zodResolver.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
1290
1150
|
root,
|
|
1291
1151
|
output: pluginZod?.options?.output ?? output,
|
|
1292
|
-
group: pluginZod?.options?.group
|
|
1293
|
-
}) :
|
|
1294
|
-
const zodSchemaNames =
|
|
1152
|
+
group: pluginZod?.options?.group ?? void 0
|
|
1153
|
+
}) : null;
|
|
1154
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver, parser);
|
|
1295
1155
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
1296
1156
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
1297
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
1298
|
-
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
1299
|
-
name: node.operationId,
|
|
1300
|
-
extname: ".ts",
|
|
1301
|
-
tag: node.tags[0] ?? "default",
|
|
1302
|
-
path: node.path
|
|
1303
|
-
}, {
|
|
1157
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
1158
|
+
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile(require_components.operationFileEntry(node, node.operationId), {
|
|
1304
1159
|
root,
|
|
1305
1160
|
output: clientPlugin?.options?.output ?? output,
|
|
1306
|
-
group: clientPlugin?.options?.group
|
|
1307
|
-
}) :
|
|
1161
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
1162
|
+
}) : null;
|
|
1308
1163
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
|
|
1309
1164
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
1310
1165
|
baseName: meta.file.baseName,
|
|
1311
1166
|
path: meta.file.path,
|
|
1312
1167
|
meta: meta.file.meta,
|
|
1313
|
-
banner: resolver.resolveBanner(
|
|
1168
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1314
1169
|
output,
|
|
1315
|
-
config
|
|
1170
|
+
config,
|
|
1171
|
+
file: {
|
|
1172
|
+
path: meta.file.path,
|
|
1173
|
+
baseName: meta.file.baseName
|
|
1174
|
+
}
|
|
1316
1175
|
}),
|
|
1317
|
-
footer: resolver.resolveFooter(
|
|
1176
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1318
1177
|
output,
|
|
1319
|
-
config
|
|
1178
|
+
config,
|
|
1179
|
+
file: {
|
|
1180
|
+
path: meta.file.path,
|
|
1181
|
+
baseName: meta.file.baseName
|
|
1182
|
+
}
|
|
1320
1183
|
}),
|
|
1321
1184
|
children: [
|
|
1322
|
-
|
|
1185
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1323
1186
|
name: zodSchemaNames,
|
|
1324
1187
|
root: meta.file.path,
|
|
1325
1188
|
path: fileZod.path
|
|
1326
1189
|
}),
|
|
1327
|
-
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1353
|
-
name: [
|
|
1354
|
-
"Client",
|
|
1355
|
-
"RequestConfig",
|
|
1356
|
-
"ResponseErrorConfig"
|
|
1357
|
-
],
|
|
1358
|
-
root: meta.file.path,
|
|
1359
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
1360
|
-
isTypeOnly: true
|
|
1361
|
-
}),
|
|
1362
|
-
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1363
|
-
name: ["ResponseConfig"],
|
|
1364
|
-
root: meta.file.path,
|
|
1365
|
-
path: node_path.default.resolve(root, ".kubb/fetch.ts"),
|
|
1366
|
-
isTypeOnly: true
|
|
1367
|
-
})
|
|
1368
|
-
] }),
|
|
1190
|
+
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1191
|
+
name: "client",
|
|
1192
|
+
path: clientOptions.importPath
|
|
1193
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1194
|
+
name: [
|
|
1195
|
+
"Client",
|
|
1196
|
+
"RequestConfig",
|
|
1197
|
+
"ResponseErrorConfig"
|
|
1198
|
+
],
|
|
1199
|
+
path: clientOptions.importPath,
|
|
1200
|
+
isTypeOnly: true
|
|
1201
|
+
})] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1202
|
+
name: ["client"],
|
|
1203
|
+
root: meta.file.path,
|
|
1204
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
1205
|
+
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1206
|
+
name: [
|
|
1207
|
+
"Client",
|
|
1208
|
+
"RequestConfig",
|
|
1209
|
+
"ResponseErrorConfig"
|
|
1210
|
+
],
|
|
1211
|
+
root: meta.file.path,
|
|
1212
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
1213
|
+
isTypeOnly: true
|
|
1214
|
+
})] }),
|
|
1369
1215
|
shouldUseClientPlugin && clientFile && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1370
1216
|
name: [resolvedClientName],
|
|
1371
1217
|
root: meta.file.path,
|
|
@@ -1420,7 +1266,8 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1420
1266
|
paramsCasing,
|
|
1421
1267
|
paramsType,
|
|
1422
1268
|
pathParamsType,
|
|
1423
|
-
dataReturnType: clientOptions.dataReturnType || "data"
|
|
1269
|
+
dataReturnType: clientOptions.dataReturnType || "data",
|
|
1270
|
+
suspense: true
|
|
1424
1271
|
}),
|
|
1425
1272
|
suspense && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
1426
1273
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
@@ -1499,4 +1346,4 @@ Object.defineProperty(exports, "suspenseQueryGenerator", {
|
|
|
1499
1346
|
}
|
|
1500
1347
|
});
|
|
1501
1348
|
|
|
1502
|
-
//# sourceMappingURL=generators-
|
|
1349
|
+
//# sourceMappingURL=generators-zGKP8yII.cjs.map
|