@kubb/plugin-vue-query 5.0.0-beta.15 → 5.0.0-beta.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/{components-1cEftHJm.cjs → components-CeZrYaZj.cjs} +44 -53
  2. package/dist/components-CeZrYaZj.cjs.map +1 -0
  3. package/dist/{components-DTSvTMEo.js → components-CpTXuQiK.js} +44 -53
  4. package/dist/components-CpTXuQiK.js.map +1 -0
  5. package/dist/components.cjs +1 -1
  6. package/dist/components.d.ts +3 -3
  7. package/dist/components.js +1 -1
  8. package/dist/{generators-BEiWCS-U.cjs → generators-BSMwPpbh.cjs} +55 -39
  9. package/dist/generators-BSMwPpbh.cjs.map +1 -0
  10. package/dist/{generators-F6_EduRU.js → generators-Cb5_nhMY.js} +55 -39
  11. package/dist/generators-Cb5_nhMY.js.map +1 -0
  12. package/dist/generators.cjs +1 -1
  13. package/dist/generators.d.ts +17 -1
  14. package/dist/generators.js +1 -1
  15. package/dist/index.cjs +47 -8
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.ts +29 -1
  18. package/dist/index.js +47 -8
  19. package/dist/index.js.map +1 -1
  20. package/dist/{types-Bkm7bWT3.d.ts → types-D-LjzI_Q.d.ts} +73 -46
  21. package/extension.yaml +779 -255
  22. package/package.json +7 -7
  23. package/src/components/InfiniteQuery.tsx +1 -1
  24. package/src/components/InfiniteQueryOptions.tsx +21 -31
  25. package/src/components/Mutation.tsx +2 -2
  26. package/src/components/Query.tsx +1 -1
  27. package/src/components/QueryKey.tsx +3 -3
  28. package/src/components/QueryOptions.tsx +1 -1
  29. package/src/generators/infiniteQueryGenerator.tsx +22 -13
  30. package/src/generators/mutationGenerator.tsx +20 -12
  31. package/src/generators/queryGenerator.tsx +20 -12
  32. package/src/plugin.ts +32 -4
  33. package/src/resolvers/resolverVueQuery.ts +13 -2
  34. package/src/types.ts +72 -45
  35. package/dist/components-1cEftHJm.cjs.map +0 -1
  36. package/dist/components-DTSvTMEo.js.map +0 -1
  37. package/dist/generators-BEiWCS-U.cjs.map +0 -1
  38. package/dist/generators-F6_EduRU.js.map +0 -1
@@ -228,12 +228,12 @@ var URLPath = class {
228
228
  get object() {
229
229
  return this.toObject();
230
230
  }
231
- /** Returns a map of path parameter names, or `undefined` when the path has no parameters.
231
+ /** Returns a map of path parameter names, or `null` when the path has no parameters.
232
232
  *
233
233
  * @example
234
234
  * ```ts
235
235
  * new URLPath('/pet/{petId}').params // { petId: 'petId' }
236
- * new URLPath('/pet').params // undefined
236
+ * new URLPath('/pet').params // null
237
237
  * ```
238
238
  */
239
239
  get params() {
@@ -271,12 +271,13 @@ var URLPath = class {
271
271
  * @example
272
272
  * new URLPath('/pet/{petId}').toTemplateString() // '`/pet/${petId}`'
273
273
  */
274
- toTemplateString({ prefix = "", replacer } = {}) {
275
- return `\`${prefix}${this.path.split(/\{([^}]+)\}/).map((part, i) => {
274
+ toTemplateString({ prefix, replacer } = {}) {
275
+ const result = this.path.split(/\{([^}]+)\}/).map((part, i) => {
276
276
  if (i % 2 === 0) return part;
277
277
  const param = this.#transformParam(part);
278
278
  return `\${${replacer ? replacer(param) : param}}`;
279
- }).join("")}\``;
279
+ }).join("");
280
+ return `\`${prefix ?? ""}${result}\``;
280
281
  }
281
282
  /**
282
283
  * Extracts all `{param}` segments from the path and returns them as a key-value map.
@@ -295,7 +296,7 @@ var URLPath = class {
295
296
  const key = replacer ? replacer(param) : param;
296
297
  params[key] = key;
297
298
  });
298
- return Object.keys(params).length > 0 ? params : void 0;
299
+ return Object.keys(params).length > 0 ? params : null;
299
300
  }
300
301
  /** Converts the OpenAPI path to Express-style colon syntax.
301
302
  *
@@ -314,10 +315,10 @@ const declarationPrinter$7 = functionPrinter({ mode: "declaration" });
314
315
  const mutationKeyTransformer = ({ node, casing }) => {
315
316
  return [`{ url: '${new URLPath(node.path, { casing }).toURLPath()}' }`];
316
317
  };
317
- function MutationKey({ name, paramsCasing, node, transformer = mutationKeyTransformer }) {
318
+ function MutationKey({ name, paramsCasing, node, transformer }) {
318
319
  const paramsNode = ast.createFunctionParameters({ params: [] });
319
320
  const paramsSignature = declarationPrinter$7.print(paramsNode) ?? "";
320
- const keys = transformer({
321
+ const keys = (transformer ?? mutationKeyTransformer)({
321
322
  node,
322
323
  casing: paramsCasing
323
324
  });
@@ -337,9 +338,9 @@ function MutationKey({ name, paramsCasing, node, transformer = mutationKeyTransf
337
338
  //#endregion
338
339
  //#region ../../internals/shared/src/operation.ts
339
340
  function getOperationLink(node, link) {
340
- if (!link) return;
341
- if (typeof link === "function") return link(node);
342
- if (link === "urlPath") return node.path ? `{@link ${new URLPath(node.path).URL}}` : void 0;
341
+ if (!link) return null;
342
+ if (typeof link === "function") return link(node) ?? null;
343
+ if (link === "urlPath") return node.path ? `{@link ${new URLPath(node.path).URL}}` : null;
343
344
  return `{@link ${node.path.replaceAll("{", ":").replaceAll("}", "")}}`;
344
345
  }
345
346
  function getContentTypeInfo(node) {
@@ -354,9 +355,9 @@ function getContentTypeInfo(node) {
354
355
  };
355
356
  }
356
357
  function buildRequestConfigType(node, resolver) {
357
- const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : void 0;
358
+ const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null;
358
359
  const { isMultipleContentTypes, contentTypeUnion } = getContentTypeInfo(node);
359
- return `${requestName ? `Partial<RequestConfig<${requestName}>>` : "Partial<RequestConfig>"} & { ${["client?: Client", isMultipleContentTypes ? `contentType?: ${contentTypeUnion}` : void 0].filter(Boolean).join("; ")} }`;
360
+ return `${requestName ? `Partial<RequestConfig<${requestName}>>` : "Partial<RequestConfig>"} & { ${["client?: Client", isMultipleContentTypes ? `contentType?: ${contentTypeUnion}` : null].filter(Boolean).join("; ")} }`;
360
361
  }
361
362
  function buildOperationComments(node, options = {}) {
362
363
  const { link = "pathTemplate", linkPosition = "afterDeprecated", splitLines = false } = options;
@@ -386,11 +387,11 @@ function getOperationParameters(node, options = {}) {
386
387
  }
387
388
  function getStatusCodeNumber(statusCode) {
388
389
  const code = Number(statusCode);
389
- return Number.isNaN(code) ? void 0 : code;
390
+ return Number.isNaN(code) ? null : code;
390
391
  }
391
392
  function isErrorStatusCode(statusCode) {
392
393
  const code = getStatusCodeNumber(statusCode);
393
- return code !== void 0 && code >= 400;
394
+ return code !== null && code >= 400;
394
395
  }
395
396
  function resolveErrorNames(node, resolver) {
396
397
  return node.responses.filter((response) => isErrorStatusCode(response.statusCode)).map((response) => resolver.resolveResponseStatusName(node, response.statusCode));
@@ -417,7 +418,7 @@ function resolveOperationTypeNames(node, resolver, options = {}) {
417
418
  ...query.map((param) => resolver.resolveQueryParamsName(node, param)),
418
419
  ...header.map((param) => resolver.resolveHeaderParamsName(node, param))
419
420
  ];
420
- const bodyAndResponseNames = [node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : void 0, resolver.resolveResponseName(node)];
421
+ const bodyAndResponseNames = [node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null, resolver.resolveResponseName(node)];
421
422
  const result = (options.order === "body-response-first" ? [
422
423
  ...bodyAndResponseNames,
423
424
  ...paramNames,
@@ -439,7 +440,7 @@ function resolveOperationTypeNames(node, resolver, options = {}) {
439
440
  */
440
441
  function resolveZodSchemaNames(node, zodResolver) {
441
442
  if (!zodResolver) return [];
442
- return [zodResolver.resolveResponseName?.(node), node.requestBody?.content?.[0]?.schema ? zodResolver.resolveDataName?.(node) : void 0].filter((n) => Boolean(n));
443
+ return [zodResolver.resolveResponseName?.(node), node.requestBody?.content?.[0]?.schema ? zodResolver.resolveDataName?.(node) : null].filter((n) => Boolean(n));
443
444
  }
444
445
  /**
445
446
  * Resolve the type for a single path parameter.
@@ -463,14 +464,14 @@ function resolvePathParamType(node, param, resolver) {
463
464
  }
464
465
  /**
465
466
  * Derive a query-params group type from the resolver.
466
- * Returns `undefined` when no query params exist or when the group name
467
+ * Returns `null` when no query params exist or when the group name
467
468
  * equals the individual param name (no real group).
468
469
  */
469
470
  function resolveQueryGroupType(node, params, resolver) {
470
- if (!params.length) return void 0;
471
+ if (!params.length) return null;
471
472
  const firstParam = params[0];
472
473
  const groupName = resolver.resolveQueryParamsName(node, firstParam);
473
- if (groupName === resolver.resolveParamName(node, firstParam)) return void 0;
474
+ if (groupName === resolver.resolveParamName(node, firstParam)) return null;
474
475
  return {
475
476
  type: ast.createParamsType({
476
477
  variant: "reference",
@@ -520,7 +521,7 @@ function buildQueryKeyParams(node, options) {
520
521
  const bodyType = node.requestBody?.content?.[0]?.schema ? ast.createParamsType({
521
522
  variant: "reference",
522
523
  name: resolver.resolveDataName(node)
523
- }) : void 0;
524
+ }) : null;
524
525
  const bodyRequired = node.requestBody?.required ?? false;
525
526
  const params = [];
526
527
  if (pathParams.length) {
@@ -565,8 +566,8 @@ const queryKeyTransformer = ({ node, casing }) => {
565
566
  type: "path",
566
567
  stringify: true
567
568
  }),
568
- hasQueryParams ? "...(params ? [params] : [])" : void 0,
569
- hasRequestBody ? "...(data ? [data] : [])" : void 0
569
+ hasQueryParams ? "...(params ? [params] : [])" : null,
570
+ hasRequestBody ? "...(data ? [data] : [])" : null
570
571
  ].filter(Boolean);
571
572
  };
572
573
  //#endregion
@@ -615,14 +616,14 @@ const declarationPrinter$5 = functionPrinter({ mode: "declaration" });
615
616
  function buildQueryKeyParamsNode(node, options) {
616
617
  return wrapWithMaybeRefOrGetter(buildQueryKeyParams(node, options));
617
618
  }
618
- function QueryKey({ name, node, tsResolver, paramsCasing, pathParamsType, typeName, transformer = queryKeyTransformer }) {
619
+ function QueryKey({ name, node, tsResolver, paramsCasing, pathParamsType, typeName, transformer }) {
619
620
  const paramsNode = buildQueryKeyParamsNode(node, {
620
621
  pathParamsType,
621
622
  paramsCasing,
622
623
  resolver: tsResolver
623
624
  });
624
625
  const paramsSignature = declarationPrinter$5.print(paramsNode) ?? "";
625
- const keys = transformer({
626
+ const keys = (transformer ?? queryKeyTransformer)({
626
627
  node,
627
628
  casing: paramsCasing
628
629
  });
@@ -655,7 +656,7 @@ const declarationPrinter$4 = functionPrinter({ mode: "declaration" });
655
656
  const callPrinter$4 = functionPrinter({ mode: "call" });
656
657
  function getQueryOptionsParams(node, options) {
657
658
  const { paramsType, paramsCasing, pathParamsType, resolver } = options;
658
- const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : void 0;
659
+ const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null;
659
660
  return wrapWithMaybeRefOrGetter(ast.createOperationParams(node, {
660
661
  paramsType,
661
662
  pathParamsType: paramsType === "object" ? "object" : pathParamsType === "object" ? "object" : "inline",
@@ -740,7 +741,7 @@ const callPrinter$3 = functionPrinter({ mode: "call" });
740
741
  function buildInfiniteQueryParamsNode(node, options) {
741
742
  const { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver } = options;
742
743
  const responseName = resolver.resolveResponseName(node);
743
- const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : void 0;
744
+ const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null;
744
745
  const errorNames = resolveErrorNames(node, resolver);
745
746
  const TData = dataReturnType === "data" ? responseName : `ResponseConfig<${responseName}>`;
746
747
  const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(" | ") : "Error"}>`;
@@ -846,9 +847,9 @@ function InfiniteQueryOptions({ name, clientName, initialPageParam, cursorParam,
846
847
  const rawQueryParams = getOperationParameters(node).query;
847
848
  const queryParamsTypeName = rawQueryParams.length > 0 ? (() => {
848
849
  const groupName = tsResolver.resolveQueryParamsName(node, rawQueryParams[0]);
849
- return groupName !== tsResolver.resolveParamName(node, rawQueryParams[0]) ? groupName : void 0;
850
- })() : void 0;
851
- const queryParamType = queryParam && queryParamsTypeName ? `${queryParamsTypeName}['${queryParam}']` : void 0;
850
+ return groupName !== tsResolver.resolveParamName(node, rawQueryParams[0]) ? groupName : null;
851
+ })() : null;
852
+ const queryParamType = queryParam && queryParamsTypeName ? `${queryParamsTypeName}['${queryParam}']` : null;
852
853
  const pageParamType = queryParamType ? isInitialPageParamDefined ? `NonNullable<${queryParamType}>` : queryParamType : fallbackPageParamType;
853
854
  const paramsNode = getQueryOptionsParams(node, {
854
855
  paramsType,
@@ -866,26 +867,16 @@ function InfiniteQueryOptions({ name, clientName, initialPageParam, cursorParam,
866
867
  const queryKeyParamsCall = callPrinter$2.print(queryKeyParamsNode) ?? "";
867
868
  const enabledSource = buildEnabledCheck(queryKeyParamsNode);
868
869
  const enabledText = enabledSource ? `enabled: () => ${enabledSource.split(" && ").map((n) => `!!toValue(${n.trim()})`).join(" && ")},` : "";
869
- const hasNewParams = nextParam !== void 0 || previousParam !== void 0;
870
- let getNextPageParamExpr;
871
- let getPreviousPageParamExpr;
872
- if (hasNewParams) {
873
- if (nextParam) {
874
- const accessor = getNestedAccessor(nextParam, "lastPage");
875
- if (accessor) getNextPageParamExpr = `getNextPageParam: (lastPage) => ${accessor}`;
870
+ const hasNewParams = nextParam != null || previousParam != null;
871
+ const [getNextPageParamExpr, getPreviousPageParamExpr] = (() => {
872
+ if (hasNewParams) {
873
+ const nextAccessor = nextParam ? getNestedAccessor(nextParam, "lastPage") : null;
874
+ const prevAccessor = previousParam ? getNestedAccessor(previousParam, "firstPage") : null;
875
+ return [nextAccessor ? `getNextPageParam: (lastPage) => ${nextAccessor}` : null, prevAccessor ? `getPreviousPageParam: (firstPage) => ${prevAccessor}` : null];
876
876
  }
877
- if (previousParam) {
878
- const accessor = getNestedAccessor(previousParam, "firstPage");
879
- if (accessor) getPreviousPageParamExpr = `getPreviousPageParam: (firstPage) => ${accessor}`;
880
- }
881
- } else if (cursorParam) {
882
- getNextPageParamExpr = `getNextPageParam: (lastPage) => lastPage['${cursorParam}']`;
883
- getPreviousPageParamExpr = `getPreviousPageParam: (firstPage) => firstPage['${cursorParam}']`;
884
- } else {
885
- if (dataReturnType === "full") getNextPageParamExpr = "getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage.data) && lastPage.data.length === 0 ? undefined : lastPageParam + 1";
886
- else getNextPageParamExpr = "getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage) && lastPage.length === 0 ? undefined : lastPageParam + 1";
887
- getPreviousPageParamExpr = "getPreviousPageParam: (_firstPage, _allPages, firstPageParam) => firstPageParam <= 1 ? undefined : firstPageParam - 1";
888
- }
877
+ if (cursorParam) return [`getNextPageParam: (lastPage) => lastPage['${cursorParam}']`, `getPreviousPageParam: (firstPage) => firstPage['${cursorParam}']`];
878
+ return [dataReturnType === "full" ? "getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage.data) && lastPage.data.length === 0 ? undefined : lastPageParam + 1" : "getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage) && lastPage.length === 0 ? undefined : lastPageParam + 1", "getPreviousPageParam: (_firstPage, _allPages, firstPageParam) => firstPageParam <= 1 ? undefined : firstPageParam - 1"];
879
+ })();
889
880
  const queryOptionsArr = [
890
881
  `initialPageParam: ${typeof initialPageParam === "string" ? JSON.stringify(initialPageParam) : initialPageParam}`,
891
882
  getNextPageParamExpr,
@@ -984,7 +975,7 @@ function buildMutationParamsNode(node, options) {
984
975
  mutation?: MutationObserverOptions<${[
985
976
  TData,
986
977
  TError,
987
- TRequestWrapped ? `{${TRequestWrapped}}` : "void",
978
+ TRequestWrapped ? `{${TRequestWrapped}}` : "undefined",
988
979
  "TContext"
989
980
  ].join(", ")}> & { client?: QueryClient },
990
981
  client?: ${buildRequestConfigType(node, resolver)},
@@ -1008,7 +999,7 @@ function Mutation({ name, clientName, paramsCasing, paramsType, pathParamsType,
1008
999
  const generics = [
1009
1000
  TData,
1010
1001
  TError,
1011
- TRequest ? `{${TRequest}}` : "void",
1002
+ TRequest ? `{${TRequest}}` : "undefined",
1012
1003
  "TContext"
1013
1004
  ].join(", ");
1014
1005
  const mutationKeyParamsNode = ast.createFunctionParameters({ params: [] });
@@ -1067,7 +1058,7 @@ const callPrinter = functionPrinter({ mode: "call" });
1067
1058
  function buildQueryParamsNode(node, options) {
1068
1059
  const { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver } = options;
1069
1060
  const responseName = resolver.resolveResponseName(node);
1070
- const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : void 0;
1061
+ const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null;
1071
1062
  const errorNames = resolveErrorNames(node, resolver);
1072
1063
  const TData = dataReturnType === "data" ? responseName : `ResponseConfig<${responseName}>`;
1073
1064
  const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(" | ") : "Error"}>`;
@@ -1159,4 +1150,4 @@ function Query({ name, queryKeyTypeName, queryOptionsName, queryKeyName, paramsT
1159
1150
  //#endregion
1160
1151
  export { QueryOptions as a, resolveZodSchemaNames as c, MutationKey as d, mutationKeyTransformer as f, InfiniteQuery as i, getOperationParameters as l, Mutation as n, QueryKey as o, camelCase as p, InfiniteQueryOptions as r, queryKeyTransformer as s, Query as t, resolveOperationTypeNames as u };
1161
1152
 
1162
- //# sourceMappingURL=components-DTSvTMEo.js.map
1153
+ //# sourceMappingURL=components-CpTXuQiK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-CpTXuQiK.js","names":["#options","#transformParam","#eachParam","declarationPrinter","declarationPrinter","declarationPrinter","declarationPrinter","callPrinter","addToValueCalls","declarationPrinter","callPrinter","getComments","declarationPrinter","callPrinter","declarationPrinter","callPrinter","getComments","getComments"],"sources":["../../../internals/utils/src/casing.ts","../../../internals/utils/src/object.ts","../../../internals/utils/src/reserved.ts","../../../internals/utils/src/urlPath.ts","../../../internals/tanstack-query/src/components/MutationKey.tsx","../../../internals/shared/src/operation.ts","../../../internals/tanstack-query/src/utils.ts","../../../internals/tanstack-query/src/components/QueryKey.tsx","../src/utils.ts","../src/components/QueryKey.tsx","../src/components/QueryOptions.tsx","../src/components/InfiniteQuery.tsx","../src/components/InfiniteQueryOptions.tsx","../src/components/Mutation.tsx","../src/components/Query.tsx"],"sourcesContent":["type Options = {\n /**\n * When `true`, dot-separated segments are split on `.` and joined with `/` after casing.\n */\n isFile?: boolean\n /**\n * Text prepended before casing is applied.\n */\n prefix?: string\n /**\n * Text appended before casing is applied.\n */\n suffix?: string\n}\n\n/**\n * Shared implementation for camelCase and PascalCase conversion.\n * Splits on common word boundaries (spaces, hyphens, underscores, dots, slashes, colons)\n * and capitalizes each word according to `pascal`.\n *\n * When `pascal` is `true` the first word is also capitalized (PascalCase), otherwise only subsequent words are.\n */\nfunction toCamelOrPascal(text: string, pascal: boolean): string {\n const normalized = text\n .trim()\n .replace(/([a-z\\d])([A-Z])/g, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n .replace(/(\\d)([a-z])/g, '$1 $2')\n\n const words = normalized.split(/[\\s\\-_./\\\\:]+/).filter(Boolean)\n\n return words\n .map((word, i) => {\n const allUpper = word.length > 1 && word === word.toUpperCase()\n if (allUpper) return word\n if (i === 0 && !pascal) return word.charAt(0).toLowerCase() + word.slice(1)\n return word.charAt(0).toUpperCase() + word.slice(1)\n })\n .join('')\n .replace(/[^a-zA-Z0-9]/g, '')\n}\n\n/**\n * Splits `text` on `.` and applies `transformPart` to each segment.\n * The last segment receives `isLast = true`, all earlier segments receive `false`.\n * Segments are joined with `/` to form a file path.\n *\n * Only splits on dots followed by a letter so that version numbers\n * embedded in operationIds (e.g. `v2025.0`) are kept intact.\n */\nfunction applyToFileParts(text: string, transformPart: (part: string, isLast: boolean) => string): string {\n const parts = text.split(/\\.(?=[a-zA-Z])/)\n return parts.map((part, i) => transformPart(part, i === parts.length - 1)).join('/')\n}\n\n/**\n * Converts `text` to camelCase.\n * When `isFile` is `true`, dot-separated segments are each cased independently and joined with `/`.\n *\n * @example\n * camelCase('hello-world') // 'helloWorld'\n * camelCase('pet.petId', { isFile: true }) // 'pet/petId'\n */\nexport function camelCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n return applyToFileParts(text, (part, isLast) => camelCase(part, isLast ? { prefix, suffix } : {}))\n }\n\n return toCamelOrPascal(`${prefix} ${text} ${suffix}`, false)\n}\n\n/**\n * Converts `text` to PascalCase.\n * When `isFile` is `true`, the last dot-separated segment is PascalCased and earlier segments are camelCased.\n *\n * @example\n * pascalCase('hello-world') // 'HelloWorld'\n * pascalCase('pet.petId', { isFile: true }) // 'pet/PetId'\n */\nexport function pascalCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n return applyToFileParts(text, (part, isLast) => (isLast ? pascalCase(part, { prefix, suffix }) : camelCase(part)))\n }\n\n return toCamelOrPascal(`${prefix} ${text} ${suffix}`, true)\n}\n\n/**\n * Converts `text` to snake_case.\n *\n * @example\n * snakeCase('helloWorld') // 'hello_world'\n * snakeCase('Hello-World') // 'hello_world'\n */\nexport function snakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n const processed = `${prefix} ${text} ${suffix}`.trim()\n return processed\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s\\-.]+/g, '_')\n .replace(/[^a-zA-Z0-9_]/g, '')\n .toLowerCase()\n .split('_')\n .filter(Boolean)\n .join('_')\n}\n\n/**\n * Converts `text` to SCREAMING_SNAKE_CASE.\n *\n * @example\n * screamingSnakeCase('helloWorld') // 'HELLO_WORLD'\n */\nexport function screamingSnakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n return snakeCase(text, { prefix, suffix }).toUpperCase()\n}\n","import { trimQuotes } from './string.ts'\n\n/**\n * Serializes a primitive value to a JSON string literal, stripping any surrounding quote characters first.\n *\n * @example\n * stringify('hello') // '\"hello\"'\n * stringify('\"hello\"') // '\"hello\"'\n */\nexport function stringify(value: string | number | boolean | undefined): string {\n if (value === undefined || value === null) return '\"\"'\n return JSON.stringify(trimQuotes(value.toString()))\n}\n\n/**\n * Converts a plain object into a multiline key-value string suitable for embedding in generated code.\n * Nested objects are recursively stringified with indentation.\n *\n * @example\n * stringifyObject({ foo: 'bar', nested: { a: 1 } })\n * // 'foo: bar,\\nnested: {\\n a: 1\\n }'\n */\nexport function stringifyObject(value: Record<string, unknown>): string {\n const items = Object.entries(value)\n .map(([key, val]) => {\n if (val !== null && typeof val === 'object') {\n return `${key}: {\\n ${stringifyObject(val as Record<string, unknown>)}\\n }`\n }\n return `${key}: ${val}`\n })\n .filter(Boolean)\n return items.join(',\\n')\n}\n\n/**\n * Converts a dot-notation path or string array into an optional-chaining accessor expression.\n *\n * @example\n * getNestedAccessor('pagination.next.id', 'lastPage')\n * // → \"lastPage?.['pagination']?.['next']?.['id']\"\n */\nexport function getNestedAccessor(param: string | string[], accessor: string): string | null {\n const parts = Array.isArray(param) ? param : param.split('.')\n if (parts.length === 0 || (parts.length === 1 && parts[0] === '')) return null\n return `${accessor}?.['${`${parts.join(\"']?.['\")}']`}`\n}\n","/**\n * JavaScript and Java reserved words.\n * @link https://github.com/jonschlinkert/reserved/blob/master/index.js\n */\nconst reservedWords = new Set([\n 'abstract',\n 'arguments',\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'debugger',\n 'default',\n 'delete',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'eval',\n 'export',\n 'extends',\n 'false',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'function',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'in',\n 'instanceof',\n 'int',\n 'interface',\n 'let',\n 'long',\n 'native',\n 'new',\n 'null',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'true',\n 'try',\n 'typeof',\n 'var',\n 'void',\n 'volatile',\n 'while',\n 'with',\n 'yield',\n 'Array',\n 'Date',\n 'hasOwnProperty',\n 'Infinity',\n 'isFinite',\n 'isNaN',\n 'isPrototypeOf',\n 'length',\n 'Math',\n 'name',\n 'NaN',\n 'Number',\n 'Object',\n 'prototype',\n 'String',\n 'toString',\n 'undefined',\n 'valueOf',\n] as const)\n\n/**\n * Returns `true` when `name` is a syntactically valid JavaScript variable name.\n *\n * @example\n * ```ts\n * isValidVarName('status') // true\n * isValidVarName('class') // false (reserved word)\n * isValidVarName('42foo') // false (starts with digit)\n * ```\n */\nexport function isValidVarName(name: string): boolean {\n if (!name || reservedWords.has(name as 'valueOf')) {\n return false\n }\n return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name)\n}\n","import { camelCase } from './casing.ts'\nimport { isValidVarName } from './reserved.ts'\n\nexport type URLObject = {\n /**\n * The resolved URL string (Express-style or template literal, depending on context).\n */\n url: string\n /**\n * Extracted path parameters as a key-value map, or `null` when the path has none.\n */\n params: Record<string, string> | null\n}\n\ntype ObjectOptions = {\n /**\n * Controls whether the `url` is rendered as an Express path or a template literal.\n * @default 'path'\n */\n type?: 'path' | 'template'\n /**\n * Optional transform applied to each extracted parameter name.\n */\n replacer?: (pathParam: string) => string\n /**\n * When `true`, the result is serialized to a string expression instead of a plain object.\n */\n stringify?: boolean\n}\n\n/**\n * Supported identifier casing strategies for path parameters.\n */\ntype PathCasing = 'camelcase'\n\ntype Options = {\n /**\n * Casing strategy applied to path parameter names.\n * @default undefined (original identifier preserved)\n */\n casing?: PathCasing\n}\n\n/**\n * Parses and transforms an OpenAPI/Swagger path string into various URL formats.\n *\n * @example\n * const p = new URLPath('/pet/{petId}')\n * p.URL // '/pet/:petId'\n * p.template // '`/pet/${petId}`'\n */\nexport class URLPath {\n /**\n * The raw OpenAPI/Swagger path string, e.g. `/pet/{petId}`.\n */\n path: string\n\n #options: Options\n\n constructor(path: string, options: Options = {}) {\n this.path = path\n this.#options = options\n }\n\n /** Converts the OpenAPI path to Express-style colon syntax, e.g. `/pet/{petId}` → `/pet/:petId`.\n *\n * @example\n * ```ts\n * new URLPath('/pet/{petId}').URL // '/pet/:petId'\n * ```\n */\n get URL(): string {\n return this.toURLPath()\n }\n\n /** Returns `true` when `path` is a fully-qualified URL (e.g. starts with `https://`).\n *\n * @example\n * ```ts\n * new URLPath('https://petstore.swagger.io/v2/pet').isURL // true\n * new URLPath('/pet/{petId}').isURL // false\n * ```\n */\n get isURL(): boolean {\n try {\n return !!new URL(this.path).href\n } catch {\n return false\n }\n }\n\n /**\n * Converts the OpenAPI path to a TypeScript template literal string.\n *\n * @example\n * new URLPath('/pet/{petId}').template // '`/pet/${petId}`'\n * new URLPath('/account/monetary-accountID').template // '`/account/${monetaryAccountId}`'\n */\n get template(): string {\n return this.toTemplateString()\n }\n\n /** Returns the path and its extracted params as a structured `URLObject`, or as a stringified expression when `stringify` is set.\n *\n * @example\n * ```ts\n * new URLPath('/pet/{petId}').object\n * // { url: '/pet/:petId', params: { petId: 'petId' } }\n * ```\n */\n get object(): URLObject | string {\n return this.toObject()\n }\n\n /** Returns a map of path parameter names, or `null` when the path has no parameters.\n *\n * @example\n * ```ts\n * new URLPath('/pet/{petId}').params // { petId: 'petId' }\n * new URLPath('/pet').params // null\n * ```\n */\n get params(): Record<string, string> | null {\n return this.toParamsObject()\n }\n\n #transformParam(raw: string): string {\n const param = isValidVarName(raw) ? raw : camelCase(raw)\n return this.#options.casing === 'camelcase' ? camelCase(param) : param\n }\n\n /**\n * Iterates over every `{param}` token in `path`, calling `fn` with the raw token and transformed name.\n */\n #eachParam(fn: (raw: string, param: string) => undefined): undefined {\n for (const match of this.path.matchAll(/\\{([^}]+)\\}/g)) {\n const raw = match[1]!\n fn(raw, this.#transformParam(raw))\n }\n }\n\n toObject({ type = 'path', replacer, stringify }: ObjectOptions = {}): URLObject | string {\n const object = {\n url: type === 'path' ? this.toURLPath() : this.toTemplateString({ replacer }),\n params: this.toParamsObject(),\n }\n\n if (stringify) {\n if (type === 'template') {\n return JSON.stringify(object).replaceAll(\"'\", '').replaceAll(`\"`, '')\n }\n\n if (object.params) {\n return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll(\"'\", '').replaceAll(`\"`, '')} }`\n }\n\n return `{ url: '${object.url}' }`\n }\n\n return object\n }\n\n /**\n * Converts the OpenAPI path to a TypeScript template literal string.\n * An optional `replacer` can transform each extracted parameter name before interpolation.\n *\n * @example\n * new URLPath('/pet/{petId}').toTemplateString() // '`/pet/${petId}`'\n */\n toTemplateString({ prefix, replacer }: { prefix?: string | null; replacer?: (pathParam: string) => string } = {}): string {\n const parts = this.path.split(/\\{([^}]+)\\}/)\n const result = parts\n .map((part, i) => {\n if (i % 2 === 0) return part\n const param = this.#transformParam(part)\n return `\\${${replacer ? replacer(param) : param}}`\n })\n .join('')\n\n return `\\`${prefix ?? ''}${result}\\``\n }\n\n /**\n * Extracts all `{param}` segments from the path and returns them as a key-value map.\n * An optional `replacer` transforms each parameter name in both key and value positions.\n * Returns `undefined` when no path parameters are found.\n *\n * @example\n * ```ts\n * new URLPath('/pet/{petId}/tag/{tagId}').toParamsObject()\n * // { petId: 'petId', tagId: 'tagId' }\n * ```\n */\n toParamsObject(replacer?: (pathParam: string) => string): Record<string, string> | null {\n const params: Record<string, string> = {}\n\n this.#eachParam((_raw, param) => {\n const key = replacer ? replacer(param) : param\n params[key] = key\n })\n\n return Object.keys(params).length > 0 ? params : null\n }\n\n /** Converts the OpenAPI path to Express-style colon syntax.\n *\n * @example\n * ```ts\n * new URLPath('/pet/{petId}').toURLPath() // '/pet/:petId'\n * ```\n */\n toURLPath(): string {\n return this.path.replace(/\\{([^}]+)\\}/g, ':$1')\n }\n}\n","import { URLPath } from '@internals/utils'\nimport { ast } from '@kubb/core'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { Transformer } from '../types.ts'\n\ntype Props = {\n name: string\n node: ast.OperationNode\n paramsCasing: 'camelcase' | undefined\n pathParamsType: 'object' | 'inline'\n transformer: Transformer | null | undefined\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\n\nexport const mutationKeyTransformer: Transformer = ({ node, casing }) => {\n const path = new URLPath(node.path, { casing })\n return [`{ url: '${path.toURLPath()}' }`]\n}\n\nexport function MutationKey({ name, paramsCasing, node, transformer }: Props): KubbReactNode {\n const paramsNode = ast.createFunctionParameters({ params: [] })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n const keys = (transformer ?? mutationKeyTransformer)({ node, casing: paramsCasing })\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function.Arrow name={name} export params={paramsSignature} singleLine>\n {`[${keys.join(', ')}] as const`}\n </Function.Arrow>\n </File.Source>\n )\n}\n","import { URLPath } from '@internals/utils'\nimport { ast } from '@kubb/core'\n\nexport type ContentTypeInfo = {\n contentTypes: string[]\n isMultipleContentTypes: boolean\n contentTypeUnion: string\n defaultContentType: string\n hasFormData: boolean\n}\n\nexport type RequestConfigResolver = {\n resolveDataName(node: ast.OperationNode): string\n}\n\nexport type ResponseStatusNameResolver = {\n resolveResponseStatusName(node: ast.OperationNode, statusCode: ast.StatusCode): string\n}\n\nexport type ResponseNameResolver = ResponseStatusNameResolver & {\n resolveResponseName(node: ast.OperationNode): string\n}\n\nexport type OperationTypeNameResolver = RequestConfigResolver &\n ResponseNameResolver & {\n resolvePathParamsName(node: ast.OperationNode, param: ast.ParameterNode): string\n resolveQueryParamsName(node: ast.OperationNode, param: ast.ParameterNode): string\n resolveHeaderParamsName(node: ast.OperationNode, param: ast.ParameterNode): string\n }\n\nexport type OperationCommentLink = 'pathTemplate' | 'urlPath' | false | ((node: ast.OperationNode) => string | undefined)\n\nexport type BuildOperationCommentsOptions = {\n link?: OperationCommentLink\n linkPosition?: 'beforeDeprecated' | 'afterDeprecated'\n splitLines?: boolean\n}\n\ntype ResponseLike = {\n statusCode: ast.StatusCode | number | string\n}\n\nexport type OperationParameterGroups = Record<ast.ParameterNode['in'], Array<ast.ParameterNode>>\n\nexport type ResolveOperationTypeNameOptions = {\n paramsCasing?: 'camelcase'\n responseStatusNames?: boolean | 'error'\n exclude?: ReadonlyArray<string | undefined>\n order?: 'params-first' | 'body-response-first'\n}\n\nfunction getOperationLink(node: ast.OperationNode, link: OperationCommentLink): string | null {\n if (!link) {\n return null\n }\n\n if (typeof link === 'function') {\n return link(node) ?? null\n }\n\n if (link === 'urlPath') {\n return node.path ? `{@link ${new URLPath(node.path).URL}}` : null\n }\n\n return `{@link ${node.path.replaceAll('{', ':').replaceAll('}', '')}}`\n}\n\nexport function getContentTypeInfo(node: ast.OperationNode): ContentTypeInfo {\n const contentTypes = node.requestBody?.content?.map((e) => e.contentType) ?? []\n const isMultipleContentTypes = contentTypes.length > 1\n\n return {\n contentTypes,\n isMultipleContentTypes,\n contentTypeUnion: isMultipleContentTypes ? contentTypes.map((ct) => JSON.stringify(ct)).join(' | ') : '',\n defaultContentType: contentTypes[0] ?? 'application/json',\n hasFormData: contentTypes.some((ct) => ct === 'multipart/form-data'),\n }\n}\n\nexport function buildRequestConfigType(node: ast.OperationNode, resolver: RequestConfigResolver): string {\n const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null\n const { isMultipleContentTypes, contentTypeUnion } = getContentTypeInfo(node)\n const configType = requestName ? `Partial<RequestConfig<${requestName}>>` : 'Partial<RequestConfig>'\n const configProps = ['client?: Client', isMultipleContentTypes ? `contentType?: ${contentTypeUnion}` : null].filter(Boolean).join('; ')\n\n return `${configType} & { ${configProps} }`\n}\n\nexport function buildOperationComments(node: ast.OperationNode, options: BuildOperationCommentsOptions = {}): Array<string> {\n const { link = 'pathTemplate', linkPosition = 'afterDeprecated', splitLines = false } = options\n const linkComment = getOperationLink(node, link)\n const comments =\n linkPosition === 'beforeDeprecated'\n ? [node.description && `@description ${node.description}`, node.summary && `@summary ${node.summary}`, linkComment, node.deprecated && '@deprecated']\n : [node.description && `@description ${node.description}`, node.summary && `@summary ${node.summary}`, node.deprecated && '@deprecated', linkComment]\n\n const filteredComments = comments.filter((comment): comment is string => Boolean(comment))\n\n if (!splitLines) {\n return filteredComments\n }\n\n return filteredComments.flatMap((text) => text.split(/\\r?\\n/).map((line) => line.trim())).filter((comment): comment is string => Boolean(comment))\n}\n\nexport function getOperationParameters(node: ast.OperationNode, options: { paramsCasing?: 'camelcase' } = {}): OperationParameterGroups {\n const params = ast.caseParams(node.parameters, options.paramsCasing)\n\n return {\n path: params.filter((param) => param.in === 'path'),\n query: params.filter((param) => param.in === 'query'),\n header: params.filter((param) => param.in === 'header'),\n cookie: params.filter((param) => param.in === 'cookie'),\n }\n}\n\nexport function getStatusCodeNumber(statusCode: ast.StatusCode | number | string): number | null {\n const code = Number(statusCode)\n\n return Number.isNaN(code) ? null : code\n}\n\nexport function isSuccessStatusCode(statusCode: ast.StatusCode | number | string): boolean {\n const code = getStatusCodeNumber(statusCode)\n\n return code !== null && code >= 200 && code < 300\n}\n\nexport function isErrorStatusCode(statusCode: ast.StatusCode | number | string): boolean {\n const code = getStatusCodeNumber(statusCode)\n\n return code !== null && code >= 400\n}\n\nexport function getSuccessResponses<TResponse extends ResponseLike>(responses: ReadonlyArray<TResponse>): Array<TResponse> {\n return responses.filter((response) => isSuccessStatusCode(response.statusCode))\n}\n\nexport function getOperationSuccessResponses(node: ast.OperationNode): Array<ast.ResponseNode> {\n return getSuccessResponses(node.responses)\n}\n\nexport function getPrimarySuccessResponse(node: ast.OperationNode): ast.ResponseNode | null {\n return getOperationSuccessResponses(node)[0] ?? null\n}\n\nexport function resolveErrorNames(node: ast.OperationNode, resolver: ResponseStatusNameResolver): string[] {\n return node.responses\n .filter((response) => isErrorStatusCode(response.statusCode))\n .map((response) => resolver.resolveResponseStatusName(node, response.statusCode))\n}\n\nexport function resolveStatusCodeNames(node: ast.OperationNode, resolver: ResponseStatusNameResolver): string[] {\n return node.responses.map((response) => resolver.resolveResponseStatusName(node, response.statusCode))\n}\n\nconst typeNamesByResolver = new WeakMap<OperationTypeNameResolver, Map<string, string[]>>()\n\nexport function resolveOperationTypeNames(\n node: ast.OperationNode,\n resolver: OperationTypeNameResolver,\n options: ResolveOperationTypeNameOptions = {},\n): string[] {\n const cacheKey = `${node.operationId}\\0${options.paramsCasing ?? ''}\\0${options.order ?? ''}\\0${options.responseStatusNames ?? ''}\\0${(options.exclude ?? []).join(',')}`\n let byResolver = typeNamesByResolver.get(resolver)\n if (byResolver) {\n const cached = byResolver.get(cacheKey)\n if (cached) return cached\n } else {\n byResolver = new Map()\n typeNamesByResolver.set(resolver, byResolver)\n }\n\n const { path, query, header } = getOperationParameters(node, { paramsCasing: options.paramsCasing })\n const responseStatusNames =\n options.responseStatusNames === 'error'\n ? resolveErrorNames(node, resolver)\n : options.responseStatusNames === false\n ? []\n : resolveStatusCodeNames(node, resolver)\n const exclude = new Set(options.exclude ?? [])\n const paramNames = [\n ...path.map((param) => resolver.resolvePathParamsName(node, param)),\n ...query.map((param) => resolver.resolveQueryParamsName(node, param)),\n ...header.map((param) => resolver.resolveHeaderParamsName(node, param)),\n ]\n const bodyAndResponseNames = [node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null, resolver.resolveResponseName(node)]\n const names =\n options.order === 'body-response-first'\n ? [...bodyAndResponseNames, ...paramNames, ...responseStatusNames]\n : [...paramNames, ...bodyAndResponseNames, ...responseStatusNames]\n\n const result = names.filter((name): name is string => Boolean(name) && !exclude.has(name as string))\n byResolver.set(cacheKey, result)\n return result\n}\n\nexport function resolveResponseTypes(node: ast.OperationNode, resolver: ResponseNameResolver): Array<[statusCode: number | 'default', typeName: string]> {\n const types: Array<[number | 'default', string]> = []\n\n for (const response of node.responses) {\n if (response.statusCode === 'default') {\n types.push(['default', resolver.resolveResponseName(node)])\n continue\n }\n\n const code = getStatusCodeNumber(response.statusCode)\n if (code === null) {\n continue\n }\n\n types.push([code, isSuccessStatusCode(code) ? resolver.resolveResponseName(node) : resolver.resolveResponseStatusName(node, response.statusCode)])\n }\n\n return types\n}\n\nexport function findSuccessStatusCode(responses: Array<{ statusCode: ast.StatusCode | number | string }>): ast.StatusCode | null {\n for (const response of responses) {\n if (isSuccessStatusCode(response.statusCode)) {\n return response.statusCode as ast.StatusCode\n }\n }\n\n return null\n}\n","import { ast } from '@kubb/core'\nimport type { PluginTs } from '@kubb/plugin-ts'\n\nexport function transformName(name: string, type: string, transformers?: { name?: (name: string, type?: string) => string }): string {\n return transformers?.name?.(name, type) || name\n}\n\ntype OverrideEntry<TOptions> = {\n type: string\n pattern: string | RegExp\n options?: Partial<TOptions>\n}\n\nfunction matchesPattern(node: ast.OperationNode, ov: { type: string; pattern: string | RegExp }): boolean {\n const { type, pattern } = ov\n const matches = (value: string) => (typeof pattern === 'string' ? value === pattern : pattern.test(value))\n if (type === 'operationId') return matches(node.operationId)\n if (type === 'tag') return node.tags.some((t) => matches(t))\n if (type === 'path') return matches(node.path)\n if (type === 'method') return matches(node.method)\n return false\n}\n\n/**\n * Resolves per-operation overrides (first matching override wins).\n *\n * @example\n * ```ts\n * const opts = resolveOperationOverrides(node, override)\n * const queryOpts = 'query' in opts ? opts.query : defaultQuery\n * ```\n */\nexport function resolveOperationOverrides<TOptions>(node: ast.OperationNode, override?: ReadonlyArray<OverrideEntry<TOptions>>): Partial<TOptions> {\n if (!override) return {}\n const match = override.find((ov) => matchesPattern(node, ov))\n return match?.options ?? {}\n}\n\ntype ZodSchemaNameResolverLike = {\n resolveResponseName?: (node: ast.OperationNode) => string | undefined\n resolveDataName?: (node: ast.OperationNode) => string | undefined\n}\n\n/**\n * Collects the Zod schema import names for an operation (response + request body).\n *\n * Returns an empty array when no resolver is provided or the operation has no request body schema.\n */\nexport function resolveZodSchemaNames(node: ast.OperationNode, zodResolver: ZodSchemaNameResolverLike | null | undefined): string[] {\n if (!zodResolver) return []\n return [zodResolver.resolveResponseName?.(node), node.requestBody?.content?.[0]?.schema ? zodResolver.resolveDataName?.(node) : null].filter(\n (n): n is string => Boolean(n),\n )\n}\n\n/**\n * Resolve the type for a single path parameter.\n *\n * - When the resolver's group name differs from the individual param name\n * (e.g. kubbV4) → `GroupName['paramName']` (member access).\n * - When they match (v5 default) → `TypeName` (direct reference).\n */\nexport function resolvePathParamType(node: ast.OperationNode, param: ast.ParameterNode, resolver: PluginTs['resolver']): ast.ParamsTypeNode {\n const individualName = resolver.resolveParamName(node, param)\n const groupName = resolver.resolvePathParamsName(node, param)\n\n if (groupName !== individualName) {\n return ast.createParamsType({ variant: 'member', base: groupName, key: param.name })\n }\n return ast.createParamsType({ variant: 'reference', name: individualName })\n}\n\ntype QueryGroupResult = { type: ast.ParamsTypeNode; optional: boolean } | null\n\n/**\n * Derive a query-params group type from the resolver.\n * Returns `null` when no query params exist or when the group name\n * equals the individual param name (no real group).\n */\nexport function resolveQueryGroupType(node: ast.OperationNode, params: ast.ParameterNode[], resolver: PluginTs['resolver']): QueryGroupResult {\n if (!params.length) return null\n const firstParam = params[0]!\n const groupName = resolver.resolveQueryParamsName(node, firstParam)\n if (groupName === resolver.resolveParamName(node, firstParam)) return null\n return { type: ast.createParamsType({ variant: 'reference', name: groupName }), optional: params.every((p) => !p.required) }\n}\n\n/**\n * Derive a header-params group type from the resolver.\n */\nexport function resolveHeaderGroupType(node: ast.OperationNode, params: ast.ParameterNode[], resolver: PluginTs['resolver']): QueryGroupResult {\n if (!params.length) return null\n const firstParam = params[0]!\n const groupName = resolver.resolveHeaderParamsName(node, firstParam)\n if (groupName === resolver.resolveParamName(node, firstParam)) return null\n return { type: ast.createParamsType({ variant: 'reference', name: groupName }), optional: params.every((p) => !p.required) }\n}\n\n/**\n * Build a single `FunctionParameterNode` for a query or header group.\n */\nexport function buildGroupParam(\n name: string,\n node: ast.OperationNode,\n params: ast.ParameterNode[],\n groupType: QueryGroupResult,\n resolver: PluginTs['resolver'],\n): ast.FunctionParameterNode[] {\n if (groupType) {\n return [ast.createFunctionParameter({ name, type: groupType.type, optional: groupType.optional })]\n }\n if (params.length) {\n const structProps = params.map((p) => ({\n name: p.name,\n type: ast.createParamsType({ variant: 'reference', name: resolver.resolveParamName(node, p) }),\n optional: !p.required,\n }))\n return [\n ast.createFunctionParameter({\n name,\n type: ast.createParamsType({ variant: 'struct', properties: structProps }),\n optional: params.every((p) => !p.required),\n }),\n ]\n }\n return []\n}\n\n/**\n * Build QueryKey params: pathParams + data + queryParams (NO headers, NO config).\n */\nexport function buildQueryKeyParams(\n node: ast.OperationNode,\n options: {\n pathParamsType: 'object' | 'inline'\n paramsCasing: 'camelcase' | undefined\n resolver: PluginTs['resolver']\n },\n): ast.FunctionParametersNode {\n const { pathParamsType, paramsCasing, resolver } = options\n\n const casedParams = ast.caseParams(node.parameters, paramsCasing)\n const pathParams = casedParams.filter((p) => p.in === 'path')\n const queryParams = casedParams.filter((p) => p.in === 'query')\n\n const queryGroupType = resolveQueryGroupType(node, queryParams, resolver)\n\n const bodyType = node.requestBody?.content?.[0]?.schema ? ast.createParamsType({ variant: 'reference', name: resolver.resolveDataName(node) }) : null\n const bodyRequired = node.requestBody?.required ?? false\n\n const params: Array<ast.FunctionParameterNode | ast.ParameterGroupNode> = []\n\n // Path params\n if (pathParams.length) {\n const pathChildren = pathParams.map((p) =>\n ast.createFunctionParameter({ name: p.name, type: resolvePathParamType(node, p, resolver), optional: !p.required }),\n )\n params.push({\n kind: 'ParameterGroup',\n properties: pathChildren,\n inline: pathParamsType === 'inline',\n default: pathChildren.every((c) => c.optional) ? '{}' : undefined,\n })\n }\n\n // Request body\n if (bodyType) {\n params.push(ast.createFunctionParameter({ name: 'data', type: bodyType, optional: !bodyRequired }))\n }\n\n // Query params\n params.push(...buildGroupParam('params', node, queryParams, queryGroupType, resolver))\n\n return ast.createFunctionParameters({ params })\n}\n\nexport function buildEnabledCheck(paramsNode: ast.FunctionParametersNode): string {\n const required: string[] = []\n for (const param of paramsNode.params) {\n if ('kind' in param && (param as ast.ParameterGroupNode).kind === 'ParameterGroup') {\n const group = param as ast.ParameterGroupNode\n for (const child of group.properties) {\n if (!child.optional && child.default === undefined) {\n required.push(child.name)\n }\n }\n } else {\n const fp = param as ast.FunctionParameterNode\n if (!fp.optional && fp.default === undefined) {\n required.push(fp.name)\n }\n }\n }\n return required.join(' && ')\n}\n","import { getOperationParameters } from '@internals/shared'\nimport { URLPath } from '@internals/utils'\nimport type { ast } from '@kubb/core'\nimport type { PluginTs } from '@kubb/plugin-ts'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function, Type } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { Transformer } from '../types.ts'\nimport { buildQueryKeyParams } from '../utils.ts'\n\ntype Props = {\n name: string\n typeName: string\n node: ast.OperationNode\n tsResolver: PluginTs['resolver']\n paramsCasing: 'camelcase' | undefined\n pathParamsType: 'object' | 'inline'\n transformer: Transformer | null | undefined\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\n\nexport const queryKeyTransformer: Transformer = ({ node, casing }) => {\n const path = new URLPath(node.path, { casing })\n const hasQueryParams = getOperationParameters(node).query.length > 0\n const hasRequestBody = !!node.requestBody?.content?.[0]?.schema\n\n return [\n path.toObject({ type: 'path', stringify: true }),\n hasQueryParams ? '...(params ? [params] : [])' : null,\n hasRequestBody ? '...(data ? [data] : [])' : null,\n ].filter(Boolean) as string[]\n}\n\nexport function QueryKey({ name, node, tsResolver, paramsCasing, pathParamsType, typeName, transformer }: Props): KubbReactNode {\n const paramsNode = buildQueryKeyParams(node, { pathParamsType, paramsCasing, resolver: tsResolver })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n const keys = (transformer ?? queryKeyTransformer)({ node, casing: paramsCasing })\n\n return (\n <>\n <File.Source name={name} isExportable isIndexable>\n <Function.Arrow name={name} export params={paramsSignature} singleLine>\n {`[${keys.join(', ')}] as const`}\n </Function.Arrow>\n </File.Source>\n <File.Source name={typeName} isTypeOnly>\n <Type name={typeName}>{`ReturnType<typeof ${name}>`}</Type>\n </File.Source>\n </>\n )\n}\n","export {\n buildGroupParam,\n buildQueryKeyParams,\n resolveHeaderGroupType,\n resolveOperationOverrides,\n resolvePathParamType,\n resolveQueryGroupType,\n resolveZodSchemaNames,\n} from '@internals/tanstack-query'\nexport { buildOperationComments as getComments, buildRequestConfigType, getContentTypeInfo, resolveErrorNames, resolveStatusCodeNames } from '@internals/shared'\n\nimport { ast } from '@kubb/core'\n\nexport function printType(typeNode: ast.ParamsTypeNode | undefined): string {\n if (!typeNode) return 'unknown'\n if (typeNode.variant === 'reference') return typeNode.name\n if (typeNode.variant === 'member') return `${typeNode.base}['${typeNode.key}']`\n if (typeNode.variant === 'struct') {\n const parts = typeNode.properties.map((p) => {\n const typeStr = printType(p.type)\n const key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(p.name) ? p.name : JSON.stringify(p.name)\n return p.optional ? `${key}?: ${typeStr}` : `${key}: ${typeStr}`\n })\n return `{ ${parts.join('; ')} }`\n }\n return 'unknown'\n}\n\nexport function wrapWithMaybeRefOrGetter(paramsNode: ast.FunctionParametersNode, skip?: (name: string) => boolean): ast.FunctionParametersNode {\n const wrappedParams = paramsNode.params.map((param) => {\n if ('kind' in param && (param as ast.ParameterGroupNode).kind === 'ParameterGroup') {\n const group = param as ast.ParameterGroupNode\n return {\n ...group,\n properties: group.properties.map((p) => ({\n ...p,\n type: p.type ? ast.createParamsType({ variant: 'reference', name: `MaybeRefOrGetter<${printType(p.type)}>` }) : p.type,\n })),\n }\n }\n const fp = param as ast.FunctionParameterNode\n if (skip?.(fp.name)) return fp\n return {\n ...fp,\n type: fp.type ? ast.createParamsType({ variant: 'reference', name: `MaybeRefOrGetter<${printType(fp.type)}>` }) : fp.type,\n }\n })\n return ast.createFunctionParameters({ params: wrappedParams })\n}\n","import type { ast } from '@kubb/core'\nimport type { ResolverTs } from '@kubb/plugin-ts'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function, Type } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport { queryKeyTransformer } from '@internals/tanstack-query'\nimport type { Transformer } from '../types.ts'\nimport { buildQueryKeyParams, wrapWithMaybeRefOrGetter } from '../utils.ts'\n\ntype Props = {\n name: string\n typeName: string\n node: ast.OperationNode\n tsResolver: ResolverTs\n paramsCasing: 'camelcase' | undefined\n pathParamsType: 'object' | 'inline'\n transformer: Transformer | null | undefined\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\n\nexport function buildQueryKeyParamsNode(\n node: ast.OperationNode,\n options: { pathParamsType: 'object' | 'inline'; paramsCasing: 'camelcase' | undefined; resolver: ResolverTs },\n): ast.FunctionParametersNode {\n return wrapWithMaybeRefOrGetter(buildQueryKeyParams(node, options))\n}\n\nexport function QueryKey({ name, node, tsResolver, paramsCasing, pathParamsType, typeName, transformer }: Props): KubbReactNode {\n const paramsNode = buildQueryKeyParamsNode(node, { pathParamsType, paramsCasing, resolver: tsResolver })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n const keys = (transformer ?? queryKeyTransformer)({\n node,\n casing: paramsCasing,\n })\n\n return (\n <>\n <File.Source name={name} isExportable isIndexable>\n <Function.Arrow name={name} export params={paramsSignature} singleLine>\n {`[${keys.join(', ')}] as const`}\n </Function.Arrow>\n </File.Source>\n <File.Source name={typeName} isExportable isIndexable isTypeOnly>\n <Type name={typeName} export>\n {`ReturnType<typeof ${name}>`}\n </Type>\n </File.Source>\n </>\n )\n}\n","import { ast } from '@kubb/core'\nimport type { ResolverTs } from '@kubb/plugin-ts'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport { buildEnabledCheck } from '@internals/tanstack-query'\nimport type { PluginVueQuery } from '../types.ts'\nimport { resolveErrorNames, wrapWithMaybeRefOrGetter } from '../utils.ts'\nimport { buildQueryKeyParamsNode } from './QueryKey.tsx'\n\ntype Props = {\n name: string\n clientName: string\n queryKeyName: string\n node: ast.OperationNode\n tsResolver: ResolverTs\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\nconst callPrinter = functionPrinter({ mode: 'call' })\n\nexport function getQueryOptionsParams(\n node: ast.OperationNode,\n options: {\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n resolver: ResolverTs\n },\n): ast.FunctionParametersNode {\n const { paramsType, paramsCasing, pathParamsType, resolver } = options\n const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null\n\n const baseParams = ast.createOperationParams(node, {\n paramsType,\n pathParamsType: paramsType === 'object' ? 'object' : pathParamsType === 'object' ? 'object' : 'inline',\n paramsCasing,\n resolver,\n extraParams: [\n ast.createFunctionParameter({\n name: 'config',\n type: ast.createParamsType({\n variant: 'reference',\n name: requestName ? `Partial<RequestConfig<${requestName}>> & { client?: Client }` : 'Partial<RequestConfig> & { client?: Client }',\n }),\n default: '{}',\n }),\n ],\n })\n\n return wrapWithMaybeRefOrGetter(baseParams, (name) => name === 'config')\n}\n\nexport function QueryOptions({\n name,\n clientName,\n dataReturnType,\n node,\n tsResolver,\n paramsCasing,\n paramsType,\n pathParamsType,\n queryKeyName,\n}: Props): KubbReactNode {\n const responseName = tsResolver.resolveResponseName(node)\n const errorNames = resolveErrorNames(node, tsResolver)\n\n const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n\n const paramsNode = getQueryOptionsParams(node, { paramsType, paramsCasing, pathParamsType, resolver: tsResolver })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n const rawParamsCall = callPrinter.print(paramsNode) ?? ''\n\n // Transform: wrap non-config params with toValue(), add signal to config\n const clientCallStr = rawParamsCall.replace(/\\bconfig\\b(?=[^,]*$)/, '{ ...config, signal: config.signal ?? signal }')\n\n const queryKeyParamsNode = buildQueryKeyParamsNode(node, { pathParamsType, paramsCasing, resolver: tsResolver })\n const queryKeyParamsCall = callPrinter.print(queryKeyParamsNode) ?? ''\n\n const enabledSource = buildEnabledCheck(queryKeyParamsNode)\n const enabledText = enabledSource\n ? `enabled: () => ${enabledSource\n .split(' && ')\n .map((n) => `!!toValue(${n.trim()})`)\n .join(' && ')},`\n : ''\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function name={name} export params={paramsSignature}>\n {`\n const queryKey = ${queryKeyName}(${queryKeyParamsCall})\n return queryOptions<${TData}, ${TError}, ${TData}>({\n ${enabledText}\n queryKey,\n queryFn: async ({ signal }) => {\n return ${clientName}(${addToValueCalls(clientCallStr)})\n },\n })\n`}\n </Function>\n </File.Source>\n )\n}\n\n/**\n * Wraps parameter names with `toValue()` in the client call string,\n * except for 'config'-related params (which are already plain objects).\n *\n * Handles both inline params (`petId, config`) and object shorthand\n * params (`{ petId }, config`) by expanding to `{ petId: toValue(petId) }`.\n */\nfunction addToValueCalls(callStr: string): string {\n // Step 1: Transform shorthand object params like { petId } → { petId: toValue(petId) }\n let result = callStr.replace(/\\{\\s*([\\w,\\s]+)\\s*\\}(?=\\s*,)/g, (match, inner: string) => {\n // Only transform simple shorthand (no colons, no spread)\n if (inner.includes(':') || inner.includes('...')) return match\n const keys = inner\n .split(',')\n .map((k: string) => k.trim())\n .filter(Boolean)\n const wrapped = keys.map((k: string) => `${k}: toValue(${k})`).join(', ')\n return `{ ${wrapped} }`\n })\n\n // Step 2: Handle standalone identifiers like `data, params`\n result = result.replace(/(?<![{.:?])\\b(\\w+)\\b(?=\\s*,)/g, (match, name: string) => {\n if (name === 'config' || name === 'signal' || name === 'undefined') return match\n if (match.includes('toValue(')) return match\n return `toValue(${name})`\n })\n\n return result\n}\n","import { ast } from '@kubb/core'\nimport type { ResolverTs } from '@kubb/plugin-ts'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { Infinite, PluginVueQuery } from '../types.ts'\nimport { getComments, resolveErrorNames, wrapWithMaybeRefOrGetter } from '../utils.ts'\nimport { buildQueryKeyParamsNode } from './QueryKey.tsx'\nimport { getQueryOptionsParams } from './QueryOptions.tsx'\n\ntype Props = {\n name: string\n queryOptionsName: string\n queryKeyName: string\n queryKeyTypeName: string\n node: ast.OperationNode\n tsResolver: ResolverTs\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n initialPageParam: Infinite['initialPageParam']\n queryParam?: Infinite['queryParam']\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\nconst callPrinter = functionPrinter({ mode: 'call' })\n\nfunction buildInfiniteQueryParamsNode(\n node: ast.OperationNode,\n options: {\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n resolver: ResolverTs\n },\n): ast.FunctionParametersNode {\n const { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver } = options\n const responseName = resolver.resolveResponseName(node)\n const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null\n const errorNames = resolveErrorNames(node, resolver)\n\n const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n\n const optionsParam = ast.createFunctionParameter({\n name: 'options',\n type: ast.createParamsType({\n variant: 'reference',\n name: `{\n query?: Partial<UseInfiniteQueryOptions<${[TData, TError, 'TQueryData', 'TQueryKey', 'TQueryData'].join(', ')}>> & { client?: QueryClient },\n client?: ${requestName ? `Partial<RequestConfig<${requestName}>> & { client?: Client }` : 'Partial<RequestConfig> & { client?: Client }'}\n}`,\n }),\n default: '{}',\n })\n\n const baseParams = ast.createOperationParams(node, {\n paramsType,\n pathParamsType: paramsType === 'object' ? 'object' : pathParamsType === 'object' ? 'object' : 'inline',\n paramsCasing,\n resolver,\n extraParams: [optionsParam],\n })\n\n return wrapWithMaybeRefOrGetter(baseParams, (name) => name === 'options')\n}\n\nexport function InfiniteQuery({\n name,\n queryKeyTypeName,\n queryOptionsName,\n queryKeyName,\n paramsType,\n paramsCasing,\n pathParamsType,\n dataReturnType,\n node,\n tsResolver,\n}: Props): KubbReactNode {\n const responseName = tsResolver.resolveResponseName(node)\n const errorNames = resolveErrorNames(node, tsResolver)\n\n const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n const returnType = `UseInfiniteQueryReturnType<${['TData', TError].join(', ')}> & { queryKey: TQueryKey }`\n const generics = [`TData = InfiniteData<${TData}>`, `TQueryData = ${TData}`, `TQueryKey extends QueryKey = ${queryKeyTypeName}`]\n\n const queryKeyParamsNode = buildQueryKeyParamsNode(node, { pathParamsType, paramsCasing, resolver: tsResolver })\n const queryKeyParamsCall = callPrinter.print(queryKeyParamsNode) ?? ''\n\n const queryOptionsParamsNode = getQueryOptionsParams(node, { paramsType, paramsCasing, pathParamsType, resolver: tsResolver })\n const queryOptionsParamsCall = callPrinter.print(queryOptionsParamsNode) ?? ''\n\n const paramsNode = buildInfiniteQueryParamsNode(node, { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver: tsResolver })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function name={name} export generics={generics.join(', ')} params={paramsSignature} JSDoc={{ comments: getComments(node) }}>\n {`\n const { query: queryConfig = {}, client: config = {} } = options ?? {}\n const { client: queryClient, ...resolvedOptions } = queryConfig\n const queryKey = (resolvedOptions && 'queryKey' in resolvedOptions ? toValue(resolvedOptions.queryKey) : undefined) ?? ${queryKeyName}(${queryKeyParamsCall})\n\n const query = useInfiniteQuery({\n ...${queryOptionsName}(${queryOptionsParamsCall}),\n ...resolvedOptions,\n queryKey\n } as unknown as UseInfiniteQueryOptions<${TData}, ${TError}, ${TData}, TQueryKey, ${TData}>, toValue(queryClient)) as ${returnType}\n\n query.queryKey = queryKey as TQueryKey\n\n return query\n `}\n </Function>\n </File.Source>\n )\n}\n","import { getOperationParameters } from '@internals/shared'\nimport { getNestedAccessor } from '@internals/utils'\nimport type { ast } from '@kubb/core'\nimport type { ResolverTs } from '@kubb/plugin-ts'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { Infinite, PluginVueQuery } from '../types.ts'\nimport { resolveErrorNames } from '../utils.ts'\nimport { buildQueryKeyParamsNode } from './QueryKey.tsx'\nimport { buildEnabledCheck } from '@internals/tanstack-query'\nimport { getQueryOptionsParams } from './QueryOptions.tsx'\n\ntype Props = {\n name: string\n clientName: string\n queryKeyName: string\n node: ast.OperationNode\n tsResolver: ResolverTs\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n initialPageParam: Infinite['initialPageParam']\n cursorParam: Infinite['cursorParam']\n nextParam: Infinite['nextParam']\n previousParam: Infinite['previousParam']\n queryParam: Infinite['queryParam']\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\nconst callPrinter = functionPrinter({ mode: 'call' })\n\nexport function InfiniteQueryOptions({\n name,\n clientName,\n initialPageParam,\n cursorParam,\n nextParam,\n previousParam,\n node,\n tsResolver,\n paramsCasing,\n paramsType,\n dataReturnType,\n pathParamsType,\n queryParam,\n queryKeyName,\n}: Props): KubbReactNode {\n const responseName = tsResolver.resolveResponseName(node)\n const queryFnDataType = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const errorNames = resolveErrorNames(node, tsResolver)\n const errorType = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n\n const isInitialPageParamDefined = initialPageParam !== undefined && initialPageParam !== null\n const fallbackPageParamType =\n typeof initialPageParam === 'number'\n ? 'number'\n : typeof initialPageParam === 'string'\n ? initialPageParam.includes(' as ')\n ? (() => {\n const parts = initialPageParam.split(' as ')\n return parts[parts.length - 1] ?? 'unknown'\n })()\n : 'string'\n : typeof initialPageParam === 'boolean'\n ? 'boolean'\n : 'unknown'\n\n const rawQueryParams = getOperationParameters(node).query\n const queryParamsTypeName =\n rawQueryParams.length > 0\n ? (() => {\n const groupName = tsResolver.resolveQueryParamsName(node, rawQueryParams[0]!)\n const individualName = tsResolver.resolveParamName(node, rawQueryParams[0]!)\n return groupName !== individualName ? groupName : null\n })()\n : null\n\n const queryParamType = queryParam && queryParamsTypeName ? `${queryParamsTypeName}['${queryParam}']` : null\n const pageParamType = queryParamType ? (isInitialPageParamDefined ? `NonNullable<${queryParamType}>` : queryParamType) : fallbackPageParamType\n\n const paramsNode = getQueryOptionsParams(node, { paramsType, paramsCasing, pathParamsType, resolver: tsResolver })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n const rawParamsCall = callPrinter.print(paramsNode) ?? ''\n const clientCallStr = rawParamsCall.replace(/\\bconfig\\b(?=[^,]*$)/, '{ ...config, signal: config.signal ?? signal }')\n\n const queryKeyParamsNode = buildQueryKeyParamsNode(node, { pathParamsType, paramsCasing, resolver: tsResolver })\n const queryKeyParamsCall = callPrinter.print(queryKeyParamsNode) ?? ''\n\n const enabledSource = buildEnabledCheck(queryKeyParamsNode)\n const enabledText = enabledSource\n ? `enabled: () => ${enabledSource\n .split(' && ')\n .map((n) => `!!toValue(${n.trim()})`)\n .join(' && ')},`\n : ''\n\n const hasNewParams = nextParam != null || previousParam != null\n\n const [getNextPageParamExpr, getPreviousPageParamExpr] = (() => {\n if (hasNewParams) {\n const nextAccessor = nextParam ? getNestedAccessor(nextParam, 'lastPage') : null\n const prevAccessor = previousParam ? getNestedAccessor(previousParam, 'firstPage') : null\n return [\n nextAccessor ? `getNextPageParam: (lastPage) => ${nextAccessor}` : null,\n prevAccessor ? `getPreviousPageParam: (firstPage) => ${prevAccessor}` : null,\n ] as const\n }\n if (cursorParam) {\n return [`getNextPageParam: (lastPage) => lastPage['${cursorParam}']`, `getPreviousPageParam: (firstPage) => firstPage['${cursorParam}']`] as const\n }\n return [\n dataReturnType === 'full'\n ? 'getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage.data) && lastPage.data.length === 0 ? undefined : lastPageParam + 1'\n : 'getNextPageParam: (lastPage, _allPages, lastPageParam) => Array.isArray(lastPage) && lastPage.length === 0 ? undefined : lastPageParam + 1',\n 'getPreviousPageParam: (_firstPage, _allPages, firstPageParam) => firstPageParam <= 1 ? undefined : firstPageParam - 1',\n ] as const\n })()\n\n const queryOptionsArr = [\n `initialPageParam: ${typeof initialPageParam === 'string' ? JSON.stringify(initialPageParam) : initialPageParam}`,\n getNextPageParamExpr,\n getPreviousPageParamExpr,\n ].filter(Boolean)\n\n const infiniteOverrideParams =\n queryParam && queryParamsTypeName\n ? `\n params = {\n ...(params ?? {}),\n ['${queryParam}']: pageParam as unknown as ${queryParamsTypeName}['${queryParam}'],\n } as ${queryParamsTypeName}`\n : ''\n\n if (infiniteOverrideParams) {\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function name={name} export params={paramsSignature}>\n {`\n const queryKey = ${queryKeyName}(${queryKeyParamsCall})\n return infiniteQueryOptions<${queryFnDataType}, ${errorType}, InfiniteData<${queryFnDataType}>, QueryKey, ${pageParamType}>({\n ${enabledText}\n queryKey,\n queryFn: async ({ signal, pageParam }) => {\n ${infiniteOverrideParams}\n return ${clientName}(${addToValueCalls(clientCallStr)})\n },\n ${queryOptionsArr.join(',\\n')}\n })\n`}\n </Function>\n </File.Source>\n )\n }\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function name={name} export params={paramsSignature}>\n {`\n const queryKey = ${queryKeyName}(${queryKeyParamsCall})\n return infiniteQueryOptions<${queryFnDataType}, ${errorType}, InfiniteData<${queryFnDataType}>, QueryKey, ${pageParamType}>({\n ${enabledText}\n queryKey,\n queryFn: async ({ signal }) => {\n return ${clientName}(${addToValueCalls(clientCallStr)})\n },\n ${queryOptionsArr.join(',\\n')}\n })\n`}\n </Function>\n </File.Source>\n )\n}\n\nfunction addToValueCalls(callStr: string): string {\n // Step 1: Transform shorthand object params like { petId } → { petId: toValue(petId) }\n let result = callStr.replace(/\\{\\s*([\\w,\\s]+)\\s*\\}(?=\\s*,)/g, (match, inner: string) => {\n if (inner.includes(':') || inner.includes('...')) return match\n const keys = inner\n .split(',')\n .map((k: string) => k.trim())\n .filter(Boolean)\n const wrapped = keys.map((k: string) => `${k}: toValue(${k})`).join(', ')\n return `{ ${wrapped} }`\n })\n\n // Step 2: Handle standalone identifiers like `data, params`\n result = result.replace(/(?<![{.:?])\\b(\\w+)\\b(?=\\s*,)/g, (match, name: string) => {\n if (name === 'config' || name === 'signal' || name === 'undefined') return match\n if (match.includes('toValue(')) return match\n return `toValue(${name})`\n })\n\n return result\n}\n","import { ast } from '@kubb/core'\nimport type { ResolverTs } from '@kubb/plugin-ts'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { PluginVueQuery } from '../types.ts'\nimport { buildRequestConfigType, getComments, resolveErrorNames, wrapWithMaybeRefOrGetter } from '../utils.ts'\n\ntype Props = {\n name: string\n typeName: string\n clientName: string\n mutationKeyName: string\n node: ast.OperationNode\n tsResolver: ResolverTs\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\nconst callPrinter = functionPrinter({ mode: 'call' })\nconst keysPrinter = functionPrinter({ mode: 'keys' })\n\nfunction createMutationArgParams(\n node: ast.OperationNode,\n options: {\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n resolver: ResolverTs\n },\n): ast.FunctionParametersNode {\n return ast.createOperationParams(node, {\n paramsType: 'inline',\n pathParamsType: 'inline',\n paramsCasing: options.paramsCasing,\n resolver: options.resolver,\n })\n}\n\nfunction buildMutationParamsNode(\n node: ast.OperationNode,\n options: {\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n resolver: ResolverTs\n },\n): ast.FunctionParametersNode {\n const { paramsCasing, dataReturnType, resolver } = options\n const responseName = resolver.resolveResponseName(node)\n const errorNames = resolveErrorNames(node, resolver)\n\n const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n\n const mutationArgParamsNode = createMutationArgParams(node, { paramsCasing, resolver })\n\n const wrappedParamsNode = wrapWithMaybeRefOrGetter(mutationArgParamsNode)\n const TRequestWrapped = wrappedParamsNode.params.length > 0 ? (declarationPrinter.print(wrappedParamsNode) ?? '') : ''\n\n return ast.createFunctionParameters({\n params: [\n ast.createFunctionParameter({\n name: 'options',\n type: ast.createParamsType({\n variant: 'reference',\n name: `{\n mutation?: MutationObserverOptions<${[TData, TError, TRequestWrapped ? `{${TRequestWrapped}}` : 'undefined', 'TContext'].join(', ')}> & { client?: QueryClient },\n client?: ${buildRequestConfigType(node, resolver)},\n}`,\n }),\n default: '{}',\n }),\n ],\n })\n}\n\nexport function Mutation({\n name,\n clientName,\n paramsCasing,\n paramsType,\n pathParamsType,\n dataReturnType,\n node,\n tsResolver,\n mutationKeyName,\n}: Props): KubbReactNode {\n const responseName = tsResolver.resolveResponseName(node)\n const errorNames = resolveErrorNames(node, tsResolver)\n\n const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n\n const mutationArgParamsNode = createMutationArgParams(node, {\n paramsCasing,\n resolver: tsResolver,\n })\n const hasMutationParams = mutationArgParamsNode.params.length > 0\n const TRequest = hasMutationParams ? (declarationPrinter.print(mutationArgParamsNode) ?? '') : ''\n const argKeysStr = hasMutationParams ? (keysPrinter.print(mutationArgParamsNode) ?? '') : ''\n\n const generics = [TData, TError, TRequest ? `{${TRequest}}` : 'undefined', 'TContext'].join(', ')\n\n const mutationKeyParamsNode = ast.createFunctionParameters({ params: [] })\n const mutationKeyParamsCall = callPrinter.print(mutationKeyParamsNode) ?? ''\n\n const clientCallParamsNode = ast.createOperationParams(node, {\n paramsType,\n pathParamsType: paramsType === 'object' ? 'object' : pathParamsType === 'object' ? 'object' : 'inline',\n paramsCasing,\n resolver: tsResolver,\n extraParams: [\n ast.createFunctionParameter({\n name: 'config',\n type: ast.createParamsType({\n variant: 'reference',\n name: buildRequestConfigType(node, tsResolver),\n }),\n default: '{}',\n }),\n ],\n })\n const clientCallStr = callPrinter.print(clientCallParamsNode) ?? ''\n\n const paramsNode = buildMutationParamsNode(node, { paramsCasing, dataReturnType, resolver: tsResolver })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function name={name} export params={paramsSignature} JSDoc={{ comments: getComments(node) }} generics={['TContext']}>\n {`\n const { mutation = {}, client: config = {} } = options ?? {}\n const { client: queryClient, ...mutationOptions } = mutation;\n const mutationKey = mutationOptions?.mutationKey ?? ${mutationKeyName}(${mutationKeyParamsCall})\n\n return useMutation<${generics}>({\n mutationFn: async(${hasMutationParams ? `{ ${argKeysStr} }` : ''}) => {\n return ${clientName}(${clientCallStr})\n },\n mutationKey,\n ...mutationOptions\n }, queryClient)\n `}\n </Function>\n </File.Source>\n )\n}\n","import { ast } from '@kubb/core'\nimport type { ResolverTs } from '@kubb/plugin-ts'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { PluginVueQuery } from '../types.ts'\nimport { getComments, resolveErrorNames, wrapWithMaybeRefOrGetter } from '../utils.ts'\nimport { buildQueryKeyParamsNode } from './QueryKey.tsx'\nimport { getQueryOptionsParams } from './QueryOptions.tsx'\n\ntype Props = {\n name: string\n queryOptionsName: string\n queryKeyName: string\n queryKeyTypeName: string\n node: ast.OperationNode\n tsResolver: ResolverTs\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n}\n\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\nconst callPrinter = functionPrinter({ mode: 'call' })\n\nfunction buildQueryParamsNode(\n node: ast.OperationNode,\n options: {\n paramsType: PluginVueQuery['resolvedOptions']['paramsType']\n paramsCasing: PluginVueQuery['resolvedOptions']['paramsCasing']\n pathParamsType: PluginVueQuery['resolvedOptions']['pathParamsType']\n dataReturnType: PluginVueQuery['resolvedOptions']['client']['dataReturnType']\n resolver: ResolverTs\n },\n): ast.FunctionParametersNode {\n const { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver } = options\n const responseName = resolver.resolveResponseName(node)\n const requestName = node.requestBody?.content?.[0]?.schema ? resolver.resolveDataName(node) : null\n const errorNames = resolveErrorNames(node, resolver)\n\n const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n\n const optionsParam = ast.createFunctionParameter({\n name: 'options',\n type: ast.createParamsType({\n variant: 'reference',\n name: `{\n query?: Partial<UseQueryOptions<${[TData, TError, 'TData', 'TQueryData', 'TQueryKey'].join(', ')}>> & { client?: QueryClient },\n client?: ${requestName ? `Partial<RequestConfig<${requestName}>> & { client?: Client }` : 'Partial<RequestConfig> & { client?: Client }'}\n}`,\n }),\n default: '{}',\n })\n\n // Vue-query wraps operation params with MaybeRefOrGetter\n const baseParams = ast.createOperationParams(node, {\n paramsType,\n pathParamsType: paramsType === 'object' ? 'object' : pathParamsType === 'object' ? 'object' : 'inline',\n paramsCasing,\n resolver,\n extraParams: [optionsParam],\n })\n\n return wrapWithMaybeRefOrGetter(baseParams, (name) => name === 'options')\n}\n\nexport function Query({\n name,\n queryKeyTypeName,\n queryOptionsName,\n queryKeyName,\n paramsType,\n paramsCasing,\n pathParamsType,\n dataReturnType,\n node,\n tsResolver,\n}: Props): KubbReactNode {\n const responseName = tsResolver.resolveResponseName(node)\n const errorNames = resolveErrorNames(node, tsResolver)\n\n const TData = dataReturnType === 'data' ? responseName : `ResponseConfig<${responseName}>`\n const TError = `ResponseErrorConfig<${errorNames.length > 0 ? errorNames.join(' | ') : 'Error'}>`\n const returnType = `UseQueryReturnType<${['TData', TError].join(', ')}> & { queryKey: TQueryKey }`\n const generics = [`TData = ${TData}`, `TQueryData = ${TData}`, `TQueryKey extends QueryKey = ${queryKeyTypeName}`]\n\n const queryKeyParamsNode = buildQueryKeyParamsNode(node, { pathParamsType, paramsCasing, resolver: tsResolver })\n const queryKeyParamsCall = callPrinter.print(queryKeyParamsNode) ?? ''\n\n const queryOptionsParamsNode = getQueryOptionsParams(node, { paramsType, paramsCasing, pathParamsType, resolver: tsResolver })\n const queryOptionsParamsCall = callPrinter.print(queryOptionsParamsNode) ?? ''\n\n const paramsNode = buildQueryParamsNode(node, { paramsType, paramsCasing, pathParamsType, dataReturnType, resolver: tsResolver })\n const paramsSignature = declarationPrinter.print(paramsNode) ?? ''\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function name={name} export generics={generics.join(', ')} params={paramsSignature} JSDoc={{ comments: getComments(node) }}>\n {`\n const { query: queryConfig = {}, client: config = {} } = options ?? {}\n const { client: queryClient, ...resolvedOptions } = queryConfig\n const queryKey = (resolvedOptions && 'queryKey' in resolvedOptions ? toValue(resolvedOptions.queryKey) : undefined) ?? ${queryKeyName}(${queryKeyParamsCall})\n\n const query = useQuery({\n ...${queryOptionsName}(${queryOptionsParamsCall}),\n ...resolvedOptions,\n queryKey\n } as unknown as UseQueryOptions<${TData}, ${TError}, TData, ${TData}, TQueryKey>, toValue(queryClient)) as ${returnType}\n\n query.queryKey = queryKey as TQueryKey\n\n return query\n `}\n </Function>\n </File.Source>\n )\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_components = require("./components-1cEftHJm.cjs");
2
+ const require_components = require("./components-CeZrYaZj.cjs");
3
3
  exports.InfiniteQuery = require_components.InfiniteQuery;
4
4
  exports.InfiniteQueryOptions = require_components.InfiniteQueryOptions;
5
5
  exports.Mutation = require_components.Mutation;
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk--u3MIqq1.js";
2
- import { i as Transformer$1, r as PluginVueQuery, t as Infinite } from "./types-Bkm7bWT3.js";
2
+ import { i as Transformer$1, r as PluginVueQuery, t as Infinite } from "./types-D-LjzI_Q.js";
3
3
  import { ast } from "@kubb/core";
4
4
  import { ResolverTs } from "@kubb/plugin-ts";
5
5
  import { KubbReactNode } from "@kubb/renderer-jsx/types";
@@ -104,7 +104,7 @@ type Props$3 = {
104
104
  node: ast.OperationNode;
105
105
  paramsCasing: 'camelcase' | undefined;
106
106
  pathParamsType: 'object' | 'inline';
107
- transformer: Transformer | undefined;
107
+ transformer: Transformer | null | undefined;
108
108
  };
109
109
  declare function MutationKey({
110
110
  name,
@@ -147,7 +147,7 @@ type Props$1 = {
147
147
  tsResolver: ResolverTs;
148
148
  paramsCasing: 'camelcase' | undefined;
149
149
  pathParamsType: 'object' | 'inline';
150
- transformer: Transformer$1 | undefined;
150
+ transformer: Transformer$1 | null | undefined;
151
151
  };
152
152
  declare function QueryKey({
153
153
  name,
@@ -1,2 +1,2 @@
1
- import { a as QueryOptions, d as MutationKey, i as InfiniteQuery, n as Mutation, o as QueryKey, r as InfiniteQueryOptions, t as Query } from "./components-DTSvTMEo.js";
1
+ import { a as QueryOptions, d as MutationKey, i as InfiniteQuery, n as Mutation, o as QueryKey, r as InfiniteQueryOptions, t as Query } from "./components-CpTXuQiK.js";
2
2
  export { InfiniteQuery, InfiniteQueryOptions, Mutation, MutationKey, Query, QueryKey, QueryOptions };