@orval/query 8.8.0 → 8.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -3,7 +3,6 @@ import { generateFetchHeader, generateRequestFunction } from "@orval/fetch";
3
3
  import nodePath from "node:path";
4
4
  import { styleText } from "node:util";
5
5
  import { omitBy } from "remeda";
6
-
7
6
  //#region src/utils.ts
8
7
  const normalizeQueryOptions = (queryOptions = {}, outputWorkspace) => {
9
8
  return {
@@ -72,7 +71,6 @@ const getQueryTypeForFramework = (type) => {
72
71
  }
73
72
  };
74
73
  const getHasSignal = ({ overrideQuerySignal = false }) => overrideQuerySignal;
75
-
76
74
  //#endregion
77
75
  //#region src/client.ts
78
76
  const AXIOS_DEPENDENCIES = [{
@@ -155,7 +153,8 @@ const generateAngularHttpRequestFunction = ({ headers, queryParams, operationNam
155
153
  hasSignal,
156
154
  hasSignalParam,
157
155
  isExactOptionalPropertyTypes: !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes,
158
- isVue: false
156
+ isVue: false,
157
+ isAngular: context.output.httpClient === OutputHttpClient.ANGULAR
159
158
  });
160
159
  const requestOptions = isRequestOptions ? generateMutatorRequestOptions(override.requestOptions, mutator.hasSecondArg) : "";
161
160
  const propsImplementation = toObjectString(props, "implementation");
@@ -416,7 +415,6 @@ const getQueryHeader = (params) => {
416
415
  if (params.output.httpClient === OutputHttpClient.ANGULAR) return (params.tag ? Object.values(params.verbOptions).filter((verbOption) => kebab(verbOption.tags[0] ?? "default") === params.tag) : Object.values(params.verbOptions)).some((v) => v.queryParams) ? getAngularFilteredParamsHelperBody() : "";
417
416
  return "";
418
417
  };
419
-
420
418
  //#endregion
421
419
  //#region src/dependencies.ts
422
420
  const REACT_DEPENDENCIES = [{
@@ -887,7 +885,6 @@ const getPackageByQueryClient = (packageJson, queryClient) => {
887
885
  }
888
886
  }
889
887
  };
890
-
891
888
  //#endregion
892
889
  //#region src/query-options.ts
893
890
  const QueryType = {
@@ -928,7 +925,6 @@ const getQueryOptionsDefinition = ({ operationName, mutator, definitions, type,
928
925
  const mutationOptionsTypeName = isReturnType && adapter?.getOptionsReturnTypeName ? adapter.getOptionsReturnTypeName("mutation") : void 0;
929
926
  return mutationOptionsTypeName ? `${mutationOptionsTypeName}<Awaited<ReturnType<${isMutatorHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`}>>, TError,${definitions ? `{${definitions}}` : "void"}, TContext>` : `${prefix}MutationOptions<Awaited<ReturnType<${isMutatorHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`}>>, TError,${definitions ? `{${definitions}}` : "void"}, TContext>`;
930
927
  };
931
-
932
928
  //#endregion
933
929
  //#region src/frameworks/angular.ts
934
930
  const createAngularAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => {
@@ -1049,10 +1045,26 @@ const createAngularAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQuery
1049
1045
  },
1050
1046
  generateRequestFunction(verbOptions, options) {
1051
1047
  return generateAngularHttpRequestFunction(verbOptions, options);
1048
+ },
1049
+ generatePrefetch({ usePrefetch, type, useQuery, useInfinite, operationName, mutator, doc, queryProps, dataType, errorType, queryArguments, queryOptionsVarName, queryOptionsFnName, queryProperties, isRequestOptions }) {
1050
+ if (!(usePrefetch && (type === QueryType.QUERY || type === QueryType.INFINITE || type === QueryType.SUSPENSE_QUERY && !useQuery || type === QueryType.SUSPENSE_INFINITE && !useInfinite))) return "";
1051
+ const prefetchType = type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY ? "query" : "infinite-query";
1052
+ const prefetchFnName = camel(`prefetch-${prefetchType}`);
1053
+ return `${doc}export const ${camel(`prefetch-${operationName}-${prefetchType}`)} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\n queryClient: QueryClient, ${!mutator || mutator.hasSecondArg ? "http: HttpClient, " : ""}${queryProps} ${queryArguments}\n ): Promise<QueryClient> => {
1054
+
1055
+ const ${queryOptionsVarName} = ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? "http, " : ""}${queryProperties}${queryProperties ? "," : ""}${isRequestOptions ? "options" : "queryOptions"})
1056
+
1057
+ if (${queryOptionsVarName}.enabled === false) {
1058
+ return queryClient;
1059
+ }
1060
+
1061
+ await queryClient.${prefetchFnName}(${queryOptionsVarName});
1062
+
1063
+ return queryClient;
1064
+ }\n`;
1052
1065
  }
1053
1066
  };
1054
1067
  };
1055
-
1056
1068
  //#endregion
1057
1069
  //#region src/frameworks/react.ts
1058
1070
  const createReactAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => ({
@@ -1093,7 +1105,6 @@ const createReactAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5
1093
1105
  return options.context.output.httpClient === OutputHttpClient.AXIOS ? generateAxiosRequestFunction(verbOptions, options, false) : generateRequestFunction(verbOptions, options);
1094
1106
  }
1095
1107
  });
1096
-
1097
1108
  //#endregion
1098
1109
  //#region src/frameworks/solid.ts
1099
1110
  const createSolidAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess, hasSolidQueryUsePrefix }) => ({
@@ -1164,7 +1175,6 @@ const createSolidAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5
1164
1175
  return options.context.output.httpClient === OutputHttpClient.AXIOS ? generateAxiosRequestFunction(verbOptions, options, false) : generateRequestFunction(verbOptions, options);
1165
1176
  }
1166
1177
  });
1167
-
1168
1178
  //#endregion
1169
1179
  //#region src/frameworks/svelte.ts
1170
1180
  const createSvelteAdapter = ({ hasSvelteQueryV4, hasSvelteQueryV6, hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => {
@@ -1265,7 +1275,6 @@ const createSvelteAdapter = ({ hasSvelteQueryV4, hasSvelteQueryV6, hasQueryV5, h
1265
1275
  }
1266
1276
  };
1267
1277
  };
1268
-
1269
1278
  //#endregion
1270
1279
  //#region src/frameworks/vue.ts
1271
1280
  const createVueAdapter = ({ hasVueQueryV4, hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => ({
@@ -1344,7 +1353,6 @@ const createVueAdapter = ({ hasVueQueryV4, hasQueryV5, hasQueryV5WithDataTagErro
1344
1353
  return prop.type === GetterPropType.BODY ? body.implementation : prop.name;
1345
1354
  }
1346
1355
  });
1347
-
1348
1356
  //#endregion
1349
1357
  //#region src/frameworks/index.ts
1350
1358
  /** Fill in defaults for fields that most adapters leave empty or share a common implementation. */
@@ -1493,7 +1501,6 @@ const createFrameworkAdapter = ({ outputClient, packageJson, queryVersion }) =>
1493
1501
  }));
1494
1502
  }
1495
1503
  };
1496
-
1497
1504
  //#endregion
1498
1505
  //#region src/mutation-generator.ts
1499
1506
  const normalizeInvalidateMode = (invalidateMode) => invalidateMode === "reset" ? "reset" : "invalidate";
@@ -1576,14 +1583,15 @@ const needsQueryKeyFnCall = (target, spec) => {
1576
1583
  if (findOperationInfo(spec, target.query)?.hasRequiredPathParams) return false;
1577
1584
  return true;
1578
1585
  };
1579
- const generateVariableRef = (varName) => {
1580
- const parts = varName.split(".");
1581
- if (parts.length === 1) return `variables.${varName}`;
1586
+ const generateParamArg = (param) => {
1587
+ if (!isString(param)) return JSON.stringify(param.literal);
1588
+ const parts = param.split(".");
1589
+ if (parts.length === 1) return `variables.${param}`;
1582
1590
  return `variables.${parts[0]}?.${parts.slice(1).join("?.")}`;
1583
1591
  };
1584
1592
  const generateParamArgs = (params) => {
1585
- if (Array.isArray(params)) return params.map((v) => generateVariableRef(v)).join(", ");
1586
- return Object.values(params).map((v) => generateVariableRef(v)).join(", ");
1593
+ if (Array.isArray(params)) return params.map((v) => generateParamArg(v)).join(", ");
1594
+ return Object.values(params).map((v) => generateParamArg(v)).join(", ");
1587
1595
  };
1588
1596
  /**
1589
1597
  * Create a generateInvalidateCall function that has access to the OpenAPI spec
@@ -1616,7 +1624,8 @@ const generateMutationHook = async ({ verbOptions, options, isRequestOptions, ht
1616
1624
  workspace: context.workspace,
1617
1625
  tsconfig: context.output.tsconfig
1618
1626
  }) : void 0;
1619
- const definitions = props.map(({ definition, type }) => type === GetterPropType.BODY ? mutator?.bodyTypeName ? `data: ${mutator.bodyTypeName}<${body.definition}>` : `data: ${body.definition}` : definition).join(";");
1627
+ const bodyOptionalMark = body.isOptional ? "?" : "";
1628
+ const definitions = props.map(({ definition, type }) => type === GetterPropType.BODY ? mutator?.bodyTypeName ? `data${bodyOptionalMark}: ${mutator.bodyTypeName}<${body.definition}>` : `data${bodyOptionalMark}: ${body.definition}` : definition).join(";");
1620
1629
  const properties = props.map(({ name, type }) => type === GetterPropType.BODY ? "data" : name).join(",");
1621
1630
  const errorType = getQueryErrorType(operationName, response, httpClient, mutator);
1622
1631
  const dataType = mutator?.isHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`;
@@ -1714,7 +1723,7 @@ ${hasInvalidation ? adapter.generateMutationOnSuccess({
1714
1723
  ${mutationOptionsFn}
1715
1724
 
1716
1725
  export type ${pascal(operationName)}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>
1717
- ${body.definition ? `export type ${pascal(operationName)}MutationBody = ${mutator?.bodyTypeName ? `${mutator.bodyTypeName}<${body.definition}>` : body.definition}` : ""}
1726
+ ${body.definition ? `export type ${pascal(operationName)}MutationBody = ${mutator?.bodyTypeName ? `${mutator.bodyTypeName}<${body.definition}>` : body.definition}${body.isOptional ? " | undefined" : ""}` : ""}
1718
1727
  export type ${pascal(operationName)}MutationError = ${errorType}
1719
1728
 
1720
1729
  ${doc}export const ${camel(`${operationPrefix}-${operationName}`)} = <TError = ${errorType},
@@ -1730,7 +1739,6 @@ ${mutationHookBody}
1730
1739
  })) : []
1731
1740
  };
1732
1741
  };
1733
-
1734
1742
  //#endregion
1735
1743
  //#region src/query-generator.ts
1736
1744
  const getQueryFnArguments = ({ hasQueryParam, hasSignal, hasSignalParam = false }) => {
@@ -1910,7 +1918,7 @@ ${hookOptions}
1910
1918
  export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\n ): ${definedInitialDataReturnType}
1911
1919
  export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\n ): ${returnType}
1912
1920
  export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\n ): ${returnType}`;
1913
- const prefetch = generatePrefetch({
1921
+ const prefetchContext = {
1914
1922
  usePrefetch,
1915
1923
  type,
1916
1924
  useQuery,
@@ -1926,7 +1934,8 @@ export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${q
1926
1934
  queryProperties,
1927
1935
  isRequestOptions,
1928
1936
  doc
1929
- });
1937
+ };
1938
+ const prefetch = adapter.generatePrefetch ? adapter.generatePrefetch(prefetchContext) : generatePrefetch(prefetchContext);
1930
1939
  const isPrimaryQueryType = type === QueryType.QUERY || type === QueryType.INFINITE || type === QueryType.SUSPENSE_QUERY && !useQuery || type === QueryType.SUSPENSE_INFINITE && !useInfinite;
1931
1940
  const shouldGenerateInvalidate = useInvalidate && isPrimaryQueryType;
1932
1941
  const invalidateFnName = camel(`invalidate-${name}`);
@@ -2167,7 +2176,6 @@ ${queryKeyFns}`;
2167
2176
  imports
2168
2177
  };
2169
2178
  };
2170
-
2171
2179
  //#endregion
2172
2180
  //#region src/index.ts
2173
2181
  const generateQueryHeader = (params) => {
@@ -2234,7 +2242,7 @@ const builder = ({ type = "react-query", options: queryOptions, output } = {}) =
2234
2242
  dependencies: dependenciesBuilder[type]
2235
2243
  };
2236
2244
  };
2237
-
2238
2245
  //#endregion
2239
2246
  export { builder, builder as default, generateQuery, generateQueryHeader, getAngularQueryDependencies, getReactQueryDependencies, getSolidQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
2247
+
2240
2248
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","OutputClientConst"],"sources":["../src/utils.ts","../src/client.ts","../src/dependencies.ts","../src/query-options.ts","../src/frameworks/angular.ts","../src/frameworks/react.ts","../src/frameworks/solid.ts","../src/frameworks/svelte.ts","../src/frameworks/vue.ts","../src/frameworks/index.ts","../src/mutation-generator.ts","../src/query-generator.ts","../src/index.ts"],"sourcesContent":["import nodePath from 'node:path';\nimport { styleText } from 'node:util';\n\nimport {\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} from '@orval/core';\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.useSetQueryData ? { useSetQueryData: true } : {}),\n ...(queryOptions.useGetQueryData ? { useGetQueryData: 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 const m = mutator as Exclude<Mutator, string>;\n if (!m.path) {\n throw new Error(styleText('red', `Mutator need a path`));\n }\n\n return {\n path: nodePath.resolve(workspace, m.path),\n name: m.name,\n default: m.default ?? !m.name,\n alias: m.alias,\n external: m.external,\n extension: m.extension,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: nodePath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return undefined;\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 isSolid = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SOLID_QUERY === client;\n\nexport const isAngular = (client: OutputClient | OutputClientFunc) =>\n OutputClient.ANGULAR_QUERY === client;\n\nexport const isReact = (client: OutputClient | OutputClientFunc) =>\n OutputClient.REACT_QUERY === client;\n\nexport const isSvelte = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SVELTE_QUERY === client;\n\nexport const getQueryTypeForFramework = (type: string): string => {\n // Angular Query and Svelte Query don't have suspense variants, map them to regular queries\n switch (type) {\n case 'suspenseQuery': {\n return 'query';\n }\n case 'suspenseInfiniteQuery': {\n return 'infiniteQuery';\n }\n default: {\n return type;\n }\n }\n};\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n}: {\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal;\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 getAngularFilteredParamsCallExpression,\n getAngularFilteredParamsHelperBody,\n getSuccessResponseType,\n type GetterResponse,\n isObject,\n isSyntheticDefaultImportsAllow,\n kebab,\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 = [\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] as const satisfies readonly GeneratorDependency[];\n\nexport const ANGULAR_HTTP_DEPENDENCIES = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders', values: true },\n { name: 'HttpParams', values: true },\n { name: 'HttpContext' },\n ],\n dependency: '@angular/common/http',\n },\n // Note: 'inject' from @angular/core is already in ANGULAR_QUERY_DEPENDENCIES\n {\n exports: [\n { name: 'lastValueFrom', values: true },\n { name: 'fromEvent', values: true },\n ],\n dependency: 'rxjs',\n },\n {\n exports: [\n { name: 'takeUntil', values: true },\n { name: 'map', values: true },\n ],\n dependency: 'rxjs/operators',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n isAngularClient = false,\n) => {\n if (\n isAngularClient ||\n options.context.output.httpClient === OutputHttpClient.ANGULAR\n ) {\n return generateAngularHttpRequestFunction(verbOptions, options);\n }\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAngularHttpRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\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 });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some((prop) => prop.name === 'signal');\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n // Handle mutator case\n if (mutator) {\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue: false,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n const propsImplementation = toObjectString(props, 'implementation');\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 } ${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n // Generate native Angular HttpClient implementation\n const queryProps = toObjectString(props, 'implementation').replace(\n /,\\s*$/,\n '',\n );\n const dataType = response.definition.success || 'unknown';\n\n // Build URL with query params - use httpParams to avoid shadowing the 'params' variable\n const hasQueryParams = queryParams?.schema.name;\n // The queryParams variable from function props is always named 'params'\n const filteredParamsExpression = getAngularFilteredParamsCallExpression(\n 'params',\n queryParams?.requiredNullableKeys,\n );\n const urlConstruction = hasQueryParams\n ? `const httpParams = params ? new HttpParams({ fromObject: ${filteredParamsExpression} }) : undefined;\n const url = \\`${route}\\`;`\n : `const url = \\`${route}\\`;`;\n\n // Build request options\n const httpOptions: string[] = [];\n if (hasQueryParams) {\n httpOptions.push('params: httpParams');\n }\n if (headers) {\n httpOptions.push('headers: new HttpHeaders(headers)');\n }\n\n // Use only success response content types to determine responseType\n // (response.contentTypes includes error responses which may be JSON and would\n // incorrectly prevent text/blob responseType from being set)\n const successResponseType = getSuccessResponseType(response);\n const responseTypeOption = successResponseType\n ? `'${successResponseType}'`\n : undefined;\n if (responseTypeOption) {\n httpOptions.push(`responseType: ${responseTypeOption}`);\n }\n\n const optionsStr =\n httpOptions.length > 0 ? `, { ${httpOptions.join(', ')} }` : '';\n\n // Build the HTTP method call\n let httpCall: string;\n const httpGeneric = responseTypeOption ? '' : `<${dataType}>`;\n const bodyArg =\n isFormData && body.formData\n ? 'formData'\n : isFormUrlEncoded && body.formUrlEncoded\n ? 'formUrlEncoded'\n : body.definition\n ? toObjectString([body], 'implementation').replace(/,\\s*$/, '')\n : '';\n\n switch (verb) {\n case 'get':\n case 'head': {\n httpCall = `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n case 'delete': {\n httpCall = bodyArg\n ? `http.${verb}${httpGeneric}(url, { ${httpOptions.length > 0 ? httpOptions.join(', ') + ', ' : ''}body: ${bodyArg} })`\n : `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n default: {\n // post, put, patch\n httpCall = `http.${verb}${httpGeneric}(url, ${bodyArg || 'undefined'}${optionsStr})`;\n break;\n }\n }\n\n // Detect if Zod runtime validation should be applied\n const responseType = response.definition.success;\n const isPrimitiveType = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const hasSchema = response.imports.some((imp) => imp.name === responseType);\n const isZodOutput =\n isObject(context.output.schemas) && context.output.schemas.type === 'zod';\n const isValidateResponse =\n override.query.runtimeValidation &&\n isZodOutput &&\n !isPrimitiveType &&\n hasSchema;\n\n // If validation is enabled, pipe through map(data => Schema.parse(data))\n if (isValidateResponse) {\n const schemaValueRef =\n responseType === 'Error' ? 'ErrorSchema' : responseType;\n httpCall = `${httpCall}.pipe(map(data => ${schemaValueRef}.parse(data)))`;\n }\n\n // For Angular, we use takeUntil with fromEvent to handle AbortSignal cancellation\n // This follows the pattern from TanStack Query Angular documentation\n // Note: signal can be null (from RequestInit), so we accept null | undefined\n const optionsParam = hasSignal\n ? 'options?: { signal?: AbortSignal | null }'\n : '';\n\n // Build additional params after http, handling empty queryProps properly\n const additionalParams = [queryProps, optionsParam]\n .filter(Boolean)\n .join(', ');\n\n // Note: http parameter is passed from the inject* function which has injection context\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\n http: HttpClient${additionalParams ? `,\\n ${additionalParams}` : ''}\n ): Promise<${dataType}> => {\n ${bodyForm}\n ${urlConstruction}\n const request$ = ${httpCall};\n if (options?.signal) {\n return lastValueFrom(request$.pipe(takeUntil(fromEvent(options.signal, 'abort'))));\n }\n return lastValueFrom(request$);\n }\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 });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = _props.some((prop) => prop.name === 'signal');\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 hasSignalParam,\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(String.raw`(\\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 }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${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 }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${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 }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\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 hasSignalParam,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n hasSignalParam,\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 hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return getSignalDefinition({ hasSignal, hasSignalParam });\n};\n\nexport const getSignalDefinition = ({\n hasSignal,\n hasSignalParam = false,\n}: {\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}): string => {\n if (!hasSignal) {\n return '';\n }\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n return `${signalVar}?: AbortSignal\\n`;\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n return `axios?: AxiosRequestConfig`;\n }\n if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n return 'fetch?: RequestInit, fetcher?: typeof globalThis.fetch';\n }\n return '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 hasSignalParam = false,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n hasSignalParam?: boolean;\n useRuntimeFetcher?: boolean;\n}) => {\n // Use querySignal if API has a param named \"signal\" to avoid conflict\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n // Only use explicit `signal: querySignal` when there's a naming conflict\n const signalProp = hasSignalParam ? `signal: ${signalVar}` : 'signal';\n\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n if (!hasSignal) {\n return `${options}${fetcherArg}`;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes\n ? `...(${signalVar} ? { ${signalProp} } : {})`\n : signalProp\n }, ...${options} }${fetcherArg}`;\n }\n\n // For Angular mutators with hasSecondArg, pass http through options parameter\n // http is injected in the queryOptionsFn and passed here as the second arg to the mutator\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n if (!hasSignal) {\n return 'http';\n }\n return `http, ${signalVar}`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n // Axios and Angular mutators: signal is a separate argument\n // Fetch mutators: signal is wrapped in options object\n return httpClient === OutputHttpClient.AXIOS ||\n httpClient === OutputHttpClient.ANGULAR\n ? `requestOptions, ${signalVar}`\n : `{ ${signalProp}, ...requestOptions }`;\n }\n\n if (hasSignal) {\n // Axios: signal is always separate\n // Angular with mutator: signal is separate (mutator pattern)\n // Angular without mutator: signal is wrapped (native pattern)\n // Fetch/other: signal is wrapped\n if (httpClient === OutputHttpClient.AXIOS) {\n return signalVar;\n }\n if (httpClient === OutputHttpClient.ANGULAR && mutator) {\n return signalVar;\n }\n return `{ ${signalProp} }`;\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n useRuntimeFetcher?: boolean;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n value += ', axios: axiosOptions';\n } else if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n value += ', fetch: fetchOptions, fetcher: fetcherFn';\n } else {\n value += ', fetch: fetchOptions';\n }\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 useRuntimeFetcher?: boolean,\n) => {\n const fetcherOption =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcher: fetcherFn'\n : '';\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : `, fetch: fetchOptions${fetcherOption}`;\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 useRuntimeFetcher?: boolean,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n // For Angular mutators with hasSecondArg, pass http (which is injected in inject* fn)\n // http is required as first param so no assertion needed\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n return 'http';\n }\n\n return isRequestOptions\n ? mutator\n ? mutator.hasSecondArg\n ? 'requestOptions'\n : ''\n : `${options}${fetcherArg}`\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n isAngular = false,\n hasMutator = false,\n) => {\n const result =\n isVue && httpClient === OutputHttpClient.FETCH && queryProperties\n ? queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',')\n : queryProperties;\n\n // For Angular, prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used - mutator handles HTTP client internally\n // http is required as first param so no assertion needed\n if ((isAngular || httpClient === OutputHttpClient.ANGULAR) && !hasMutator) {\n return result ? `http, ${result}` : 'http';\n }\n\n return result;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n if (params.output.httpClient === OutputHttpClient.FETCH) {\n return generateFetchHeader(params);\n }\n\n if (params.output.httpClient === OutputHttpClient.ANGULAR) {\n const relevantVerbs = params.tag\n ? Object.values(params.verbOptions).filter(\n (verbOption) => kebab(verbOption.tags[0] ?? 'default') === params.tag,\n )\n : Object.values(params.verbOptions);\n const hasQueryParams = relevantVerbs.some((v) => v.queryParams);\n\n return hasQueryParams ? getAngularFilteredParamsHelperBody() : '';\n }\n\n return '';\n};\n","import {\n type ClientDependenciesBuilder,\n compareVersions,\n type GeneratorDependency,\n OutputHttpClient,\n type PackageJson,\n} from '@orval/core';\n\nimport { ANGULAR_HTTP_DEPENDENCIES, AXIOS_DEPENDENCIES } from './client';\n\nexport const REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nexport const 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: 'useQueryClient', 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: 'useQueryClient', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'MutationFunctionContext' },\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\nexport const 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\nexport const 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: 'MutationFunctionContext' },\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 queryVersion = override?.query.version;\n const useReactQueryV3 =\n queryVersion === undefined\n ? hasReactQuery && !hasReactQueryV4\n : queryVersion <= 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 getSolidQueryImports = (\n prefix: 'use' | 'create',\n): GeneratorDependency[] => {\n const capitalized = prefix === 'use' ? 'Use' : 'Create';\n return [\n {\n exports: [\n { name: `${prefix}Query`, values: true },\n { name: `${prefix}InfiniteQuery`, values: true },\n { name: `${prefix}Mutation`, values: true },\n { name: `${capitalized}QueryOptions` },\n { name: `${capitalized}InfiniteQueryOptions` },\n { name: `${capitalized}MutationOptions` },\n { name: 'SolidQueryOptions' },\n { name: 'SolidInfiniteQueryOptions' },\n { name: 'SolidMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: `${capitalized}QueryResult` },\n { name: `${capitalized}InfiniteQueryResult` },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: `${capitalized}MutationResult` },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/solid-query',\n },\n ];\n};\n\nconst ANGULAR_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'injectQuery', values: true },\n { name: 'injectInfiniteQuery', values: true },\n { name: 'injectMutation', values: true },\n { name: 'InjectQueryOptions' },\n { name: 'InjectMutationOptions' },\n { name: 'CreateQueryOptions' },\n { name: 'CreateInfiniteQueryOptions' },\n { name: 'CreateMutationOptions' },\n { name: 'MutationFunctionContext' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient', values: true },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/angular-query-experimental',\n },\n {\n exports: [\n { name: 'inject', values: true },\n { name: 'Signal' },\n { name: 'computed', values: true },\n ],\n dependency: '@angular/core',\n },\n];\n\nexport const 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\nexport const getSolidQueryDependencies: 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 ...getSolidQueryImports(\n isSolidQueryWithUsePrefix(packageJson) ? 'use' : 'create',\n ),\n ];\n};\n\nexport const getAngularQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n // Always use Angular HTTP dependencies for Angular httpClient\n // Previously skipped for mutators, but we now inject http everywhere\n const useAngularHttp = httpClient === OutputHttpClient.ANGULAR;\n const useAxios = !hasGlobalMutator && httpClient === OutputHttpClient.AXIOS;\n\n return [\n ...(useAngularHttp ? ANGULAR_HTTP_DEPENDENCIES : []),\n ...(useAxios ? AXIOS_DEPENDENCIES : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...ANGULAR_QUERY_DEPENDENCIES,\n ];\n};\n\nexport const isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only\n if (queryClient === 'angular-query') {\n return true;\n }\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' | 'solid-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\nexport const isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports DataTag\n if (queryClient === 'angular-query') {\n return true;\n }\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\nexport const isQueryV5WithRequiredContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-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.14.1');\n};\n\nexport const isQueryV5WithMutationContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-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.89.0');\n};\n\nexport const isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports infinite query options\n if (queryClient === 'angular-query') {\n return true;\n }\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\nexport const isSolidQueryWithUsePrefix = (\n packageJson: PackageJson | undefined,\n) => {\n const version = getPackageByQueryClient(packageJson, 'solid-query');\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n // https://github.com/TanStack/query/blob/v5.71.5/packages/solid-query/src/index.ts\n return compareVersions(withoutRc, '5.71.5');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n const pkgName = '@tanstack/react-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'svelte-query': {\n const pkgName = '@tanstack/svelte-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'vue-query': {\n const pkgName = '@tanstack/vue-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'angular-query': {\n const pkgName = '@tanstack/angular-query-experimental';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'solid-query': {\n const pkgName = '@tanstack/solid-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n }\n};\n","import {\n type GeneratorMutator,\n type GetterParams,\n type GetterQueryParam,\n isObject,\n pascal,\n stringify,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport type { FrameworkAdapter } from './framework-adapter';\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nexport const 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\nexport const generateQueryOptions = ({\n params,\n options,\n type,\n adapter,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n adapter?: FrameworkAdapter;\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 const enabledOption = adapter\n ? adapter.generateEnabledOption(params, options)\n : !isObject(options) || !Object.hasOwn(options, 'enabled')\n ? `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : '';\n\n return `${enabledOption}${queryConfig} ...queryOptions`;\n};\n\nexport const isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nexport const getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n adapter,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n /** 'Use' or 'Create' — from adapter.getQueryOptionsDefinitionPrefix() */\n prefix: string;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n adapter?: FrameworkAdapter;\n}) => {\n const isMutatorHook = mutator?.isHook;\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\n // Use adapter's custom options type name for return types if available\n const optionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName(\n type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE\n ? 'infiniteQuery'\n : 'query',\n )\n : undefined;\n\n const optionType = optionsTypeName\n ? `${optionsTypeName}<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`\n : `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n 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\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n // Mutation options\n const mutationOptionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName('mutation')\n : undefined;\n\n return mutationOptionsTypeName\n ? `${mutationOptionsTypeName}<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`\n : `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n","import {\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n GetterPropType,\n OutputClient,\n type OutputHttpClient,\n toObjectString,\n} from '@orval/core';\n\nimport {\n generateAngularHttpRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition, QueryType } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createAngularAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = 'Create';\n\n return {\n outputClient: OutputClient.ANGULAR_QUERY,\n hookPrefix: 'inject',\n isAngularHttp: true,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n // Angular: allow params to be a getter function for reactive signal support\n return toObjectString(\n props.map((prop) => {\n const getterType = prop.definition.replace(\n /^(\\w+)(\\??): (.+)$/,\n (\n _match: string,\n name: string,\n optional: string,\n type: string,\n ): string =>\n `${name}${optional}: ${type} | (() => ${type.replace(' | undefined', '')}${optional ? ' | undefined' : ''})`,\n );\n return { ...prop, definition: getterType };\n }),\n 'definition',\n );\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n _httpClient: OutputHttpClient,\n hasMutator: boolean,\n ): string {\n // Prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used\n if (!hasMutator) {\n return queryProperties ? `http, ${queryProperties}` : 'http';\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(\n props: GetterProps,\n queryParam: string,\n hasMutator: boolean,\n ): string {\n let result = props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n\n // Prefix with http for infinite queries\n // Skip when custom mutator is used\n if (!hasMutator) {\n result = result ? `http, ${result}` : 'http';\n }\n\n return result;\n },\n\n getHttpFirstParam(mutator?: GeneratorMutator): string {\n if (!mutator || mutator.hasSecondArg) {\n return 'http: HttpClient, ';\n }\n return '';\n },\n\n getMutationHttpPrefix(mutator?: GeneratorMutator): string {\n if (!mutator) {\n return 'http, ';\n }\n return '';\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `CreateQueryResult<TData, TError>`;\n }\n return `CreateInfiniteQueryResult<TData, TError>`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n }: QueryReturnStatementContext): string {\n return `return ${queryResultVarName};`;\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Angular skips DataTag annotation\n return false;\n },\n\n generateQueryInit({ mutator }: QueryInitContext): string {\n // Angular: inject HttpClient if needed, no queryOptions assignment\n if (!mutator || mutator.hasSecondArg) {\n return `const http = inject(HttpClient);`;\n }\n return '';\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n mutator,\n }: QueryInvocationContext): string {\n // Angular: () => { resolve getters; return options(http, ...); }\n return `() => {${\n props.length > 0\n ? `\n // Resolve params if getter function (for signal reactivity)\n ${props.map((p) => `const _${p.name} = typeof ${p.name} === 'function' ? ${p.name}() : ${p.name};`).join('\\n ')}`\n : ''\n }\n // Resolve options if getter function (for signal reactivity)\n const _options = typeof ${isRequestOptions ? 'options' : 'queryOptions'} === 'function' ? ${isRequestOptions ? 'options' : 'queryOptions'}() : ${isRequestOptions ? 'options' : 'queryOptions'};\n return ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http' : ''}${props.length > 0 ? `${!mutator || mutator.hasSecondArg ? ', ' : ''}${props.map((p) => `_${p.name}`).join(', ')}` : ''}, _options);\n }`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Angular never has optional queryClient argument (it injects it)\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\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(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n // For Angular inject* functions (query hooks, not queryOptions or mutations),\n // allow options to be a getter for reactivity.\n // Inject style applies when type is defined (it's a query hook) and not forQueryOptions.\n const forAngularInject = type !== undefined && !forQueryOptions;\n if (forAngularInject) {\n return `options${isQueryRequired ? '' : '?'}: ${optionsType} | (() => ${optionsType})\\n`;\n }\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n }: MutationHookBodyContext): string {\n if (!mutator || mutator.hasSecondArg) {\n return ` const http = inject(HttpClient);${hasInvalidation ? '\\n const queryClient = inject(QueryClient);' : ''}\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(http${hasInvalidation ? ', queryClient' : ''}${isRequestOptions ? ', options' : ', mutationOptions'});\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n }\n\n const mutationImpl = `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n return ` const ${mutationOptionsVarName} = ${mutationImpl};\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n },\n\n getQueryType(type: string): string {\n return getQueryTypeForFramework(type);\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return generateAngularHttpRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { isSuspenseQuery } from '../query-options';\n\nexport const createReactAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.REACT_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryReturnType({\n type,\n isInitialDataDefined,\n }: QueryReturnTypeContext): string {\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 getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n shouldGenerateOverrideTypes(): boolean {\n return hasQueryV5;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\n\nexport const createSolidAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n hasSolidQueryUsePrefix: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.SOLID_QUERY,\n hookPrefix: hasSolidQueryUsePrefix ? 'use' : 'create',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryOptionsDefinitionPrefix(): string {\n return hasSolidQueryUsePrefix ? 'Use' : 'Create';\n },\n\n getOptionsReturnTypeName(\n type: 'query' | 'infiniteQuery' | 'mutation',\n ): string | undefined {\n // Solid Query uses SolidQueryOptions for queries, SolidInfiniteQueryOptions for infinite queries,\n // and SolidMutationOptions for mutations (these are accessors)\n if (type === 'mutation') return 'SolidMutationOptions';\n if (type === 'infiniteQuery') return 'SolidInfiniteQueryOptions';\n return 'SolidQueryOptions';\n },\n\n getQueryKeyPrefix(): string {\n // Solid Query v5 doesn't support accessing queryKey from queryOptions\n // The queryKey must be generated directly from the params\n return '';\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Solid Query works with accessor functions\n // The queryKey is accessed from within the accessor, not annotated on the return type\n return false;\n },\n\n shouldCastQueryResult(): boolean {\n // Solid Query should not cast the query result because it breaks TypeScript's\n // ability to discriminate between overloads based on initialData\n return false;\n },\n\n shouldCastQueryOptions(): boolean {\n // Solid Query should not cast the query options return type because it prevents\n // TypeScript from properly discriminating between defined and undefined initialData\n return false;\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `${prefix}QueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n }\n return `${prefix}InfiniteQueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n return `: ${prefix}MutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n // Use Object.assign to attach queryKey to the result and cast to any to satisfy TypeScript\n // The type is properly enforced by the function signature\n return `return Object.assign(${queryResultVarName}, { queryKey: ${queryOptionsVarName}.queryKey }) as any;`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n // Solid Query requires options to be wrapped in an arrow function for reactivity\n const optionsArg = isRequestOptions ? 'options' : 'queryOptions';\n const args = queryProperties\n ? `${queryProperties},${optionsArg}`\n : optionsArg;\n return `() => ${queryOptionsFnName}(${args})${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Solid is NOT in the list of frameworks supporting mutation invalidation\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n // Solid Query mutations also need to be wrapped in accessor functions\n return ` return ${operationPrefix}Mutation(() => ${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Solid Query expects queryClient to be an Accessor: () => QueryClient\n return ', queryClient?: () => QueryClient';\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n OutputClient,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport {\n generateAxiosRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createSvelteAdapter = ({\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n\n return {\n outputClient: OutputClient.SVELTE_QUERY,\n hookPrefix: hasSvelteQueryV4 ? 'create' : 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n if (hasSvelteQueryV6) {\n return toObjectString(\n props.map((p) => ({\n ...p,\n definition: p.definition.replace(':', ': () => '),\n })),\n 'definition',\n );\n }\n return toObjectString(props, 'implementation');\n },\n\n getQueryReturnType({\n type,\n isMutatorHook,\n operationName,\n }: QueryReturnTypeContext): string {\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\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n if (hasSvelteQueryV6) {\n return `return ${queryResultVarName}`;\n }\n if (hasSvelteQueryV4) {\n return `${queryResultVarName}.queryKey = ${queryOptionsVarName}.queryKey;\n\n return ${queryResultVarName};`;\n }\n // Svelte v3 - same as default\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n }: QueryInitContext): string {\n if (hasSvelteQueryV6) {\n return '';\n }\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n queryOptionsVarName,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n if (hasSvelteQueryV6) {\n return `() => ${queryOptionsFnName}(${toObjectString(\n props.map((p) => ({\n ...p,\n name: p.default || !p.required ? `${p.name}?.()` : `${p.name}()`,\n })),\n 'name',\n )}${isRequestOptions ? 'options?.()' : 'queryOptions?.()'})`;\n }\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getQueryInvocationSuffix(): string {\n return hasSvelteQueryV6 ? `, queryClient` : '';\n },\n\n getOptionalQueryClientArgument(hasInvalidation?: boolean): string {\n if (hasSvelteQueryV6) {\n return `, queryClient?: () => QueryClient`;\n }\n if (hasQueryV5 || hasInvalidation) {\n return ', queryClient?: QueryClient';\n }\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\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(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${hasSvelteQueryV6 && !forQueryOptions ? '() => ' : ''}${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n if (hasSvelteQueryV6) {\n return `${mutationOptionsFnName}(${hasInvalidation ? `backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n }?.())`;\n }\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n if (hasSvelteQueryV6) {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient(${optionalQueryClientArgument ? 'queryClient?.()' : ''});\\n ` : ''}return ${operationPrefix}Mutation(() => ({ ...${mutationImplementation} })${optionalQueryClientArgument ? `, queryClient` : ''});`;\n }\n // Svelte v4/v5\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation});`;\n },\n\n getQueryType(type: string): string {\n if (hasSvelteQueryV4) {\n return getQueryTypeForFramework(type);\n }\n return type;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\nimport { vueUnRefParams, vueWrapTypeWithMaybeRef } from '../utils';\n\nexport const createVueAdapter = ({\n hasVueQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasVueQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.VUE_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n transformProps(props: GetterProps): GetterProps {\n return vueWrapTypeWithMaybeRef(props);\n },\n\n shouldDestructureNamedPathParams(): boolean {\n // Vue keeps param.name for named path params (doesn't destructure)\n return false;\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n httpClient: OutputHttpClient,\n ): string {\n // Vue with fetch: unref each prop\n if (httpClient === OutputHttpClient.FETCH && queryProperties) {\n return queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',');\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string): string {\n return props\n .map((param) => {\n // Vue does NOT destructure named path params (keeps param.name)\n return param.name === 'params'\n ? `{...unref(params), '${queryParam}': pageParam || unref(params)?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\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\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n return `${queryResultVarName}.queryKey = unref(${queryOptionsVarName}).queryKey as ${queryKeyType};\n\n return ${queryResultVarName};`;\n },\n\n getQueryKeyRouteString(route: string): string {\n // Vue always uses getRouteAsArray for reactivity\n return getRouteAsArray(route);\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Vue skips DataTag annotation\n return false;\n },\n\n getUnrefStatements(props: GetterProps): string {\n return vueUnRefParams(\n props.filter((prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS),\n );\n },\n\n generateEnabledOption(\n params: GetterParams,\n options?: object | boolean,\n ): string {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`;\n }\n return '';\n },\n\n getQueryKeyPrefix(): string {\n return hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? ';\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Vue is NOT in the list: isAngularClient || isReact(outputClient) || isSvelte(outputClient)\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, true)\n : generateFetchRequestFunction(verbOptions, options);\n },\n\n getQueryPropertyForProp(\n prop: GetterProp,\n body: { implementation: string },\n ): string {\n // Vue does NOT destructure named path params (keeps param.name for reactivity)\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n});\n","import {\n getRouteAsArray,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n type OutputClient,\n OutputClient as OutputClientConst,\n type OutputClientFunc,\n type PackageJson,\n toObjectString,\n} from '@orval/core';\n\nimport { getQueryArgumentsRequestType } from '../client';\nimport {\n isQueryV5,\n isQueryV5WithDataTagError,\n isQueryV5WithInfiniteQueryOptionsError,\n isQueryV5WithMutationContextOnSuccess,\n isQueryV5WithRequiredContextOnSuccess,\n isSolidQueryWithUsePrefix,\n isSvelteQueryV3,\n isSvelteQueryV6,\n isVueQueryV3,\n} from '../dependencies';\nimport type {\n FrameworkAdapter,\n FrameworkAdapterConfig,\n MutationOnSuccessContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { createAngularAdapter } from './angular';\nimport { createReactAdapter } from './react';\nimport { createSolidAdapter } from './solid';\nimport { createSvelteAdapter } from './svelte';\nimport { createVueAdapter } from './vue';\n\n/** Fill in defaults for fields that most adapters leave empty or share a common implementation. */\nconst withDefaults = (adapter: FrameworkAdapterConfig): FrameworkAdapter => ({\n // --- Original defaults (false / empty string) ---\n isAngularHttp: false,\n getHttpFirstParam: () => '',\n getMutationHttpPrefix: () => '',\n getUnrefStatements: () => '',\n getQueryInvocationSuffix: () => '',\n\n // --- Identity / pass-through defaults ---\n transformProps: (props) => props,\n getHttpFunctionQueryProps: (qp) => qp,\n getQueryType: (type) => type,\n\n // --- Boolean defaults ---\n shouldDestructureNamedPathParams: () => true,\n shouldAnnotateQueryKey: () => true,\n shouldGenerateOverrideTypes: () => false,\n shouldCastQueryResult: () => true,\n shouldCastQueryOptions: () => true,\n\n // --- String defaults ---\n getQueryKeyPrefix: () => 'queryOptions?.queryKey ?? ',\n getQueryOptionsDefinitionPrefix: () => 'Use',\n\n // --- Common implementation defaults ---\n getHookPropsDefinitions: (props) => toObjectString(props, 'implementation'),\n\n getQueryKeyRouteString(route, shouldSplitQueryKey) {\n if (shouldSplitQueryKey) {\n return getRouteAsArray(route);\n }\n return `\\`${route}\\``;\n },\n\n generateEnabledOption(params, options) {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`;\n }\n return '';\n },\n\n getQueryPropertyForProp(prop: GetterProp, body: { implementation: string }) {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS)\n return prop.destructured;\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string) {\n return props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n generateQueryInit({ queryOptionsFnName, queryProperties, isRequestOptions }) {\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsVarName,\n optionalQueryClientArgument,\n }) {\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getOptionalQueryClientArgument() {\n return adapter.hasQueryV5 ? ', queryClient?: QueryClient' : '';\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n }) {\n const prefix = adapter.getQueryOptionsDefinitionPrefix?.() ?? 'Use';\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.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(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n }: MutationOnSuccessContext): string {\n const invalidateCalls = uniqueInvalidates\n .map((t) => generateInvalidateCall(t))\n .join('\\n');\n if (adapter.hasQueryV5WithMutationContextOnSuccess) {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n } else {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n },\n ...adapter,\n});\n\nexport type QueryClientType =\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n\n/**\n * Create a FrameworkAdapter for the given output client, resolving version flags\n * from the packageJson and query config.\n */\nexport const createFrameworkAdapter = ({\n outputClient,\n packageJson,\n queryVersion,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n packageJson?: PackageJson;\n queryVersion?: number;\n}): FrameworkAdapter => {\n const clientType = outputClient as QueryClientType;\n\n const _hasQueryV5 = queryVersion === 5 || isQueryV5(packageJson, clientType);\n\n const _hasQueryV5WithDataTagError =\n queryVersion === 5 || isQueryV5WithDataTagError(packageJson, clientType);\n\n const _hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(packageJson, clientType);\n const _hasQueryV5WithMutationContextOnSuccess =\n isQueryV5WithMutationContextOnSuccess(packageJson, clientType);\n const _hasQueryV5WithRequiredContextOnSuccess =\n isQueryV5WithRequiredContextOnSuccess(packageJson, clientType);\n\n switch (outputClient) {\n case OutputClientConst.VUE_QUERY: {\n const hasVueQueryV4 = !isVueQueryV3(packageJson) || queryVersion === 4;\n return withDefaults(\n createVueAdapter({\n hasVueQueryV4,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SVELTE_QUERY: {\n const hasSvelteQueryV4 =\n !isSvelteQueryV3(packageJson) || queryVersion === 4;\n const _hasSvelteQueryV6 = isSvelteQueryV6(packageJson);\n return withDefaults(\n createSvelteAdapter({\n hasSvelteQueryV4,\n hasSvelteQueryV6: _hasSvelteQueryV6,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.ANGULAR_QUERY: {\n return withDefaults(\n createAngularAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SOLID_QUERY: {\n const hasSolidQueryWithUsePrefix = isSolidQueryWithUsePrefix(packageJson);\n return withDefaults(\n createSolidAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix: hasSolidQueryWithUsePrefix,\n }),\n );\n }\n\n default: {\n // react-query is the default\n return withDefaults(\n createReactAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n }\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n type InvalidateTarget,\n isString,\n type OutputHttpClient,\n pascal,\n} from '@orval/core';\n\nimport {\n getHooksOptionImplementation,\n getMutationRequestArgs,\n getQueryErrorType,\n} from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { getQueryOptionsDefinition } from './query-options';\n\ninterface NormalizedTarget {\n query: string;\n params?: string[] | Record<string, string>;\n invalidateMode: 'invalidate' | 'reset';\n file?: string;\n}\n\nconst normalizeInvalidateMode = (\n invalidateMode: string | undefined,\n): NormalizedTarget['invalidateMode'] =>\n invalidateMode === 'reset' ? 'reset' : 'invalidate';\n\nconst normalizeTarget = (target: InvalidateTarget): NormalizedTarget =>\n isString(target)\n ? { query: target, invalidateMode: 'invalidate' }\n : {\n ...target,\n invalidateMode: normalizeInvalidateMode(target.invalidateMode),\n };\n\nconst serializeTarget = (target: NormalizedTarget): string =>\n JSON.stringify({\n query: target.query,\n params: target.params ?? [],\n invalidateMode: target.invalidateMode,\n file: target.file ?? '',\n });\n\nconst HTTP_METHODS = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'options',\n 'head',\n 'trace',\n];\n\ninterface OperationRouteInfo {\n route: string;\n /** true when the route has path params that lack a default value */\n hasRequiredPathParams: boolean;\n}\n\ninterface SpecPathItem {\n parameters?: SpecParameter[];\n [method: string]: unknown;\n}\n\ninterface SpecOperation {\n operationId?: string;\n parameters?: SpecParameter[];\n}\n\ninterface SpecParameter {\n in?: string;\n default?: unknown;\n schema?: { default?: unknown };\n}\n\n/**\n * Look up an operation's route and path-parameter metadata from the OpenAPI\n * spec. Matches against both the raw `operationId` and its camelCase form\n * so that renamed/overridden operations are still found.\n */\nconst findOperationInfo = (\n spec: Record<string, unknown> | undefined,\n operationName: string,\n): OperationRouteInfo | undefined => {\n const paths = spec?.paths;\n if (!paths || typeof paths !== 'object') return undefined;\n\n for (const [routePath, rawPathItem] of Object.entries(\n paths as Record<string, unknown>,\n )) {\n if (!rawPathItem || typeof rawPathItem !== 'object') continue;\n const pathItem = rawPathItem as SpecPathItem;\n\n for (const method of HTTP_METHODS) {\n const operation = pathItem[method] as SpecOperation | undefined;\n const opId = operation?.operationId;\n if (!opId) continue;\n // Match both raw operationId and its camelCase generated name\n if (opId !== operationName && camel(opId) !== operationName) continue;\n\n if (!routePath.includes('{')) {\n return { route: routePath, hasRequiredPathParams: false };\n }\n\n // Collect path parameters from both path-level and operation-level\n const pathParams = [\n ...(Array.isArray(pathItem.parameters) ? pathItem.parameters : []),\n ...(Array.isArray(operation.parameters) ? operation.parameters : []),\n ].filter((p) => p.in === 'path');\n\n const hasRequiredPathParams = pathParams.some(\n (p) => p.schema?.default === undefined && p.default === undefined,\n );\n\n return { route: routePath, hasRequiredPathParams };\n }\n }\n return undefined;\n};\n\n/**\n * Extract the static route prefix before the first path parameter.\n * e.g. \"/pets/{petId}\" → \"/pets/\", \"/pets\" → \"/pets\"\n *\n * Returns `undefined` when the prefix contains no meaningful literal\n * segments (e.g. \"/{tenantId}/pets\") to avoid overly-broad invalidation.\n */\nconst getStaticRoutePrefix = (route: string): string | undefined => {\n const idx = route.indexOf('{');\n if (idx === -1) return route;\n const prefix = route.slice(0, idx);\n // Guard: a prefix like \"/\" has no stable literal segment and would\n // match every route-style query key – fall back to the zero-arg call.\n const hasLiteralSegment = prefix\n .split('/')\n .some((segment) => segment.length > 0);\n return hasLiteralSegment ? prefix : undefined;\n};\n\n/**\n * Check whether the target invalidation needs to call the query key function.\n * Returns false when no params are specified and the route has required path\n * parameters (without defaults), meaning we should use predicate-based broad\n * invalidation instead of calling the function without the required arguments.\n */\nconst hasNonEmptyParams = (\n params: string[] | Record<string, string> | undefined,\n): params is string[] | Record<string, string> => {\n if (!params) return false;\n if (Array.isArray(params)) return params.length > 0;\n return Object.keys(params).length > 0;\n};\n\nconst needsQueryKeyFnCall = (\n target: NormalizedTarget,\n spec: Record<string, unknown> | undefined,\n): boolean => {\n if (hasNonEmptyParams(target.params)) return true;\n const info = findOperationInfo(spec, target.query);\n if (info?.hasRequiredPathParams) return false;\n return true;\n};\n\nconst generateVariableRef = (varName: string): string => {\n const parts = varName.split('.');\n if (parts.length === 1) {\n return `variables.${varName}`;\n }\n return `variables.${parts[0]}?.${parts.slice(1).join('?.')}`;\n};\n\nconst generateParamArgs = (\n params: string[] | Record<string, string>,\n): string => {\n if (Array.isArray(params)) {\n return params.map((v) => generateVariableRef(v)).join(', ');\n }\n return Object.values(params)\n .map((v) => generateVariableRef(v))\n .join(', ');\n};\n\n/**\n * Create a generateInvalidateCall function that has access to the OpenAPI spec\n * for intelligent route-based invalidation when params are not specified.\n */\nconst createGenerateInvalidateCall = (\n spec: Record<string, unknown> | undefined,\n shouldSplitQueryKey: boolean,\n) => {\n return (target: NormalizedTarget): string => {\n const method =\n target.invalidateMode === 'reset' ? 'resetQueries' : 'invalidateQueries';\n const queryKeyFn = camel(`get-${target.query}-query-key`);\n\n if (hasNonEmptyParams(target.params)) {\n const args = generateParamArgs(target.params);\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}(${args}) });`;\n }\n\n // No params specified – check if the target query has required path params\n const info = findOperationInfo(spec, target.query);\n\n if (info?.hasRequiredPathParams) {\n // Route has required path parameters (no defaults) – use broad\n // invalidation instead of calling the query key function without\n // the required arguments.\n const prefix = getStaticRoutePrefix(info.route);\n\n // When the prefix has no meaningful literal segments (e.g. route\n // starts with a path param like /{tenantId}/...), fall through to\n // the zero-arg call rather than generating an overly-broad match.\n if (prefix !== undefined) {\n if (shouldSplitQueryKey) {\n // Split-key mode: query keys are arrays like ['pets', petId].\n // Use partial key matching with static route segments.\n const segments = prefix\n .split('/')\n .filter((s) => s !== '')\n .map((s) => `'${s}'`)\n .join(', ');\n return ` queryClient.${method}({ queryKey: [${segments}] });`;\n }\n\n // Default mode: query keys are template strings like ['/pets/${petId}'].\n // Use predicate with startsWith for broad matching.\n return ` queryClient.${method}({ predicate: (query) => typeof query.queryKey[0] === 'string' && query.queryKey[0].startsWith('${prefix}') });`;\n }\n }\n\n // No path params or route not found – call query key function without args\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}() });`;\n };\n};\n\nexport interface MutationHookContext {\n verbOptions: GeneratorVerbOptions;\n options: GeneratorOptions;\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n doc: string;\n adapter: FrameworkAdapter;\n}\n\nexport const generateMutationHook = async ({\n verbOptions,\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n}: MutationHookContext): Promise<{\n implementation: string;\n mutators: GeneratorMutator[] | undefined;\n imports: GeneratorImport[];\n}> => {\n const {\n operationName,\n body,\n props,\n mutator,\n response,\n operationId,\n override,\n } = verbOptions;\n const { route, context, output } = options;\n const query = override.query;\n\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 prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n adapter,\n });\n\n const invalidatesConfig = (query.mutationInvalidates ?? [])\n .filter((rule) => rule.onMutations.includes(operationName))\n .flatMap((rule) => rule.invalidates)\n .map((t) => normalizeTarget(t));\n const seenTargets = new Set<string>();\n const uniqueInvalidates = invalidatesConfig.filter((target) => {\n const key = serializeTarget(target);\n if (seenTargets.has(key)) return false;\n seenTargets.add(key);\n return true;\n });\n\n const hasInvalidation =\n uniqueInvalidates.length > 0 && adapter.supportsMutationInvalidation();\n\n const useRuntimeFetcher = override.fetch.useRuntimeFetcher;\n\n const mutationArguments = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getMutationOptions function (includes http: HttpClient param for Angular)\n const mutationArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n forQueryOptions: true,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n useRuntimeFetcher,\n );\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n // For Angular/React mutations with invalidation, add queryClient as second required param\n const queryClientParam = hasInvalidation ? 'queryClient: QueryClient, ' : '';\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${httpFirstParam}${queryClientParam}${mutationArgumentsForOptions}): ${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}(${adapter.getMutationHttpPrefix(mutator)}${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator, useRuntimeFetcher)})\n }\n\n${\n hasInvalidation\n ? adapter.generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall: createGenerateInvalidateCall(\n context.spec,\n !!query.shouldSplitQueryKey,\n ),\n uniqueInvalidates,\n })\n : ''\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 : hasInvalidation\n ? '{ ...mutationOptions, mutationFn, onSuccess }'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = adapter.hookPrefix;\n\n const optionalQueryClientArgument =\n adapter.getOptionalQueryClientArgument(hasInvalidation);\n\n const mutationImplementation = adapter.generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n });\n\n const mutationOptionsVarName = camel(`${operationName}-mutation-options`);\n\n const mutationReturnType = adapter.getMutationReturnType({\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n });\n\n const mutationHookBody = adapter.generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationImplementation,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n optionalQueryClientArgument,\n });\n\n const 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})${mutationReturnType} => {\n${mutationHookBody}\n }\n `;\n\n const mutators = mutationOptionsMutator\n ? [mutationOptionsMutator]\n : undefined;\n\n const imports: GeneratorImport[] = hasInvalidation\n ? uniqueInvalidates\n .filter((i) => !!i.file && needsQueryKeyFnCall(i, context.spec))\n .map<GeneratorImport>((i) => ({\n name: camel(`get-${i.query}-query-key`),\n importPath: i.file,\n values: true,\n }))\n : [];\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n jsDoc,\n OutputClient,\n type OutputClientFunc,\n type OutputHttpClient,\n pascal,\n toObjectString,\n Verbs,\n} from '@orval/core';\n\nimport { getHookOptions, getQueryErrorType, getQueryOptions } from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { generateMutationHook } from './mutation-generator';\nimport {\n generateQueryOptions,\n getQueryOptionsDefinition,\n QueryType,\n} from './query-options';\nimport { getHasSignal } from './utils';\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n hasSignalParam = false,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n // Rename AbortSignal if API has a param named \"signal\" to avoid conflict\n const signalDestructure = hasSignalParam ? 'signal: querySignal' : 'signal';\n\n if (hasQueryParam) {\n if (hasSignal) {\n return `{ ${signalDestructure}, pageParam }`;\n }\n\n return '{ pageParam }';\n }\n\n return `{ ${signalDestructure} }`;\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}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: (typeof QueryType)[keyof typeof 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}) => {\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}(${queryOptionsVarName});\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 httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n useRuntimeFetcher,\n route,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n useSetQueryData,\n useGetQueryData,\n adapter,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: (typeof QueryType)[keyof typeof 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 httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n useRuntimeFetcher?: boolean;\n route: string;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n useSetQueryData?: boolean;\n useGetQueryData?: boolean;\n adapter: FrameworkAdapter;\n}) => {\n const {\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n } = adapter;\n\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some(\n (prop: GetterProp) => prop.name === 'signal',\n );\n\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(String.raw`^${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 ? adapter.getInfiniteQueryHttpProps(props, queryParam, !!mutator)\n : adapter.getHttpFunctionQueryProps(queryProperties, httpClient, !!mutator);\n\n const definedInitialDataReturnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\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 = adapter.generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n useRuntimeFetcher,\n });\n const undefinedInitialDataQueryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n useRuntimeFetcher,\n });\n const queryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getQueryOptions function (includes http: HttpClient param for Angular)\n const queryArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n forQueryOptions: true,\n useRuntimeFetcher,\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n hasSignalParam,\n useRuntimeFetcher,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n hasSignalParam,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n adapter,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n adapter,\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 // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${httpFirstParam}${queryProps} ${queryArgumentsForOptions}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${adapter.getQueryKeyPrefix()}${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 ${adapter.getUnrefStatements(props)}\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 }${\n adapter.shouldCastQueryOptions?.() === false\n ? ''\n : ` as ${queryOptionFnReturnType} ${\n adapter.shouldAnnotateQueryKey()\n ? `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n : ''\n }`\n }\n}`;\n const operationPrefix = adapter.hookPrefix;\n const optionalQueryClientArgument = adapter.getOptionalQueryClientArgument();\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 queryArguments: queryArgumentsForOptions,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const isPrimaryQueryType =\n type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite);\n\n const shouldGenerateInvalidate = useInvalidate && isPrimaryQueryType;\n const invalidateFnName = camel(`invalidate-${name}`);\n\n const shouldGenerateSetQueryData = useSetQueryData && isPrimaryQueryType;\n const isReactQuery = adapter.outputClient === OutputClient.REACT_QUERY;\n const setQueryDataFnName = isReactQuery\n ? camel(`use-set-${name}-query-data`)\n : camel(`set-${name}-query-data`);\n const setQueryDataKeyExpr = queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${queryKeyMutator.hasSecondArg ? `, { url: \\`${route}\\` }` : ''})`\n : `${queryKeyFnName}(${queryKeyProperties})`;\n const setQueryDataProps = toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ).replaceAll('?:', ':');\n\n const shouldGenerateGetQueryData = useGetQueryData && isPrimaryQueryType;\n const getQueryDataFnName = isReactQuery\n ? camel(`use-get-${name}-query-data`)\n : camel(`get-${name}-query-data`);\n const getQueryDataKeyExpr = setQueryDataKeyExpr;\n const getQueryDataProps = setQueryDataProps;\n\n // Generate query init (e.g. const queryOptions = fn(...) or const http = inject(HttpClient))\n const queryInit = adapter.generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n });\n\n // Generate query hook invocation arguments\n const queryInvocationArgs = adapter.generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n operationPrefix,\n type,\n queryOptionsVarName,\n optionalQueryClientArgument,\n });\n\n const queryInvocationSuffix = adapter.getQueryInvocationSuffix();\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${adapter.shouldGenerateOverrideTypes() ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${adapter.getHookPropsDefinitions(\n props,\n )} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n ${queryInit}\n\n const ${queryResultVarName} = ${camel(\n `${operationPrefix}-${adapter.getQueryType(type)}`,\n )}(${queryInvocationArgs}${queryInvocationSuffix})${adapter.shouldCastQueryResult?.() === false ? '' : ` as ${returnType}`};\n\n ${adapter.getQueryReturnStatement({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n queryResultVarName,\n queryOptionsVarName,\n })}\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 shouldGenerateSetQueryData\n ? isReactQuery\n ? `${doc}export const ${setQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n };\n}\\n`\n : `${doc}export const ${setQueryDataFnName} = (queryClient: QueryClient, ${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n}\\n`\n : ''\n}\n${\n shouldGenerateGetQueryData\n ? isReactQuery\n ? `${doc}export const ${getQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\n}\\n`\n : `${doc}export const ${getQueryDataFnName} = (queryClient: QueryClient, ${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\\n`\n : ''\n}\n`;\n};\n\nexport const generateQueryHook = async (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n adapter?: FrameworkAdapter,\n) => {\n if (!adapter) {\n throw new Error('FrameworkAdapter is required for generateQueryHook');\n }\n\n const {\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 } = verbOptions;\n const {\n route,\n override: { operations },\n context,\n output,\n } = options;\n\n // Use adapter to transform props (Vue wraps with MaybeRef)\n const props = adapter.transformProps(_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\n const httpClient = context.output.httpClient;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators: GeneratorMutator[] | undefined;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = [\n operationQueryOptions?.useQuery,\n operationQueryOptions?.useSuspenseQuery,\n operationQueryOptions?.useInfinite,\n operationQueryOptions?.useSuspenseInfiniteQuery,\n ].some(Boolean);\n\n let isQuery =\n (Verbs.GET === verb &&\n [\n override.query.useQuery,\n override.query.useSuspenseQuery,\n override.query.useInfinite,\n override.query.useSuspenseInfiniteQuery,\n ].some(Boolean)) ||\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 // Use adapter to determine how to map props to query properties\n const queryProperties = props\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\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 const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n let queryKeyFns = '';\n\n if (!queryKeyMutator) {\n for (const queryOption of uniqueQueryOptionsByKeys) {\n const makeOptionalParam = (impl: string) => {\n if (impl.includes('=')) return impl;\n return impl.replace(/^(\\w+):\\s*/, '$1?: ');\n };\n\n const queryKeyProps = toObjectString(\n props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((prop) => ({\n ...prop,\n implementation:\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS\n ? prop.implementation\n : makeOptionalParam(prop.implementation),\n })),\n 'implementation',\n );\n\n const routeString = adapter.getQueryKeyRouteString(\n route,\n !!override.query.shouldSplitQueryKey,\n );\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 // Use all params in query key when useOperationIdAsQueryKey=true, otherwise use only query param\n // All params sorted by required first\n const queryKeyParams = props\n .filter((p) =>\n override.query.useOperationIdAsQueryKey\n ? true\n : p.type === GetterPropType.QUERY_PARAM,\n )\n .toSorted((a) => (a.required ? -1 : 1))\n .map((p) => `...(${p.name} ? [${p.name}] : [])`)\n .join(', ');\n\n // Note: do not unref() params in Vue - this will make key lose reactivity\n queryKeyFns += `\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 queryKeyParams,\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n }\n }\n\n implementation += `\n${queryKeyFns}`;\n\n let queryImplementations = '';\n\n for (const queryOption of queries) {\n queryImplementations += generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n }),\n useRuntimeFetcher: override.fetch.useRuntimeFetcher,\n queryOptionsMutator,\n queryKeyMutator,\n route,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n useSetQueryData:\n operationQueryOptions?.useSetQueryData ?? query.useSetQueryData,\n useGetQueryData:\n operationQueryOptions?.useGetQueryData ?? query.useGetQueryData,\n adapter,\n });\n }\n\n implementation += `\n ${queryImplementations}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n let imports: GeneratorImport[] = [];\n\n if (isMutation) {\n const mutationResult = await generateMutationHook({\n verbOptions: { ...verbOptions, props },\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n });\n\n implementation += mutationResult.implementation;\n mutators = mutationResult.mutators\n ? [...(mutators ?? []), ...mutationResult.mutators]\n : mutators;\n imports = mutationResult.imports;\n }\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n generateVerbImports,\n mergeDeep,\n type NormalizedOutputOptions,\n type QueryOptions,\n} from '@orval/core';\n\nimport { getQueryHeader } from './client';\nimport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\nimport { createFrameworkAdapter } from './frameworks';\nimport { generateQueryHook } from './query-generator';\nimport { normalizeQueryOptions } from './utils';\n\nexport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\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 isZodOutput =\n typeof options.context.output.schemas === 'object' &&\n options.context.output.schemas.type === 'zod';\n const responseType = verbOptions.response.definition.success;\n const isPrimitiveResponse = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const shouldUseRuntimeValidation =\n verbOptions.override.query.runtimeValidation && isZodOutput;\n\n const normalizedVerbOptions =\n shouldUseRuntimeValidation &&\n !isPrimitiveResponse &&\n verbOptions.response.imports.some((imp) => imp.name === responseType)\n ? {\n ...verbOptions,\n response: {\n ...verbOptions.response,\n imports: verbOptions.response.imports.map((imp) =>\n imp.name === responseType ? { ...imp, values: true } : imp,\n ),\n },\n }\n : verbOptions;\n\n const adapter = createFrameworkAdapter({\n outputClient,\n packageJson: options.context.output.packageJson,\n queryVersion: normalizedVerbOptions.override.query.version,\n });\n\n const imports = generateVerbImports(normalizedVerbOptions);\n const functionImplementation = adapter.generateRequestFunction(\n normalizedVerbOptions,\n options,\n );\n const {\n implementation: hookImplementation,\n imports: hookImports,\n mutators,\n } = await generateQueryHook(\n normalizedVerbOptions,\n options,\n outputClient,\n adapter,\n );\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports: [...imports, ...hookImports],\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n 'angular-query': getAngularQueryDependencies,\n 'solid-query': getSolidQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-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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"}
1
+ {"version":3,"file":"index.mjs","names":["generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","OutputClientConst"],"sources":["../src/utils.ts","../src/client.ts","../src/dependencies.ts","../src/query-options.ts","../src/frameworks/angular.ts","../src/frameworks/react.ts","../src/frameworks/solid.ts","../src/frameworks/svelte.ts","../src/frameworks/vue.ts","../src/frameworks/index.ts","../src/mutation-generator.ts","../src/query-generator.ts","../src/index.ts"],"sourcesContent":["import nodePath from 'node:path';\nimport { styleText } from 'node:util';\n\nimport {\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} from '@orval/core';\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.useSetQueryData ? { useSetQueryData: true } : {}),\n ...(queryOptions.useGetQueryData ? { useGetQueryData: 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 const m = mutator as Exclude<Mutator, string>;\n if (!m.path) {\n throw new Error(styleText('red', `Mutator need a path`));\n }\n\n return {\n path: nodePath.resolve(workspace, m.path),\n name: m.name,\n default: m.default ?? !m.name,\n alias: m.alias,\n external: m.external,\n extension: m.extension,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: nodePath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return undefined;\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 isSolid = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SOLID_QUERY === client;\n\nexport const isAngular = (client: OutputClient | OutputClientFunc) =>\n OutputClient.ANGULAR_QUERY === client;\n\nexport const isReact = (client: OutputClient | OutputClientFunc) =>\n OutputClient.REACT_QUERY === client;\n\nexport const isSvelte = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SVELTE_QUERY === client;\n\nexport const getQueryTypeForFramework = (type: string): string => {\n // Angular Query and Svelte Query don't have suspense variants, map them to regular queries\n switch (type) {\n case 'suspenseQuery': {\n return 'query';\n }\n case 'suspenseInfiniteQuery': {\n return 'infiniteQuery';\n }\n default: {\n return type;\n }\n }\n};\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n}: {\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal;\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 getAngularFilteredParamsCallExpression,\n getAngularFilteredParamsHelperBody,\n getSuccessResponseType,\n type GetterResponse,\n isObject,\n isSyntheticDefaultImportsAllow,\n kebab,\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 = [\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] as const satisfies readonly GeneratorDependency[];\n\nexport const ANGULAR_HTTP_DEPENDENCIES = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders', values: true },\n { name: 'HttpParams', values: true },\n { name: 'HttpContext' },\n ],\n dependency: '@angular/common/http',\n },\n // Note: 'inject' from @angular/core is already in ANGULAR_QUERY_DEPENDENCIES\n {\n exports: [\n { name: 'lastValueFrom', values: true },\n { name: 'fromEvent', values: true },\n ],\n dependency: 'rxjs',\n },\n {\n exports: [\n { name: 'takeUntil', values: true },\n { name: 'map', values: true },\n ],\n dependency: 'rxjs/operators',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n isAngularClient = false,\n) => {\n if (\n isAngularClient ||\n options.context.output.httpClient === OutputHttpClient.ANGULAR\n ) {\n return generateAngularHttpRequestFunction(verbOptions, options);\n }\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAngularHttpRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\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 });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some((prop) => prop.name === 'signal');\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n // Handle mutator case\n if (mutator) {\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue: false,\n isAngular: context.output.httpClient === OutputHttpClient.ANGULAR,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n const propsImplementation = toObjectString(props, 'implementation');\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 } ${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n // Generate native Angular HttpClient implementation\n const queryProps = toObjectString(props, 'implementation').replace(\n /,\\s*$/,\n '',\n );\n const dataType = response.definition.success || 'unknown';\n\n // Build URL with query params - use httpParams to avoid shadowing the 'params' variable\n const hasQueryParams = queryParams?.schema.name;\n // The queryParams variable from function props is always named 'params'\n const filteredParamsExpression = getAngularFilteredParamsCallExpression(\n 'params',\n queryParams?.requiredNullableKeys,\n );\n const urlConstruction = hasQueryParams\n ? `const httpParams = params ? new HttpParams({ fromObject: ${filteredParamsExpression} }) : undefined;\n const url = \\`${route}\\`;`\n : `const url = \\`${route}\\`;`;\n\n // Build request options\n const httpOptions: string[] = [];\n if (hasQueryParams) {\n httpOptions.push('params: httpParams');\n }\n if (headers) {\n httpOptions.push('headers: new HttpHeaders(headers)');\n }\n\n // Use only success response content types to determine responseType\n // (response.contentTypes includes error responses which may be JSON and would\n // incorrectly prevent text/blob responseType from being set)\n const successResponseType = getSuccessResponseType(response);\n const responseTypeOption = successResponseType\n ? `'${successResponseType}'`\n : undefined;\n if (responseTypeOption) {\n httpOptions.push(`responseType: ${responseTypeOption}`);\n }\n\n const optionsStr =\n httpOptions.length > 0 ? `, { ${httpOptions.join(', ')} }` : '';\n\n // Build the HTTP method call\n let httpCall: string;\n const httpGeneric = responseTypeOption ? '' : `<${dataType}>`;\n const bodyArg =\n isFormData && body.formData\n ? 'formData'\n : isFormUrlEncoded && body.formUrlEncoded\n ? 'formUrlEncoded'\n : body.definition\n ? toObjectString([body], 'implementation').replace(/,\\s*$/, '')\n : '';\n\n switch (verb) {\n case 'get':\n case 'head': {\n httpCall = `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n case 'delete': {\n httpCall = bodyArg\n ? `http.${verb}${httpGeneric}(url, { ${httpOptions.length > 0 ? httpOptions.join(', ') + ', ' : ''}body: ${bodyArg} })`\n : `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n default: {\n // post, put, patch\n httpCall = `http.${verb}${httpGeneric}(url, ${bodyArg || 'undefined'}${optionsStr})`;\n break;\n }\n }\n\n // Detect if Zod runtime validation should be applied\n const responseType = response.definition.success;\n const isPrimitiveType = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const hasSchema = response.imports.some((imp) => imp.name === responseType);\n const isZodOutput =\n isObject(context.output.schemas) && context.output.schemas.type === 'zod';\n const isValidateResponse =\n override.query.runtimeValidation &&\n isZodOutput &&\n !isPrimitiveType &&\n hasSchema;\n\n // If validation is enabled, pipe through map(data => Schema.parse(data))\n if (isValidateResponse) {\n const schemaValueRef =\n responseType === 'Error' ? 'ErrorSchema' : responseType;\n httpCall = `${httpCall}.pipe(map(data => ${schemaValueRef}.parse(data)))`;\n }\n\n // For Angular, we use takeUntil with fromEvent to handle AbortSignal cancellation\n // This follows the pattern from TanStack Query Angular documentation\n // Note: signal can be null (from RequestInit), so we accept null | undefined\n const optionsParam = hasSignal\n ? 'options?: { signal?: AbortSignal | null }'\n : '';\n\n // Build additional params after http, handling empty queryProps properly\n const additionalParams = [queryProps, optionsParam]\n .filter(Boolean)\n .join(', ');\n\n // Note: http parameter is passed from the inject* function which has injection context\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\n http: HttpClient${additionalParams ? `,\\n ${additionalParams}` : ''}\n ): Promise<${dataType}> => {\n ${bodyForm}\n ${urlConstruction}\n const request$ = ${httpCall};\n if (options?.signal) {\n return lastValueFrom(request$.pipe(takeUntil(fromEvent(options.signal, 'abort'))));\n }\n return lastValueFrom(request$);\n }\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 });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = _props.some((prop) => prop.name === 'signal');\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 hasSignalParam,\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(String.raw`(\\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 }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${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 }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${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 }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\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 hasSignalParam,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n hasSignalParam,\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 hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return getSignalDefinition({ hasSignal, hasSignalParam });\n};\n\nexport const getSignalDefinition = ({\n hasSignal,\n hasSignalParam = false,\n}: {\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}): string => {\n if (!hasSignal) {\n return '';\n }\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n return `${signalVar}?: AbortSignal\\n`;\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n return `axios?: AxiosRequestConfig`;\n }\n if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n return 'fetch?: RequestInit, fetcher?: typeof globalThis.fetch';\n }\n return '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 hasSignalParam = false,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n hasSignalParam?: boolean;\n useRuntimeFetcher?: boolean;\n}) => {\n // Use querySignal if API has a param named \"signal\" to avoid conflict\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n // Only use explicit `signal: querySignal` when there's a naming conflict\n const signalProp = hasSignalParam ? `signal: ${signalVar}` : 'signal';\n\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n if (!hasSignal) {\n return `${options}${fetcherArg}`;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes\n ? `...(${signalVar} ? { ${signalProp} } : {})`\n : signalProp\n }, ...${options} }${fetcherArg}`;\n }\n\n // For Angular mutators with hasSecondArg, pass http through options parameter\n // http is injected in the queryOptionsFn and passed here as the second arg to the mutator\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n if (!hasSignal) {\n return 'http';\n }\n return `http, ${signalVar}`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n // Axios and Angular mutators: signal is a separate argument\n // Fetch mutators: signal is wrapped in options object\n return httpClient === OutputHttpClient.AXIOS ||\n httpClient === OutputHttpClient.ANGULAR\n ? `requestOptions, ${signalVar}`\n : `{ ${signalProp}, ...requestOptions }`;\n }\n\n if (hasSignal) {\n // Axios: signal is always separate\n // Angular with mutator: signal is separate (mutator pattern)\n // Angular without mutator: signal is wrapped (native pattern)\n // Fetch/other: signal is wrapped\n if (httpClient === OutputHttpClient.AXIOS) {\n return signalVar;\n }\n if (httpClient === OutputHttpClient.ANGULAR && mutator) {\n return signalVar;\n }\n return `{ ${signalProp} }`;\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n useRuntimeFetcher?: boolean;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n value += ', axios: axiosOptions';\n } else if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n value += ', fetch: fetchOptions, fetcher: fetcherFn';\n } else {\n value += ', fetch: fetchOptions';\n }\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 useRuntimeFetcher?: boolean,\n) => {\n const fetcherOption =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcher: fetcherFn'\n : '';\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : `, fetch: fetchOptions${fetcherOption}`;\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 useRuntimeFetcher?: boolean,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n // For Angular mutators with hasSecondArg, pass http (which is injected in inject* fn)\n // http is required as first param so no assertion needed\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n return 'http';\n }\n\n return isRequestOptions\n ? mutator\n ? mutator.hasSecondArg\n ? 'requestOptions'\n : ''\n : `${options}${fetcherArg}`\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n isAngular = false,\n hasMutator = false,\n) => {\n const result =\n isVue && httpClient === OutputHttpClient.FETCH && queryProperties\n ? queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',')\n : queryProperties;\n\n // For Angular, prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used - mutator handles HTTP client internally\n // http is required as first param so no assertion needed\n if ((isAngular || httpClient === OutputHttpClient.ANGULAR) && !hasMutator) {\n return result ? `http, ${result}` : 'http';\n }\n\n return result;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n if (params.output.httpClient === OutputHttpClient.FETCH) {\n return generateFetchHeader(params);\n }\n\n if (params.output.httpClient === OutputHttpClient.ANGULAR) {\n const relevantVerbs = params.tag\n ? Object.values(params.verbOptions).filter(\n (verbOption) => kebab(verbOption.tags[0] ?? 'default') === params.tag,\n )\n : Object.values(params.verbOptions);\n const hasQueryParams = relevantVerbs.some((v) => v.queryParams);\n\n return hasQueryParams ? getAngularFilteredParamsHelperBody() : '';\n }\n\n return '';\n};\n","import {\n type ClientDependenciesBuilder,\n compareVersions,\n type GeneratorDependency,\n OutputHttpClient,\n type PackageJson,\n} from '@orval/core';\n\nimport { ANGULAR_HTTP_DEPENDENCIES, AXIOS_DEPENDENCIES } from './client';\n\nexport const REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nexport const 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: 'useQueryClient', 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: 'useQueryClient', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'MutationFunctionContext' },\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\nexport const 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\nexport const 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: 'MutationFunctionContext' },\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 queryVersion = override?.query.version;\n const useReactQueryV3 =\n queryVersion === undefined\n ? hasReactQuery && !hasReactQueryV4\n : queryVersion <= 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 getSolidQueryImports = (\n prefix: 'use' | 'create',\n): GeneratorDependency[] => {\n const capitalized = prefix === 'use' ? 'Use' : 'Create';\n return [\n {\n exports: [\n { name: `${prefix}Query`, values: true },\n { name: `${prefix}InfiniteQuery`, values: true },\n { name: `${prefix}Mutation`, values: true },\n { name: `${capitalized}QueryOptions` },\n { name: `${capitalized}InfiniteQueryOptions` },\n { name: `${capitalized}MutationOptions` },\n { name: 'SolidQueryOptions' },\n { name: 'SolidInfiniteQueryOptions' },\n { name: 'SolidMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: `${capitalized}QueryResult` },\n { name: `${capitalized}InfiniteQueryResult` },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: `${capitalized}MutationResult` },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/solid-query',\n },\n ];\n};\n\nconst ANGULAR_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'injectQuery', values: true },\n { name: 'injectInfiniteQuery', values: true },\n { name: 'injectMutation', values: true },\n { name: 'InjectQueryOptions' },\n { name: 'InjectMutationOptions' },\n { name: 'CreateQueryOptions' },\n { name: 'CreateInfiniteQueryOptions' },\n { name: 'CreateMutationOptions' },\n { name: 'MutationFunctionContext' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient', values: true },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/angular-query-experimental',\n },\n {\n exports: [\n { name: 'inject', values: true },\n { name: 'Signal' },\n { name: 'computed', values: true },\n ],\n dependency: '@angular/core',\n },\n];\n\nexport const 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\nexport const getSolidQueryDependencies: 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 ...getSolidQueryImports(\n isSolidQueryWithUsePrefix(packageJson) ? 'use' : 'create',\n ),\n ];\n};\n\nexport const getAngularQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n // Always use Angular HTTP dependencies for Angular httpClient\n // Previously skipped for mutators, but we now inject http everywhere\n const useAngularHttp = httpClient === OutputHttpClient.ANGULAR;\n const useAxios = !hasGlobalMutator && httpClient === OutputHttpClient.AXIOS;\n\n return [\n ...(useAngularHttp ? ANGULAR_HTTP_DEPENDENCIES : []),\n ...(useAxios ? AXIOS_DEPENDENCIES : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...ANGULAR_QUERY_DEPENDENCIES,\n ];\n};\n\nexport const isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only\n if (queryClient === 'angular-query') {\n return true;\n }\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' | 'solid-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\nexport const isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports DataTag\n if (queryClient === 'angular-query') {\n return true;\n }\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\nexport const isQueryV5WithRequiredContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-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.14.1');\n};\n\nexport const isQueryV5WithMutationContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-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.89.0');\n};\n\nexport const isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports infinite query options\n if (queryClient === 'angular-query') {\n return true;\n }\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\nexport const isSolidQueryWithUsePrefix = (\n packageJson: PackageJson | undefined,\n) => {\n const version = getPackageByQueryClient(packageJson, 'solid-query');\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n // https://github.com/TanStack/query/blob/v5.71.5/packages/solid-query/src/index.ts\n return compareVersions(withoutRc, '5.71.5');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n const pkgName = '@tanstack/react-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'svelte-query': {\n const pkgName = '@tanstack/svelte-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'vue-query': {\n const pkgName = '@tanstack/vue-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'angular-query': {\n const pkgName = '@tanstack/angular-query-experimental';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'solid-query': {\n const pkgName = '@tanstack/solid-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n }\n};\n","import {\n type GeneratorMutator,\n type GetterParams,\n type GetterQueryParam,\n isObject,\n pascal,\n stringify,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport type { FrameworkAdapter } from './framework-adapter';\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nexport const 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\nexport const generateQueryOptions = ({\n params,\n options,\n type,\n adapter,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n adapter?: FrameworkAdapter;\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 const enabledOption = adapter\n ? adapter.generateEnabledOption(params, options)\n : !isObject(options) || !Object.hasOwn(options, 'enabled')\n ? `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : '';\n\n return `${enabledOption}${queryConfig} ...queryOptions`;\n};\n\nexport const isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nexport const getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n adapter,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n /** 'Use' or 'Create' — from adapter.getQueryOptionsDefinitionPrefix() */\n prefix: string;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n adapter?: FrameworkAdapter;\n}) => {\n const isMutatorHook = mutator?.isHook;\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\n // Use adapter's custom options type name for return types if available\n const optionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName(\n type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE\n ? 'infiniteQuery'\n : 'query',\n )\n : undefined;\n\n const optionType = optionsTypeName\n ? `${optionsTypeName}<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`\n : `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n 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\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n // Mutation options\n const mutationOptionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName('mutation')\n : undefined;\n\n return mutationOptionsTypeName\n ? `${mutationOptionsTypeName}<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`\n : `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n","import {\n camel,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n GetterPropType,\n OutputClient,\n type OutputHttpClient,\n toObjectString,\n} from '@orval/core';\n\nimport {\n generateAngularHttpRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n PrefetchContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition, QueryType } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createAngularAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = 'Create';\n\n return {\n outputClient: OutputClient.ANGULAR_QUERY,\n hookPrefix: 'inject',\n isAngularHttp: true,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n // Angular: allow params to be a getter function for reactive signal support\n return toObjectString(\n props.map((prop) => {\n const getterType = prop.definition.replace(\n /^(\\w+)(\\??): (.+)$/,\n (\n _match: string,\n name: string,\n optional: string,\n type: string,\n ): string =>\n `${name}${optional}: ${type} | (() => ${type.replace(' | undefined', '')}${optional ? ' | undefined' : ''})`,\n );\n return { ...prop, definition: getterType };\n }),\n 'definition',\n );\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n _httpClient: OutputHttpClient,\n hasMutator: boolean,\n ): string {\n // Prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used\n if (!hasMutator) {\n return queryProperties ? `http, ${queryProperties}` : 'http';\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(\n props: GetterProps,\n queryParam: string,\n hasMutator: boolean,\n ): string {\n let result = props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n\n // Prefix with http for infinite queries\n // Skip when custom mutator is used\n if (!hasMutator) {\n result = result ? `http, ${result}` : 'http';\n }\n\n return result;\n },\n\n getHttpFirstParam(mutator?: GeneratorMutator): string {\n if (!mutator || mutator.hasSecondArg) {\n return 'http: HttpClient, ';\n }\n return '';\n },\n\n getMutationHttpPrefix(mutator?: GeneratorMutator): string {\n if (!mutator) {\n return 'http, ';\n }\n return '';\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `CreateQueryResult<TData, TError>`;\n }\n return `CreateInfiniteQueryResult<TData, TError>`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n }: QueryReturnStatementContext): string {\n return `return ${queryResultVarName};`;\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Angular skips DataTag annotation\n return false;\n },\n\n generateQueryInit({ mutator }: QueryInitContext): string {\n // Angular: inject HttpClient if needed, no queryOptions assignment\n if (!mutator || mutator.hasSecondArg) {\n return `const http = inject(HttpClient);`;\n }\n return '';\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n mutator,\n }: QueryInvocationContext): string {\n // Angular: () => { resolve getters; return options(http, ...); }\n return `() => {${\n props.length > 0\n ? `\n // Resolve params if getter function (for signal reactivity)\n ${props.map((p) => `const _${p.name} = typeof ${p.name} === 'function' ? ${p.name}() : ${p.name};`).join('\\n ')}`\n : ''\n }\n // Resolve options if getter function (for signal reactivity)\n const _options = typeof ${isRequestOptions ? 'options' : 'queryOptions'} === 'function' ? ${isRequestOptions ? 'options' : 'queryOptions'}() : ${isRequestOptions ? 'options' : 'queryOptions'};\n return ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http' : ''}${props.length > 0 ? `${!mutator || mutator.hasSecondArg ? ', ' : ''}${props.map((p) => `_${p.name}`).join(', ')}` : ''}, _options);\n }`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Angular never has optional queryClient argument (it injects it)\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\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(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n // For Angular inject* functions (query hooks, not queryOptions or mutations),\n // allow options to be a getter for reactivity.\n // Inject style applies when type is defined (it's a query hook) and not forQueryOptions.\n const forAngularInject = type !== undefined && !forQueryOptions;\n if (forAngularInject) {\n return `options${isQueryRequired ? '' : '?'}: ${optionsType} | (() => ${optionsType})\\n`;\n }\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n }: MutationHookBodyContext): string {\n if (!mutator || mutator.hasSecondArg) {\n return ` const http = inject(HttpClient);${hasInvalidation ? '\\n const queryClient = inject(QueryClient);' : ''}\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(http${hasInvalidation ? ', queryClient' : ''}${isRequestOptions ? ', options' : ', mutationOptions'});\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n }\n\n const mutationImpl = `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n return ` const ${mutationOptionsVarName} = ${mutationImpl};\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n },\n\n getQueryType(type: string): string {\n return getQueryTypeForFramework(type);\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return generateAngularHttpRequestFunction(verbOptions, options);\n },\n\n 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 }: PrefetchContext): string {\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 const prefetchVarName = camel(\n `prefetch-${operationName}-${prefetchType}`,\n );\n\n // Angular: plain async function with http param (no React hooks like useQueryClient/useCallback)\n const httpParam =\n !mutator || mutator.hasSecondArg ? 'http: HttpClient, ' : '';\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${httpParam}${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http, ' : ''}${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n if (${queryOptionsVarName}.enabled === false) {\n return queryClient;\n }\n\n await queryClient.${prefetchFnName}(${queryOptionsVarName});\n\n return queryClient;\n}\\n`;\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { isSuspenseQuery } from '../query-options';\n\nexport const createReactAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.REACT_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryReturnType({\n type,\n isInitialDataDefined,\n }: QueryReturnTypeContext): string {\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 getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n shouldGenerateOverrideTypes(): boolean {\n return hasQueryV5;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\n\nexport const createSolidAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n hasSolidQueryUsePrefix: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.SOLID_QUERY,\n hookPrefix: hasSolidQueryUsePrefix ? 'use' : 'create',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryOptionsDefinitionPrefix(): string {\n return hasSolidQueryUsePrefix ? 'Use' : 'Create';\n },\n\n getOptionsReturnTypeName(\n type: 'query' | 'infiniteQuery' | 'mutation',\n ): string | undefined {\n // Solid Query uses SolidQueryOptions for queries, SolidInfiniteQueryOptions for infinite queries,\n // and SolidMutationOptions for mutations (these are accessors)\n if (type === 'mutation') return 'SolidMutationOptions';\n if (type === 'infiniteQuery') return 'SolidInfiniteQueryOptions';\n return 'SolidQueryOptions';\n },\n\n getQueryKeyPrefix(): string {\n // Solid Query v5 doesn't support accessing queryKey from queryOptions\n // The queryKey must be generated directly from the params\n return '';\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Solid Query works with accessor functions\n // The queryKey is accessed from within the accessor, not annotated on the return type\n return false;\n },\n\n shouldCastQueryResult(): boolean {\n // Solid Query should not cast the query result because it breaks TypeScript's\n // ability to discriminate between overloads based on initialData\n return false;\n },\n\n shouldCastQueryOptions(): boolean {\n // Solid Query should not cast the query options return type because it prevents\n // TypeScript from properly discriminating between defined and undefined initialData\n return false;\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `${prefix}QueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n }\n return `${prefix}InfiniteQueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n return `: ${prefix}MutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n // Use Object.assign to attach queryKey to the result and cast to any to satisfy TypeScript\n // The type is properly enforced by the function signature\n return `return Object.assign(${queryResultVarName}, { queryKey: ${queryOptionsVarName}.queryKey }) as any;`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n // Solid Query requires options to be wrapped in an arrow function for reactivity\n const optionsArg = isRequestOptions ? 'options' : 'queryOptions';\n const args = queryProperties\n ? `${queryProperties},${optionsArg}`\n : optionsArg;\n return `() => ${queryOptionsFnName}(${args})${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Solid is NOT in the list of frameworks supporting mutation invalidation\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n // Solid Query mutations also need to be wrapped in accessor functions\n return ` return ${operationPrefix}Mutation(() => ${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Solid Query expects queryClient to be an Accessor: () => QueryClient\n return ', queryClient?: () => QueryClient';\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n OutputClient,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport {\n generateAxiosRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createSvelteAdapter = ({\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n\n return {\n outputClient: OutputClient.SVELTE_QUERY,\n hookPrefix: hasSvelteQueryV4 ? 'create' : 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n if (hasSvelteQueryV6) {\n return toObjectString(\n props.map((p) => ({\n ...p,\n definition: p.definition.replace(':', ': () => '),\n })),\n 'definition',\n );\n }\n return toObjectString(props, 'implementation');\n },\n\n getQueryReturnType({\n type,\n isMutatorHook,\n operationName,\n }: QueryReturnTypeContext): string {\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\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n if (hasSvelteQueryV6) {\n return `return ${queryResultVarName}`;\n }\n if (hasSvelteQueryV4) {\n return `${queryResultVarName}.queryKey = ${queryOptionsVarName}.queryKey;\n\n return ${queryResultVarName};`;\n }\n // Svelte v3 - same as default\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n }: QueryInitContext): string {\n if (hasSvelteQueryV6) {\n return '';\n }\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n queryOptionsVarName,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n if (hasSvelteQueryV6) {\n return `() => ${queryOptionsFnName}(${toObjectString(\n props.map((p) => ({\n ...p,\n name: p.default || !p.required ? `${p.name}?.()` : `${p.name}()`,\n })),\n 'name',\n )}${isRequestOptions ? 'options?.()' : 'queryOptions?.()'})`;\n }\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getQueryInvocationSuffix(): string {\n return hasSvelteQueryV6 ? `, queryClient` : '';\n },\n\n getOptionalQueryClientArgument(hasInvalidation?: boolean): string {\n if (hasSvelteQueryV6) {\n return `, queryClient?: () => QueryClient`;\n }\n if (hasQueryV5 || hasInvalidation) {\n return ', queryClient?: QueryClient';\n }\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\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(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${hasSvelteQueryV6 && !forQueryOptions ? '() => ' : ''}${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n if (hasSvelteQueryV6) {\n return `${mutationOptionsFnName}(${hasInvalidation ? `backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n }?.())`;\n }\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n if (hasSvelteQueryV6) {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient(${optionalQueryClientArgument ? 'queryClient?.()' : ''});\\n ` : ''}return ${operationPrefix}Mutation(() => ({ ...${mutationImplementation} })${optionalQueryClientArgument ? `, queryClient` : ''});`;\n }\n // Svelte v4/v5\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation});`;\n },\n\n getQueryType(type: string): string {\n if (hasSvelteQueryV4) {\n return getQueryTypeForFramework(type);\n }\n return type;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\nimport { vueUnRefParams, vueWrapTypeWithMaybeRef } from '../utils';\n\nexport const createVueAdapter = ({\n hasVueQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasVueQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.VUE_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n transformProps(props: GetterProps): GetterProps {\n return vueWrapTypeWithMaybeRef(props);\n },\n\n shouldDestructureNamedPathParams(): boolean {\n // Vue keeps param.name for named path params (doesn't destructure)\n return false;\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n httpClient: OutputHttpClient,\n ): string {\n // Vue with fetch: unref each prop\n if (httpClient === OutputHttpClient.FETCH && queryProperties) {\n return queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',');\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string): string {\n return props\n .map((param) => {\n // Vue does NOT destructure named path params (keeps param.name)\n return param.name === 'params'\n ? `{...unref(params), '${queryParam}': pageParam || unref(params)?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\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\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n return `${queryResultVarName}.queryKey = unref(${queryOptionsVarName}).queryKey as ${queryKeyType};\n\n return ${queryResultVarName};`;\n },\n\n getQueryKeyRouteString(route: string): string {\n // Vue always uses getRouteAsArray for reactivity\n return getRouteAsArray(route);\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Vue skips DataTag annotation\n return false;\n },\n\n getUnrefStatements(props: GetterProps): string {\n return vueUnRefParams(\n props.filter((prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS),\n );\n },\n\n generateEnabledOption(\n params: GetterParams,\n options?: object | boolean,\n ): string {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`;\n }\n return '';\n },\n\n getQueryKeyPrefix(): string {\n return hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? ';\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Vue is NOT in the list: isAngularClient || isReact(outputClient) || isSvelte(outputClient)\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, true)\n : generateFetchRequestFunction(verbOptions, options);\n },\n\n getQueryPropertyForProp(\n prop: GetterProp,\n body: { implementation: string },\n ): string {\n // Vue does NOT destructure named path params (keeps param.name for reactivity)\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n});\n","import {\n getRouteAsArray,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n type OutputClient,\n OutputClient as OutputClientConst,\n type OutputClientFunc,\n type PackageJson,\n toObjectString,\n} from '@orval/core';\n\nimport { getQueryArgumentsRequestType } from '../client';\nimport {\n isQueryV5,\n isQueryV5WithDataTagError,\n isQueryV5WithInfiniteQueryOptionsError,\n isQueryV5WithMutationContextOnSuccess,\n isQueryV5WithRequiredContextOnSuccess,\n isSolidQueryWithUsePrefix,\n isSvelteQueryV3,\n isSvelteQueryV6,\n isVueQueryV3,\n} from '../dependencies';\nimport type {\n FrameworkAdapter,\n FrameworkAdapterConfig,\n MutationOnSuccessContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { createAngularAdapter } from './angular';\nimport { createReactAdapter } from './react';\nimport { createSolidAdapter } from './solid';\nimport { createSvelteAdapter } from './svelte';\nimport { createVueAdapter } from './vue';\n\n/** Fill in defaults for fields that most adapters leave empty or share a common implementation. */\nconst withDefaults = (adapter: FrameworkAdapterConfig): FrameworkAdapter => ({\n // --- Original defaults (false / empty string) ---\n isAngularHttp: false,\n getHttpFirstParam: () => '',\n getMutationHttpPrefix: () => '',\n getUnrefStatements: () => '',\n getQueryInvocationSuffix: () => '',\n\n // --- Identity / pass-through defaults ---\n transformProps: (props) => props,\n getHttpFunctionQueryProps: (qp) => qp,\n getQueryType: (type) => type,\n\n // --- Boolean defaults ---\n shouldDestructureNamedPathParams: () => true,\n shouldAnnotateQueryKey: () => true,\n shouldGenerateOverrideTypes: () => false,\n shouldCastQueryResult: () => true,\n shouldCastQueryOptions: () => true,\n\n // --- String defaults ---\n getQueryKeyPrefix: () => 'queryOptions?.queryKey ?? ',\n getQueryOptionsDefinitionPrefix: () => 'Use',\n\n // --- Common implementation defaults ---\n getHookPropsDefinitions: (props) => toObjectString(props, 'implementation'),\n\n getQueryKeyRouteString(route, shouldSplitQueryKey) {\n if (shouldSplitQueryKey) {\n return getRouteAsArray(route);\n }\n return `\\`${route}\\``;\n },\n\n generateEnabledOption(params, options) {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`;\n }\n return '';\n },\n\n getQueryPropertyForProp(prop: GetterProp, body: { implementation: string }) {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS)\n return prop.destructured;\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string) {\n return props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n generateQueryInit({ queryOptionsFnName, queryProperties, isRequestOptions }) {\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsVarName,\n optionalQueryClientArgument,\n }) {\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getOptionalQueryClientArgument() {\n return adapter.hasQueryV5 ? ', queryClient?: QueryClient' : '';\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n }) {\n const prefix = adapter.getQueryOptionsDefinitionPrefix?.() ?? 'Use';\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.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(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n }: MutationOnSuccessContext): string {\n const invalidateCalls = uniqueInvalidates\n .map((t) => generateInvalidateCall(t))\n .join('\\n');\n if (adapter.hasQueryV5WithMutationContextOnSuccess) {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n } else {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n },\n ...adapter,\n});\n\nexport type QueryClientType =\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n\n/**\n * Create a FrameworkAdapter for the given output client, resolving version flags\n * from the packageJson and query config.\n */\nexport const createFrameworkAdapter = ({\n outputClient,\n packageJson,\n queryVersion,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n packageJson?: PackageJson;\n queryVersion?: number;\n}): FrameworkAdapter => {\n const clientType = outputClient as QueryClientType;\n\n const _hasQueryV5 = queryVersion === 5 || isQueryV5(packageJson, clientType);\n\n const _hasQueryV5WithDataTagError =\n queryVersion === 5 || isQueryV5WithDataTagError(packageJson, clientType);\n\n const _hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(packageJson, clientType);\n const _hasQueryV5WithMutationContextOnSuccess =\n isQueryV5WithMutationContextOnSuccess(packageJson, clientType);\n const _hasQueryV5WithRequiredContextOnSuccess =\n isQueryV5WithRequiredContextOnSuccess(packageJson, clientType);\n\n switch (outputClient) {\n case OutputClientConst.VUE_QUERY: {\n const hasVueQueryV4 = !isVueQueryV3(packageJson) || queryVersion === 4;\n return withDefaults(\n createVueAdapter({\n hasVueQueryV4,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SVELTE_QUERY: {\n const hasSvelteQueryV4 =\n !isSvelteQueryV3(packageJson) || queryVersion === 4;\n const _hasSvelteQueryV6 = isSvelteQueryV6(packageJson);\n return withDefaults(\n createSvelteAdapter({\n hasSvelteQueryV4,\n hasSvelteQueryV6: _hasSvelteQueryV6,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.ANGULAR_QUERY: {\n return withDefaults(\n createAngularAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SOLID_QUERY: {\n const hasSolidQueryWithUsePrefix = isSolidQueryWithUsePrefix(packageJson);\n return withDefaults(\n createSolidAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix: hasSolidQueryWithUsePrefix,\n }),\n );\n }\n\n default: {\n // react-query is the default\n return withDefaults(\n createReactAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n }\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n type InvalidateTarget,\n type InvalidateTargetParam,\n isString,\n type OutputHttpClient,\n pascal,\n} from '@orval/core';\n\nimport {\n getHooksOptionImplementation,\n getMutationRequestArgs,\n getQueryErrorType,\n} from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { getQueryOptionsDefinition } from './query-options';\n\ninterface NormalizedTarget {\n query: string;\n params?: InvalidateTargetParam[] | Record<string, InvalidateTargetParam>;\n invalidateMode: 'invalidate' | 'reset';\n file?: string;\n}\n\nconst normalizeInvalidateMode = (\n invalidateMode: string | undefined,\n): NormalizedTarget['invalidateMode'] =>\n invalidateMode === 'reset' ? 'reset' : 'invalidate';\n\nconst normalizeTarget = (target: InvalidateTarget): NormalizedTarget =>\n isString(target)\n ? { query: target, invalidateMode: 'invalidate' }\n : {\n ...target,\n invalidateMode: normalizeInvalidateMode(target.invalidateMode),\n };\n\nconst serializeTarget = (target: NormalizedTarget): string =>\n JSON.stringify({\n query: target.query,\n params: target.params ?? [],\n invalidateMode: target.invalidateMode,\n file: target.file ?? '',\n });\n\nconst HTTP_METHODS = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'options',\n 'head',\n 'trace',\n];\n\ninterface OperationRouteInfo {\n route: string;\n /** true when the route has path params that lack a default value */\n hasRequiredPathParams: boolean;\n}\n\ninterface SpecPathItem {\n parameters?: SpecParameter[];\n [method: string]: unknown;\n}\n\ninterface SpecOperation {\n operationId?: string;\n parameters?: SpecParameter[];\n}\n\ninterface SpecParameter {\n in?: string;\n default?: unknown;\n schema?: { default?: unknown };\n}\n\n/**\n * Look up an operation's route and path-parameter metadata from the OpenAPI\n * spec. Matches against both the raw `operationId` and its camelCase form\n * so that renamed/overridden operations are still found.\n */\nconst findOperationInfo = (\n spec: Record<string, unknown> | undefined,\n operationName: string,\n): OperationRouteInfo | undefined => {\n const paths = spec?.paths;\n if (!paths || typeof paths !== 'object') return undefined;\n\n for (const [routePath, rawPathItem] of Object.entries(\n paths as Record<string, unknown>,\n )) {\n if (!rawPathItem || typeof rawPathItem !== 'object') continue;\n const pathItem = rawPathItem as SpecPathItem;\n\n for (const method of HTTP_METHODS) {\n const operation = pathItem[method] as SpecOperation | undefined;\n const opId = operation?.operationId;\n if (!opId) continue;\n // Match both raw operationId and its camelCase generated name\n if (opId !== operationName && camel(opId) !== operationName) continue;\n\n if (!routePath.includes('{')) {\n return { route: routePath, hasRequiredPathParams: false };\n }\n\n // Collect path parameters from both path-level and operation-level\n const pathParams = [\n ...(Array.isArray(pathItem.parameters) ? pathItem.parameters : []),\n ...(Array.isArray(operation.parameters) ? operation.parameters : []),\n ].filter((p) => p.in === 'path');\n\n const hasRequiredPathParams = pathParams.some(\n (p) => p.schema?.default === undefined && p.default === undefined,\n );\n\n return { route: routePath, hasRequiredPathParams };\n }\n }\n return undefined;\n};\n\n/**\n * Extract the static route prefix before the first path parameter.\n * e.g. \"/pets/{petId}\" → \"/pets/\", \"/pets\" → \"/pets\"\n *\n * Returns `undefined` when the prefix contains no meaningful literal\n * segments (e.g. \"/{tenantId}/pets\") to avoid overly-broad invalidation.\n */\nconst getStaticRoutePrefix = (route: string): string | undefined => {\n const idx = route.indexOf('{');\n if (idx === -1) return route;\n const prefix = route.slice(0, idx);\n // Guard: a prefix like \"/\" has no stable literal segment and would\n // match every route-style query key – fall back to the zero-arg call.\n const hasLiteralSegment = prefix\n .split('/')\n .some((segment) => segment.length > 0);\n return hasLiteralSegment ? prefix : undefined;\n};\n\n/**\n * Check whether the target invalidation needs to call the query key function.\n * Returns false when no params are specified and the route has required path\n * parameters (without defaults), meaning we should use predicate-based broad\n * invalidation instead of calling the function without the required arguments.\n */\nconst hasNonEmptyParams = (\n params:\n | InvalidateTargetParam[]\n | Record<string, InvalidateTargetParam>\n | undefined,\n): params is\n | InvalidateTargetParam[]\n | Record<string, InvalidateTargetParam> => {\n if (!params) return false;\n if (Array.isArray(params)) return params.length > 0;\n return Object.keys(params).length > 0;\n};\n\nconst needsQueryKeyFnCall = (\n target: NormalizedTarget,\n spec: Record<string, unknown> | undefined,\n): boolean => {\n if (hasNonEmptyParams(target.params)) return true;\n const info = findOperationInfo(spec, target.query);\n if (info?.hasRequiredPathParams) return false;\n return true;\n};\n\nconst generateParamArg = (param: InvalidateTargetParam): string => {\n if (!isString(param)) {\n return JSON.stringify(param.literal);\n }\n const parts = param.split('.');\n if (parts.length === 1) {\n return `variables.${param}`;\n }\n return `variables.${parts[0]}?.${parts.slice(1).join('?.')}`;\n};\n\nconst generateParamArgs = (\n params: InvalidateTargetParam[] | Record<string, InvalidateTargetParam>,\n): string => {\n if (Array.isArray(params)) {\n return params.map((v) => generateParamArg(v)).join(', ');\n }\n return Object.values(params)\n .map((v) => generateParamArg(v))\n .join(', ');\n};\n\n/**\n * Create a generateInvalidateCall function that has access to the OpenAPI spec\n * for intelligent route-based invalidation when params are not specified.\n */\nconst createGenerateInvalidateCall = (\n spec: Record<string, unknown> | undefined,\n shouldSplitQueryKey: boolean,\n) => {\n return (target: NormalizedTarget): string => {\n const method =\n target.invalidateMode === 'reset' ? 'resetQueries' : 'invalidateQueries';\n const queryKeyFn = camel(`get-${target.query}-query-key`);\n\n if (hasNonEmptyParams(target.params)) {\n const args = generateParamArgs(target.params);\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}(${args}) });`;\n }\n\n // No params specified – check if the target query has required path params\n const info = findOperationInfo(spec, target.query);\n\n if (info?.hasRequiredPathParams) {\n // Route has required path parameters (no defaults) – use broad\n // invalidation instead of calling the query key function without\n // the required arguments.\n const prefix = getStaticRoutePrefix(info.route);\n\n // When the prefix has no meaningful literal segments (e.g. route\n // starts with a path param like /{tenantId}/...), fall through to\n // the zero-arg call rather than generating an overly-broad match.\n if (prefix !== undefined) {\n if (shouldSplitQueryKey) {\n // Split-key mode: query keys are arrays like ['pets', petId].\n // Use partial key matching with static route segments.\n const segments = prefix\n .split('/')\n .filter((s) => s !== '')\n .map((s) => `'${s}'`)\n .join(', ');\n return ` queryClient.${method}({ queryKey: [${segments}] });`;\n }\n\n // Default mode: query keys are template strings like ['/pets/${petId}'].\n // Use predicate with startsWith for broad matching.\n return ` queryClient.${method}({ predicate: (query) => typeof query.queryKey[0] === 'string' && query.queryKey[0].startsWith('${prefix}') });`;\n }\n }\n\n // No path params or route not found – call query key function without args\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}() });`;\n };\n};\n\nexport interface MutationHookContext {\n verbOptions: GeneratorVerbOptions;\n options: GeneratorOptions;\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n doc: string;\n adapter: FrameworkAdapter;\n}\n\nexport const generateMutationHook = async ({\n verbOptions,\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n}: MutationHookContext): Promise<{\n implementation: string;\n mutators: GeneratorMutator[] | undefined;\n imports: GeneratorImport[];\n}> => {\n const {\n operationName,\n body,\n props,\n mutator,\n response,\n operationId,\n override,\n } = verbOptions;\n const { route, context, output } = options;\n const query = override.query;\n\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 bodyOptionalMark = body.isOptional ? '?' : '';\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data${bodyOptionalMark}: ${mutator.bodyTypeName}<${body.definition}>`\n : `data${bodyOptionalMark}: ${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 prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n adapter,\n });\n\n const invalidatesConfig = (query.mutationInvalidates ?? [])\n .filter((rule) => rule.onMutations.includes(operationName))\n .flatMap((rule) => rule.invalidates)\n .map((t) => normalizeTarget(t));\n const seenTargets = new Set<string>();\n const uniqueInvalidates = invalidatesConfig.filter((target) => {\n const key = serializeTarget(target);\n if (seenTargets.has(key)) return false;\n seenTargets.add(key);\n return true;\n });\n\n const hasInvalidation =\n uniqueInvalidates.length > 0 && adapter.supportsMutationInvalidation();\n\n const useRuntimeFetcher = override.fetch.useRuntimeFetcher;\n\n const mutationArguments = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getMutationOptions function (includes http: HttpClient param for Angular)\n const mutationArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n forQueryOptions: true,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n useRuntimeFetcher,\n );\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n // For Angular/React mutations with invalidation, add queryClient as second required param\n const queryClientParam = hasInvalidation ? 'queryClient: QueryClient, ' : '';\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${httpFirstParam}${queryClientParam}${mutationArgumentsForOptions}): ${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}(${adapter.getMutationHttpPrefix(mutator)}${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator, useRuntimeFetcher)})\n }\n\n${\n hasInvalidation\n ? adapter.generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall: createGenerateInvalidateCall(\n context.spec,\n !!query.shouldSplitQueryKey,\n ),\n uniqueInvalidates,\n })\n : ''\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 : hasInvalidation\n ? '{ ...mutationOptions, mutationFn, onSuccess }'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = adapter.hookPrefix;\n\n const optionalQueryClientArgument =\n adapter.getOptionalQueryClientArgument(hasInvalidation);\n\n const mutationImplementation = adapter.generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n });\n\n const mutationOptionsVarName = camel(`${operationName}-mutation-options`);\n\n const mutationReturnType = adapter.getMutationReturnType({\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n });\n\n const mutationHookBody = adapter.generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationImplementation,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n optionalQueryClientArgument,\n });\n\n const 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 }${body.isOptional ? ' | undefined' : ''}`\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})${mutationReturnType} => {\n${mutationHookBody}\n }\n `;\n\n const mutators = mutationOptionsMutator\n ? [mutationOptionsMutator]\n : undefined;\n\n const imports: GeneratorImport[] = hasInvalidation\n ? uniqueInvalidates\n .filter((i) => !!i.file && needsQueryKeyFnCall(i, context.spec))\n .map<GeneratorImport>((i) => ({\n name: camel(`get-${i.query}-query-key`),\n importPath: i.file,\n values: true,\n }))\n : [];\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n jsDoc,\n OutputClient,\n type OutputClientFunc,\n type OutputHttpClient,\n pascal,\n toObjectString,\n Verbs,\n} from '@orval/core';\n\nimport { getHookOptions, getQueryErrorType, getQueryOptions } from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { generateMutationHook } from './mutation-generator';\nimport {\n generateQueryOptions,\n getQueryOptionsDefinition,\n QueryType,\n} from './query-options';\nimport { getHasSignal } from './utils';\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n hasSignalParam = false,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n // Rename AbortSignal if API has a param named \"signal\" to avoid conflict\n const signalDestructure = hasSignalParam ? 'signal: querySignal' : 'signal';\n\n if (hasQueryParam) {\n if (hasSignal) {\n return `{ ${signalDestructure}, pageParam }`;\n }\n\n return '{ pageParam }';\n }\n\n return `{ ${signalDestructure} }`;\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}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: (typeof QueryType)[keyof typeof 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}) => {\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}(${queryOptionsVarName});\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 httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n useRuntimeFetcher,\n route,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n useSetQueryData,\n useGetQueryData,\n adapter,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: (typeof QueryType)[keyof typeof 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 httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n useRuntimeFetcher?: boolean;\n route: string;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n useSetQueryData?: boolean;\n useGetQueryData?: boolean;\n adapter: FrameworkAdapter;\n}) => {\n const {\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n } = adapter;\n\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some(\n (prop: GetterProp) => prop.name === 'signal',\n );\n\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(String.raw`^${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 ? adapter.getInfiniteQueryHttpProps(props, queryParam, !!mutator)\n : adapter.getHttpFunctionQueryProps(queryProperties, httpClient, !!mutator);\n\n const definedInitialDataReturnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\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 = adapter.generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n useRuntimeFetcher,\n });\n const undefinedInitialDataQueryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n useRuntimeFetcher,\n });\n const queryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getQueryOptions function (includes http: HttpClient param for Angular)\n const queryArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n forQueryOptions: true,\n useRuntimeFetcher,\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n hasSignalParam,\n useRuntimeFetcher,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n hasSignalParam,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n adapter,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n adapter,\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 // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${httpFirstParam}${queryProps} ${queryArgumentsForOptions}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${adapter.getQueryKeyPrefix()}${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 ${adapter.getUnrefStatements(props)}\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 }${\n adapter.shouldCastQueryOptions?.() === false\n ? ''\n : ` as ${queryOptionFnReturnType} ${\n adapter.shouldAnnotateQueryKey()\n ? `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n : ''\n }`\n }\n}`;\n const operationPrefix = adapter.hookPrefix;\n const optionalQueryClientArgument = adapter.getOptionalQueryClientArgument();\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 prefetchContext = {\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n queryArguments: queryArgumentsForOptions,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n };\n\n const prefetch = adapter.generatePrefetch\n ? adapter.generatePrefetch(prefetchContext)\n : generatePrefetch(prefetchContext);\n\n const isPrimaryQueryType =\n type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite);\n\n const shouldGenerateInvalidate = useInvalidate && isPrimaryQueryType;\n const invalidateFnName = camel(`invalidate-${name}`);\n\n const shouldGenerateSetQueryData = useSetQueryData && isPrimaryQueryType;\n const isReactQuery = adapter.outputClient === OutputClient.REACT_QUERY;\n const setQueryDataFnName = isReactQuery\n ? camel(`use-set-${name}-query-data`)\n : camel(`set-${name}-query-data`);\n const setQueryDataKeyExpr = queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${queryKeyMutator.hasSecondArg ? `, { url: \\`${route}\\` }` : ''})`\n : `${queryKeyFnName}(${queryKeyProperties})`;\n const setQueryDataProps = toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ).replaceAll('?:', ':');\n\n const shouldGenerateGetQueryData = useGetQueryData && isPrimaryQueryType;\n const getQueryDataFnName = isReactQuery\n ? camel(`use-get-${name}-query-data`)\n : camel(`get-${name}-query-data`);\n const getQueryDataKeyExpr = setQueryDataKeyExpr;\n const getQueryDataProps = setQueryDataProps;\n\n // Generate query init (e.g. const queryOptions = fn(...) or const http = inject(HttpClient))\n const queryInit = adapter.generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n });\n\n // Generate query hook invocation arguments\n const queryInvocationArgs = adapter.generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n operationPrefix,\n type,\n queryOptionsVarName,\n optionalQueryClientArgument,\n });\n\n const queryInvocationSuffix = adapter.getQueryInvocationSuffix();\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${adapter.shouldGenerateOverrideTypes() ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${adapter.getHookPropsDefinitions(\n props,\n )} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n ${queryInit}\n\n const ${queryResultVarName} = ${camel(\n `${operationPrefix}-${adapter.getQueryType(type)}`,\n )}(${queryInvocationArgs}${queryInvocationSuffix})${adapter.shouldCastQueryResult?.() === false ? '' : ` as ${returnType}`};\n\n ${adapter.getQueryReturnStatement({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n queryResultVarName,\n queryOptionsVarName,\n })}\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 shouldGenerateSetQueryData\n ? isReactQuery\n ? `${doc}export const ${setQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n };\n}\\n`\n : `${doc}export const ${setQueryDataFnName} = (queryClient: QueryClient, ${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n}\\n`\n : ''\n}\n${\n shouldGenerateGetQueryData\n ? isReactQuery\n ? `${doc}export const ${getQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\n}\\n`\n : `${doc}export const ${getQueryDataFnName} = (queryClient: QueryClient, ${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\\n`\n : ''\n}\n`;\n};\n\nexport const generateQueryHook = async (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n adapter?: FrameworkAdapter,\n) => {\n if (!adapter) {\n throw new Error('FrameworkAdapter is required for generateQueryHook');\n }\n\n const {\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 } = verbOptions;\n const {\n route,\n override: { operations },\n context,\n output,\n } = options;\n\n // Use adapter to transform props (Vue wraps with MaybeRef)\n const props = adapter.transformProps(_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\n const httpClient = context.output.httpClient;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators: GeneratorMutator[] | undefined;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = [\n operationQueryOptions?.useQuery,\n operationQueryOptions?.useSuspenseQuery,\n operationQueryOptions?.useInfinite,\n operationQueryOptions?.useSuspenseInfiniteQuery,\n ].some(Boolean);\n\n let isQuery =\n (Verbs.GET === verb &&\n [\n override.query.useQuery,\n override.query.useSuspenseQuery,\n override.query.useInfinite,\n override.query.useSuspenseInfiniteQuery,\n ].some(Boolean)) ||\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 // Use adapter to determine how to map props to query properties\n const queryProperties = props\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\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 const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n let queryKeyFns = '';\n\n if (!queryKeyMutator) {\n for (const queryOption of uniqueQueryOptionsByKeys) {\n const makeOptionalParam = (impl: string) => {\n if (impl.includes('=')) return impl;\n return impl.replace(/^(\\w+):\\s*/, '$1?: ');\n };\n\n const queryKeyProps = toObjectString(\n props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((prop) => ({\n ...prop,\n implementation:\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS\n ? prop.implementation\n : makeOptionalParam(prop.implementation),\n })),\n 'implementation',\n );\n\n const routeString = adapter.getQueryKeyRouteString(\n route,\n !!override.query.shouldSplitQueryKey,\n );\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 // Use all params in query key when useOperationIdAsQueryKey=true, otherwise use only query param\n // All params sorted by required first\n const queryKeyParams = props\n .filter((p) =>\n override.query.useOperationIdAsQueryKey\n ? true\n : p.type === GetterPropType.QUERY_PARAM,\n )\n .toSorted((a) => (a.required ? -1 : 1))\n .map((p) => `...(${p.name} ? [${p.name}] : [])`)\n .join(', ');\n\n // Note: do not unref() params in Vue - this will make key lose reactivity\n queryKeyFns += `\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 queryKeyParams,\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n }\n }\n\n implementation += `\n${queryKeyFns}`;\n\n let queryImplementations = '';\n\n for (const queryOption of queries) {\n queryImplementations += generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n }),\n useRuntimeFetcher: override.fetch.useRuntimeFetcher,\n queryOptionsMutator,\n queryKeyMutator,\n route,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n useSetQueryData:\n operationQueryOptions?.useSetQueryData ?? query.useSetQueryData,\n useGetQueryData:\n operationQueryOptions?.useGetQueryData ?? query.useGetQueryData,\n adapter,\n });\n }\n\n implementation += `\n ${queryImplementations}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n let imports: GeneratorImport[] = [];\n\n if (isMutation) {\n const mutationResult = await generateMutationHook({\n verbOptions: { ...verbOptions, props },\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n });\n\n implementation += mutationResult.implementation;\n mutators = mutationResult.mutators\n ? [...(mutators ?? []), ...mutationResult.mutators]\n : mutators;\n imports = mutationResult.imports;\n }\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n generateVerbImports,\n mergeDeep,\n type NormalizedOutputOptions,\n type QueryOptions,\n} from '@orval/core';\n\nimport { getQueryHeader } from './client';\nimport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\nimport { createFrameworkAdapter } from './frameworks';\nimport { generateQueryHook } from './query-generator';\nimport { normalizeQueryOptions } from './utils';\n\nexport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\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 isZodOutput =\n typeof options.context.output.schemas === 'object' &&\n options.context.output.schemas.type === 'zod';\n const responseType = verbOptions.response.definition.success;\n const isPrimitiveResponse = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const shouldUseRuntimeValidation =\n verbOptions.override.query.runtimeValidation && isZodOutput;\n\n const normalizedVerbOptions =\n shouldUseRuntimeValidation &&\n !isPrimitiveResponse &&\n verbOptions.response.imports.some((imp) => imp.name === responseType)\n ? {\n ...verbOptions,\n response: {\n ...verbOptions.response,\n imports: verbOptions.response.imports.map((imp) =>\n imp.name === responseType ? { ...imp, values: true } : imp,\n ),\n },\n }\n : verbOptions;\n\n const adapter = createFrameworkAdapter({\n outputClient,\n packageJson: options.context.output.packageJson,\n queryVersion: normalizedVerbOptions.override.query.version,\n });\n\n const imports = generateVerbImports(normalizedVerbOptions);\n const functionImplementation = adapter.generateRequestFunction(\n normalizedVerbOptions,\n options,\n );\n const {\n implementation: hookImplementation,\n imports: hookImports,\n mutators,\n } = await generateQueryHook(\n normalizedVerbOptions,\n options,\n outputClient,\n adapter,\n );\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports: [...imports, ...hookImports],\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n 'angular-query': getAngularQueryDependencies,\n 'solid-query': getSolidQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-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,6 +1,6 @@
1
1
  {
2
2
  "name": "@orval/query",
3
- "version": "8.8.0",
3
+ "version": "8.9.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,14 +35,14 @@
35
35
  "nuke": "rimraf .turbo dist node_modules"
36
36
  },
37
37
  "dependencies": {
38
- "@orval/core": "8.8.0",
39
- "@orval/fetch": "8.8.0",
38
+ "@orval/core": "8.9.0",
39
+ "@orval/fetch": "8.9.0",
40
40
  "remeda": "^2.33.6"
41
41
  },
42
42
  "devDependencies": {
43
43
  "eslint": "10.1.0",
44
44
  "rimraf": "6.1.2",
45
- "tsdown": "0.20.3",
45
+ "tsdown": "0.21.9",
46
46
  "typescript": "5.9.3",
47
47
  "vitest": "4.0.18"
48
48
  },