@orval/query 8.0.0-rc.0 → 8.0.0-rc.2

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.
@@ -21,4 +21,4 @@ declare const builder: ({
21
21
  };
22
22
  //#endregion
23
23
  export { builder, builder as default, generateQuery, generateQueryHeader, getReactQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
24
- //# sourceMappingURL=index.d.ts.map
24
+ //# sourceMappingURL=index.d.mts.map
@@ -1,5 +1,5 @@
1
1
  import { GetterPropType, OutputClient, OutputHttpClient, TEMPLATE_TAG_REGEX, Verbs, camel, compareVersions, generateFormDataAndUrlEncodedFunction, generateMutator, generateMutatorConfig, generateMutatorRequestOptions, generateOptions, generateVerbImports, getIsBodyVerb, getRouteAsArray, isObject, isString, isSyntheticDefaultImportsAllow, jsDoc, mergeDeep, pascal, stringify, toObjectString, upath } from "@orval/core";
2
- import omitBy from "lodash.omitby";
2
+ import { omitBy } from "remeda";
3
3
  import { generateFetchHeader, generateRequestFunction } from "@orval/fetch";
4
4
  import chalk from "chalk";
5
5
 
@@ -260,6 +260,33 @@ const PARAMS_SERIALIZER_DEPENDENCIES = [{
260
260
  }],
261
261
  dependency: "qs"
262
262
  }];
263
+ const SVELTE_QUERY_DEPENDENCIES_V3 = [{
264
+ exports: [
265
+ {
266
+ name: "useQuery",
267
+ values: true
268
+ },
269
+ {
270
+ name: "useInfiniteQuery",
271
+ values: true
272
+ },
273
+ {
274
+ name: "useMutation",
275
+ values: true
276
+ },
277
+ { name: "UseQueryOptions" },
278
+ { name: "UseInfiniteQueryOptions" },
279
+ { name: "UseMutationOptions" },
280
+ { name: "QueryFunction" },
281
+ { name: "MutationFunction" },
282
+ { name: "UseQueryStoreResult" },
283
+ { name: "UseInfiniteQueryStoreResult" },
284
+ { name: "QueryKey" },
285
+ { name: "CreateMutationResult" },
286
+ { name: "InvalidateOptions" }
287
+ ],
288
+ dependency: "@sveltestack/svelte-query"
289
+ }];
263
290
  const SVELTE_QUERY_DEPENDENCIES = [{
264
291
  exports: [
265
292
  {
@@ -290,16 +317,54 @@ const SVELTE_QUERY_DEPENDENCIES = [{
290
317
  ],
291
318
  dependency: "@tanstack/svelte-query"
292
319
  }];
320
+ const isSvelteQueryV3 = (packageJson) => {
321
+ const hasSvelteQuery = packageJson?.dependencies?.["@sveltestack/svelte-query"] ?? packageJson?.devDependencies?.["@sveltestack/svelte-query"] ?? packageJson?.peerDependencies?.["@sveltestack/svelte-query"];
322
+ const hasSvelteQueryV4 = packageJson?.dependencies?.["@tanstack/svelte-query"] ?? packageJson?.devDependencies?.["@tanstack/svelte-query"] ?? packageJson?.peerDependencies?.["@tanstack/svelte-query"];
323
+ return !!hasSvelteQuery && !hasSvelteQueryV4;
324
+ };
293
325
  const isSvelteQueryV6 = (packageJson) => {
294
326
  return isQueryV6(packageJson, "svelte-query");
295
327
  };
296
328
  const getSvelteQueryDependencies = (hasGlobalMutator, hasParamsSerializerOptions, packageJson, httpClient) => {
329
+ const hasSvelteQueryV3 = isSvelteQueryV3(packageJson);
297
330
  return [
298
331
  ...!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS ? AXIOS_DEPENDENCIES : [],
299
332
  ...hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : [],
300
- ...SVELTE_QUERY_DEPENDENCIES
333
+ ...hasSvelteQueryV3 ? SVELTE_QUERY_DEPENDENCIES_V3 : SVELTE_QUERY_DEPENDENCIES
301
334
  ];
302
335
  };
336
+ const REACT_QUERY_DEPENDENCIES_V3 = [{
337
+ exports: [
338
+ {
339
+ name: "useQuery",
340
+ values: true
341
+ },
342
+ {
343
+ name: "useInfiniteQuery",
344
+ values: true
345
+ },
346
+ {
347
+ name: "useMutation",
348
+ values: true
349
+ },
350
+ {
351
+ name: "useQueryClient",
352
+ values: true
353
+ },
354
+ { name: "UseQueryOptions" },
355
+ { name: "UseInfiniteQueryOptions" },
356
+ { name: "UseMutationOptions" },
357
+ { name: "QueryFunction" },
358
+ { name: "MutationFunction" },
359
+ { name: "UseQueryResult" },
360
+ { name: "UseInfiniteQueryResult" },
361
+ { name: "QueryKey" },
362
+ { name: "QueryClient" },
363
+ { name: "UseMutationResult" },
364
+ { name: "InvalidateOptions" }
365
+ ],
366
+ dependency: "react-query"
367
+ }];
303
368
  const REACT_QUERY_DEPENDENCIES = [{
304
369
  exports: [
305
370
  {
@@ -350,14 +415,65 @@ const REACT_QUERY_DEPENDENCIES = [{
350
415
  ],
351
416
  dependency: "@tanstack/react-query"
352
417
  }];
353
- const getReactQueryDependencies = (hasGlobalMutator, hasParamsSerializerOptions, packageJson, httpClient, hasTagsMutator) => {
418
+ const getReactQueryDependencies = (hasGlobalMutator, hasParamsSerializerOptions, packageJson, httpClient, hasTagsMutator, override) => {
419
+ const hasReactQuery = packageJson?.dependencies?.["react-query"] ?? packageJson?.devDependencies?.["react-query"] ?? packageJson?.peerDependencies?.["react-query"];
420
+ const hasReactQueryV4 = packageJson?.dependencies?.["@tanstack/react-query"] ?? packageJson?.devDependencies?.["@tanstack/react-query"] ?? packageJson?.peerDependencies?.["@tanstack/react-query"];
421
+ const useReactQueryV3 = override?.query.version === void 0 ? hasReactQuery && !hasReactQueryV4 : override?.query.version <= 3;
354
422
  return [
355
423
  ...hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : [],
356
424
  ...!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS ? AXIOS_DEPENDENCIES : [],
357
425
  ...hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : [],
358
- ...REACT_QUERY_DEPENDENCIES
426
+ ...useReactQueryV3 ? REACT_QUERY_DEPENDENCIES_V3 : REACT_QUERY_DEPENDENCIES
359
427
  ];
360
428
  };
429
+ const VUE_QUERY_DEPENDENCIES_V3 = [
430
+ {
431
+ exports: [
432
+ {
433
+ name: "useQuery",
434
+ values: true
435
+ },
436
+ {
437
+ name: "useInfiniteQuery",
438
+ values: true
439
+ },
440
+ {
441
+ name: "useMutation",
442
+ values: true
443
+ }
444
+ ],
445
+ dependency: "vue-query"
446
+ },
447
+ {
448
+ exports: [
449
+ { name: "UseQueryOptions" },
450
+ { name: "UseInfiniteQueryOptions" },
451
+ { name: "UseMutationOptions" },
452
+ { name: "QueryFunction" },
453
+ { name: "MutationFunction" },
454
+ { name: "UseQueryResult" },
455
+ { name: "UseInfiniteQueryResult" },
456
+ { name: "QueryKey" },
457
+ { name: "UseMutationReturnType" },
458
+ { name: "InvalidateOptions" }
459
+ ],
460
+ dependency: "vue-query/types"
461
+ },
462
+ {
463
+ exports: [{
464
+ name: "unref",
465
+ values: true
466
+ }, {
467
+ name: "computed",
468
+ values: true
469
+ }],
470
+ dependency: "vue"
471
+ },
472
+ {
473
+ exports: [{ name: "UseQueryReturnType" }],
474
+ dependency: "vue-query/lib/vue/useBaseQuery"
475
+ }
476
+ ];
361
477
  const VUE_QUERY_DEPENDENCIES = [{
362
478
  exports: [
363
479
  {
@@ -401,11 +517,17 @@ const VUE_QUERY_DEPENDENCIES = [{
401
517
  ],
402
518
  dependency: "vue"
403
519
  }];
520
+ const isVueQueryV3 = (packageJson) => {
521
+ const hasVueQuery = packageJson?.dependencies?.["vue-query"] ?? packageJson?.devDependencies?.["vue-query"] ?? packageJson?.peerDependencies?.["vue-query"];
522
+ const hasVueQueryV4 = packageJson?.dependencies?.["@tanstack/vue-query"] ?? packageJson?.devDependencies?.["@tanstack/vue-query"] ?? packageJson?.peerDependencies?.["@tanstack/vue-query"];
523
+ return !!hasVueQuery && !hasVueQueryV4;
524
+ };
404
525
  const getVueQueryDependencies = (hasGlobalMutator, hasParamsSerializerOptions, packageJson, httpClient) => {
526
+ const hasVueQueryV3 = isVueQueryV3(packageJson);
405
527
  return [
406
528
  ...!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS ? AXIOS_DEPENDENCIES : [],
407
529
  ...hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : [],
408
- ...VUE_QUERY_DEPENDENCIES
530
+ ...hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES
409
531
  ];
410
532
  };
411
533
  const isQueryV5 = (packageJson, queryClient) => {
@@ -756,8 +878,8 @@ const generateQueryHook = async ({ queryParams, operationName, body, props: _pro
756
878
  const operationQueryOptions = operations[operationId]?.query;
757
879
  const isExactOptionalPropertyTypes = !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;
758
880
  const queryVersion = override.query.version ?? query?.version;
759
- const hasVueQueryV4 = OutputClient.VUE_QUERY === outputClient;
760
- const hasSvelteQueryV4 = OutputClient.SVELTE_QUERY === outputClient;
881
+ const hasVueQueryV4 = OutputClient.VUE_QUERY === outputClient && (!isVueQueryV3(context.output.packageJson) || queryVersion === 4);
882
+ const hasSvelteQueryV4 = OutputClient.SVELTE_QUERY === outputClient && (!isSvelteQueryV3(context.output.packageJson) || queryVersion === 4);
761
883
  const hasSvelteQueryV6 = OutputClient.SVELTE_QUERY === outputClient && isSvelteQueryV6(context.output.packageJson);
762
884
  const hasQueryV5 = queryVersion === 5 || isQueryV5(context.output.packageJson, outputClient);
763
885
  const hasQueryV5WithDataTagError = queryVersion === 5 || isQueryV5WithDataTagError(context.output.packageJson, outputClient);
@@ -1012,4 +1134,4 @@ var src_default = builder;
1012
1134
 
1013
1135
  //#endregion
1014
1136
  export { builder, src_default as default, generateQuery, generateQueryHeader, getReactQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
1015
- //# sourceMappingURL=index.js.map
1137
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["AXIOS_DEPENDENCIES: GeneratorDependency[]","isVue","generateFetchRequestFunction","getQueryHeader: ClientHeaderBuilder","REACT_DEPENDENCIES: GeneratorDependency[]","PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[]","SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[]","getSvelteQueryDependencies: ClientDependenciesBuilder","REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","REACT_QUERY_DEPENDENCIES: GeneratorDependency[]","getReactQueryDependencies: ClientDependenciesBuilder","VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","VUE_QUERY_DEPENDENCIES: GeneratorDependency[]","getVueQueryDependencies: ClientDependenciesBuilder","type","params","generateQueryHeader: ClientHeaderBuilder","generateQuery: ClientBuilder","dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query',\n ClientDependenciesBuilder\n>","client: ClientBuilder"],"sources":["../src/utils.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["import {\n getIsBodyVerb,\n type GetterProps,\n GetterPropType,\n isObject,\n isString,\n type Mutator,\n type NormalizedMutator,\n type NormalizedQueryOptions,\n OutputClient,\n type OutputClientFunc,\n type QueryOptions,\n TEMPLATE_TAG_REGEX,\n upath,\n Verbs,\n} from '@orval/core';\nimport chalk from 'chalk';\n\nexport const normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n): NormalizedQueryOptions => {\n return {\n ...(queryOptions.usePrefetch ? { usePrefetch: true } : {}),\n ...(queryOptions.useInvalidate ? { useInvalidate: true } : {}),\n ...(queryOptions.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions?.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions?.queryKey),\n }\n : {}),\n ...(queryOptions?.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions?.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(chalk.red(`Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: upath.resolve(workspace, mutator.path),\n default: (mutator.default || !mutator.name) ?? false,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: upath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n verb,\n}: {\n verb: Verbs;\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal && (!getIsBodyVerb(verb) || verb === Verbs.POST);\n","import {\n type ClientHeaderBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterResponse,\n isSyntheticDefaultImportsAllow,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n) => {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output?.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n });\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator?.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(`(\\\\w*):\\\\s?${bodyDefinition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n if (mutator.isHook) {\n const ret = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return useCallback((\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override?.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override?.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return hasSignal ? 'signal?: AbortSignal\\n' : '';\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n if (!mutator) {\n return httpClient === OutputHttpClient.AXIOS\n ? `axios?: AxiosRequestConfig`\n : 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n}) => {\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n if (!hasSignal) {\n return options;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes ? '...(signal ? { signal } : {})' : 'signal'\n }, ...${options} }`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n return httpClient === OutputHttpClient.AXIOS\n ? 'requestOptions, signal'\n : '{ signal, ...requestOptions }';\n }\n\n if (hasSignal) {\n return 'signal';\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n value += options;\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator?.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n return isRequestOptions\n ? mutator\n ? mutator?.hasSecondArg\n ? 'requestOptions'\n : ''\n : options\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n) => {\n if (isVue && httpClient === OutputHttpClient.FETCH && queryProperties) {\n return queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',');\n }\n\n return queryProperties;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n return params.output.httpClient === OutputHttpClient.FETCH\n ? generateFetchHeader(params)\n : '';\n};\n","import {\n camel,\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n compareVersions,\n generateMutator,\n generateVerbImports,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n isObject,\n jsDoc,\n mergeDeep,\n type NormalizedOutputOptions,\n OutputClient,\n type OutputClientFunc,\n OutputHttpClient,\n type PackageJson,\n pascal,\n type QueryOptions,\n stringify,\n toObjectString,\n Verbs,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport {\n AXIOS_DEPENDENCIES,\n generateQueryRequestFunction,\n getHookOptions,\n getHooksOptionImplementation,\n getHttpFunctionQueryProps,\n getMutationRequestArgs,\n getQueryArgumentsRequestType,\n getQueryErrorType,\n getQueryHeader,\n getQueryOptions,\n} from './client';\nimport {\n getHasSignal,\n isVue,\n normalizeQueryOptions,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nconst REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nconst PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'qs',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n ],\n dependency: 'qs',\n },\n];\n\nconst SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n {\n name: 'UseInfiniteQueryOptions',\n },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryStoreResult' },\n { name: 'UseInfiniteQueryStoreResult' },\n { name: 'QueryKey' },\n { name: 'CreateMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@sveltestack/svelte-query',\n },\n];\nconst SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'createQuery', values: true },\n { name: 'createInfiniteQuery', values: true },\n { name: 'createMutation', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'CreateMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/svelte-query',\n },\n];\n\nconst isSvelteQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasSvelteQuery =\n packageJson?.dependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.devDependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.peerDependencies?.['@sveltestack/svelte-query'];\n const hasSvelteQueryV4 =\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query'];\n\n return !!hasSvelteQuery && !hasSvelteQueryV4;\n};\n\nconst isSvelteQueryV6 = (packageJson: PackageJson | undefined) => {\n return isQueryV6(packageJson, 'svelte-query');\n};\n\nexport const getSvelteQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasSvelteQueryV3 = isSvelteQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasSvelteQueryV3\n ? SVELTE_QUERY_DEPENDENCIES_V3\n : SVELTE_QUERY_DEPENDENCIES),\n ];\n};\n\nconst REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'UseMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'react-query',\n },\n];\nconst REACT_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useSuspenseQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useSuspenseInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'DefinedInitialDataOptions' },\n { name: 'UndefinedInitialDataOptions' },\n { name: 'UseSuspenseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseSuspenseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'DefinedUseQueryResult' },\n { name: 'UseSuspenseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'DefinedUseInfiniteQueryResult' },\n { name: 'UseSuspenseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'InfiniteData' },\n { name: 'UseMutationResult' },\n { name: 'DataTag' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/react-query',\n },\n];\n\nexport const getReactQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient,\n hasTagsMutator,\n override,\n) => {\n const hasReactQuery =\n packageJson?.dependencies?.['react-query'] ??\n packageJson?.devDependencies?.['react-query'] ??\n packageJson?.peerDependencies?.['react-query'];\n const hasReactQueryV4 =\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query'];\n\n const useReactQueryV3 =\n override?.query.version === undefined\n ? hasReactQuery && !hasReactQueryV4\n : override?.query.version <= 3;\n\n return [\n ...(hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : []),\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(useReactQueryV3\n ? REACT_QUERY_DEPENDENCIES_V3\n : REACT_QUERY_DEPENDENCIES),\n ];\n};\n\nconst VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n ],\n dependency: 'vue-query',\n },\n {\n exports: [\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'UseMutationReturnType' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'vue-query/types',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n {\n exports: [{ name: 'UseQueryReturnType' }],\n dependency: 'vue-query/lib/vue/useBaseQuery',\n },\n];\n\nconst VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'UseQueryReturnType' },\n { name: 'UseInfiniteQueryReturnType' },\n { name: 'InfiniteData' },\n { name: 'UseMutationReturnType' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/vue-query',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'MaybeRef' },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n];\n\nconst isVueQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasVueQuery =\n packageJson?.dependencies?.['vue-query'] ??\n packageJson?.devDependencies?.['vue-query'] ??\n packageJson?.peerDependencies?.['vue-query'];\n const hasVueQueryV4 =\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query'];\n\n return !!hasVueQuery && !hasVueQueryV4;\n};\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasVueQueryV3 = isVueQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),\n ];\n};\n\nconst isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.0.0');\n};\n\nconst isQueryV6 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nconst isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.62.0');\n};\n\nconst isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.80.0');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n return (\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query']\n );\n }\n case 'svelte-query': {\n return (\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query']\n );\n }\n case 'vue-query': {\n return (\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query']\n );\n }\n }\n};\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nconst QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nconst generateQueryOptions = ({\n params,\n options,\n type,\n outputClient,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n outputClient: OutputClient | OutputClientFunc;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n (type !== QueryType.INFINITE ||\n type !== QueryType.SUSPENSE_INFINITE) &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n return `${\n !isObject(options) || !options.hasOwnProperty('enabled')\n ? isVue(outputClient)\n ? `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`\n : `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : ''\n }${queryConfig} ...queryOptions`;\n};\n\nconst isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nconst getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n}) => {\n const isMutatorHook = mutator?.isHook;\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n const optionType = `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }>`;\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n return `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n\nconst generateQueryArguments = ({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n}: {\n operationName: string;\n definitions: string;\n mutator?: GeneratorMutator;\n isRequestOptions: boolean;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n initialData?: 'defined' | 'undefined';\n httpClient: OutputHttpClient;\n}) => {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(httpClient, mutator);\n\n const isQueryRequired = initialData === 'defined';\n return `options${isQueryRequired ? '' : '?'}: { ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${requestType}}\\n`;\n};\n\nconst generateQueryReturnType = ({\n outputClient,\n type,\n isMutatorHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n type: QueryType;\n isMutatorHook?: boolean;\n operationName: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n isInitialDataDefined?: boolean;\n}) => {\n switch (outputClient) {\n case OutputClient.SVELTE_QUERY: {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey} }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.VUE_QUERY: {\n if (!hasVueQueryV4) {\n return ` UseQueryReturnType<TData, TError, Use${pascal(\n type,\n )}Result<TData, TError>> & { queryKey: QueryKey} }`;\n }\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `UseQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n\n return `UseInfiniteQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.REACT_QUERY:\n default: {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n }\n};\n\nconst generateMutatorReturnType = ({\n outputClient,\n dataType,\n variableType,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n dataType: unknown;\n variableType: unknown;\n}) => {\n if (outputClient === OutputClient.REACT_QUERY) {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.SVELTE_QUERY) {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.VUE_QUERY) {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n return '';\n};\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n if (hasQueryParam) {\n if (hasSignal) {\n return '{ signal, pageParam }';\n }\n\n return '{ pageParam }';\n }\n\n return '{ signal }';\n};\n\nconst generatePrefetch = ({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n doc,\n queryProps,\n dataType,\n errorType,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n hasSvelteQueryV6,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: QueryType;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n doc?: string;\n queryProps: string;\n dataType: string;\n errorType: string;\n queryArguments: string;\n queryOptionsVarName: string;\n queryOptionsFnName: string;\n queryProperties: string;\n isRequestOptions: boolean;\n hasSvelteQueryV6: boolean;\n}) => {\n const shouldGeneratePrefetch =\n usePrefetch &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n\n if (!shouldGeneratePrefetch) {\n return '';\n }\n\n const prefetchType =\n type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY\n ? 'query'\n : 'infinite-query';\n const prefetchFnName = camel(`prefetch-${prefetchType}`);\n\n if (mutator?.isHook) {\n const prefetchVarName = camel(\n `use-prefetch-${operationName}-${prefetchType}`,\n );\n return `${doc}export const ${prefetchVarName} = <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n const queryClient = useQueryClient();\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n return useCallback(async (): Promise<QueryClient> => {\n await queryClient.${prefetchFnName}(${queryOptionsVarName})\n return queryClient;\n },[queryClient, ${queryOptionsVarName}]);\n};\\n`;\n } else {\n const prefetchVarName = camel(`prefetch-${operationName}-${prefetchType}`);\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n await queryClient.${prefetchFnName}(${\n hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName} })`\n : queryOptionsVarName\n });\n\n return queryClient;\n}\\n`;\n }\n};\n\nconst generateQueryImplementation = ({\n queryOption: { name, queryParam, options, type, queryKeyFnName },\n operationName,\n queryProperties,\n queryKeyProperties,\n queryParams,\n params,\n props,\n mutator,\n queryOptionsMutator,\n queryKeyMutator,\n isRequestOptions,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: QueryType;\n queryParam?: string;\n queryKeyFnName: string;\n };\n isRequestOptions: boolean;\n operationName: string;\n queryProperties: string;\n queryKeyProperties: string;\n params: GetterParams;\n props: GetterProps;\n response: GetterResponse;\n queryParams?: GetterQueryParam;\n mutator?: GeneratorMutator;\n queryOptionsMutator?: GeneratorMutator;\n queryKeyMutator?: GeneratorMutator;\n outputClient: OutputClient | OutputClientFunc;\n httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n route: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n}) => {\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(`^${prop.name}\\\\s*\\\\?:`);\n\n if (!regex.test(prop.definition)) {\n return prop;\n }\n\n const definitionWithUndefined = prop.definition.replace(\n regex,\n `${prop.name}: undefined | `,\n );\n return {\n ...prop,\n definition: definitionWithUndefined,\n };\n }),\n 'definition',\n );\n const queryProps = toObjectString(props, 'implementation');\n\n const hasInfiniteQueryParam = queryParam && queryParams?.schema.name;\n\n const httpFunctionProps = queryParam\n ? props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.name === 'params'\n ? `{...${\n isVue(outputClient) ? `unref(params)` : 'params'\n }, '${queryParam}': pageParam || ${\n isVue(outputClient)\n ? `unref(params)?.['${queryParam}']`\n : `params?.['${queryParam}']`\n }}`\n : param.name;\n })\n .join(',')\n : getHttpFunctionQueryProps(\n isVue(outputClient),\n httpClient,\n queryProperties,\n );\n\n const definedInitialDataReturnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n });\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const definedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n });\n const undefinedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n });\n const queryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n httpClient,\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n outputClient,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams?.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${\n hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? '\n }${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${\n isVue(outputClient)\n ? vueUnRefParams(\n props.filter(\n (prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS,\n ),\n )\n : ''\n }\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n } as ${queryOptionFnReturnType} ${\n isVue(outputClient)\n ? ''\n : `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n }\n}`;\n\n const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use';\n const optionalQueryClientArgument = hasQueryV5\n ? ', queryClient?: QueryClient'\n : '';\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetch = generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n hasSvelteQueryV6,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const shouldGenerateInvalidate =\n useInvalidate &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n const invalidateFnName = camel(`invalidate-${operationName}`);\n\n return `\n${queryOptionsFn}\n\nexport type ${pascal(\n name,\n )}QueryResult = NonNullable<Awaited<ReturnType<${dataType}>>>\nexport type ${pascal(name)}QueryError = ${errorType}\n\n${hasQueryV5 && OutputClient.REACT_QUERY === outputClient ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryProps} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n const ${queryResultVarName} = ${camel(`${operationPrefix}-${type}`)}(${\n hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`\n }) as ${returnType};\n\n ${queryResultVarName}.queryKey = ${\n isVue(outputClient) ? `unref(${queryOptionsVarName})` : queryOptionsVarName\n }.queryKey ${isVue(outputClient) ? `as ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'}` : ''};\n\n return ${queryResultVarName};\n}\\n\n${prefetch}\n${\n shouldGenerateInvalidate\n ? `${doc}export const ${invalidateFnName} = async (\\n queryClient: QueryClient, ${queryProps} options?: InvalidateOptions\\n ): Promise<QueryClient> => {\n\n await queryClient.invalidateQueries({ queryKey: ${queryKeyFnName}(${queryKeyProperties}) }, options);\n\n return queryClient;\n}\\n`\n : ''\n}\n`;\n};\n\nconst generateQueryHook = async (\n {\n queryParams,\n operationName,\n body,\n props: _props,\n verb,\n params,\n override,\n mutator,\n response,\n operationId,\n summary,\n deprecated,\n }: GeneratorVerbOptions,\n { route, override: { operations = {} }, context, output }: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n) => {\n let props = _props;\n if (isVue(outputClient)) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n const query = override?.query;\n const isRequestOptions = override?.requestOptions !== false;\n const operationQueryOptions = operations[operationId]?.query;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n const queryVersion = override.query.version ?? query?.version;\n\n const hasVueQueryV4 =\n OutputClient.VUE_QUERY === outputClient &&\n (!isVueQueryV3(context.output.packageJson) || queryVersion === 4);\n const hasSvelteQueryV4 =\n OutputClient.SVELTE_QUERY === outputClient &&\n (!isSvelteQueryV3(context.output.packageJson) || queryVersion === 4);\n const hasSvelteQueryV6 =\n OutputClient.SVELTE_QUERY === outputClient &&\n isSvelteQueryV6(context.output.packageJson);\n\n const hasQueryV5 =\n queryVersion === 5 ||\n isQueryV5(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const hasQueryV5WithDataTagError =\n queryVersion === 5 ||\n isQueryV5WithDataTagError(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const httpClient = context.output.httpClient;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = !!(\n operationQueryOptions &&\n (operationQueryOptions.useQuery ||\n operationQueryOptions.useSuspenseQuery ||\n operationQueryOptions.useInfinite ||\n operationQueryOptions.useSuspenseInfiniteQuery)\n );\n\n let isQuery =\n (Verbs.GET === verb &&\n (override.query.useQuery ||\n override.query.useSuspenseQuery ||\n override.query.useInfinite ||\n override.query.useSuspenseInfiniteQuery)) ||\n hasOperationQueryOption;\n\n let isMutation = override.query.useMutation && verb !== Verbs.GET;\n\n if (operationQueryOptions?.useMutation !== undefined) {\n isMutation = operationQueryOptions.useMutation;\n }\n\n // If both query and mutation are true for a non-GET operation, prioritize query\n if (verb !== Verbs.GET && isQuery) {\n isMutation = false;\n }\n\n // If both query and mutation are true for a GET operation, prioritize mutation\n if (verb === Verbs.GET && isMutation) {\n isQuery = false;\n }\n\n if (isQuery) {\n const queryKeyMutator = query.queryKey\n ? await generateMutator({\n output,\n mutator: query.queryKey,\n name: `${operationName}QueryKey`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryOptionsMutator = query.queryOptions\n ? await generateMutator({\n output,\n mutator: query.queryOptions,\n name: `${operationName}QueryOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryProperties = props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queries = [\n ...(query?.useInfinite || operationQueryOptions?.useInfinite\n ? [\n {\n name: camel(`${operationName}-infinite`),\n options: query?.options,\n type: QueryType.INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ...(query?.useQuery || operationQueryOptions?.useQuery\n ? [\n {\n name: operationName,\n options: query?.options,\n type: QueryType.QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseQuery || operationQueryOptions?.useSuspenseQuery\n ? [\n {\n name: camel(`${operationName}-suspense`),\n options: query?.options,\n type: QueryType.SUSPENSE_QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseInfiniteQuery ||\n operationQueryOptions?.useSuspenseInfiniteQuery\n ? [\n {\n name: camel(`${operationName}-suspense-infinite`),\n options: query?.options,\n type: QueryType.SUSPENSE_INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ];\n\n // Convert \"param: Type\" to \"param?: Type\" for queryKey functions\n // to enable cache invalidation without type assertion\n const makeParamsOptional = (params: string) => {\n if (!params) return '';\n // Handle parameters with default values: \"param?: Type = value\" -> \"param: Type = value\" (remove optional marker)\n // Handle regular parameters: \"param: Type\" -> \"param?: Type\"\n return params.replaceAll(\n /(\\w+)(\\?)?:\\s*([^=,}]*?)\\s*(=\\s*[^,}]*)?([,}]|$)/g,\n (match, paramName, optionalMarker, type, defaultValue, suffix) => {\n // If parameter has a default value, don't add '?' (it's already effectively optional)\n if (defaultValue) {\n return `${paramName}: ${type.trim()}${defaultValue}${suffix}`;\n }\n // Otherwise, make it optional\n return `${paramName}?: ${type.trim()}${suffix}`;\n },\n );\n };\n\n const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n implementation += `\n${\n queryKeyMutator\n ? ''\n : uniqueQueryOptionsByKeys.reduce((acc, queryOption) => {\n const queryKeyProps = makeParamsOptional(\n toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ),\n );\n\n const routeString =\n isVue(outputClient) || override.query.shouldSplitQueryKey\n ? getRouteAsArray(route) // Note: this is required for reactivity to work, we will lose it if route params are converted into string, only as array they will be tracked // TODO: add tests for this\n : `\\`${route}\\``;\n\n // Use operation ID as query key if enabled, otherwise use route string\n const queryKeyIdentifier = override.query.useOperationIdAsQueryKey\n ? `\"${operationName}\"`\n : routeString;\n\n // Note: do not unref() params in Vue - this will make key lose reactivity\n const queryKeyFn = `\n${override.query.shouldExportQueryKey ? 'export ' : ''}const ${queryOption.queryKeyFnName} = (${queryKeyProps}) => {\n return [\n ${[\n queryOption.type === QueryType.INFINITE ||\n queryOption.type === QueryType.SUSPENSE_INFINITE\n ? `'infinite'`\n : '',\n queryKeyIdentifier,\n queryParams ? '...(params ? [params]: [])' : '',\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n return acc + queryKeyFn;\n }, '')\n}`;\n\n implementation += `\n ${queries.reduce((acc, queryOption) => {\n return (\n acc +\n generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n }),\n queryOptionsMutator,\n queryKeyMutator,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n })\n );\n }, '')}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n if (isMutation) {\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n });\n\n const mutationArguments = generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n httpClient,\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const mutationOptionsVarName = isRequestOptions\n ? 'mutationOptions'\n : 'options';\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n );\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments}): ${mutationOptionFnReturnType} => {\n\n${hooksOptionImplementation}\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook()`\n : ''\n }\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<${dataType}>>, ${\n definitions ? `{${definitions}}` : 'void'\n }> = (${properties ? 'props' : ''}) => {\n ${properties ? `const {${properties}} = props ?? {};` : ''}\n\n return ${operationName}(${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator)})\n }\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use';\n const optionalQueryClientArgument = hasQueryV5\n ? ', queryClient?: QueryClient'\n : '';\n\n implementation += `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${generateMutatorReturnType(\n {\n outputClient,\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n },\n )} => {\n\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n });\n\n return ${operationPrefix}Mutation(${\n hasSvelteQueryV6\n ? `() => ({ ...${mutationOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${mutationOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`\n });\n }\n `;\n\n mutators = mutationOptionsMutator\n ? [...(mutators ?? []), mutationOptionsMutator]\n : mutators;\n }\n\n return {\n implementation,\n mutators,\n };\n};\n\nexport const generateQueryHeader: ClientHeaderBuilder = (params) => {\n return `${\n params.hasAwaitedType\n ? ''\n : `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n }\n${\n params.isRequestOptions && params.isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n${getQueryHeader(params)}\n`;\n};\n\nexport const generateQuery: ClientBuilder = async (\n verbOptions,\n options,\n outputClient,\n) => {\n const imports = generateVerbImports(verbOptions);\n const functionImplementation = generateQueryRequestFunction(\n verbOptions,\n options,\n isVue(outputClient),\n );\n const { implementation: hookImplementation, mutators } =\n await generateQueryHook(verbOptions, options, outputClient);\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports,\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?: 'react-query' | 'vue-query' | 'svelte-query';\n options?: QueryOptions;\n output?: NormalizedOutputOptions;\n } = {}) =>\n () => {\n const client: ClientBuilder = (verbOptions, options, outputClient) => {\n if (\n options.override.useNamedParameters &&\n (type === 'vue-query' || outputClient === 'vue-query')\n ) {\n throw new Error(\n `vue-query client does not support named parameters, and had broken reactivity previously, please set useNamedParameters to false; See for context: https://github.com/orval-labs/orval/pull/931#issuecomment-1752355686`,\n );\n }\n\n if (queryOptions) {\n const normalizedQueryOptions = normalizeQueryOptions(\n queryOptions,\n options.context.workspace,\n );\n verbOptions.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n options.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n }\n return generateQuery(verbOptions, options, outputClient, output);\n };\n\n return {\n client: client,\n header: generateQueryHeader,\n dependencies: dependenciesBuilder[type],\n };\n };\n\nexport default builder;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,38 +1,38 @@
1
1
  {
2
2
  "name": "@orval/query",
3
- "version": "8.0.0-rc.0",
3
+ "version": "8.0.0-rc.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  "import": {
8
- "types": "./dist/index.d.ts",
9
- "import": "./dist/index.js"
8
+ "types": "./dist/index.d.mts",
9
+ "import": "./dist/index.mjs"
10
10
  }
11
11
  },
12
12
  "files": [
13
13
  "dist",
14
- "!dist/**/*.d.ts.map"
14
+ "!dist/**/*.d.ts.map",
15
+ "!dist/**/*.d.mts.map"
15
16
  ],
16
17
  "scripts": {
17
- "build": "tsdown --config-loader unconfig",
18
- "dev": "tsdown --config-loader unconfig --watch src",
18
+ "build": "tsdown --config-loader unrun",
19
+ "dev": "tsdown --config-loader unrun --watch src",
19
20
  "lint": "eslint .",
20
21
  "test": "vitest",
21
22
  "clean": "rimraf .turbo dist",
22
23
  "nuke": "rimraf .turbo dist node_modules"
23
24
  },
24
25
  "dependencies": {
25
- "@orval/core": "8.0.0-rc.0",
26
- "@orval/fetch": "8.0.0-rc.0",
26
+ "@orval/core": "8.0.0-rc.2",
27
+ "@orval/fetch": "8.0.0-rc.2",
27
28
  "chalk": "^5.6.2",
28
- "lodash.omitby": "^4.6.0"
29
+ "remeda": "^2.32.0"
29
30
  },
30
31
  "devDependencies": {
31
- "@types/lodash.omitby": "^4.6.9",
32
- "eslint": "^9.38.0",
33
- "rimraf": "^6.0.1",
34
- "tsdown": "^0.15.9",
35
- "vitest": "^4.0.3"
32
+ "eslint": "9.39.1",
33
+ "rimraf": "6.1.0",
34
+ "tsdown": "0.16.4",
35
+ "vitest": "4.0.8"
36
36
  },
37
- "stableVersion": "7.15.0"
37
+ "stableVersion": "8.0.0-rc.1"
38
38
  }
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["AXIOS_DEPENDENCIES: GeneratorDependency[]","isVue","generateFetchRequestFunction","getQueryHeader: ClientHeaderBuilder","REACT_DEPENDENCIES: GeneratorDependency[]","PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[]","SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[]","getSvelteQueryDependencies: ClientDependenciesBuilder","REACT_QUERY_DEPENDENCIES: GeneratorDependency[]","getReactQueryDependencies: ClientDependenciesBuilder","VUE_QUERY_DEPENDENCIES: GeneratorDependency[]","getVueQueryDependencies: ClientDependenciesBuilder","type","params","generateQueryHeader: ClientHeaderBuilder","generateQuery: ClientBuilder","dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query',\n ClientDependenciesBuilder\n>","client: ClientBuilder"],"sources":["../src/utils.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["import {\n getIsBodyVerb,\n type GetterProps,\n GetterPropType,\n isObject,\n isString,\n type Mutator,\n type NormalizedMutator,\n type NormalizedQueryOptions,\n OutputClient,\n type OutputClientFunc,\n type QueryOptions,\n TEMPLATE_TAG_REGEX,\n upath,\n Verbs,\n} from '@orval/core';\nimport chalk from 'chalk';\n\nexport const normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n): NormalizedQueryOptions => {\n return {\n ...(queryOptions.usePrefetch ? { usePrefetch: true } : {}),\n ...(queryOptions.useInvalidate ? { useInvalidate: true } : {}),\n ...(queryOptions.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions?.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions?.queryKey),\n }\n : {}),\n ...(queryOptions?.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions?.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(chalk.red(`Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: upath.resolve(workspace, mutator.path),\n default: (mutator.default || !mutator.name) ?? false,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: upath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n verb,\n}: {\n verb: Verbs;\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal && (!getIsBodyVerb(verb) || verb === Verbs.POST);\n","import {\n type ClientHeaderBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterResponse,\n isSyntheticDefaultImportsAllow,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n) => {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output?.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n });\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator?.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(`(\\\\w*):\\\\s?${bodyDefinition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n if (mutator.isHook) {\n const ret = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return useCallback((\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override?.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override?.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return hasSignal ? 'signal?: AbortSignal\\n' : '';\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n if (!mutator) {\n return httpClient === OutputHttpClient.AXIOS\n ? `axios?: AxiosRequestConfig`\n : 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n}) => {\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n if (!hasSignal) {\n return options;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes ? '...(signal ? { signal } : {})' : 'signal'\n }, ...${options} }`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n return httpClient === OutputHttpClient.AXIOS\n ? 'requestOptions, signal'\n : '{ signal, ...requestOptions }';\n }\n\n if (hasSignal) {\n return 'signal';\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n value += options;\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator?.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n return isRequestOptions\n ? mutator\n ? mutator?.hasSecondArg\n ? 'requestOptions'\n : ''\n : options\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n) => {\n if (isVue && httpClient === OutputHttpClient.FETCH && queryProperties) {\n return queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',');\n }\n\n return queryProperties;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n return params.output.httpClient === OutputHttpClient.FETCH\n ? generateFetchHeader(params)\n : '';\n};\n","import {\n camel,\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n compareVersions,\n generateMutator,\n generateVerbImports,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n isObject,\n jsDoc,\n mergeDeep,\n type NormalizedOutputOptions,\n OutputClient,\n type OutputClientFunc,\n OutputHttpClient,\n type PackageJson,\n pascal,\n type QueryOptions,\n stringify,\n toObjectString,\n Verbs,\n} from '@orval/core';\nimport omitBy from 'lodash.omitby';\n\nimport {\n AXIOS_DEPENDENCIES,\n generateQueryRequestFunction,\n getHookOptions,\n getHooksOptionImplementation,\n getHttpFunctionQueryProps,\n getMutationRequestArgs,\n getQueryArgumentsRequestType,\n getQueryErrorType,\n getQueryHeader,\n getQueryOptions,\n} from './client';\nimport {\n getHasSignal,\n isVue,\n normalizeQueryOptions,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nconst REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nconst PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'qs',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n ],\n dependency: 'qs',\n },\n];\n\nconst SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'createQuery', values: true },\n { name: 'createInfiniteQuery', values: true },\n { name: 'createMutation', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'CreateMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/svelte-query',\n },\n];\n\nconst isSvelteQueryV6 = (packageJson: PackageJson | undefined) => {\n return isQueryV6(packageJson, 'svelte-query');\n};\n\nexport const getSvelteQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...SVELTE_QUERY_DEPENDENCIES,\n ];\n};\n\nconst REACT_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useSuspenseQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useSuspenseInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'DefinedInitialDataOptions' },\n { name: 'UndefinedInitialDataOptions' },\n { name: 'UseSuspenseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseSuspenseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'DefinedUseQueryResult' },\n { name: 'UseSuspenseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'DefinedUseInfiniteQueryResult' },\n { name: 'UseSuspenseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'InfiniteData' },\n { name: 'UseMutationResult' },\n { name: 'DataTag' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/react-query',\n },\n];\n\nexport const getReactQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient,\n hasTagsMutator,\n) => {\n return [\n ...(hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : []),\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...REACT_QUERY_DEPENDENCIES,\n ];\n};\n\nconst VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'UseQueryReturnType' },\n { name: 'UseInfiniteQueryReturnType' },\n { name: 'InfiniteData' },\n { name: 'UseMutationReturnType' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/vue-query',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'MaybeRef' },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n];\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...VUE_QUERY_DEPENDENCIES,\n ];\n};\n\nconst isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.0.0');\n};\n\nconst isQueryV6 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nconst isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.62.0');\n};\n\nconst isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.80.0');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n return (\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query']\n );\n }\n case 'svelte-query': {\n return (\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query']\n );\n }\n case 'vue-query': {\n return (\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query']\n );\n }\n }\n};\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nconst QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nconst generateQueryOptions = ({\n params,\n options,\n type,\n outputClient,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n outputClient: OutputClient | OutputClientFunc;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n (type !== QueryType.INFINITE ||\n type !== QueryType.SUSPENSE_INFINITE) &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n return `${\n !isObject(options) || !options.hasOwnProperty('enabled')\n ? isVue(outputClient)\n ? `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`\n : `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : ''\n }${queryConfig} ...queryOptions`;\n};\n\nconst isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nconst getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n}) => {\n const isMutatorHook = mutator?.isHook;\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n const optionType = `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }>`;\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n return `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n\nconst generateQueryArguments = ({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n}: {\n operationName: string;\n definitions: string;\n mutator?: GeneratorMutator;\n isRequestOptions: boolean;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n initialData?: 'defined' | 'undefined';\n httpClient: OutputHttpClient;\n}) => {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(httpClient, mutator);\n\n const isQueryRequired = initialData === 'defined';\n return `options${isQueryRequired ? '' : '?'}: { ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${requestType}}\\n`;\n};\n\nconst generateQueryReturnType = ({\n outputClient,\n type,\n isMutatorHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n type: QueryType;\n isMutatorHook?: boolean;\n operationName: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n isInitialDataDefined?: boolean;\n}) => {\n switch (outputClient) {\n case OutputClient.SVELTE_QUERY: {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey} }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.VUE_QUERY: {\n if (!hasVueQueryV4) {\n return ` UseQueryReturnType<TData, TError, Use${pascal(\n type,\n )}Result<TData, TError>> & { queryKey: QueryKey} }`;\n }\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `UseQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n\n return `UseInfiniteQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.REACT_QUERY:\n default: {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n }\n};\n\nconst generateMutatorReturnType = ({\n outputClient,\n dataType,\n variableType,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n dataType: unknown;\n variableType: unknown;\n}) => {\n if (outputClient === OutputClient.REACT_QUERY) {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.SVELTE_QUERY) {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.VUE_QUERY) {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n return '';\n};\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n if (hasQueryParam) {\n if (hasSignal) {\n return '{ signal, pageParam }';\n }\n\n return '{ pageParam }';\n }\n\n return '{ signal }';\n};\n\nconst generatePrefetch = ({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n doc,\n queryProps,\n dataType,\n errorType,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n hasSvelteQueryV6,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: QueryType;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n doc?: string;\n queryProps: string;\n dataType: string;\n errorType: string;\n queryArguments: string;\n queryOptionsVarName: string;\n queryOptionsFnName: string;\n queryProperties: string;\n isRequestOptions: boolean;\n hasSvelteQueryV6: boolean;\n}) => {\n const shouldGeneratePrefetch =\n usePrefetch &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n\n if (!shouldGeneratePrefetch) {\n return '';\n }\n\n const prefetchType =\n type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY\n ? 'query'\n : 'infinite-query';\n const prefetchFnName = camel(`prefetch-${prefetchType}`);\n\n if (mutator?.isHook) {\n const prefetchVarName = camel(\n `use-prefetch-${operationName}-${prefetchType}`,\n );\n return `${doc}export const ${prefetchVarName} = <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n const queryClient = useQueryClient();\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n return useCallback(async (): Promise<QueryClient> => {\n await queryClient.${prefetchFnName}(${queryOptionsVarName})\n return queryClient;\n },[queryClient, ${queryOptionsVarName}]);\n};\\n`;\n } else {\n const prefetchVarName = camel(`prefetch-${operationName}-${prefetchType}`);\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n await queryClient.${prefetchFnName}(${\n hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName} })`\n : queryOptionsVarName\n });\n\n return queryClient;\n}\\n`;\n }\n};\n\nconst generateQueryImplementation = ({\n queryOption: { name, queryParam, options, type, queryKeyFnName },\n operationName,\n queryProperties,\n queryKeyProperties,\n queryParams,\n params,\n props,\n mutator,\n queryOptionsMutator,\n queryKeyMutator,\n isRequestOptions,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: QueryType;\n queryParam?: string;\n queryKeyFnName: string;\n };\n isRequestOptions: boolean;\n operationName: string;\n queryProperties: string;\n queryKeyProperties: string;\n params: GetterParams;\n props: GetterProps;\n response: GetterResponse;\n queryParams?: GetterQueryParam;\n mutator?: GeneratorMutator;\n queryOptionsMutator?: GeneratorMutator;\n queryKeyMutator?: GeneratorMutator;\n outputClient: OutputClient | OutputClientFunc;\n httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n route: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n}) => {\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(`^${prop.name}\\\\s*\\\\?:`);\n\n if (!regex.test(prop.definition)) {\n return prop;\n }\n\n const definitionWithUndefined = prop.definition.replace(\n regex,\n `${prop.name}: undefined | `,\n );\n return {\n ...prop,\n definition: definitionWithUndefined,\n };\n }),\n 'definition',\n );\n const queryProps = toObjectString(props, 'implementation');\n\n const hasInfiniteQueryParam = queryParam && queryParams?.schema.name;\n\n const httpFunctionProps = queryParam\n ? props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.name === 'params'\n ? `{...${\n isVue(outputClient) ? `unref(params)` : 'params'\n }, '${queryParam}': pageParam || ${\n isVue(outputClient)\n ? `unref(params)?.['${queryParam}']`\n : `params?.['${queryParam}']`\n }}`\n : param.name;\n })\n .join(',')\n : getHttpFunctionQueryProps(\n isVue(outputClient),\n httpClient,\n queryProperties,\n );\n\n const definedInitialDataReturnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n });\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const definedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n });\n const undefinedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n });\n const queryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n httpClient,\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n outputClient,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams?.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${\n hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? '\n }${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${\n isVue(outputClient)\n ? vueUnRefParams(\n props.filter(\n (prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS,\n ),\n )\n : ''\n }\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n } as ${queryOptionFnReturnType} ${\n isVue(outputClient)\n ? ''\n : `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n }\n}`;\n\n const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use';\n const optionalQueryClientArgument = hasQueryV5\n ? ', queryClient?: QueryClient'\n : '';\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetch = generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n hasSvelteQueryV6,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const shouldGenerateInvalidate =\n useInvalidate &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n const invalidateFnName = camel(`invalidate-${operationName}`);\n\n return `\n${queryOptionsFn}\n\nexport type ${pascal(\n name,\n )}QueryResult = NonNullable<Awaited<ReturnType<${dataType}>>>\nexport type ${pascal(name)}QueryError = ${errorType}\n\n${hasQueryV5 && OutputClient.REACT_QUERY === outputClient ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryProps} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n const ${queryResultVarName} = ${camel(`${operationPrefix}-${type}`)}(${\n hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`\n }) as ${returnType};\n\n ${queryResultVarName}.queryKey = ${\n isVue(outputClient) ? `unref(${queryOptionsVarName})` : queryOptionsVarName\n }.queryKey ${isVue(outputClient) ? `as ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'}` : ''};\n\n return ${queryResultVarName};\n}\\n\n${prefetch}\n${\n shouldGenerateInvalidate\n ? `${doc}export const ${invalidateFnName} = async (\\n queryClient: QueryClient, ${queryProps} options?: InvalidateOptions\\n ): Promise<QueryClient> => {\n\n await queryClient.invalidateQueries({ queryKey: ${queryKeyFnName}(${queryKeyProperties}) }, options);\n\n return queryClient;\n}\\n`\n : ''\n}\n`;\n};\n\nconst generateQueryHook = async (\n {\n queryParams,\n operationName,\n body,\n props: _props,\n verb,\n params,\n override,\n mutator,\n response,\n operationId,\n summary,\n deprecated,\n }: GeneratorVerbOptions,\n { route, override: { operations = {} }, context, output }: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n) => {\n let props = _props;\n if (isVue(outputClient)) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n const query = override?.query;\n const isRequestOptions = override?.requestOptions !== false;\n const operationQueryOptions = operations[operationId]?.query;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n const queryVersion = override.query.version ?? query?.version;\n\n const hasVueQueryV4 = OutputClient.VUE_QUERY === outputClient;\n const hasSvelteQueryV4 = OutputClient.SVELTE_QUERY === outputClient;\n const hasSvelteQueryV6 =\n OutputClient.SVELTE_QUERY === outputClient &&\n isSvelteQueryV6(context.output.packageJson);\n\n const hasQueryV5 =\n queryVersion === 5 ||\n isQueryV5(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const hasQueryV5WithDataTagError =\n queryVersion === 5 ||\n isQueryV5WithDataTagError(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const httpClient = context.output.httpClient;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = !!(\n operationQueryOptions &&\n (operationQueryOptions.useQuery ||\n operationQueryOptions.useSuspenseQuery ||\n operationQueryOptions.useInfinite ||\n operationQueryOptions.useSuspenseInfiniteQuery)\n );\n\n let isQuery =\n (Verbs.GET === verb &&\n (override.query.useQuery ||\n override.query.useSuspenseQuery ||\n override.query.useInfinite ||\n override.query.useSuspenseInfiniteQuery)) ||\n hasOperationQueryOption;\n\n let isMutation = override.query.useMutation && verb !== Verbs.GET;\n\n if (operationQueryOptions?.useMutation !== undefined) {\n isMutation = operationQueryOptions.useMutation;\n }\n\n // If both query and mutation are true for a non-GET operation, prioritize query\n if (verb !== Verbs.GET && isQuery) {\n isMutation = false;\n }\n\n // If both query and mutation are true for a GET operation, prioritize mutation\n if (verb === Verbs.GET && isMutation) {\n isQuery = false;\n }\n\n if (isQuery) {\n const queryKeyMutator = query.queryKey\n ? await generateMutator({\n output,\n mutator: query.queryKey,\n name: `${operationName}QueryKey`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryOptionsMutator = query.queryOptions\n ? await generateMutator({\n output,\n mutator: query.queryOptions,\n name: `${operationName}QueryOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryProperties = props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queries = [\n ...(query?.useInfinite || operationQueryOptions?.useInfinite\n ? [\n {\n name: camel(`${operationName}-infinite`),\n options: query?.options,\n type: QueryType.INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ...(query?.useQuery || operationQueryOptions?.useQuery\n ? [\n {\n name: operationName,\n options: query?.options,\n type: QueryType.QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseQuery || operationQueryOptions?.useSuspenseQuery\n ? [\n {\n name: camel(`${operationName}-suspense`),\n options: query?.options,\n type: QueryType.SUSPENSE_QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseInfiniteQuery ||\n operationQueryOptions?.useSuspenseInfiniteQuery\n ? [\n {\n name: camel(`${operationName}-suspense-infinite`),\n options: query?.options,\n type: QueryType.SUSPENSE_INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ];\n\n // Convert \"param: Type\" to \"param?: Type\" for queryKey functions\n // to enable cache invalidation without type assertion\n const makeParamsOptional = (params: string) => {\n if (!params) return '';\n // Handle parameters with default values: \"param?: Type = value\" -> \"param: Type = value\" (remove optional marker)\n // Handle regular parameters: \"param: Type\" -> \"param?: Type\"\n return params.replaceAll(\n /(\\w+)(\\?)?:\\s*([^=,}]*?)\\s*(=\\s*[^,}]*)?([,}]|$)/g,\n (match, paramName, optionalMarker, type, defaultValue, suffix) => {\n // If parameter has a default value, don't add '?' (it's already effectively optional)\n if (defaultValue) {\n return `${paramName}: ${type.trim()}${defaultValue}${suffix}`;\n }\n // Otherwise, make it optional\n return `${paramName}?: ${type.trim()}${suffix}`;\n },\n );\n };\n\n const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n implementation += `\n${\n queryKeyMutator\n ? ''\n : uniqueQueryOptionsByKeys.reduce((acc, queryOption) => {\n const queryKeyProps = makeParamsOptional(\n toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ),\n );\n\n const routeString =\n isVue(outputClient) || override.query.shouldSplitQueryKey\n ? getRouteAsArray(route) // Note: this is required for reactivity to work, we will lose it if route params are converted into string, only as array they will be tracked // TODO: add tests for this\n : `\\`${route}\\``;\n\n // Use operation ID as query key if enabled, otherwise use route string\n const queryKeyIdentifier = override.query.useOperationIdAsQueryKey\n ? `\"${operationName}\"`\n : routeString;\n\n // Note: do not unref() params in Vue - this will make key lose reactivity\n const queryKeyFn = `\n${override.query.shouldExportQueryKey ? 'export ' : ''}const ${queryOption.queryKeyFnName} = (${queryKeyProps}) => {\n return [\n ${[\n queryOption.type === QueryType.INFINITE ||\n queryOption.type === QueryType.SUSPENSE_INFINITE\n ? `'infinite'`\n : '',\n queryKeyIdentifier,\n queryParams ? '...(params ? [params]: [])' : '',\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n return acc + queryKeyFn;\n }, '')\n}`;\n\n implementation += `\n ${queries.reduce((acc, queryOption) => {\n return (\n acc +\n generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n }),\n queryOptionsMutator,\n queryKeyMutator,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n })\n );\n }, '')}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n if (isMutation) {\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n });\n\n const mutationArguments = generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n httpClient,\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const mutationOptionsVarName = isRequestOptions\n ? 'mutationOptions'\n : 'options';\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n );\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments}): ${mutationOptionFnReturnType} => {\n\n${hooksOptionImplementation}\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook()`\n : ''\n }\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<${dataType}>>, ${\n definitions ? `{${definitions}}` : 'void'\n }> = (${properties ? 'props' : ''}) => {\n ${properties ? `const {${properties}} = props ?? {};` : ''}\n\n return ${operationName}(${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator)})\n }\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use';\n const optionalQueryClientArgument = hasQueryV5\n ? ', queryClient?: QueryClient'\n : '';\n\n implementation += `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${generateMutatorReturnType(\n {\n outputClient,\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n },\n )} => {\n\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n });\n\n return ${operationPrefix}Mutation(${\n hasSvelteQueryV6\n ? `() => ({ ...${mutationOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${mutationOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`\n });\n }\n `;\n\n mutators = mutationOptionsMutator\n ? [...(mutators ?? []), mutationOptionsMutator]\n : mutators;\n }\n\n return {\n implementation,\n mutators,\n };\n};\n\nexport const generateQueryHeader: ClientHeaderBuilder = (params) => {\n return `${\n params.hasAwaitedType\n ? ''\n : `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n }\n${\n params.isRequestOptions && params.isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n${getQueryHeader(params)}\n`;\n};\n\nexport const generateQuery: ClientBuilder = async (\n verbOptions,\n options,\n outputClient,\n) => {\n const imports = generateVerbImports(verbOptions);\n const functionImplementation = generateQueryRequestFunction(\n verbOptions,\n options,\n isVue(outputClient),\n );\n const { implementation: hookImplementation, mutators } =\n await generateQueryHook(verbOptions, options, outputClient);\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports,\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?: 'react-query' | 'vue-query' | 'svelte-query';\n options?: QueryOptions;\n output?: NormalizedOutputOptions;\n } = {}) =>\n () => {\n const client: ClientBuilder = (verbOptions, options, outputClient) => {\n if (\n options.override.useNamedParameters &&\n (type === 'vue-query' || outputClient === 'vue-query')\n ) {\n throw new Error(\n `vue-query client does not support named parameters, and had broken reactivity previously, please set useNamedParameters to false; See for context: https://github.com/orval-labs/orval/pull/931#issuecomment-1752355686`,\n );\n }\n\n if (queryOptions) {\n const normalizedQueryOptions = normalizeQueryOptions(\n queryOptions,\n options.context.workspace,\n );\n verbOptions.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n options.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n }\n return generateQuery(verbOptions, options, outputClient, output);\n };\n\n return {\n client: client,\n header: generateQueryHeader,\n dependencies: dependenciesBuilder[type],\n };\n };\n\nexport default builder;\n"],"mappings":"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"}