@kubb/plugin-react-query 5.0.0-beta.79 → 5.0.0-beta.80
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/dist/index.cjs +189 -153
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.js +189 -153
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -665,12 +665,15 @@ function MutationKey({ name, node, transformer }) {
|
|
|
665
665
|
* The grouped request options, ordered for both the destructured signature and the
|
|
666
666
|
* call passed to the underlying client.
|
|
667
667
|
*/
|
|
668
|
-
const requestGroupOrder = [
|
|
668
|
+
const requestGroupOrder$1 = [
|
|
669
669
|
"path",
|
|
670
670
|
"query",
|
|
671
671
|
"body",
|
|
672
672
|
"headers"
|
|
673
673
|
];
|
|
674
|
+
function maybeValueOrGetter(type) {
|
|
675
|
+
return `${type} | (() => ${type})`;
|
|
676
|
+
}
|
|
674
677
|
/**
|
|
675
678
|
* Builds the grouped `{ path, query, body, headers }` parameter that mirrors the client
|
|
676
679
|
* function signature. Only the groups the operation carries are emitted, typed from the
|
|
@@ -683,7 +686,7 @@ const requestGroupOrder = [
|
|
|
683
686
|
* `MaybeRefOrGetter` per group.
|
|
684
687
|
*/
|
|
685
688
|
function buildGroupedRequestParam(node, options) {
|
|
686
|
-
const { resolver, keys = requestGroupOrder, memberTypeWrapper } = options;
|
|
689
|
+
const { resolver, keys = requestGroupOrder$1, memberTypeWrapper } = options;
|
|
687
690
|
const { groups, hasRequiredPath, hasRequiredQuery, hasRequiredHeader } = getRequestGroupOptionality(node);
|
|
688
691
|
const names = keys.filter((key) => groups[key]);
|
|
689
692
|
if (names.length === 0) return null;
|
|
@@ -695,7 +698,7 @@ function buildGroupedRequestParam(node, options) {
|
|
|
695
698
|
};
|
|
696
699
|
const isOptional = names.every((name) => !requiredByGroup[name]);
|
|
697
700
|
const requestConfigName = resolver.resolveRequestConfigName(node);
|
|
698
|
-
const omittedKeys = requestGroupOrder.filter((key) => !keys.includes(key));
|
|
701
|
+
const omittedKeys = requestGroupOrder$1.filter((key) => !keys.includes(key));
|
|
699
702
|
const requestConfigType = omittedKeys.length > 0 ? `Omit<${requestConfigName}, ${omittedKeys.map((key) => `'${key}'`).join(" | ")}>` : requestConfigName;
|
|
700
703
|
if (memberTypeWrapper) {
|
|
701
704
|
const members = names.map((name) => ({
|
|
@@ -751,7 +754,7 @@ function buildClientCall(node, options) {
|
|
|
751
754
|
const { groups } = getRequestGroupOptionality(node);
|
|
752
755
|
return `${clientName}({ ${[
|
|
753
756
|
"...config",
|
|
754
|
-
...requestGroupOrder.filter((key) => groups[key]),
|
|
757
|
+
...requestGroupOrder$1.filter((key) => groups[key]),
|
|
755
758
|
signal ? "signal: config.signal ?? signal" : null,
|
|
756
759
|
"throwOnError: true"
|
|
757
760
|
].filter((part) => part !== null).join(", ")} })`;
|
|
@@ -978,6 +981,30 @@ const customHookOptionsFileGenerator = defineGenerator({
|
|
|
978
981
|
}
|
|
979
982
|
});
|
|
980
983
|
//#endregion
|
|
984
|
+
//#region src/utils.ts
|
|
985
|
+
const requestGroupOrder = [
|
|
986
|
+
"path",
|
|
987
|
+
"query",
|
|
988
|
+
"body",
|
|
989
|
+
"headers"
|
|
990
|
+
];
|
|
991
|
+
/**
|
|
992
|
+
* Builds the object literal that resolves each request group to a concrete value, unwrapping a getter
|
|
993
|
+
* once before the value reaches the plain `queryKey`/`queryOptions` helpers. A getter must never reach a
|
|
994
|
+
* React Query key, which is hashed structurally. Returns `null` when the operation carries no request group.
|
|
995
|
+
*
|
|
996
|
+
* @example
|
|
997
|
+
* ```ts
|
|
998
|
+
* buildResolvedRequestParams(node) // { path: typeof path === 'function' ? path() : path }
|
|
999
|
+
* ```
|
|
1000
|
+
*/
|
|
1001
|
+
function buildResolvedRequestParams(node) {
|
|
1002
|
+
const groups = getRequestGroups(node);
|
|
1003
|
+
const names = requestGroupOrder.filter((key) => groups[key]);
|
|
1004
|
+
if (names.length === 0) return null;
|
|
1005
|
+
return `{ ${names.map((name) => `${name}: typeof ${name} === 'function' ? ${name}() : ${name}`).join(", ")} }`;
|
|
1006
|
+
}
|
|
1007
|
+
//#endregion
|
|
981
1008
|
//#region src/generators/hookOptionsGenerator.tsx
|
|
982
1009
|
/**
|
|
983
1010
|
* Emits the `HookOptions` type used by `customOptions`. Enabled when
|
|
@@ -990,8 +1017,8 @@ const hookOptionsGenerator = defineGenerator({
|
|
|
990
1017
|
renderer: jsxRenderer,
|
|
991
1018
|
operations(nodes, ctx) {
|
|
992
1019
|
const { resolver, config, root } = ctx;
|
|
993
|
-
const { output, customOptions, query, mutation, suspense, infinite, group, override } = ctx.options;
|
|
994
|
-
if (!customOptions) return null;
|
|
1020
|
+
const { output, customOptions, query, mutation, suspense, infinite, group, override, hooks } = ctx.options;
|
|
1021
|
+
if (!customOptions || !hooks) return null;
|
|
995
1022
|
const name = resolver.resolveHookOptionsName();
|
|
996
1023
|
const resolvedFile = resolver.resolveFile({
|
|
997
1024
|
name,
|
|
@@ -1135,51 +1162,8 @@ const hookOptionsGenerator = defineGenerator({
|
|
|
1135
1162
|
}
|
|
1136
1163
|
});
|
|
1137
1164
|
//#endregion
|
|
1138
|
-
//#region src/components/QueryOptions.tsx
|
|
1139
|
-
const declarationPrinter$8 = functionPrinter({ mode: "declaration" });
|
|
1140
|
-
const callPrinter$8 = functionPrinter({ mode: "call" });
|
|
1141
|
-
function getQueryOptionsParams(node, options) {
|
|
1142
|
-
return buildQueryOptionsParams(node, options);
|
|
1143
|
-
}
|
|
1144
|
-
function QueryOptions({ name, clientName, node, tsResolver, queryKeyName }) {
|
|
1145
|
-
const successNames = resolveSuccessNames(node, tsResolver);
|
|
1146
|
-
const responseName = successNames.length > 0 ? successNames.join(" | ") : tsResolver.resolveResponseName(node);
|
|
1147
|
-
const errorNames = resolveErrorNames(node, tsResolver);
|
|
1148
|
-
const TData = responseName;
|
|
1149
|
-
const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(" | ") : "Error"}>`;
|
|
1150
|
-
const queryKeyParamsNode = buildQueryKeyParams(node, { resolver: tsResolver });
|
|
1151
|
-
const queryKeyParamsCall = callPrinter$8.print(queryKeyParamsNode) ?? "";
|
|
1152
|
-
const paramsNode = getQueryOptionsParams(node, { resolver: tsResolver });
|
|
1153
|
-
const paramsSignature = declarationPrinter$8.print(paramsNode) ?? "";
|
|
1154
|
-
const queryFnBody = `const { data } = await ${buildClientCall(node, {
|
|
1155
|
-
clientName,
|
|
1156
|
-
signal: true
|
|
1157
|
-
})}
|
|
1158
|
-
return data`;
|
|
1159
|
-
return /* @__PURE__ */ jsx(File.Source, {
|
|
1160
|
-
name,
|
|
1161
|
-
isExportable: true,
|
|
1162
|
-
isIndexable: true,
|
|
1163
|
-
children: /* @__PURE__ */ jsx(Function, {
|
|
1164
|
-
name,
|
|
1165
|
-
export: true,
|
|
1166
|
-
params: paramsSignature,
|
|
1167
|
-
children: `
|
|
1168
|
-
const queryKey = ${queryKeyName}(${queryKeyParamsCall})
|
|
1169
|
-
return queryOptions<${TData}, ${TError}, ${TData}, typeof queryKey>({
|
|
1170
|
-
queryKey,
|
|
1171
|
-
queryFn: async ({ signal }) => {
|
|
1172
|
-
${queryFnBody}
|
|
1173
|
-
},
|
|
1174
|
-
})
|
|
1175
|
-
`
|
|
1176
|
-
})
|
|
1177
|
-
});
|
|
1178
|
-
}
|
|
1179
|
-
//#endregion
|
|
1180
1165
|
//#region src/components/InfiniteQuery.tsx
|
|
1181
|
-
const declarationPrinter$
|
|
1182
|
-
const callPrinter$7 = functionPrinter({ mode: "call" });
|
|
1166
|
+
const declarationPrinter$8 = functionPrinter({ mode: "declaration" });
|
|
1183
1167
|
function buildInfiniteQueryParamsNode(node, options) {
|
|
1184
1168
|
const { resolver, pageParamGeneric } = options;
|
|
1185
1169
|
const optionsParam = createFunctionParameter({
|
|
@@ -1190,7 +1174,10 @@ function buildInfiniteQueryParamsNode(node, options) {
|
|
|
1190
1174
|
}`,
|
|
1191
1175
|
default: "{}"
|
|
1192
1176
|
});
|
|
1193
|
-
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1177
|
+
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1178
|
+
resolver,
|
|
1179
|
+
memberTypeWrapper: maybeValueOrGetter
|
|
1180
|
+
}), optionsParam].filter((param) => param !== null) });
|
|
1194
1181
|
}
|
|
1195
1182
|
function InfiniteQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName, node, tsResolver, initialPageParam, queryParam, customOptions }) {
|
|
1196
1183
|
const successNames = resolveSuccessNames(node, tsResolver);
|
|
@@ -1218,15 +1205,14 @@ function InfiniteQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName,
|
|
|
1218
1205
|
`TQueryKey extends QueryKey = ${queryKeyTypeName}`,
|
|
1219
1206
|
`TPageParam = ${pageParamType}`
|
|
1220
1207
|
];
|
|
1221
|
-
const
|
|
1222
|
-
const
|
|
1223
|
-
const
|
|
1224
|
-
const queryOptionsParamsCall = callPrinter$7.print(queryOptionsParamsNode) ?? "";
|
|
1208
|
+
const resolvedParams = buildResolvedRequestParams(node);
|
|
1209
|
+
const queryKeyArgs = resolvedParams ? "resolvedParams" : "";
|
|
1210
|
+
const queryOptionsArgs = resolvedParams ? "resolvedParams, config" : "config";
|
|
1225
1211
|
const paramsNode = buildInfiniteQueryParamsNode(node, {
|
|
1226
1212
|
resolver: tsResolver,
|
|
1227
1213
|
pageParamGeneric: "TPageParam"
|
|
1228
1214
|
});
|
|
1229
|
-
const paramsSignature = declarationPrinter$
|
|
1215
|
+
const paramsSignature = declarationPrinter$8.print(paramsNode) ?? "";
|
|
1230
1216
|
return /* @__PURE__ */ jsx(File.Source, {
|
|
1231
1217
|
name,
|
|
1232
1218
|
isExportable: true,
|
|
@@ -1240,11 +1226,11 @@ function InfiniteQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName,
|
|
|
1240
1226
|
JSDoc: { comments: buildOperationComments(node) },
|
|
1241
1227
|
children: `
|
|
1242
1228
|
const { query: queryConfig = {}, client: config = {} } = options ?? {}
|
|
1243
|
-
const { client: queryClient, ...resolvedOptions } = queryConfig
|
|
1244
|
-
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${
|
|
1229
|
+
const { client: queryClient, ...resolvedOptions } = queryConfig${resolvedParams ? `\n const resolvedParams = ${resolvedParams}` : ""}
|
|
1230
|
+
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${queryKeyArgs})${customOptions ? `\n const customOptions = ${customOptions.name}({ hookName: '${name}', operationId: '${node.operationId}' })` : ""}
|
|
1245
1231
|
|
|
1246
1232
|
const queryResult = useInfiniteQuery({
|
|
1247
|
-
...${queryOptionsName}(${
|
|
1233
|
+
...${queryOptionsName}(${queryOptionsArgs}),${customOptions ? "\n ...customOptions," : ""}
|
|
1248
1234
|
...resolvedOptions,
|
|
1249
1235
|
queryKey,
|
|
1250
1236
|
} as unknown as InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient) as ${returnType}
|
|
@@ -1257,9 +1243,51 @@ function InfiniteQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName,
|
|
|
1257
1243
|
});
|
|
1258
1244
|
}
|
|
1259
1245
|
//#endregion
|
|
1246
|
+
//#region src/components/QueryOptions.tsx
|
|
1247
|
+
const declarationPrinter$7 = functionPrinter({ mode: "declaration" });
|
|
1248
|
+
const callPrinter$4 = functionPrinter({ mode: "call" });
|
|
1249
|
+
function getQueryOptionsParams(node, options) {
|
|
1250
|
+
return buildQueryOptionsParams(node, options);
|
|
1251
|
+
}
|
|
1252
|
+
function QueryOptions({ name, clientName, node, tsResolver, queryKeyName }) {
|
|
1253
|
+
const successNames = resolveSuccessNames(node, tsResolver);
|
|
1254
|
+
const responseName = successNames.length > 0 ? successNames.join(" | ") : tsResolver.resolveResponseName(node);
|
|
1255
|
+
const errorNames = resolveErrorNames(node, tsResolver);
|
|
1256
|
+
const TData = responseName;
|
|
1257
|
+
const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(" | ") : "Error"}>`;
|
|
1258
|
+
const queryKeyParamsNode = buildQueryKeyParams(node, { resolver: tsResolver });
|
|
1259
|
+
const queryKeyParamsCall = callPrinter$4.print(queryKeyParamsNode) ?? "";
|
|
1260
|
+
const paramsNode = getQueryOptionsParams(node, { resolver: tsResolver });
|
|
1261
|
+
const paramsSignature = declarationPrinter$7.print(paramsNode) ?? "";
|
|
1262
|
+
const queryFnBody = `const { data } = await ${buildClientCall(node, {
|
|
1263
|
+
clientName,
|
|
1264
|
+
signal: true
|
|
1265
|
+
})}
|
|
1266
|
+
return data`;
|
|
1267
|
+
return /* @__PURE__ */ jsx(File.Source, {
|
|
1268
|
+
name,
|
|
1269
|
+
isExportable: true,
|
|
1270
|
+
isIndexable: true,
|
|
1271
|
+
children: /* @__PURE__ */ jsx(Function, {
|
|
1272
|
+
name,
|
|
1273
|
+
export: true,
|
|
1274
|
+
params: paramsSignature,
|
|
1275
|
+
children: `
|
|
1276
|
+
const queryKey = ${queryKeyName}(${queryKeyParamsCall})
|
|
1277
|
+
return queryOptions<${TData}, ${TError}, ${TData}, typeof queryKey>({
|
|
1278
|
+
queryKey,
|
|
1279
|
+
queryFn: async ({ signal }) => {
|
|
1280
|
+
${queryFnBody}
|
|
1281
|
+
},
|
|
1282
|
+
})
|
|
1283
|
+
`
|
|
1284
|
+
})
|
|
1285
|
+
});
|
|
1286
|
+
}
|
|
1287
|
+
//#endregion
|
|
1260
1288
|
//#region src/components/InfiniteQueryOptions.tsx
|
|
1261
1289
|
const declarationPrinter$6 = functionPrinter({ mode: "declaration" });
|
|
1262
|
-
const callPrinter$
|
|
1290
|
+
const callPrinter$3 = functionPrinter({ mode: "call" });
|
|
1263
1291
|
function InfiniteQueryOptions({ name, clientName, initialPageParam, cursorParam, nextParam, previousParam, node, tsResolver, queryParam, queryKeyName }) {
|
|
1264
1292
|
const successNames = resolveSuccessNames(node, tsResolver);
|
|
1265
1293
|
const queryFnDataType = successNames.length > 0 ? successNames.join(" | ") : tsResolver.resolveResponseName(node);
|
|
@@ -1278,7 +1306,7 @@ function InfiniteQueryOptions({ name, clientName, initialPageParam, cursorParam,
|
|
|
1278
1306
|
const queryParamType = queryParam && queryParamsTypeName ? `${queryParamsTypeName}['${queryParam}']` : null;
|
|
1279
1307
|
const pageParamType = queryParamType ? isInitialPageParamDefined ? `NonNullable<${queryParamType}>` : queryParamType : fallbackPageParamType;
|
|
1280
1308
|
const queryKeyParamsNode = buildQueryKeyParams(node, { resolver: tsResolver });
|
|
1281
|
-
const queryKeyParamsCall = callPrinter$
|
|
1309
|
+
const queryKeyParamsCall = callPrinter$3.print(queryKeyParamsNode) ?? "";
|
|
1282
1310
|
const paramsNode = getQueryOptionsParams(node, { resolver: tsResolver });
|
|
1283
1311
|
const paramsSignature = declarationPrinter$6.print(paramsNode) ?? "";
|
|
1284
1312
|
const queryFnBody = `const { data } = await ${buildClientCall(node, {
|
|
@@ -1350,7 +1378,7 @@ return infiniteQueryOptions<${queryFnDataType}, ${errorType}, InfiniteData<${que
|
|
|
1350
1378
|
//#endregion
|
|
1351
1379
|
//#region src/components/MutationOptions.tsx
|
|
1352
1380
|
const declarationPrinter$5 = functionPrinter({ mode: "declaration" });
|
|
1353
|
-
const callPrinter$
|
|
1381
|
+
const callPrinter$2 = functionPrinter({ mode: "call" });
|
|
1354
1382
|
function buildMutationConfigParamsNode(node) {
|
|
1355
1383
|
return createFunctionParameters({ params: [createFunctionParameter({
|
|
1356
1384
|
name: "config",
|
|
@@ -1369,7 +1397,7 @@ function MutationOptions({ name, clientName, node, tsResolver, mutationKeyName }
|
|
|
1369
1397
|
const hasMutationParams = groupedParam !== null;
|
|
1370
1398
|
const groupedParamsNode = createFunctionParameters({ params: groupedParam ? [groupedParam] : [] });
|
|
1371
1399
|
const TRequest = hasMutationParams ? tsResolver.resolveRequestConfigName(node) : "undefined";
|
|
1372
|
-
const argBindingStr = hasMutationParams ? callPrinter$
|
|
1400
|
+
const argBindingStr = hasMutationParams ? callPrinter$2.print(groupedParamsNode) ?? "" : "_";
|
|
1373
1401
|
const mutationFnBody = `const { data } = await ${buildClientCall(node, {
|
|
1374
1402
|
clientName,
|
|
1375
1403
|
signal: false
|
|
@@ -1399,7 +1427,7 @@ function MutationOptions({ name, clientName, node, tsResolver, mutationKeyName }
|
|
|
1399
1427
|
//#endregion
|
|
1400
1428
|
//#region src/components/Mutation.tsx
|
|
1401
1429
|
const declarationPrinter$4 = functionPrinter({ mode: "declaration" });
|
|
1402
|
-
const callPrinter$
|
|
1430
|
+
const callPrinter$1 = functionPrinter({ mode: "call" });
|
|
1403
1431
|
function resolveMutationRequestType(node, resolver) {
|
|
1404
1432
|
return buildGroupedRequestParam(node, { resolver }) ? resolver.resolveRequestConfigName(node) : "undefined";
|
|
1405
1433
|
}
|
|
@@ -1434,7 +1462,7 @@ function Mutation({ name, mutationOptionsName, node, tsResolver, mutationKeyName
|
|
|
1434
1462
|
].join(", ");
|
|
1435
1463
|
const returnType = `UseMutationResult<${generics}>`;
|
|
1436
1464
|
const mutationOptionsConfigNode = buildMutationConfigParamsNode(node);
|
|
1437
|
-
const mutationOptionsParamsCall = callPrinter$
|
|
1465
|
+
const mutationOptionsParamsCall = callPrinter$1.print(mutationOptionsConfigNode) ?? "";
|
|
1438
1466
|
const paramsNode = buildMutationParamsNode(node, { resolver: tsResolver });
|
|
1439
1467
|
const paramsSignature = declarationPrinter$4.print(paramsNode) ?? "";
|
|
1440
1468
|
return /* @__PURE__ */ jsx(File.Source, {
|
|
@@ -1466,7 +1494,6 @@ function Mutation({ name, mutationOptionsName, node, tsResolver, mutationKeyName
|
|
|
1466
1494
|
//#endregion
|
|
1467
1495
|
//#region src/components/Query.tsx
|
|
1468
1496
|
const declarationPrinter$3 = functionPrinter({ mode: "declaration" });
|
|
1469
|
-
const callPrinter$3 = functionPrinter({ mode: "call" });
|
|
1470
1497
|
function buildQueryParamsNode(node, options) {
|
|
1471
1498
|
const { resolver } = options;
|
|
1472
1499
|
const successNames = resolveSuccessNames(node, resolver);
|
|
@@ -1486,7 +1513,10 @@ function buildQueryParamsNode(node, options) {
|
|
|
1486
1513
|
}`,
|
|
1487
1514
|
default: "{}"
|
|
1488
1515
|
});
|
|
1489
|
-
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1516
|
+
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1517
|
+
resolver,
|
|
1518
|
+
memberTypeWrapper: maybeValueOrGetter
|
|
1519
|
+
}), optionsParam].filter((param) => param !== null) });
|
|
1490
1520
|
}
|
|
1491
1521
|
function Query({ name, queryKeyTypeName, queryOptionsName, queryKeyName, node, tsResolver, customOptions }) {
|
|
1492
1522
|
const successNames = resolveSuccessNames(node, tsResolver);
|
|
@@ -1499,10 +1529,9 @@ function Query({ name, queryKeyTypeName, queryOptionsName, queryKeyName, node, t
|
|
|
1499
1529
|
`TQueryData = ${TData}`,
|
|
1500
1530
|
`TQueryKey extends QueryKey = ${queryKeyTypeName}`
|
|
1501
1531
|
];
|
|
1502
|
-
const
|
|
1503
|
-
const
|
|
1504
|
-
const
|
|
1505
|
-
const queryOptionsParamsCall = callPrinter$3.print(queryOptionsParamsNode) ?? "";
|
|
1532
|
+
const resolvedParams = buildResolvedRequestParams(node);
|
|
1533
|
+
const queryKeyArgs = resolvedParams ? "resolvedParams" : "";
|
|
1534
|
+
const queryOptionsArgs = resolvedParams ? "resolvedParams, config" : "config";
|
|
1506
1535
|
const paramsNode = buildQueryParamsNode(node, { resolver: tsResolver });
|
|
1507
1536
|
const paramsSignature = declarationPrinter$3.print(paramsNode) ?? "";
|
|
1508
1537
|
return /* @__PURE__ */ jsx(File.Source, {
|
|
@@ -1518,11 +1547,11 @@ function Query({ name, queryKeyTypeName, queryOptionsName, queryKeyName, node, t
|
|
|
1518
1547
|
JSDoc: { comments: buildOperationComments(node) },
|
|
1519
1548
|
children: `
|
|
1520
1549
|
const { query: queryConfig = {}, client: config = {} } = options ?? {}
|
|
1521
|
-
const { client: queryClient, ...resolvedOptions } = queryConfig
|
|
1522
|
-
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${
|
|
1550
|
+
const { client: queryClient, ...resolvedOptions } = queryConfig${resolvedParams ? `\n const resolvedParams = ${resolvedParams}` : ""}
|
|
1551
|
+
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${queryKeyArgs})${customOptions ? `\n const customOptions = ${customOptions.name}({ hookName: '${name}', operationId: '${node.operationId}' })` : ""}
|
|
1523
1552
|
|
|
1524
1553
|
const queryResult = useQuery({
|
|
1525
|
-
...${queryOptionsName}(${
|
|
1554
|
+
...${queryOptionsName}(${queryOptionsArgs}),${customOptions ? "\n ...customOptions," : ""}
|
|
1526
1555
|
...resolvedOptions,
|
|
1527
1556
|
queryKey,
|
|
1528
1557
|
} as unknown as QueryObserverOptions, queryClient) as ${returnType}
|
|
@@ -1537,7 +1566,6 @@ function Query({ name, queryKeyTypeName, queryOptionsName, queryKeyName, node, t
|
|
|
1537
1566
|
//#endregion
|
|
1538
1567
|
//#region src/components/SuspenseInfiniteQuery.tsx
|
|
1539
1568
|
const declarationPrinter$2 = functionPrinter({ mode: "declaration" });
|
|
1540
|
-
const callPrinter$2 = functionPrinter({ mode: "call" });
|
|
1541
1569
|
function buildSuspenseInfiniteQueryParamsNode(node, options) {
|
|
1542
1570
|
const { resolver, pageParamGeneric } = options;
|
|
1543
1571
|
const optionsParam = createFunctionParameter({
|
|
@@ -1548,7 +1576,10 @@ function buildSuspenseInfiniteQueryParamsNode(node, options) {
|
|
|
1548
1576
|
}`,
|
|
1549
1577
|
default: "{}"
|
|
1550
1578
|
});
|
|
1551
|
-
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1579
|
+
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1580
|
+
resolver,
|
|
1581
|
+
memberTypeWrapper: maybeValueOrGetter
|
|
1582
|
+
}), optionsParam].filter((param) => param !== null) });
|
|
1552
1583
|
}
|
|
1553
1584
|
function SuspenseInfiniteQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName, node, tsResolver, customOptions, initialPageParam, queryParam }) {
|
|
1554
1585
|
const successNames = resolveSuccessNames(node, tsResolver);
|
|
@@ -1576,10 +1607,9 @@ function SuspenseInfiniteQuery({ name, queryKeyTypeName, queryOptionsName, query
|
|
|
1576
1607
|
`TQueryKey extends QueryKey = ${queryKeyTypeName}`,
|
|
1577
1608
|
`TPageParam = ${pageParamType}`
|
|
1578
1609
|
];
|
|
1579
|
-
const
|
|
1580
|
-
const
|
|
1581
|
-
const
|
|
1582
|
-
const queryOptionsParamsCall = callPrinter$2.print(queryOptionsParamsNode) ?? "";
|
|
1610
|
+
const resolvedParams = buildResolvedRequestParams(node);
|
|
1611
|
+
const queryKeyArgs = resolvedParams ? "resolvedParams" : "";
|
|
1612
|
+
const queryOptionsArgs = resolvedParams ? "resolvedParams, config" : "config";
|
|
1583
1613
|
const paramsNode = buildSuspenseInfiniteQueryParamsNode(node, {
|
|
1584
1614
|
resolver: tsResolver,
|
|
1585
1615
|
pageParamGeneric: "TPageParam"
|
|
@@ -1598,11 +1628,11 @@ function SuspenseInfiniteQuery({ name, queryKeyTypeName, queryOptionsName, query
|
|
|
1598
1628
|
JSDoc: { comments: buildOperationComments(node) },
|
|
1599
1629
|
children: `
|
|
1600
1630
|
const { query: queryConfig = {}, client: config = {} } = options ?? {}
|
|
1601
|
-
const { client: queryClient, ...resolvedOptions } = queryConfig
|
|
1602
|
-
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${
|
|
1631
|
+
const { client: queryClient, ...resolvedOptions } = queryConfig${resolvedParams ? `\n const resolvedParams = ${resolvedParams}` : ""}
|
|
1632
|
+
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${queryKeyArgs})${customOptions ? `\n const customOptions = ${customOptions.name}({ hookName: '${name}', operationId: '${node.operationId}' })` : ""}
|
|
1603
1633
|
|
|
1604
1634
|
const queryResult = useSuspenseInfiniteQuery({
|
|
1605
|
-
...${queryOptionsName}(${
|
|
1635
|
+
...${queryOptionsName}(${queryOptionsArgs}),${customOptions ? "\n ...customOptions," : ""}
|
|
1606
1636
|
...resolvedOptions,
|
|
1607
1637
|
queryKey,
|
|
1608
1638
|
} as unknown as UseSuspenseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient) as ${returnType}
|
|
@@ -1617,7 +1647,7 @@ function SuspenseInfiniteQuery({ name, queryKeyTypeName, queryOptionsName, query
|
|
|
1617
1647
|
//#endregion
|
|
1618
1648
|
//#region src/components/SuspenseInfiniteQueryOptions.tsx
|
|
1619
1649
|
const declarationPrinter$1 = functionPrinter({ mode: "declaration" });
|
|
1620
|
-
const callPrinter
|
|
1650
|
+
const callPrinter = functionPrinter({ mode: "call" });
|
|
1621
1651
|
function SuspenseInfiniteQueryOptions({ name, clientName, initialPageParam, cursorParam, nextParam, previousParam, node, tsResolver, queryParam, queryKeyName }) {
|
|
1622
1652
|
const successNames = resolveSuccessNames(node, tsResolver);
|
|
1623
1653
|
const queryFnDataType = successNames.length > 0 ? successNames.join(" | ") : tsResolver.resolveResponseName(node);
|
|
@@ -1643,7 +1673,7 @@ function SuspenseInfiniteQueryOptions({ name, clientName, initialPageParam, curs
|
|
|
1643
1673
|
})}
|
|
1644
1674
|
return data`;
|
|
1645
1675
|
const queryKeyParamsNode = buildQueryKeyParams(node, { resolver: tsResolver });
|
|
1646
|
-
const queryKeyParamsCall = callPrinter
|
|
1676
|
+
const queryKeyParamsCall = callPrinter.print(queryKeyParamsNode) ?? "";
|
|
1647
1677
|
const hasNewParams = nextParam != null || previousParam != null;
|
|
1648
1678
|
const [getNextPageParamExpr, getPreviousPageParamExpr] = (() => {
|
|
1649
1679
|
if (hasNewParams) {
|
|
@@ -1708,7 +1738,6 @@ return infiniteQueryOptions<${queryFnDataType}, ${errorType}, InfiniteData<${que
|
|
|
1708
1738
|
//#endregion
|
|
1709
1739
|
//#region src/components/SuspenseQuery.tsx
|
|
1710
1740
|
const declarationPrinter = functionPrinter({ mode: "declaration" });
|
|
1711
|
-
const callPrinter = functionPrinter({ mode: "call" });
|
|
1712
1741
|
function buildSuspenseQueryParamsNode(node, options) {
|
|
1713
1742
|
const { resolver } = options;
|
|
1714
1743
|
const successNames = resolveSuccessNames(node, resolver);
|
|
@@ -1727,7 +1756,10 @@ function buildSuspenseQueryParamsNode(node, options) {
|
|
|
1727
1756
|
}`,
|
|
1728
1757
|
default: "{}"
|
|
1729
1758
|
});
|
|
1730
|
-
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1759
|
+
return createFunctionParameters({ params: [buildGroupedRequestParam(node, {
|
|
1760
|
+
resolver,
|
|
1761
|
+
memberTypeWrapper: maybeValueOrGetter
|
|
1762
|
+
}), optionsParam].filter((param) => param !== null) });
|
|
1731
1763
|
}
|
|
1732
1764
|
function SuspenseQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName, node, tsResolver, customOptions }) {
|
|
1733
1765
|
const successNames = resolveSuccessNames(node, tsResolver);
|
|
@@ -1736,10 +1768,9 @@ function SuspenseQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName,
|
|
|
1736
1768
|
const TData = responseName;
|
|
1737
1769
|
const returnType = `UseSuspenseQueryResult<TData, ${`ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(" | ") : "Error"}>`}> & { queryKey: TQueryKey }`;
|
|
1738
1770
|
const generics = [`TData = ${TData}`, `TQueryKey extends QueryKey = ${queryKeyTypeName}`];
|
|
1739
|
-
const
|
|
1740
|
-
const
|
|
1741
|
-
const
|
|
1742
|
-
const queryOptionsParamsCall = callPrinter.print(queryOptionsParamsNode) ?? "";
|
|
1771
|
+
const resolvedParams = buildResolvedRequestParams(node);
|
|
1772
|
+
const queryKeyArgs = resolvedParams ? "resolvedParams" : "";
|
|
1773
|
+
const queryOptionsArgs = resolvedParams ? "resolvedParams, config" : "config";
|
|
1743
1774
|
const paramsNode = buildSuspenseQueryParamsNode(node, { resolver: tsResolver });
|
|
1744
1775
|
const paramsSignature = declarationPrinter.print(paramsNode) ?? "";
|
|
1745
1776
|
return /* @__PURE__ */ jsx(File.Source, {
|
|
@@ -1755,11 +1786,11 @@ function SuspenseQuery({ name, queryKeyTypeName, queryOptionsName, queryKeyName,
|
|
|
1755
1786
|
JSDoc: { comments: buildOperationComments(node) },
|
|
1756
1787
|
children: `
|
|
1757
1788
|
const { query: queryConfig = {}, client: config = {} } = options ?? {}
|
|
1758
|
-
const { client: queryClient, ...resolvedOptions } = queryConfig
|
|
1759
|
-
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${
|
|
1789
|
+
const { client: queryClient, ...resolvedOptions } = queryConfig${resolvedParams ? `\n const resolvedParams = ${resolvedParams}` : ""}
|
|
1790
|
+
const queryKey = resolvedOptions?.queryKey ?? ${queryKeyName}(${queryKeyArgs})${customOptions ? `\n const customOptions = ${customOptions.name}({ hookName: '${name}', operationId: '${node.operationId}' })` : ""}
|
|
1760
1791
|
|
|
1761
1792
|
const queryResult = useSuspenseQuery({
|
|
1762
|
-
...${queryOptionsName}(${
|
|
1793
|
+
...${queryOptionsName}(${queryOptionsArgs}),${customOptions ? "\n ...customOptions," : ""}
|
|
1763
1794
|
...resolvedOptions,
|
|
1764
1795
|
queryKey,
|
|
1765
1796
|
} as unknown as UseSuspenseQueryOptions, queryClient) as ${returnType}
|
|
@@ -1785,7 +1816,7 @@ const infiniteQueryGenerator = defineGenerator({
|
|
|
1785
1816
|
operation(node, ctx) {
|
|
1786
1817
|
if (!ast.isHttpOperationNode(node)) return null;
|
|
1787
1818
|
const { config, driver, resolver, root } = ctx;
|
|
1788
|
-
const { output, query, mutation, infinite, validator, client, group, customOptions } = ctx.options;
|
|
1819
|
+
const { output, query, mutation, infinite, validator, client, group, customOptions, hooks } = ctx.options;
|
|
1789
1820
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
1790
1821
|
if (!pluginTs) return null;
|
|
1791
1822
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -1919,31 +1950,33 @@ const infiniteQueryGenerator = defineGenerator({
|
|
|
1919
1950
|
initialPageParam: infiniteOptions.initialPageParam,
|
|
1920
1951
|
queryParam: infiniteOptions.queryParam
|
|
1921
1952
|
}),
|
|
1922
|
-
/* @__PURE__ */
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1953
|
+
hooks && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1954
|
+
/* @__PURE__ */ jsx(File.Import, {
|
|
1955
|
+
name: ["useInfiniteQuery"],
|
|
1956
|
+
path: importPath
|
|
1957
|
+
}),
|
|
1958
|
+
/* @__PURE__ */ jsx(File.Import, {
|
|
1959
|
+
name: [
|
|
1960
|
+
"QueryKey",
|
|
1961
|
+
"QueryClient",
|
|
1962
|
+
"InfiniteQueryObserverOptions",
|
|
1963
|
+
"UseInfiniteQueryResult"
|
|
1964
|
+
],
|
|
1965
|
+
path: importPath,
|
|
1966
|
+
isTypeOnly: true
|
|
1967
|
+
}),
|
|
1968
|
+
/* @__PURE__ */ jsx(InfiniteQuery, {
|
|
1969
|
+
name: queryName,
|
|
1970
|
+
queryOptionsName,
|
|
1971
|
+
queryKeyName,
|
|
1972
|
+
queryKeyTypeName,
|
|
1973
|
+
node,
|
|
1974
|
+
tsResolver,
|
|
1975
|
+
initialPageParam: infiniteOptions.initialPageParam,
|
|
1976
|
+
queryParam: infiniteOptions.queryParam,
|
|
1977
|
+
customOptions
|
|
1978
|
+
})
|
|
1979
|
+
] })
|
|
1947
1980
|
]
|
|
1948
1981
|
});
|
|
1949
1982
|
}
|
|
@@ -1961,7 +1994,7 @@ const mutationGenerator = defineGenerator({
|
|
|
1961
1994
|
operation(node, ctx) {
|
|
1962
1995
|
if (!ast.isHttpOperationNode(node)) return null;
|
|
1963
1996
|
const { config, driver, resolver, root } = ctx;
|
|
1964
|
-
const { output, query, mutation, validator, client, group, customOptions } = ctx.options;
|
|
1997
|
+
const { output, query, mutation, validator, client, group, customOptions, hooks } = ctx.options;
|
|
1965
1998
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
1966
1999
|
if (!pluginTs) return null;
|
|
1967
2000
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -2069,7 +2102,7 @@ const mutationGenerator = defineGenerator({
|
|
|
2069
2102
|
node,
|
|
2070
2103
|
tsResolver
|
|
2071
2104
|
}),
|
|
2072
|
-
mutation && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2105
|
+
mutation && hooks && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2073
2106
|
/* @__PURE__ */ jsx(File.Import, {
|
|
2074
2107
|
name: ["useMutation"],
|
|
2075
2108
|
path: importPath
|
|
@@ -2110,7 +2143,7 @@ const queryGenerator = defineGenerator({
|
|
|
2110
2143
|
operation(node, ctx) {
|
|
2111
2144
|
if (!ast.isHttpOperationNode(node)) return null;
|
|
2112
2145
|
const { config, driver, resolver, root } = ctx;
|
|
2113
|
-
const { output, query, mutation, validator, client, group, customOptions } = ctx.options;
|
|
2146
|
+
const { output, query, mutation, validator, client, group, customOptions, hooks } = ctx.options;
|
|
2114
2147
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
2115
2148
|
if (!pluginTs) return null;
|
|
2116
2149
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -2222,7 +2255,7 @@ const queryGenerator = defineGenerator({
|
|
|
2222
2255
|
node,
|
|
2223
2256
|
tsResolver
|
|
2224
2257
|
}),
|
|
2225
|
-
query && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2258
|
+
query && hooks && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2226
2259
|
/* @__PURE__ */ jsx(File.Import, {
|
|
2227
2260
|
name: ["useQuery"],
|
|
2228
2261
|
path: importPath
|
|
@@ -2265,7 +2298,7 @@ const suspenseInfiniteQueryGenerator = defineGenerator({
|
|
|
2265
2298
|
operation(node, ctx) {
|
|
2266
2299
|
if (!ast.isHttpOperationNode(node)) return null;
|
|
2267
2300
|
const { config, driver, resolver, root } = ctx;
|
|
2268
|
-
const { output, query, mutation, infinite, suspense, validator, client, group, customOptions } = ctx.options;
|
|
2301
|
+
const { output, query, mutation, infinite, suspense, validator, client, group, customOptions, hooks } = ctx.options;
|
|
2269
2302
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
2270
2303
|
if (!pluginTs) return null;
|
|
2271
2304
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -2399,31 +2432,33 @@ const suspenseInfiniteQueryGenerator = defineGenerator({
|
|
|
2399
2432
|
initialPageParam: infiniteOptions.initialPageParam,
|
|
2400
2433
|
queryParam: infiniteOptions.queryParam
|
|
2401
2434
|
}),
|
|
2402
|
-
/* @__PURE__ */
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2435
|
+
hooks && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2436
|
+
/* @__PURE__ */ jsx(File.Import, {
|
|
2437
|
+
name: ["useSuspenseInfiniteQuery"],
|
|
2438
|
+
path: importPath
|
|
2439
|
+
}),
|
|
2440
|
+
/* @__PURE__ */ jsx(File.Import, {
|
|
2441
|
+
name: [
|
|
2442
|
+
"QueryKey",
|
|
2443
|
+
"QueryClient",
|
|
2444
|
+
"UseSuspenseInfiniteQueryOptions",
|
|
2445
|
+
"UseSuspenseInfiniteQueryResult"
|
|
2446
|
+
],
|
|
2447
|
+
path: importPath,
|
|
2448
|
+
isTypeOnly: true
|
|
2449
|
+
}),
|
|
2450
|
+
/* @__PURE__ */ jsx(SuspenseInfiniteQuery, {
|
|
2451
|
+
name: queryName,
|
|
2452
|
+
queryOptionsName,
|
|
2453
|
+
queryKeyName,
|
|
2454
|
+
queryKeyTypeName,
|
|
2455
|
+
node,
|
|
2456
|
+
tsResolver,
|
|
2457
|
+
initialPageParam: infiniteOptions.initialPageParam,
|
|
2458
|
+
queryParam: infiniteOptions.queryParam,
|
|
2459
|
+
customOptions
|
|
2460
|
+
})
|
|
2461
|
+
] })
|
|
2427
2462
|
]
|
|
2428
2463
|
});
|
|
2429
2464
|
}
|
|
@@ -2442,7 +2477,7 @@ const suspenseQueryGenerator = defineGenerator({
|
|
|
2442
2477
|
operation(node, ctx) {
|
|
2443
2478
|
if (!ast.isHttpOperationNode(node)) return null;
|
|
2444
2479
|
const { config, driver, resolver, root } = ctx;
|
|
2445
|
-
const { output, query, mutation, suspense, validator, client, group, customOptions } = ctx.options;
|
|
2480
|
+
const { output, query, mutation, suspense, validator, client, group, customOptions, hooks } = ctx.options;
|
|
2446
2481
|
const pluginTs = driver.getPlugin(pluginTsName);
|
|
2447
2482
|
if (!pluginTs) return null;
|
|
2448
2483
|
const tsResolver = driver.getResolver(pluginTsName);
|
|
@@ -2554,7 +2589,7 @@ const suspenseQueryGenerator = defineGenerator({
|
|
|
2554
2589
|
node,
|
|
2555
2590
|
tsResolver
|
|
2556
2591
|
}),
|
|
2557
|
-
suspense && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2592
|
+
suspense && hooks && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2558
2593
|
/* @__PURE__ */ jsx(File.Import, {
|
|
2559
2594
|
name: ["useSuspenseQuery"],
|
|
2560
2595
|
path: importPath
|
|
@@ -2734,7 +2769,7 @@ const pluginReactQuery = definePlugin((options) => {
|
|
|
2734
2769
|
const { output = {
|
|
2735
2770
|
path: "hooks",
|
|
2736
2771
|
barrel: { type: "named" }
|
|
2737
|
-
}, group, exclude = [], include, override = [], validator = false, suspense = {}, infinite = false, mutation = {}, query = {}, mutationKey = mutationKeyTransformer, queryKey = queryKeyTransformer, customOptions, client, resolver: userResolver, macros: userMacros } = options;
|
|
2772
|
+
}, group, exclude = [], include, override = [], validator = false, suspense = {}, infinite = false, mutation = {}, query = {}, mutationKey = mutationKeyTransformer, queryKey = queryKeyTransformer, customOptions, hooks = false, client, resolver: userResolver, macros: userMacros } = options;
|
|
2738
2773
|
const selectedGenerators = [
|
|
2739
2774
|
queryGenerator,
|
|
2740
2775
|
suspenseQueryGenerator,
|
|
@@ -2796,6 +2831,7 @@ const pluginReactQuery = definePlugin((options) => {
|
|
|
2796
2831
|
name: "useCustomHookOptions",
|
|
2797
2832
|
...customOptions
|
|
2798
2833
|
} : null,
|
|
2834
|
+
hooks,
|
|
2799
2835
|
validator,
|
|
2800
2836
|
group: groupConfig,
|
|
2801
2837
|
exclude,
|