{"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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"}