@kubb/plugin-react-query 5.0.0-beta.3 → 5.0.0-beta.30
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 +34 -83
- package/dist/{components-DTGLu4UV.js → components-CDmg-RPi.js} +275 -255
- package/dist/components-CDmg-RPi.js.map +1 -0
- package/dist/{components-dAKJEn9b.cjs → components-MPBTffPl.cjs} +299 -255
- package/dist/components-MPBTffPl.cjs.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.d.ts +1 -75
- package/dist/components.js +1 -1
- package/dist/{generators-C_fbcjpG.js → generators-Bma51Uar.js} +301 -261
- package/dist/generators-Bma51Uar.js.map +1 -0
- package/dist/{generators-CWEQsdO9.cjs → generators-BtsWNz-6.cjs} +299 -259
- package/dist/generators-BtsWNz-6.cjs.map +1 -0
- package/dist/generators.cjs +1 -1
- package/dist/generators.d.ts +41 -1
- package/dist/generators.js +1 -1
- package/dist/index.cjs +143 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +30 -1
- package/dist/index.js +143 -20
- package/dist/index.js.map +1 -1
- package/dist/types-DiZPLTXl.d.ts +400 -0
- package/extension.yaml +1507 -0
- package/package.json +16 -18
- package/src/components/InfiniteQuery.tsx +19 -13
- package/src/components/InfiniteQueryOptions.tsx +29 -47
- package/src/components/Mutation.tsx +35 -15
- package/src/components/MutationOptions.tsx +14 -13
- package/src/components/Query.tsx +9 -10
- package/src/components/QueryOptions.tsx +6 -27
- package/src/components/SuspenseInfiniteQuery.tsx +19 -13
- package/src/components/SuspenseInfiniteQueryOptions.tsx +29 -47
- package/src/components/SuspenseQuery.tsx +9 -10
- package/src/generators/customHookOptionsFileGenerator.tsx +18 -14
- package/src/generators/hookOptionsGenerator.tsx +36 -33
- package/src/generators/infiniteQueryGenerator.tsx +46 -64
- package/src/generators/mutationGenerator.tsx +42 -50
- package/src/generators/queryGenerator.tsx +43 -49
- package/src/generators/suspenseInfiniteQueryGenerator.tsx +41 -51
- package/src/generators/suspenseQueryGenerator.tsx +44 -62
- package/src/plugin.ts +42 -16
- package/src/resolvers/resolverReactQuery.ts +102 -6
- package/src/types.ts +199 -61
- package/src/utils.ts +10 -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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_components = require("./components-
|
|
1
|
+
const require_components = require("./components-MPBTffPl.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");
|
|
@@ -11,21 +11,28 @@ let node_fs = require("node:fs");
|
|
|
11
11
|
node_fs = require_components.__toESM(node_fs);
|
|
12
12
|
let remeda = require("remeda");
|
|
13
13
|
//#region src/generators/customHookOptionsFileGenerator.tsx
|
|
14
|
+
/**
|
|
15
|
+
* Scaffolds the user-editable `useCustomHookOptions` file when
|
|
16
|
+
* `pluginReactQuery({ customOptions: { ... } })` is configured. The file is
|
|
17
|
+
* only created when it does not already exist, so user edits persist across
|
|
18
|
+
* regeneration.
|
|
19
|
+
*/
|
|
14
20
|
const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
15
21
|
name: "react-query-custom-hook-options-file",
|
|
16
|
-
renderer: _kubb_renderer_jsx.
|
|
22
|
+
renderer: _kubb_renderer_jsx.jsxRendererSync,
|
|
17
23
|
operations(nodes, ctx) {
|
|
18
24
|
const { resolver, config, root } = ctx;
|
|
19
|
-
const { output, customOptions, query, group
|
|
25
|
+
const { output, customOptions, query, group } = ctx.options;
|
|
20
26
|
if (!customOptions) return null;
|
|
21
27
|
const override = output.override ?? config.output.override ?? false;
|
|
22
28
|
const { importPath, name } = customOptions;
|
|
29
|
+
const hookOptionsName = resolver.resolveHookOptionsName();
|
|
30
|
+
const customHookOptionsName = resolver.resolveCustomHookOptionsName();
|
|
23
31
|
const reactQueryImportPath = query ? query.importPath : "@tanstack/react-query";
|
|
24
|
-
const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
25
32
|
let hookFilePath;
|
|
26
33
|
const firstNode = nodes[0];
|
|
27
34
|
if (firstNode) {
|
|
28
|
-
const hookName =
|
|
35
|
+
const hookName = resolver.resolveQueryName(firstNode);
|
|
29
36
|
hookFilePath = resolver.resolveFile({
|
|
30
37
|
name: hookName,
|
|
31
38
|
extname: ".ts",
|
|
@@ -34,7 +41,7 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
34
41
|
}, {
|
|
35
42
|
root,
|
|
36
43
|
output,
|
|
37
|
-
group
|
|
44
|
+
group: group ?? void 0
|
|
38
45
|
}).path;
|
|
39
46
|
} else hookFilePath = node_path.default.resolve(root, "index.ts");
|
|
40
47
|
const ensureExtension = (filePath, extname) => {
|
|
@@ -63,7 +70,7 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
63
70
|
path: reactQueryImportPath
|
|
64
71
|
}),
|
|
65
72
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
66
|
-
name: [
|
|
73
|
+
name: [hookOptionsName],
|
|
67
74
|
root: file.path,
|
|
68
75
|
path: node_path.default.resolve(root, "./index.ts")
|
|
69
76
|
}),
|
|
@@ -72,9 +79,9 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
72
79
|
isExportable: true,
|
|
73
80
|
isIndexable: true,
|
|
74
81
|
children: [/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
|
|
75
|
-
name:
|
|
82
|
+
name: customHookOptionsName,
|
|
76
83
|
params: "{ queryClient }: { queryClient: QueryClient }",
|
|
77
|
-
returnType:
|
|
84
|
+
returnType: `Partial<${hookOptionsName}>`,
|
|
78
85
|
children: `return {
|
|
79
86
|
// TODO: Define custom hook options here
|
|
80
87
|
// Example:
|
|
@@ -86,12 +93,12 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
86
93
|
}`
|
|
87
94
|
}), /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
|
|
88
95
|
name,
|
|
89
|
-
generics:
|
|
96
|
+
generics: `T extends keyof ${hookOptionsName}`,
|
|
90
97
|
params: "{ hookName, operationId }: { hookName: T, operationId: string }",
|
|
91
|
-
returnType:
|
|
98
|
+
returnType: `${hookOptionsName}[T]`,
|
|
92
99
|
export: true,
|
|
93
100
|
children: `const queryClient = useQueryClient()
|
|
94
|
-
const customOptions =
|
|
101
|
+
const customOptions = ${customHookOptionsName}({ queryClient })
|
|
95
102
|
return customOptions[hookName] ?? {}`
|
|
96
103
|
})]
|
|
97
104
|
})
|
|
@@ -101,43 +108,48 @@ const customHookOptionsFileGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
101
108
|
});
|
|
102
109
|
//#endregion
|
|
103
110
|
//#region src/generators/hookOptionsGenerator.tsx
|
|
111
|
+
/**
|
|
112
|
+
* Emits the `HookOptions` type used by `customOptions`. Enabled when
|
|
113
|
+
* `pluginReactQuery({ customOptions: { ... } })`. The generated type lists
|
|
114
|
+
* every hook keyed by name so user-supplied options stay in sync with the
|
|
115
|
+
* generated hooks at compile time.
|
|
116
|
+
*/
|
|
104
117
|
const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
105
118
|
name: "react-query-hook-options",
|
|
106
|
-
renderer: _kubb_renderer_jsx.
|
|
119
|
+
renderer: _kubb_renderer_jsx.jsxRendererSync,
|
|
107
120
|
operations(nodes, ctx) {
|
|
108
|
-
const { resolver, config, root
|
|
109
|
-
const { output, customOptions, query, mutation, suspense, infinite, group,
|
|
121
|
+
const { resolver, config, root } = ctx;
|
|
122
|
+
const { output, customOptions, query, mutation, suspense, infinite, group, override } = ctx.options;
|
|
110
123
|
if (!customOptions) return null;
|
|
124
|
+
const name = resolver.resolveHookOptionsName();
|
|
111
125
|
const resolvedFile = resolver.resolveFile({
|
|
112
|
-
name
|
|
126
|
+
name,
|
|
113
127
|
extname: ".ts"
|
|
114
128
|
}, {
|
|
115
129
|
root,
|
|
116
130
|
output,
|
|
117
|
-
group
|
|
131
|
+
group: group ?? void 0
|
|
118
132
|
});
|
|
119
133
|
const hookOptionsFile = {
|
|
120
134
|
...resolvedFile,
|
|
121
|
-
baseName:
|
|
122
|
-
path: resolvedFile.path.replace(/
|
|
135
|
+
baseName: `${name}.ts`,
|
|
136
|
+
path: resolvedFile.path.replace(/[^/\\]+\.ts$/, `${name}.ts`)
|
|
123
137
|
};
|
|
124
|
-
const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);
|
|
125
138
|
const imports = [];
|
|
126
139
|
const hookOptions = {};
|
|
127
140
|
for (const node of nodes) {
|
|
128
|
-
const baseName = resolver.resolveName(node.operationId);
|
|
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
147
|
const isMutationOp = nodeMutation !== false && !isQueryOp && (0, remeda.difference)(nodeMutation ? nodeMutation.methods : [], nodeQuery ? nodeQuery.methods : []).some((m) => node.method.toLowerCase() === m.toLowerCase());
|
|
136
148
|
const isSuspenseOp = !!suspense;
|
|
137
149
|
const isInfiniteOp = !!nodeInfiniteOptions;
|
|
138
150
|
if (isQueryOp) {
|
|
139
|
-
const queryOptionsName =
|
|
140
|
-
const queryHookName =
|
|
151
|
+
const queryOptionsName = resolver.resolveQueryOptionsName(node);
|
|
152
|
+
const queryHookName = resolver.resolveQueryName(node);
|
|
141
153
|
const queryHookFile = resolver.resolveFile({
|
|
142
154
|
name: queryHookName,
|
|
143
155
|
extname: ".ts",
|
|
@@ -146,7 +158,7 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
146
158
|
}, {
|
|
147
159
|
root,
|
|
148
160
|
output,
|
|
149
|
-
group
|
|
161
|
+
group: group ?? void 0
|
|
150
162
|
});
|
|
151
163
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
152
164
|
name: [queryOptionsName],
|
|
@@ -155,8 +167,8 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
155
167
|
}));
|
|
156
168
|
hookOptions[queryHookName] = `Partial<ReturnType<typeof ${queryOptionsName}>>`;
|
|
157
169
|
if (isSuspenseOp) {
|
|
158
|
-
const suspenseOptionsName =
|
|
159
|
-
const suspenseHookName =
|
|
170
|
+
const suspenseOptionsName = resolver.resolveSuspenseQueryOptionsName(node);
|
|
171
|
+
const suspenseHookName = resolver.resolveSuspenseQueryName(node);
|
|
160
172
|
const suspenseHookFile = resolver.resolveFile({
|
|
161
173
|
name: suspenseHookName,
|
|
162
174
|
extname: ".ts",
|
|
@@ -165,7 +177,7 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
165
177
|
}, {
|
|
166
178
|
root,
|
|
167
179
|
output,
|
|
168
|
-
group
|
|
180
|
+
group: group ?? void 0
|
|
169
181
|
});
|
|
170
182
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
171
183
|
name: [suspenseOptionsName],
|
|
@@ -176,10 +188,10 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
176
188
|
}
|
|
177
189
|
if (isInfiniteOp) {
|
|
178
190
|
const normalizeKey = (key) => key.replace(/\?$/, "");
|
|
179
|
-
const queryParamKeys =
|
|
191
|
+
const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
|
|
180
192
|
if (nodeInfiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === nodeInfiniteOptions.queryParam) : false) {
|
|
181
|
-
const infiniteOptionsName =
|
|
182
|
-
const infiniteHookName =
|
|
193
|
+
const infiniteOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
|
|
194
|
+
const infiniteHookName = resolver.resolveInfiniteQueryName(node);
|
|
183
195
|
const infiniteHookFile = resolver.resolveFile({
|
|
184
196
|
name: infiniteHookName,
|
|
185
197
|
extname: ".ts",
|
|
@@ -188,7 +200,7 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
188
200
|
}, {
|
|
189
201
|
root,
|
|
190
202
|
output,
|
|
191
|
-
group
|
|
203
|
+
group: group ?? void 0
|
|
192
204
|
});
|
|
193
205
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
194
206
|
name: [infiniteOptionsName],
|
|
@@ -197,8 +209,8 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
197
209
|
}));
|
|
198
210
|
hookOptions[infiniteHookName] = `Partial<ReturnType<typeof ${infiniteOptionsName}>>`;
|
|
199
211
|
if (isSuspenseOp) {
|
|
200
|
-
const suspenseInfiniteOptionsName =
|
|
201
|
-
const suspenseInfiniteHookName =
|
|
212
|
+
const suspenseInfiniteOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node);
|
|
213
|
+
const suspenseInfiniteHookName = resolver.resolveSuspenseInfiniteQueryName(node);
|
|
202
214
|
const suspenseInfiniteHookFile = resolver.resolveFile({
|
|
203
215
|
name: suspenseInfiniteHookName,
|
|
204
216
|
extname: ".ts",
|
|
@@ -207,7 +219,7 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
207
219
|
}, {
|
|
208
220
|
root,
|
|
209
221
|
output,
|
|
210
|
-
group
|
|
222
|
+
group: group ?? void 0
|
|
211
223
|
});
|
|
212
224
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
213
225
|
name: [suspenseInfiniteOptionsName],
|
|
@@ -220,8 +232,8 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
220
232
|
}
|
|
221
233
|
}
|
|
222
234
|
if (isMutationOp) {
|
|
223
|
-
const mutationOptionsName =
|
|
224
|
-
const mutationHookName =
|
|
235
|
+
const mutationOptionsName = resolver.resolveMutationOptionsName(node);
|
|
236
|
+
const mutationHookName = resolver.resolveMutationName(node);
|
|
225
237
|
const mutationHookFile = resolver.resolveFile({
|
|
226
238
|
name: mutationHookName,
|
|
227
239
|
extname: ".ts",
|
|
@@ -230,7 +242,7 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
230
242
|
}, {
|
|
231
243
|
root,
|
|
232
244
|
output,
|
|
233
|
-
group
|
|
245
|
+
group: group ?? void 0
|
|
234
246
|
});
|
|
235
247
|
imports.push(/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
236
248
|
name: [mutationOptionsName],
|
|
@@ -240,18 +252,25 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
240
252
|
hookOptions[mutationHookName] = `Partial<ReturnType<typeof ${mutationOptionsName}>>`;
|
|
241
253
|
}
|
|
242
254
|
}
|
|
243
|
-
const name = "HookOptions";
|
|
244
255
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
245
256
|
baseName: hookOptionsFile.baseName,
|
|
246
257
|
path: hookOptionsFile.path,
|
|
247
258
|
meta: hookOptionsFile.meta,
|
|
248
|
-
banner: resolver.resolveBanner(
|
|
259
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
249
260
|
output,
|
|
250
|
-
config
|
|
261
|
+
config,
|
|
262
|
+
file: {
|
|
263
|
+
path: hookOptionsFile.path,
|
|
264
|
+
baseName: hookOptionsFile.baseName
|
|
265
|
+
}
|
|
251
266
|
}),
|
|
252
|
-
footer: resolver.resolveFooter(
|
|
267
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
253
268
|
output,
|
|
254
|
-
config
|
|
269
|
+
config,
|
|
270
|
+
file: {
|
|
271
|
+
path: hookOptionsFile.path,
|
|
272
|
+
baseName: hookOptionsFile.baseName
|
|
273
|
+
}
|
|
255
274
|
}),
|
|
256
275
|
children: [imports, /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Source, {
|
|
257
276
|
name,
|
|
@@ -269,32 +288,36 @@ const hookOptionsGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
269
288
|
});
|
|
270
289
|
//#endregion
|
|
271
290
|
//#region src/generators/infiniteQueryGenerator.tsx
|
|
291
|
+
/**
|
|
292
|
+
* Built-in generator for `useInfiniteQuery` hooks. Enabled when
|
|
293
|
+
* `pluginReactQuery({ infinite: { ... } })`. Emits one `useFooInfiniteQuery`
|
|
294
|
+
* hook per query operation, wiring the configured `nextParam` /
|
|
295
|
+
* `previousParam` paths into TanStack Query's cursor-based pagination.
|
|
296
|
+
*/
|
|
272
297
|
const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
273
298
|
name: "react-infinite-query",
|
|
274
|
-
renderer: _kubb_renderer_jsx.
|
|
299
|
+
renderer: _kubb_renderer_jsx.jsxRendererSync,
|
|
275
300
|
operation(node, ctx) {
|
|
276
|
-
const {
|
|
277
|
-
const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group,
|
|
301
|
+
const { config, driver, resolver, root } = ctx;
|
|
302
|
+
const { output, query, mutation, infinite, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
278
303
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
279
304
|
if (!pluginTs) return null;
|
|
280
305
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
281
306
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
282
307
|
const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
283
|
-
const infiniteOptions = infinite && typeof infinite === "object" ? infinite :
|
|
308
|
+
const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
|
|
284
309
|
if (!isQuery || isMutation || !infiniteOptions) return null;
|
|
285
310
|
const normalizeKey = (key) => key.replace(/\?$/, "");
|
|
286
|
-
const queryParamKeys =
|
|
311
|
+
const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
|
|
287
312
|
const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
|
|
288
313
|
const hasCursorParam = !infiniteOptions.cursorParam || true;
|
|
289
314
|
if (!hasQueryParam || !hasCursorParam) return null;
|
|
290
315
|
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);
|
|
316
|
+
const queryName = resolver.resolveInfiniteQueryName(node);
|
|
317
|
+
const queryOptionsName = resolver.resolveInfiniteQueryOptionsName(node);
|
|
318
|
+
const queryKeyName = resolver.resolveInfiniteQueryKeyName(node);
|
|
319
|
+
const queryKeyTypeName = resolver.resolveInfiniteQueryKeyTypeName(node);
|
|
320
|
+
const clientBaseName = resolver.resolveInfiniteClientName(node);
|
|
298
321
|
const meta = {
|
|
299
322
|
file: resolver.resolveFile({
|
|
300
323
|
name: queryName,
|
|
@@ -304,7 +327,7 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
304
327
|
}, {
|
|
305
328
|
root,
|
|
306
329
|
output,
|
|
307
|
-
group
|
|
330
|
+
group: group ?? void 0
|
|
308
331
|
}),
|
|
309
332
|
fileTs: tsResolver.resolveFile({
|
|
310
333
|
name: node.operationId,
|
|
@@ -314,23 +337,16 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
314
337
|
}, {
|
|
315
338
|
root,
|
|
316
339
|
output: pluginTs.options?.output ?? output,
|
|
317
|
-
group: pluginTs.options?.group
|
|
340
|
+
group: pluginTs.options?.group ?? void 0
|
|
318
341
|
})
|
|
319
342
|
};
|
|
320
|
-
const
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
|
|
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;
|
|
343
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
344
|
+
paramsCasing,
|
|
345
|
+
exclude: [queryKeyTypeName],
|
|
346
|
+
order: "body-response-first"
|
|
347
|
+
});
|
|
348
|
+
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
349
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
334
350
|
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
335
351
|
name: node.operationId,
|
|
336
352
|
extname: ".ts",
|
|
@@ -339,12 +355,12 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
339
355
|
}, {
|
|
340
356
|
root,
|
|
341
357
|
output: pluginZod?.options?.output ?? output,
|
|
342
|
-
group: pluginZod?.options?.group
|
|
343
|
-
}) :
|
|
344
|
-
const zodSchemaNames =
|
|
358
|
+
group: pluginZod?.options?.group ?? void 0
|
|
359
|
+
}) : null;
|
|
360
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
|
|
345
361
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
346
362
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
347
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
363
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
348
364
|
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
349
365
|
name: node.operationId,
|
|
350
366
|
extname: ".ts",
|
|
@@ -353,30 +369,38 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
353
369
|
}, {
|
|
354
370
|
root,
|
|
355
371
|
output: clientPlugin?.options?.output ?? output,
|
|
356
|
-
group: clientPlugin?.options?.group
|
|
357
|
-
}) :
|
|
372
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
373
|
+
}) : null;
|
|
358
374
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
|
|
359
375
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
360
376
|
baseName: meta.file.baseName,
|
|
361
377
|
path: meta.file.path,
|
|
362
378
|
meta: meta.file.meta,
|
|
363
|
-
banner: resolver.resolveBanner(
|
|
379
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
364
380
|
output,
|
|
365
|
-
config
|
|
381
|
+
config,
|
|
382
|
+
file: {
|
|
383
|
+
path: meta.file.path,
|
|
384
|
+
baseName: meta.file.baseName
|
|
385
|
+
}
|
|
366
386
|
}),
|
|
367
|
-
footer: resolver.resolveFooter(
|
|
387
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
368
388
|
output,
|
|
369
|
-
config
|
|
389
|
+
config,
|
|
390
|
+
file: {
|
|
391
|
+
path: meta.file.path,
|
|
392
|
+
baseName: meta.file.baseName
|
|
393
|
+
}
|
|
370
394
|
}),
|
|
371
395
|
children: [
|
|
372
|
-
|
|
396
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
373
397
|
name: zodSchemaNames,
|
|
374
398
|
root: meta.file.path,
|
|
375
399
|
path: fileZod.path
|
|
376
400
|
}),
|
|
377
401
|
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
378
402
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
379
|
-
name: "
|
|
403
|
+
name: "client",
|
|
380
404
|
path: clientOptions.importPath
|
|
381
405
|
}),
|
|
382
406
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
@@ -395,9 +419,9 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
395
419
|
})
|
|
396
420
|
] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
397
421
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
398
|
-
name: ["
|
|
422
|
+
name: ["client"],
|
|
399
423
|
root: meta.file.path,
|
|
400
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
424
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
401
425
|
}),
|
|
402
426
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
403
427
|
name: [
|
|
@@ -406,13 +430,13 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
406
430
|
"ResponseErrorConfig"
|
|
407
431
|
],
|
|
408
432
|
root: meta.file.path,
|
|
409
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
433
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
410
434
|
isTypeOnly: true
|
|
411
435
|
}),
|
|
412
436
|
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
413
437
|
name: ["ResponseConfig"],
|
|
414
438
|
root: meta.file.path,
|
|
415
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
439
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
416
440
|
isTypeOnly: true
|
|
417
441
|
})
|
|
418
442
|
] }),
|
|
@@ -517,25 +541,28 @@ const infiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
517
541
|
});
|
|
518
542
|
//#endregion
|
|
519
543
|
//#region src/generators/mutationGenerator.tsx
|
|
544
|
+
/**
|
|
545
|
+
* Built-in generator for `useMutation` hooks. Emits one `useFooMutation` hook
|
|
546
|
+
* per POST/PUT/DELETE operation (configurable via `mutation.methods`) plus
|
|
547
|
+
* the matching `fooMutationKey` / `fooMutationOptions` helpers.
|
|
548
|
+
*/
|
|
520
549
|
const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
521
550
|
name: "react-query-mutation",
|
|
522
|
-
renderer: _kubb_renderer_jsx.
|
|
551
|
+
renderer: _kubb_renderer_jsx.jsxRendererSync,
|
|
523
552
|
operation(node, ctx) {
|
|
524
|
-
const {
|
|
525
|
-
const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group,
|
|
553
|
+
const { config, driver, resolver, root } = ctx;
|
|
554
|
+
const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
526
555
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
527
556
|
if (!pluginTs) return null;
|
|
528
557
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
529
558
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
530
559
|
if (!(mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase()))) return null;
|
|
531
560
|
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);
|
|
561
|
+
const mutationHookName = resolver.resolveMutationName(node);
|
|
562
|
+
const mutationTypeName = resolver.resolveMutationTypeName(node);
|
|
563
|
+
const mutationOptionsName = resolver.resolveMutationOptionsName(node);
|
|
564
|
+
const mutationKeyName = resolver.resolveMutationKeyName(node);
|
|
565
|
+
const clientName = resolver.resolveClientName(node);
|
|
539
566
|
const meta = {
|
|
540
567
|
file: resolver.resolveFile({
|
|
541
568
|
name: mutationHookName,
|
|
@@ -545,7 +572,7 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
545
572
|
}, {
|
|
546
573
|
root,
|
|
547
574
|
output,
|
|
548
|
-
group
|
|
575
|
+
group: group ?? void 0
|
|
549
576
|
}),
|
|
550
577
|
fileTs: tsResolver.resolveFile({
|
|
551
578
|
name: node.operationId,
|
|
@@ -555,23 +582,15 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
555
582
|
}, {
|
|
556
583
|
root,
|
|
557
584
|
output: pluginTs.options?.output ?? output,
|
|
558
|
-
group: pluginTs.options?.group
|
|
585
|
+
group: pluginTs.options?.group ?? void 0
|
|
559
586
|
})
|
|
560
587
|
};
|
|
561
|
-
const
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
const
|
|
566
|
-
|
|
567
|
-
tsResolver.resolveResponseName(node),
|
|
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;
|
|
588
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
589
|
+
paramsCasing,
|
|
590
|
+
order: "body-response-first"
|
|
591
|
+
});
|
|
592
|
+
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
593
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
575
594
|
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
576
595
|
name: node.operationId,
|
|
577
596
|
extname: ".ts",
|
|
@@ -580,12 +599,12 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
580
599
|
}, {
|
|
581
600
|
root,
|
|
582
601
|
output: pluginZod?.options?.output ?? output,
|
|
583
|
-
group: pluginZod?.options?.group
|
|
584
|
-
}) :
|
|
585
|
-
const zodSchemaNames =
|
|
602
|
+
group: pluginZod?.options?.group ?? void 0
|
|
603
|
+
}) : null;
|
|
604
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
|
|
586
605
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
587
606
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
588
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
607
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
589
608
|
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
590
609
|
name: node.operationId,
|
|
591
610
|
extname: ".ts",
|
|
@@ -594,30 +613,38 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
594
613
|
}, {
|
|
595
614
|
root,
|
|
596
615
|
output: clientPlugin?.options?.output ?? output,
|
|
597
|
-
group: clientPlugin?.options?.group
|
|
598
|
-
}) :
|
|
616
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
617
|
+
}) : null;
|
|
599
618
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
|
|
600
619
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
601
620
|
baseName: meta.file.baseName,
|
|
602
621
|
path: meta.file.path,
|
|
603
622
|
meta: meta.file.meta,
|
|
604
|
-
banner: resolver.resolveBanner(
|
|
623
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
605
624
|
output,
|
|
606
|
-
config
|
|
625
|
+
config,
|
|
626
|
+
file: {
|
|
627
|
+
path: meta.file.path,
|
|
628
|
+
baseName: meta.file.baseName
|
|
629
|
+
}
|
|
607
630
|
}),
|
|
608
|
-
footer: resolver.resolveFooter(
|
|
631
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
609
632
|
output,
|
|
610
|
-
config
|
|
633
|
+
config,
|
|
634
|
+
file: {
|
|
635
|
+
path: meta.file.path,
|
|
636
|
+
baseName: meta.file.baseName
|
|
637
|
+
}
|
|
611
638
|
}),
|
|
612
639
|
children: [
|
|
613
|
-
|
|
640
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
614
641
|
name: zodSchemaNames,
|
|
615
642
|
root: meta.file.path,
|
|
616
643
|
path: fileZod.path
|
|
617
644
|
}),
|
|
618
645
|
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
619
646
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
620
|
-
name: "
|
|
647
|
+
name: "client",
|
|
621
648
|
path: clientOptions.importPath
|
|
622
649
|
}),
|
|
623
650
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
@@ -636,9 +663,9 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
636
663
|
})
|
|
637
664
|
] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
638
665
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
639
|
-
name: ["
|
|
666
|
+
name: ["client"],
|
|
640
667
|
root: meta.file.path,
|
|
641
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
668
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
642
669
|
}),
|
|
643
670
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
644
671
|
name: [
|
|
@@ -647,13 +674,13 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
647
674
|
"ResponseErrorConfig"
|
|
648
675
|
],
|
|
649
676
|
root: meta.file.path,
|
|
650
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
677
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
651
678
|
isTypeOnly: true
|
|
652
679
|
}),
|
|
653
680
|
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
654
681
|
name: ["ResponseConfig"],
|
|
655
682
|
root: meta.file.path,
|
|
656
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
683
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
657
684
|
isTypeOnly: true
|
|
658
685
|
})
|
|
659
686
|
] }),
|
|
@@ -662,7 +689,7 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
662
689
|
root: meta.file.path,
|
|
663
690
|
path: clientFile.path
|
|
664
691
|
}),
|
|
665
|
-
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
692
|
+
!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
693
|
name: ["buildFormData"],
|
|
667
694
|
root: meta.file.path,
|
|
668
695
|
path: node_path.default.resolve(root, ".kubb/config.ts")
|
|
@@ -744,12 +771,17 @@ const mutationGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
744
771
|
});
|
|
745
772
|
//#endregion
|
|
746
773
|
//#region src/generators/queryGenerator.tsx
|
|
774
|
+
/**
|
|
775
|
+
* Built-in generator for `useQuery` hooks. Emits one `useFooQuery` hook per
|
|
776
|
+
* GET operation (configurable via `query.methods`) plus the matching
|
|
777
|
+
* `fooQueryKey` / `fooQueryOptions` helpers.
|
|
778
|
+
*/
|
|
747
779
|
const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
748
780
|
name: "react-query",
|
|
749
|
-
renderer: _kubb_renderer_jsx.
|
|
781
|
+
renderer: _kubb_renderer_jsx.jsxRendererSync,
|
|
750
782
|
operation(node, ctx) {
|
|
751
|
-
const {
|
|
752
|
-
const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group,
|
|
783
|
+
const { config, driver, resolver, root } = ctx;
|
|
784
|
+
const { output, query, mutation, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
753
785
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
754
786
|
if (!pluginTs) return null;
|
|
755
787
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
@@ -757,13 +789,11 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
757
789
|
const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
758
790
|
if (!isQuery || isMutation) return null;
|
|
759
791
|
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);
|
|
792
|
+
const queryName = resolver.resolveQueryName(node);
|
|
793
|
+
const queryOptionsName = resolver.resolveQueryOptionsName(node);
|
|
794
|
+
const queryKeyName = resolver.resolveQueryKeyName(node);
|
|
795
|
+
const queryKeyTypeName = resolver.resolveQueryKeyTypeName(node);
|
|
796
|
+
const clientName = resolver.resolveClientName(node);
|
|
767
797
|
const meta = {
|
|
768
798
|
file: resolver.resolveFile({
|
|
769
799
|
name: queryName,
|
|
@@ -773,7 +803,7 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
773
803
|
}, {
|
|
774
804
|
root,
|
|
775
805
|
output,
|
|
776
|
-
group
|
|
806
|
+
group: group ?? void 0
|
|
777
807
|
}),
|
|
778
808
|
fileTs: tsResolver.resolveFile({
|
|
779
809
|
name: node.operationId,
|
|
@@ -783,23 +813,16 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
783
813
|
}, {
|
|
784
814
|
root,
|
|
785
815
|
output: pluginTs.options?.output ?? output,
|
|
786
|
-
group: pluginTs.options?.group
|
|
816
|
+
group: pluginTs.options?.group ?? void 0
|
|
787
817
|
})
|
|
788
818
|
};
|
|
789
|
-
const
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
|
|
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;
|
|
819
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
820
|
+
paramsCasing,
|
|
821
|
+
exclude: [queryKeyTypeName],
|
|
822
|
+
order: "body-response-first"
|
|
823
|
+
});
|
|
824
|
+
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
825
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
803
826
|
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
804
827
|
name: node.operationId,
|
|
805
828
|
extname: ".ts",
|
|
@@ -808,12 +831,12 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
808
831
|
}, {
|
|
809
832
|
root,
|
|
810
833
|
output: pluginZod?.options?.output ?? output,
|
|
811
|
-
group: pluginZod?.options?.group
|
|
812
|
-
}) :
|
|
813
|
-
const zodSchemaNames =
|
|
834
|
+
group: pluginZod?.options?.group ?? void 0
|
|
835
|
+
}) : null;
|
|
836
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
|
|
814
837
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
815
838
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
816
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
839
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
817
840
|
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
818
841
|
name: node.operationId,
|
|
819
842
|
extname: ".ts",
|
|
@@ -822,30 +845,38 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
822
845
|
}, {
|
|
823
846
|
root,
|
|
824
847
|
output: clientPlugin?.options?.output ?? output,
|
|
825
|
-
group: clientPlugin?.options?.group
|
|
826
|
-
}) :
|
|
848
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
849
|
+
}) : null;
|
|
827
850
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
|
|
828
851
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
829
852
|
baseName: meta.file.baseName,
|
|
830
853
|
path: meta.file.path,
|
|
831
854
|
meta: meta.file.meta,
|
|
832
|
-
banner: resolver.resolveBanner(
|
|
855
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
833
856
|
output,
|
|
834
|
-
config
|
|
857
|
+
config,
|
|
858
|
+
file: {
|
|
859
|
+
path: meta.file.path,
|
|
860
|
+
baseName: meta.file.baseName
|
|
861
|
+
}
|
|
835
862
|
}),
|
|
836
|
-
footer: resolver.resolveFooter(
|
|
863
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
837
864
|
output,
|
|
838
|
-
config
|
|
865
|
+
config,
|
|
866
|
+
file: {
|
|
867
|
+
path: meta.file.path,
|
|
868
|
+
baseName: meta.file.baseName
|
|
869
|
+
}
|
|
839
870
|
}),
|
|
840
871
|
children: [
|
|
841
|
-
|
|
872
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
842
873
|
name: zodSchemaNames,
|
|
843
874
|
root: meta.file.path,
|
|
844
875
|
path: fileZod.path
|
|
845
876
|
}),
|
|
846
877
|
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
847
878
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
848
|
-
name: "
|
|
879
|
+
name: "client",
|
|
849
880
|
path: clientOptions.importPath
|
|
850
881
|
}),
|
|
851
882
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
@@ -864,9 +895,9 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
864
895
|
})
|
|
865
896
|
] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
866
897
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
867
|
-
name: ["
|
|
898
|
+
name: ["client"],
|
|
868
899
|
root: meta.file.path,
|
|
869
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
900
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
870
901
|
}),
|
|
871
902
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
872
903
|
name: [
|
|
@@ -875,13 +906,13 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
875
906
|
"ResponseErrorConfig"
|
|
876
907
|
],
|
|
877
908
|
root: meta.file.path,
|
|
878
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
909
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
879
910
|
isTypeOnly: true
|
|
880
911
|
}),
|
|
881
912
|
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
882
913
|
name: ["ResponseConfig"],
|
|
883
914
|
root: meta.file.path,
|
|
884
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
915
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
885
916
|
isTypeOnly: true
|
|
886
917
|
})
|
|
887
918
|
] }),
|
|
@@ -976,33 +1007,37 @@ const queryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
976
1007
|
});
|
|
977
1008
|
//#endregion
|
|
978
1009
|
//#region src/generators/suspenseInfiniteQueryGenerator.tsx
|
|
1010
|
+
/**
|
|
1011
|
+
* Built-in generator for `useSuspenseInfiniteQuery` hooks. Enabled when both
|
|
1012
|
+
* `suspense` and `infinite` are configured. Combines suspense semantics with
|
|
1013
|
+
* cursor-based pagination — handlers throw promises while loading and pull
|
|
1014
|
+
* additional pages on demand.
|
|
1015
|
+
*/
|
|
979
1016
|
const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
980
1017
|
name: "react-suspense-infinite-query",
|
|
981
|
-
renderer: _kubb_renderer_jsx.
|
|
1018
|
+
renderer: _kubb_renderer_jsx.jsxRendererSync,
|
|
982
1019
|
operation(node, ctx) {
|
|
983
|
-
const {
|
|
984
|
-
const { output, query, mutation, infinite, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group,
|
|
1020
|
+
const { config, driver, resolver, root } = ctx;
|
|
1021
|
+
const { output, query, mutation, infinite, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
985
1022
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
986
1023
|
if (!pluginTs) return null;
|
|
987
1024
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
988
1025
|
const isQuery = query === false || !!query && query.methods.some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
989
1026
|
const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
990
1027
|
const isSuspense = !!suspense;
|
|
991
|
-
const infiniteOptions = infinite && typeof infinite === "object" ? infinite :
|
|
1028
|
+
const infiniteOptions = infinite && typeof infinite === "object" ? infinite : null;
|
|
992
1029
|
if (!isQuery || isMutation || !isSuspense || !infiniteOptions) return null;
|
|
993
1030
|
const normalizeKey = (key) => key.replace(/\?$/, "");
|
|
994
|
-
const queryParamKeys =
|
|
1031
|
+
const queryParamKeys = require_components.getOperationParameters(node).query.map((p) => p.name);
|
|
995
1032
|
const hasQueryParam = infiniteOptions.queryParam ? queryParamKeys.some((k) => normalizeKey(k) === infiniteOptions.queryParam) : false;
|
|
996
1033
|
const hasCursorParam = !infiniteOptions.cursorParam || true;
|
|
997
1034
|
if (!hasQueryParam || !hasCursorParam) return null;
|
|
998
1035
|
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);
|
|
1036
|
+
const queryName = resolver.resolveSuspenseInfiniteQueryName(node);
|
|
1037
|
+
const queryOptionsName = resolver.resolveSuspenseInfiniteQueryOptionsName(node);
|
|
1038
|
+
const queryKeyName = resolver.resolveSuspenseInfiniteQueryKeyName(node);
|
|
1039
|
+
const queryKeyTypeName = resolver.resolveSuspenseInfiniteQueryKeyTypeName(node);
|
|
1040
|
+
const clientBaseName = resolver.resolveSuspenseInfiniteClientName(node);
|
|
1006
1041
|
const meta = {
|
|
1007
1042
|
file: resolver.resolveFile({
|
|
1008
1043
|
name: queryName,
|
|
@@ -1012,7 +1047,7 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1012
1047
|
}, {
|
|
1013
1048
|
root,
|
|
1014
1049
|
output,
|
|
1015
|
-
group
|
|
1050
|
+
group: group ?? void 0
|
|
1016
1051
|
}),
|
|
1017
1052
|
fileTs: tsResolver.resolveFile({
|
|
1018
1053
|
name: node.operationId,
|
|
@@ -1022,23 +1057,15 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1022
1057
|
}, {
|
|
1023
1058
|
root,
|
|
1024
1059
|
output: pluginTs.options?.output ?? output,
|
|
1025
|
-
group: pluginTs.options?.group
|
|
1060
|
+
group: pluginTs.options?.group ?? void 0
|
|
1026
1061
|
})
|
|
1027
1062
|
};
|
|
1028
|
-
const
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
const
|
|
1033
|
-
|
|
1034
|
-
tsResolver.resolveResponseName(node),
|
|
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;
|
|
1063
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
1064
|
+
paramsCasing,
|
|
1065
|
+
order: "body-response-first"
|
|
1066
|
+
});
|
|
1067
|
+
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
1068
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
1042
1069
|
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
1043
1070
|
name: node.operationId,
|
|
1044
1071
|
extname: ".ts",
|
|
@@ -1047,12 +1074,12 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1047
1074
|
}, {
|
|
1048
1075
|
root,
|
|
1049
1076
|
output: pluginZod?.options?.output ?? output,
|
|
1050
|
-
group: pluginZod?.options?.group
|
|
1051
|
-
}) :
|
|
1052
|
-
const zodSchemaNames =
|
|
1077
|
+
group: pluginZod?.options?.group ?? void 0
|
|
1078
|
+
}) : null;
|
|
1079
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
|
|
1053
1080
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
1054
1081
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
1055
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
1082
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
1056
1083
|
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
1057
1084
|
name: node.operationId,
|
|
1058
1085
|
extname: ".ts",
|
|
@@ -1061,30 +1088,38 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1061
1088
|
}, {
|
|
1062
1089
|
root,
|
|
1063
1090
|
output: clientPlugin?.options?.output ?? output,
|
|
1064
|
-
group: clientPlugin?.options?.group
|
|
1065
|
-
}) :
|
|
1091
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
1092
|
+
}) : null;
|
|
1066
1093
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientBaseName : clientBaseName;
|
|
1067
1094
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
1068
1095
|
baseName: meta.file.baseName,
|
|
1069
1096
|
path: meta.file.path,
|
|
1070
1097
|
meta: meta.file.meta,
|
|
1071
|
-
banner: resolver.resolveBanner(
|
|
1098
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1072
1099
|
output,
|
|
1073
|
-
config
|
|
1100
|
+
config,
|
|
1101
|
+
file: {
|
|
1102
|
+
path: meta.file.path,
|
|
1103
|
+
baseName: meta.file.baseName
|
|
1104
|
+
}
|
|
1074
1105
|
}),
|
|
1075
|
-
footer: resolver.resolveFooter(
|
|
1106
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1076
1107
|
output,
|
|
1077
|
-
config
|
|
1108
|
+
config,
|
|
1109
|
+
file: {
|
|
1110
|
+
path: meta.file.path,
|
|
1111
|
+
baseName: meta.file.baseName
|
|
1112
|
+
}
|
|
1078
1113
|
}),
|
|
1079
1114
|
children: [
|
|
1080
|
-
|
|
1115
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1081
1116
|
name: zodSchemaNames,
|
|
1082
1117
|
root: meta.file.path,
|
|
1083
1118
|
path: fileZod.path
|
|
1084
1119
|
}),
|
|
1085
1120
|
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
1086
1121
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1087
|
-
name: "
|
|
1122
|
+
name: "client",
|
|
1088
1123
|
path: clientOptions.importPath
|
|
1089
1124
|
}),
|
|
1090
1125
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
@@ -1103,9 +1138,9 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1103
1138
|
})
|
|
1104
1139
|
] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
1105
1140
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1106
|
-
name: ["
|
|
1141
|
+
name: ["client"],
|
|
1107
1142
|
root: meta.file.path,
|
|
1108
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
1143
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
1109
1144
|
}),
|
|
1110
1145
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1111
1146
|
name: [
|
|
@@ -1114,13 +1149,13 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1114
1149
|
"ResponseErrorConfig"
|
|
1115
1150
|
],
|
|
1116
1151
|
root: meta.file.path,
|
|
1117
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
1152
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
1118
1153
|
isTypeOnly: true
|
|
1119
1154
|
}),
|
|
1120
1155
|
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1121
1156
|
name: ["ResponseConfig"],
|
|
1122
1157
|
root: meta.file.path,
|
|
1123
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
1158
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
1124
1159
|
isTypeOnly: true
|
|
1125
1160
|
})
|
|
1126
1161
|
] }),
|
|
@@ -1225,12 +1260,18 @@ const suspenseInfiniteQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1225
1260
|
});
|
|
1226
1261
|
//#endregion
|
|
1227
1262
|
//#region src/generators/suspenseQueryGenerator.tsx
|
|
1263
|
+
/**
|
|
1264
|
+
* Built-in generator for `useSuspenseQuery` hooks. Enabled when
|
|
1265
|
+
* `pluginReactQuery({ suspense: {} })`. Emits one `useFooSuspenseQuery` hook
|
|
1266
|
+
* per query operation. Suspense queries throw promises while loading and
|
|
1267
|
+
* require a `<Suspense>` boundary in the React tree. TanStack Query v5+ only.
|
|
1268
|
+
*/
|
|
1228
1269
|
const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
1229
1270
|
name: "react-suspense-query",
|
|
1230
|
-
renderer: _kubb_renderer_jsx.
|
|
1271
|
+
renderer: _kubb_renderer_jsx.jsxRendererSync,
|
|
1231
1272
|
operation(node, ctx) {
|
|
1232
|
-
const {
|
|
1233
|
-
const { output, query, mutation, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group,
|
|
1273
|
+
const { config, driver, resolver, root } = ctx;
|
|
1274
|
+
const { output, query, mutation, suspense, paramsCasing, paramsType, pathParamsType, parser, client: clientOptions, group, customOptions } = ctx.options;
|
|
1234
1275
|
const pluginTs = driver.getPlugin(_kubb_plugin_ts.pluginTsName);
|
|
1235
1276
|
if (!pluginTs) return null;
|
|
1236
1277
|
const tsResolver = driver.getResolver(_kubb_plugin_ts.pluginTsName);
|
|
@@ -1238,13 +1279,11 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1238
1279
|
const isMutation = mutation !== false && !isQuery && (0, remeda.difference)(mutation ? mutation.methods : [], query ? query.methods : []).some((method) => node.method.toLowerCase() === method.toLowerCase());
|
|
1239
1280
|
if (!isQuery || isMutation || !!!suspense) return null;
|
|
1240
1281
|
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);
|
|
1282
|
+
const queryName = resolver.resolveSuspenseQueryName(node);
|
|
1283
|
+
const queryOptionsName = resolver.resolveSuspenseQueryOptionsName(node);
|
|
1284
|
+
const queryKeyName = resolver.resolveSuspenseQueryKeyName(node);
|
|
1285
|
+
const queryKeyTypeName = resolver.resolveSuspenseQueryKeyTypeName(node);
|
|
1286
|
+
const clientName = resolver.resolveSuspenseClientName(node);
|
|
1248
1287
|
const meta = {
|
|
1249
1288
|
file: resolver.resolveFile({
|
|
1250
1289
|
name: queryName,
|
|
@@ -1254,7 +1293,7 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1254
1293
|
}, {
|
|
1255
1294
|
root,
|
|
1256
1295
|
output,
|
|
1257
|
-
group
|
|
1296
|
+
group: group ?? void 0
|
|
1258
1297
|
}),
|
|
1259
1298
|
fileTs: tsResolver.resolveFile({
|
|
1260
1299
|
name: node.operationId,
|
|
@@ -1264,23 +1303,16 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1264
1303
|
}, {
|
|
1265
1304
|
root,
|
|
1266
1305
|
output: pluginTs.options?.output ?? output,
|
|
1267
|
-
group: pluginTs.options?.group
|
|
1306
|
+
group: pluginTs.options?.group ?? void 0
|
|
1268
1307
|
})
|
|
1269
1308
|
};
|
|
1270
|
-
const
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
...pathParams.map((p) => tsResolver.resolvePathParamsName(node, p)),
|
|
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;
|
|
1309
|
+
const importedTypeNames = require_components.resolveOperationTypeNames(node, tsResolver, {
|
|
1310
|
+
paramsCasing,
|
|
1311
|
+
exclude: [queryKeyTypeName],
|
|
1312
|
+
order: "body-response-first"
|
|
1313
|
+
});
|
|
1314
|
+
const pluginZod = parser === "zod" ? driver.getPlugin(_kubb_plugin_zod.pluginZodName) : null;
|
|
1315
|
+
const zodResolver = pluginZod ? driver.getResolver(_kubb_plugin_zod.pluginZodName) : null;
|
|
1284
1316
|
const fileZod = zodResolver ? zodResolver.resolveFile({
|
|
1285
1317
|
name: node.operationId,
|
|
1286
1318
|
extname: ".ts",
|
|
@@ -1289,12 +1321,12 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1289
1321
|
}, {
|
|
1290
1322
|
root,
|
|
1291
1323
|
output: pluginZod?.options?.output ?? output,
|
|
1292
|
-
group: pluginZod?.options?.group
|
|
1293
|
-
}) :
|
|
1294
|
-
const zodSchemaNames =
|
|
1324
|
+
group: pluginZod?.options?.group ?? void 0
|
|
1325
|
+
}) : null;
|
|
1326
|
+
const zodSchemaNames = require_components.resolveZodSchemaNames(node, zodResolver);
|
|
1295
1327
|
const clientPlugin = driver.getPlugin(_kubb_plugin_client.pluginClientName);
|
|
1296
1328
|
const shouldUseClientPlugin = clientPlugin?.name === _kubb_plugin_client.pluginClientName && clientOptions.clientType !== "class";
|
|
1297
|
-
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) :
|
|
1329
|
+
const clientResolver = shouldUseClientPlugin ? driver.getResolver(_kubb_plugin_client.pluginClientName) : null;
|
|
1298
1330
|
const clientFile = shouldUseClientPlugin ? clientResolver?.resolveFile({
|
|
1299
1331
|
name: node.operationId,
|
|
1300
1332
|
extname: ".ts",
|
|
@@ -1303,30 +1335,38 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1303
1335
|
}, {
|
|
1304
1336
|
root,
|
|
1305
1337
|
output: clientPlugin?.options?.output ?? output,
|
|
1306
|
-
group: clientPlugin?.options?.group
|
|
1307
|
-
}) :
|
|
1338
|
+
group: clientPlugin?.options?.group ?? void 0
|
|
1339
|
+
}) : null;
|
|
1308
1340
|
const resolvedClientName = shouldUseClientPlugin ? clientResolver?.resolveName(node.operationId) ?? clientName : clientName;
|
|
1309
1341
|
return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
|
|
1310
1342
|
baseName: meta.file.baseName,
|
|
1311
1343
|
path: meta.file.path,
|
|
1312
1344
|
meta: meta.file.meta,
|
|
1313
|
-
banner: resolver.resolveBanner(
|
|
1345
|
+
banner: resolver.resolveBanner(ctx.meta, {
|
|
1314
1346
|
output,
|
|
1315
|
-
config
|
|
1347
|
+
config,
|
|
1348
|
+
file: {
|
|
1349
|
+
path: meta.file.path,
|
|
1350
|
+
baseName: meta.file.baseName
|
|
1351
|
+
}
|
|
1316
1352
|
}),
|
|
1317
|
-
footer: resolver.resolveFooter(
|
|
1353
|
+
footer: resolver.resolveFooter(ctx.meta, {
|
|
1318
1354
|
output,
|
|
1319
|
-
config
|
|
1355
|
+
config,
|
|
1356
|
+
file: {
|
|
1357
|
+
path: meta.file.path,
|
|
1358
|
+
baseName: meta.file.baseName
|
|
1359
|
+
}
|
|
1320
1360
|
}),
|
|
1321
1361
|
children: [
|
|
1322
|
-
|
|
1362
|
+
fileZod && zodSchemaNames.length > 0 && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1323
1363
|
name: zodSchemaNames,
|
|
1324
1364
|
root: meta.file.path,
|
|
1325
1365
|
path: fileZod.path
|
|
1326
1366
|
}),
|
|
1327
1367
|
clientOptions.importPath ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
1328
1368
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1329
|
-
name: "
|
|
1369
|
+
name: "client",
|
|
1330
1370
|
path: clientOptions.importPath
|
|
1331
1371
|
}),
|
|
1332
1372
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
@@ -1345,9 +1385,9 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1345
1385
|
})
|
|
1346
1386
|
] }) : /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
|
|
1347
1387
|
!shouldUseClientPlugin && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1348
|
-
name: ["
|
|
1388
|
+
name: ["client"],
|
|
1349
1389
|
root: meta.file.path,
|
|
1350
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
1390
|
+
path: node_path.default.resolve(root, ".kubb/client.ts")
|
|
1351
1391
|
}),
|
|
1352
1392
|
/* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1353
1393
|
name: [
|
|
@@ -1356,13 +1396,13 @@ const suspenseQueryGenerator = (0, _kubb_core.defineGenerator)({
|
|
|
1356
1396
|
"ResponseErrorConfig"
|
|
1357
1397
|
],
|
|
1358
1398
|
root: meta.file.path,
|
|
1359
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
1399
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
1360
1400
|
isTypeOnly: true
|
|
1361
1401
|
}),
|
|
1362
1402
|
clientOptions.dataReturnType === "full" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
|
|
1363
1403
|
name: ["ResponseConfig"],
|
|
1364
1404
|
root: meta.file.path,
|
|
1365
|
-
path: node_path.default.resolve(root, ".kubb/
|
|
1405
|
+
path: node_path.default.resolve(root, ".kubb/client.ts"),
|
|
1366
1406
|
isTypeOnly: true
|
|
1367
1407
|
})
|
|
1368
1408
|
] }),
|
|
@@ -1499,4 +1539,4 @@ Object.defineProperty(exports, "suspenseQueryGenerator", {
|
|
|
1499
1539
|
}
|
|
1500
1540
|
});
|
|
1501
1541
|
|
|
1502
|
-
//# sourceMappingURL=generators-
|
|
1542
|
+
//# sourceMappingURL=generators-BtsWNz-6.cjs.map
|