@orval/query 8.5.1 → 8.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +4 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { GetterPropType, OutputClient, OutputHttpClient, TEMPLATE_TAG_REGEX, Verbs, camel, compareVersions, generateFormDataAndUrlEncodedFunction, generateMutator, generateMutatorConfig, generateMutatorRequestOptions, generateOptions, generateVerbImports, getAngularFilteredParamsCallExpression, getAngularFilteredParamsHelperBody, getRouteAsArray, getSuccessResponseType, isObject, isString, isSyntheticDefaultImportsAllow, jsDoc, mergeDeep, pascal, stringify, toObjectString
|
|
1
|
+
import { GetterPropType, OutputClient, OutputHttpClient, TEMPLATE_TAG_REGEX, Verbs, camel, compareVersions, generateFormDataAndUrlEncodedFunction, generateMutator, generateMutatorConfig, generateMutatorRequestOptions, generateOptions, generateVerbImports, getAngularFilteredParamsCallExpression, getAngularFilteredParamsHelperBody, getRouteAsArray, getSuccessResponseType, isObject, isString, isSyntheticDefaultImportsAllow, jsDoc, mergeDeep, pascal, stringify, toObjectString } from "@orval/core";
|
|
2
2
|
import { generateFetchHeader, generateRequestFunction } from "@orval/fetch";
|
|
3
|
+
import nodePath from "node:path";
|
|
3
4
|
import { styleText } from "node:util";
|
|
4
5
|
import { omitBy } from "remeda";
|
|
5
6
|
|
|
@@ -28,12 +29,12 @@ const normalizeMutator = (workspace, mutator) => {
|
|
|
28
29
|
if (!mutator.path) throw new Error(styleText("red", `Mutator need a path`));
|
|
29
30
|
return {
|
|
30
31
|
...mutator,
|
|
31
|
-
path:
|
|
32
|
+
path: nodePath.resolve(workspace, mutator.path),
|
|
32
33
|
default: mutator.default ?? !mutator.name
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
if (isString(mutator)) return {
|
|
36
|
-
path:
|
|
37
|
+
path: nodePath.resolve(workspace, mutator),
|
|
37
38
|
default: true
|
|
38
39
|
};
|
|
39
40
|
return mutator;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","OutputClientConst"],"sources":["../src/utils.ts","../src/client.ts","../src/dependencies.ts","../src/query-options.ts","../src/frameworks/angular.ts","../src/frameworks/react.ts","../src/frameworks/solid.ts","../src/frameworks/svelte.ts","../src/frameworks/vue.ts","../src/frameworks/index.ts","../src/mutation-generator.ts","../src/query-generator.ts","../src/index.ts"],"sourcesContent":["import { 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 upath,\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.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions.queryKey),\n }\n : {}),\n ...(queryOptions.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(styleText('red', `Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: upath.resolve(workspace, mutator.path),\n default: mutator.default ?? !mutator.name,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: upath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const 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 OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const ANGULAR_HTTP_DEPENDENCIES = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders', values: true },\n { name: 'HttpParams', values: true },\n { name: 'HttpContext' },\n ],\n dependency: '@angular/common/http',\n },\n // Note: 'inject' from @angular/core is already in ANGULAR_QUERY_DEPENDENCIES\n {\n exports: [\n { name: 'lastValueFrom', values: true },\n { name: 'fromEvent', values: true },\n ],\n dependency: 'rxjs',\n },\n {\n exports: [\n { name: 'takeUntil', values: true },\n { name: 'map', values: true },\n ],\n dependency: 'rxjs/operators',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n isAngularClient = false,\n) => {\n if (\n isAngularClient ||\n options.context.output.httpClient === OutputHttpClient.ANGULAR\n ) {\n return generateAngularHttpRequestFunction(verbOptions, options);\n }\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAngularHttpRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some((prop) => prop.name === 'signal');\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n // Handle mutator case\n if (mutator) {\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue: false,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n const propsImplementation = toObjectString(props, 'implementation');\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n } ${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n // Generate native Angular HttpClient implementation\n const queryProps = toObjectString(props, 'implementation').replace(\n /,\\s*$/,\n '',\n );\n const dataType = response.definition.success || 'unknown';\n\n // Build URL with query params - use httpParams to avoid shadowing the 'params' variable\n const hasQueryParams = queryParams?.schema.name;\n // The queryParams variable from function props is always named 'params'\n const filteredParamsExpression = getAngularFilteredParamsCallExpression(\n 'params',\n queryParams?.requiredNullableKeys,\n );\n const urlConstruction = hasQueryParams\n ? `const httpParams = params ? new HttpParams({ fromObject: ${filteredParamsExpression} }) : undefined;\n const url = \\`${route}\\`;`\n : `const url = \\`${route}\\`;`;\n\n // Build request options\n const httpOptions: string[] = [];\n if (hasQueryParams) {\n httpOptions.push('params: httpParams');\n }\n if (headers) {\n httpOptions.push('headers: new HttpHeaders(headers)');\n }\n\n // Use only success response content types to determine responseType\n // (response.contentTypes includes error responses which may be JSON and would\n // incorrectly prevent text/blob responseType from being set)\n const successResponseType = getSuccessResponseType(response);\n const responseTypeOption = successResponseType\n ? `'${successResponseType}'`\n : undefined;\n if (responseTypeOption) {\n httpOptions.push(`responseType: ${responseTypeOption}`);\n }\n\n const optionsStr =\n httpOptions.length > 0 ? `, { ${httpOptions.join(', ')} }` : '';\n\n // Build the HTTP method call\n let httpCall: string;\n const httpGeneric = responseTypeOption ? '' : `<${dataType}>`;\n const bodyArg =\n isFormData && body.formData\n ? 'formData'\n : isFormUrlEncoded && body.formUrlEncoded\n ? 'formUrlEncoded'\n : body.definition\n ? toObjectString([body], 'implementation').replace(/,\\s*$/, '')\n : '';\n\n switch (verb) {\n case 'get':\n case 'head': {\n httpCall = `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n case 'delete': {\n httpCall = bodyArg\n ? `http.${verb}${httpGeneric}(url, { ${httpOptions.length > 0 ? httpOptions.join(', ') + ', ' : ''}body: ${bodyArg} })`\n : `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n default: {\n // post, put, patch\n httpCall = `http.${verb}${httpGeneric}(url, ${bodyArg || 'undefined'}${optionsStr})`;\n break;\n }\n }\n\n // Detect if Zod runtime validation should be applied\n const responseType = response.definition.success;\n const isPrimitiveType = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const hasSchema = response.imports.some((imp) => imp.name === responseType);\n const isZodOutput =\n isObject(context.output.schemas) && context.output.schemas.type === 'zod';\n const isValidateResponse =\n override.query.runtimeValidation &&\n isZodOutput &&\n !isPrimitiveType &&\n hasSchema;\n\n // If validation is enabled, pipe through map(data => Schema.parse(data))\n if (isValidateResponse) {\n const schemaValueRef =\n responseType === 'Error' ? 'ErrorSchema' : responseType;\n httpCall = `${httpCall}.pipe(map(data => ${schemaValueRef}.parse(data)))`;\n }\n\n // For Angular, we use takeUntil with fromEvent to handle AbortSignal cancellation\n // This follows the pattern from TanStack Query Angular documentation\n // Note: signal can be null (from RequestInit), so we accept null | undefined\n const optionsParam = hasSignal\n ? 'options?: { signal?: AbortSignal | null }'\n : '';\n\n // Build additional params after http, handling empty queryProps properly\n const additionalParams = [queryProps, optionsParam]\n .filter(Boolean)\n .join(', ');\n\n // Note: http parameter is passed from the inject* function which has injection context\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\n http: HttpClient${additionalParams ? `,\\n ${additionalParams}` : ''}\n ): Promise<${dataType}> => {\n ${bodyForm}\n ${urlConstruction}\n const request$ = ${httpCall};\n if (options?.signal) {\n return lastValueFrom(request$.pipe(takeUntil(fromEvent(options.signal, 'abort'))));\n }\n return lastValueFrom(request$);\n }\n`;\n};\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = _props.some((prop) => prop.name === 'signal');\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(String.raw`(\\w*):\\s?${bodyDefinition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n if (mutator.isHook) {\n const ret = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return useCallback((\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n hasSignalParam,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n hasSignalParam,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return getSignalDefinition({ hasSignal, hasSignalParam });\n};\n\nexport const getSignalDefinition = ({\n hasSignal,\n hasSignalParam = false,\n}: {\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}): string => {\n if (!hasSignal) {\n return '';\n }\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n return `${signalVar}?: AbortSignal\\n`;\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n if (!mutator) {\n return httpClient === OutputHttpClient.AXIOS\n ? `axios?: AxiosRequestConfig`\n : 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n hasSignalParam?: 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\n if (!hasSignal) {\n return options;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes\n ? `...(${signalVar} ? { ${signalProp} } : {})`\n : signalProp\n }, ...${options} }`;\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}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n value += options;\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n // 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\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 hasQueryParams = Object.values(params.verbOptions).some(\n (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: '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 { name: 'MutationFunctionContext' },\n ],\n dependency: '@tanstack/angular-query-experimental',\n },\n {\n exports: [\n { name: 'inject', values: true },\n { name: 'Signal' },\n { name: 'computed', values: true },\n ],\n dependency: '@angular/core',\n },\n];\n\nexport const isVueQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasVueQuery =\n packageJson?.dependencies?.['vue-query'] ??\n packageJson?.devDependencies?.['vue-query'] ??\n packageJson?.peerDependencies?.['vue-query'];\n const hasVueQueryV4 =\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query'];\n\n return !!hasVueQuery && !hasVueQueryV4;\n};\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasVueQueryV3 = isVueQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),\n ];\n};\n\nexport const getSolidQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...getSolidQueryImports(\n isSolidQueryWithUsePrefix(packageJson) ? 'use' : 'create',\n ),\n ];\n};\n\nexport const getAngularQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n // Always use Angular HTTP dependencies for Angular httpClient\n // Previously skipped for mutators, but we now inject http everywhere\n const useAngularHttp = httpClient === OutputHttpClient.ANGULAR;\n const useAxios = !hasGlobalMutator && httpClient === OutputHttpClient.AXIOS;\n\n return [\n ...(useAngularHttp ? ANGULAR_HTTP_DEPENDENCIES : []),\n ...(useAxios ? AXIOS_DEPENDENCIES : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...ANGULAR_QUERY_DEPENDENCIES,\n ];\n};\n\nexport const isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.0.0');\n};\n\nconst isQueryV6 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nexport const isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports DataTag\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.62.0');\n};\n\nexport const isQueryV5WithRequiredContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.14.1');\n};\n\nexport const isQueryV5WithMutationContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.89.0');\n};\n\nexport const isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports infinite query options\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.80.0');\n};\n\nexport const isSolidQueryWithUsePrefix = (\n packageJson: PackageJson | undefined,\n) => {\n const version = getPackageByQueryClient(packageJson, 'solid-query');\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n // https://github.com/TanStack/query/blob/v5.71.5/packages/solid-query/src/index.ts\n return compareVersions(withoutRc, '5.71.5');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n const pkgName = '@tanstack/react-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'svelte-query': {\n const pkgName = '@tanstack/svelte-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'vue-query': {\n const pkgName = '@tanstack/vue-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'angular-query': {\n const pkgName = '@tanstack/angular-query-experimental';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'solid-query': {\n const pkgName = '@tanstack/solid-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n }\n};\n","import {\n type GeneratorMutator,\n type GetterParams,\n type GetterQueryParam,\n isObject,\n pascal,\n stringify,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport type { FrameworkAdapter } from './framework-adapter';\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nexport const QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nexport const generateQueryOptions = ({\n params,\n options,\n type,\n adapter,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n adapter?: FrameworkAdapter;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n type !== QueryType.INFINITE &&\n type !== QueryType.SUSPENSE_INFINITE &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n const enabledOption = adapter\n ? adapter.generateEnabledOption(params, options)\n : !isObject(options) || !Object.hasOwn(options, 'enabled')\n ? `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : '';\n\n return `${enabledOption}${queryConfig} ...queryOptions`;\n};\n\nexport const isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nexport const getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n adapter,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n /** 'Use' or 'Create' — from adapter.getQueryOptionsDefinitionPrefix() */\n prefix: string;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n adapter?: FrameworkAdapter;\n}) => {\n const isMutatorHook = mutator?.isHook;\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n\n // Use adapter's custom options type name for return types if available\n const optionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName(\n type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE\n ? 'infiniteQuery'\n : 'query',\n )\n : undefined;\n\n const optionType = optionsTypeName\n ? `${optionsTypeName}<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`\n : `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`;\n\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n // Mutation options\n const mutationOptionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName('mutation')\n : undefined;\n\n return mutationOptionsTypeName\n ? `${mutationOptionsTypeName}<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`\n : `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n","import {\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n GetterPropType,\n OutputClient,\n type OutputHttpClient,\n toObjectString,\n} from '@orval/core';\n\nimport {\n generateAngularHttpRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition, QueryType } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createAngularAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = 'Create';\n\n return {\n outputClient: OutputClient.ANGULAR_QUERY,\n hookPrefix: 'inject',\n isAngularHttp: true,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n // Angular: allow params to be a getter function for reactive signal support\n return toObjectString(\n props.map((prop) => {\n const getterType = prop.definition.replace(\n /^(\\w+)(\\??): (.+)$/,\n (\n _match: string,\n name: string,\n optional: string,\n type: string,\n ): string =>\n `${name}${optional}: ${type} | (() => ${type.replace(' | undefined', '')}${optional ? ' | undefined' : ''})`,\n );\n return { ...prop, definition: getterType };\n }),\n 'definition',\n );\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n _httpClient: OutputHttpClient,\n hasMutator: boolean,\n ): string {\n // Prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used\n if (!hasMutator) {\n return queryProperties ? `http, ${queryProperties}` : 'http';\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(\n props: GetterProps,\n queryParam: string,\n hasMutator: boolean,\n ): string {\n let result = props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n\n // Prefix with http for infinite queries\n // Skip when custom mutator is used\n if (!hasMutator) {\n result = result ? `http, ${result}` : 'http';\n }\n\n return result;\n },\n\n getHttpFirstParam(mutator?: GeneratorMutator): string {\n if (!mutator || mutator.hasSecondArg) {\n return 'http: HttpClient, ';\n }\n return '';\n },\n\n getMutationHttpPrefix(mutator?: GeneratorMutator): string {\n if (!mutator) {\n return 'http, ';\n }\n return '';\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `CreateQueryResult<TData, TError>`;\n }\n return `CreateInfiniteQueryResult<TData, TError>`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n }: QueryReturnStatementContext): string {\n return `return ${queryResultVarName};`;\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Angular skips DataTag annotation\n return false;\n },\n\n generateQueryInit({ mutator }: QueryInitContext): string {\n // Angular: inject HttpClient if needed, no queryOptions assignment\n if (!mutator || mutator.hasSecondArg) {\n return `const http = inject(HttpClient);`;\n }\n return '';\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n mutator,\n }: QueryInvocationContext): string {\n // Angular: () => { resolve getters; return options(http, ...); }\n return `() => {${\n props.length > 0\n ? `\n // Resolve params if getter function (for signal reactivity)\n ${props.map((p) => `const _${p.name} = typeof ${p.name} === 'function' ? ${p.name}() : ${p.name};`).join('\\n ')}`\n : ''\n }\n // Resolve options if getter function (for signal reactivity)\n const _options = typeof ${isRequestOptions ? 'options' : 'queryOptions'} === 'function' ? ${isRequestOptions ? 'options' : 'queryOptions'}() : ${isRequestOptions ? 'options' : 'queryOptions'};\n return ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http' : ''}${props.length > 0 ? `${!mutator || mutator.hasSecondArg ? ', ' : ''}${props.map((p) => `_${p.name}`).join(', ')}` : ''}, _options);\n }`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Angular never has optional queryClient argument (it injects it)\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n }): 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(httpClient, mutator);\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n // For Angular inject* functions (query hooks, not queryOptions or mutations),\n // allow options to be a getter for reactivity.\n // Inject style applies when type is defined (it's a query hook) and not forQueryOptions.\n const forAngularInject = type !== undefined && !forQueryOptions;\n if (forAngularInject) {\n return `options${isQueryRequired ? '' : '?'}: ${optionsType} | (() => ${optionsType})\\n`;\n }\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n }: MutationHookBodyContext): string {\n if (!mutator || mutator.hasSecondArg) {\n return ` const http = inject(HttpClient);${hasInvalidation ? '\\n const queryClient = inject(QueryClient);' : ''}\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(http${hasInvalidation ? ', queryClient' : ''}${isRequestOptions ? ', options' : ', mutationOptions'});\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n }\n\n const mutationImpl = `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n return ` const ${mutationOptionsVarName} = ${mutationImpl};\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n },\n\n getQueryType(type: string): string {\n return getQueryTypeForFramework(type);\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return generateAngularHttpRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { isSuspenseQuery } from '../query-options';\n\nexport const createReactAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.REACT_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryReturnType({\n type,\n isInitialDataDefined,\n }: QueryReturnTypeContext): string {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n shouldGenerateOverrideTypes(): boolean {\n return hasQueryV5;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\n\nexport const createSolidAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n hasSolidQueryUsePrefix: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.SOLID_QUERY,\n hookPrefix: hasSolidQueryUsePrefix ? 'use' : 'create',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryOptionsDefinitionPrefix(): string {\n return hasSolidQueryUsePrefix ? 'Use' : 'Create';\n },\n\n getOptionsReturnTypeName(\n type: 'query' | 'infiniteQuery' | 'mutation',\n ): string | undefined {\n // Solid Query uses SolidQueryOptions for queries, SolidInfiniteQueryOptions for infinite queries,\n // and SolidMutationOptions for mutations (these are accessors)\n if (type === 'mutation') return 'SolidMutationOptions';\n if (type === 'infiniteQuery') return 'SolidInfiniteQueryOptions';\n return 'SolidQueryOptions';\n },\n\n getQueryKeyPrefix(): string {\n // Solid Query v5 doesn't support accessing queryKey from queryOptions\n // The queryKey must be generated directly from the params\n return '';\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Solid Query works with accessor functions\n // The queryKey is accessed from within the accessor, not annotated on the return type\n return false;\n },\n\n shouldCastQueryResult(): boolean {\n // Solid Query should not cast the query result because it breaks TypeScript's\n // ability to discriminate between overloads based on initialData\n return false;\n },\n\n shouldCastQueryOptions(): boolean {\n // Solid Query should not cast the query options return type because it prevents\n // TypeScript from properly discriminating between defined and undefined initialData\n return false;\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `${prefix}QueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n }\n return `${prefix}InfiniteQueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n return `: ${prefix}MutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n // Use Object.assign to attach queryKey to the result and cast to any to satisfy TypeScript\n // The type is properly enforced by the function signature\n return `return Object.assign(${queryResultVarName}, { queryKey: ${queryOptionsVarName}.queryKey }) as any;`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n // Solid Query requires options to be wrapped in an arrow function for reactivity\n const optionsArg = isRequestOptions ? 'options' : 'queryOptions';\n const args = queryProperties\n ? `${queryProperties},${optionsArg}`\n : optionsArg;\n return `() => ${queryOptionsFnName}(${args})${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Solid is NOT in the list of frameworks supporting mutation invalidation\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n // Solid Query mutations also need to be wrapped in accessor functions\n return ` return ${operationPrefix}Mutation(() => ${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Solid Query expects queryClient to be an Accessor: () => QueryClient\n return ', queryClient?: () => QueryClient';\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n OutputClient,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport {\n generateAxiosRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createSvelteAdapter = ({\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n\n return {\n outputClient: OutputClient.SVELTE_QUERY,\n hookPrefix: hasSvelteQueryV4 ? 'create' : 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n if (hasSvelteQueryV6) {\n return toObjectString(\n props.map((p) => ({\n ...p,\n definition: p.definition.replace(':', ': () => '),\n })),\n 'definition',\n );\n }\n return toObjectString(props, 'implementation');\n },\n\n getQueryReturnType({\n type,\n isMutatorHook,\n operationName,\n }: QueryReturnTypeContext): string {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n if (hasSvelteQueryV6) {\n return `return ${queryResultVarName}`;\n }\n if (hasSvelteQueryV4) {\n return `${queryResultVarName}.queryKey = ${queryOptionsVarName}.queryKey;\n\n return ${queryResultVarName};`;\n }\n // Svelte v3 - same as default\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n }: QueryInitContext): string {\n if (hasSvelteQueryV6) {\n return '';\n }\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n queryOptionsVarName,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n if (hasSvelteQueryV6) {\n return `() => ${queryOptionsFnName}(${toObjectString(\n props.map((p) => ({\n ...p,\n name: p.default || !p.required ? `${p.name}?.()` : `${p.name}()`,\n })),\n 'name',\n )}${isRequestOptions ? 'options?.()' : 'queryOptions?.()'})`;\n }\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getQueryInvocationSuffix(): string {\n return hasSvelteQueryV6 ? `, queryClient` : '';\n },\n\n getOptionalQueryClientArgument(hasInvalidation?: boolean): string {\n if (hasSvelteQueryV6) {\n return `, queryClient?: () => QueryClient`;\n }\n if (hasQueryV5 || hasInvalidation) {\n return ', queryClient?: QueryClient';\n }\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n }): 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(httpClient, mutator);\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 }) {\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(httpClient, mutator);\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n }: MutationOnSuccessContext): string {\n const invalidateCalls = uniqueInvalidates\n .map((t) => generateInvalidateCall(t))\n .join('\\n');\n if (adapter.hasQueryV5WithMutationContextOnSuccess) {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n } else {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n },\n ...adapter,\n});\n\nexport type QueryClientType =\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n\n/**\n * Create a FrameworkAdapter for the given output client, resolving version flags\n * from the packageJson and query config.\n */\nexport const createFrameworkAdapter = ({\n outputClient,\n packageJson,\n queryVersion,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n packageJson?: PackageJson;\n queryVersion?: number;\n}): FrameworkAdapter => {\n const clientType = outputClient as QueryClientType;\n\n const _hasQueryV5 = queryVersion === 5 || isQueryV5(packageJson, clientType);\n\n const _hasQueryV5WithDataTagError =\n queryVersion === 5 || isQueryV5WithDataTagError(packageJson, clientType);\n\n const _hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(packageJson, clientType);\n const _hasQueryV5WithMutationContextOnSuccess =\n isQueryV5WithMutationContextOnSuccess(packageJson, clientType);\n const _hasQueryV5WithRequiredContextOnSuccess =\n isQueryV5WithRequiredContextOnSuccess(packageJson, clientType);\n\n switch (outputClient) {\n case OutputClientConst.VUE_QUERY: {\n const hasVueQueryV4 = !isVueQueryV3(packageJson) || queryVersion === 4;\n return withDefaults(\n createVueAdapter({\n hasVueQueryV4,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SVELTE_QUERY: {\n const hasSvelteQueryV4 =\n !isSvelteQueryV3(packageJson) || queryVersion === 4;\n const _hasSvelteQueryV6 = isSvelteQueryV6(packageJson);\n return withDefaults(\n createSvelteAdapter({\n hasSvelteQueryV4,\n hasSvelteQueryV6: _hasSvelteQueryV6,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.ANGULAR_QUERY: {\n return withDefaults(\n createAngularAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SOLID_QUERY: {\n const hasSolidQueryWithUsePrefix = isSolidQueryWithUsePrefix(packageJson);\n return withDefaults(\n createSolidAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix: hasSolidQueryWithUsePrefix,\n }),\n );\n }\n\n default: {\n // react-query is the default\n return withDefaults(\n createReactAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n }\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n type InvalidateTarget,\n isString,\n type OutputHttpClient,\n pascal,\n} from '@orval/core';\n\nimport {\n getHooksOptionImplementation,\n getMutationRequestArgs,\n getQueryErrorType,\n} from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { getQueryOptionsDefinition } from './query-options';\n\ntype NormalizedTarget = {\n query: string;\n params?: string[] | Record<string, string>;\n invalidateMode: 'invalidate' | 'reset';\n file?: string;\n};\n\nconst normalizeTarget = (target: InvalidateTarget): NormalizedTarget =>\n isString(target)\n ? { query: target, invalidateMode: 'invalidate' }\n : { ...target, invalidateMode: target.invalidateMode ?? 'invalidate' };\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 generateVariableRef = (varName: string): string => {\n const parts = varName.split('.');\n if (parts.length === 1) {\n return `variables.${varName}`;\n }\n return `variables.${parts[0]}?.${parts.slice(1).join('?.')}`;\n};\n\nconst generateParamArgs = (\n params: string[] | Record<string, string>,\n): string => {\n if (Array.isArray(params)) {\n return params.map((v) => generateVariableRef(v)).join(', ');\n }\n return Object.values(params)\n .map((v) => generateVariableRef(v))\n .join(', ');\n};\n\nconst generateInvalidateCall = (target: NormalizedTarget): string => {\n const queryKeyFn = camel(`get-${target.query}-query-key`);\n const args = target.params ? generateParamArgs(target.params) : '';\n return ` queryClient.${target.invalidateMode === 'reset' ? 'resetQueries' : 'invalidateQueries'}({ queryKey: ${queryKeyFn}(${args}) });`;\n};\n\nexport interface MutationHookContext {\n verbOptions: GeneratorVerbOptions;\n options: GeneratorOptions;\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n doc: string;\n adapter: FrameworkAdapter;\n}\n\nexport const generateMutationHook = async ({\n verbOptions,\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n}: MutationHookContext): Promise<{\n implementation: string;\n mutators: GeneratorMutator[] | undefined;\n imports: GeneratorImport[];\n}> => {\n const {\n operationName,\n body,\n props,\n mutator,\n response,\n operationId,\n override,\n } = verbOptions;\n const { route, context, output } = options;\n const query = override.query;\n\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n adapter,\n });\n\n const invalidatesConfig = (query.mutationInvalidates ?? [])\n .filter((rule) => rule.onMutations.includes(operationName))\n .flatMap((rule) => rule.invalidates)\n .map((t) => normalizeTarget(t));\n const seenTargets = new Set<string>();\n const uniqueInvalidates = invalidatesConfig.filter((target) => {\n const key = serializeTarget(target);\n if (seenTargets.has(key)) return false;\n seenTargets.add(key);\n return true;\n });\n\n const hasInvalidation =\n uniqueInvalidates.length > 0 && adapter.supportsMutationInvalidation();\n\n const mutationArguments = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n hasInvalidation,\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 });\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 );\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)})\n }\n\n${\n hasInvalidation\n ? adapter.generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n })\n : ''\n}\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : hasInvalidation\n ? '{ ...mutationOptions, mutationFn, onSuccess }'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = adapter.hookPrefix;\n\n const optionalQueryClientArgument =\n adapter.getOptionalQueryClientArgument(hasInvalidation);\n\n const mutationImplementation = adapter.generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n });\n\n const mutationOptionsVarName = camel(`${operationName}-mutation-options`);\n\n const mutationReturnType = adapter.getMutationReturnType({\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n });\n\n const mutationHookBody = adapter.generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationImplementation,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n optionalQueryClientArgument,\n });\n\n const implementation = `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${mutationReturnType} => {\n${mutationHookBody}\n }\n `;\n\n const mutators = mutationOptionsMutator\n ? [mutationOptionsMutator]\n : undefined;\n\n const imports: GeneratorImport[] = hasInvalidation\n ? uniqueInvalidates\n .filter((i) => !!i.file)\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 type 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 route,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\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 route: string;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: 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 });\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 });\n const queryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\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 });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n hasSignalParam,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n hasSignalParam,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n adapter,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n adapter,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${httpFirstParam}${queryProps} ${queryArgumentsForOptions}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${adapter.getQueryKeyPrefix()}${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${adapter.getUnrefStatements(props)}\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n }${\n adapter.shouldCastQueryOptions?.() === false\n ? ''\n : ` as ${queryOptionFnReturnType} ${\n adapter.shouldAnnotateQueryKey()\n ? `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n : ''\n }`\n }\n}`;\n const operationPrefix = adapter.hookPrefix;\n const optionalQueryClientArgument = adapter.getOptionalQueryClientArgument();\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetch = generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n queryArguments: queryArgumentsForOptions,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const shouldGenerateInvalidate =\n useInvalidate &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n const invalidateFnName = camel(`invalidate-${name}`);\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};\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 queryOptionsMutator,\n queryKeyMutator,\n route,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n adapter,\n });\n }\n\n implementation += `\n ${queryImplementations}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n let imports: GeneratorImport[] = [];\n\n if (isMutation) {\n const mutationResult = await generateMutationHook({\n verbOptions: { ...verbOptions, props },\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n });\n\n implementation += mutationResult.implementation;\n mutators = mutationResult.mutators\n ? [...(mutators ?? []), ...mutationResult.mutators]\n : mutators;\n imports = mutationResult.imports;\n }\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n generateVerbImports,\n mergeDeep,\n type NormalizedOutputOptions,\n type QueryOptions,\n} from '@orval/core';\n\nimport { getQueryHeader } from './client';\nimport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\nimport { createFrameworkAdapter } from './frameworks';\nimport { generateQueryHook } from './query-generator';\nimport { normalizeQueryOptions } from './utils';\n\nexport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\n\nexport const generateQueryHeader: ClientHeaderBuilder = (params) => {\n return `${\n params.hasAwaitedType\n ? ''\n : `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n }\n${\n params.isRequestOptions && params.isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n${getQueryHeader(params)}\n`;\n};\n\nexport const generateQuery: ClientBuilder = async (\n verbOptions,\n options,\n outputClient,\n) => {\n const isZodOutput =\n typeof options.context.output.schemas === 'object' &&\n options.context.output.schemas.type === 'zod';\n const responseType = verbOptions.response.definition.success;\n const isPrimitiveResponse = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const shouldUseRuntimeValidation =\n verbOptions.override.query.runtimeValidation && isZodOutput;\n\n const normalizedVerbOptions =\n shouldUseRuntimeValidation &&\n !isPrimitiveResponse &&\n verbOptions.response.imports.some((imp) => imp.name === responseType)\n ? {\n ...verbOptions,\n response: {\n ...verbOptions.response,\n imports: verbOptions.response.imports.map((imp) =>\n imp.name === responseType ? { ...imp, values: true } : imp,\n ),\n },\n }\n : verbOptions;\n\n const adapter = createFrameworkAdapter({\n outputClient,\n packageJson: options.context.output.packageJson,\n queryVersion: normalizedVerbOptions.override.query.version,\n });\n\n const imports = generateVerbImports(normalizedVerbOptions);\n const functionImplementation = adapter.generateRequestFunction(\n normalizedVerbOptions,\n options,\n );\n const {\n implementation: hookImplementation,\n imports: hookImports,\n mutators,\n } = await generateQueryHook(\n normalizedVerbOptions,\n options,\n outputClient,\n adapter,\n );\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports: [...imports, ...hookImports],\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n 'angular-query': getAngularQueryDependencies,\n 'solid-query': getSolidQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n options?: QueryOptions;\n output?: NormalizedOutputOptions;\n } = {}) =>\n () => {\n const client: ClientBuilder = (verbOptions, options, outputClient) => {\n if (\n options.override.useNamedParameters &&\n (type === 'vue-query' || outputClient === 'vue-query')\n ) {\n throw new Error(\n `vue-query client does not support named parameters, and had broken reactivity previously, please set useNamedParameters to false; See for context: https://github.com/orval-labs/orval/pull/931#issuecomment-1752355686`,\n );\n }\n\n if (queryOptions) {\n const normalizedQueryOptions = normalizeQueryOptions(\n queryOptions,\n options.context.workspace,\n );\n verbOptions.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n options.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n }\n return generateQuery(verbOptions, options, outputClient, output);\n };\n\n return {\n client: client,\n header: generateQueryHeader,\n dependencies: dependenciesBuilder[type],\n };\n };\n\nexport default builder;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","OutputClientConst"],"sources":["../src/utils.ts","../src/client.ts","../src/dependencies.ts","../src/query-options.ts","../src/frameworks/angular.ts","../src/frameworks/react.ts","../src/frameworks/solid.ts","../src/frameworks/svelte.ts","../src/frameworks/vue.ts","../src/frameworks/index.ts","../src/mutation-generator.ts","../src/query-generator.ts","../src/index.ts"],"sourcesContent":["import nodePath from 'node:path';\nimport { styleText } from 'node:util';\n\nimport {\n type GetterProps,\n GetterPropType,\n isObject,\n isString,\n type Mutator,\n type NormalizedMutator,\n type NormalizedQueryOptions,\n OutputClient,\n type OutputClientFunc,\n type QueryOptions,\n TEMPLATE_TAG_REGEX,\n} from '@orval/core';\n\nexport const normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n): NormalizedQueryOptions => {\n return {\n ...(queryOptions.usePrefetch ? { usePrefetch: true } : {}),\n ...(queryOptions.useInvalidate ? { useInvalidate: true } : {}),\n ...(queryOptions.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions.queryKey),\n }\n : {}),\n ...(queryOptions.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(styleText('red', `Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: nodePath.resolve(workspace, mutator.path),\n default: mutator.default ?? !mutator.name,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: nodePath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const 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 OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const ANGULAR_HTTP_DEPENDENCIES = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders', values: true },\n { name: 'HttpParams', values: true },\n { name: 'HttpContext' },\n ],\n dependency: '@angular/common/http',\n },\n // Note: 'inject' from @angular/core is already in ANGULAR_QUERY_DEPENDENCIES\n {\n exports: [\n { name: 'lastValueFrom', values: true },\n { name: 'fromEvent', values: true },\n ],\n dependency: 'rxjs',\n },\n {\n exports: [\n { name: 'takeUntil', values: true },\n { name: 'map', values: true },\n ],\n dependency: 'rxjs/operators',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n isAngularClient = false,\n) => {\n if (\n isAngularClient ||\n options.context.output.httpClient === OutputHttpClient.ANGULAR\n ) {\n return generateAngularHttpRequestFunction(verbOptions, options);\n }\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAngularHttpRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some((prop) => prop.name === 'signal');\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n // Handle mutator case\n if (mutator) {\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue: false,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n const propsImplementation = toObjectString(props, 'implementation');\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n } ${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n // Generate native Angular HttpClient implementation\n const queryProps = toObjectString(props, 'implementation').replace(\n /,\\s*$/,\n '',\n );\n const dataType = response.definition.success || 'unknown';\n\n // Build URL with query params - use httpParams to avoid shadowing the 'params' variable\n const hasQueryParams = queryParams?.schema.name;\n // The queryParams variable from function props is always named 'params'\n const filteredParamsExpression = getAngularFilteredParamsCallExpression(\n 'params',\n queryParams?.requiredNullableKeys,\n );\n const urlConstruction = hasQueryParams\n ? `const httpParams = params ? new HttpParams({ fromObject: ${filteredParamsExpression} }) : undefined;\n const url = \\`${route}\\`;`\n : `const url = \\`${route}\\`;`;\n\n // Build request options\n const httpOptions: string[] = [];\n if (hasQueryParams) {\n httpOptions.push('params: httpParams');\n }\n if (headers) {\n httpOptions.push('headers: new HttpHeaders(headers)');\n }\n\n // Use only success response content types to determine responseType\n // (response.contentTypes includes error responses which may be JSON and would\n // incorrectly prevent text/blob responseType from being set)\n const successResponseType = getSuccessResponseType(response);\n const responseTypeOption = successResponseType\n ? `'${successResponseType}'`\n : undefined;\n if (responseTypeOption) {\n httpOptions.push(`responseType: ${responseTypeOption}`);\n }\n\n const optionsStr =\n httpOptions.length > 0 ? `, { ${httpOptions.join(', ')} }` : '';\n\n // Build the HTTP method call\n let httpCall: string;\n const httpGeneric = responseTypeOption ? '' : `<${dataType}>`;\n const bodyArg =\n isFormData && body.formData\n ? 'formData'\n : isFormUrlEncoded && body.formUrlEncoded\n ? 'formUrlEncoded'\n : body.definition\n ? toObjectString([body], 'implementation').replace(/,\\s*$/, '')\n : '';\n\n switch (verb) {\n case 'get':\n case 'head': {\n httpCall = `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n case 'delete': {\n httpCall = bodyArg\n ? `http.${verb}${httpGeneric}(url, { ${httpOptions.length > 0 ? httpOptions.join(', ') + ', ' : ''}body: ${bodyArg} })`\n : `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n default: {\n // post, put, patch\n httpCall = `http.${verb}${httpGeneric}(url, ${bodyArg || 'undefined'}${optionsStr})`;\n break;\n }\n }\n\n // Detect if Zod runtime validation should be applied\n const responseType = response.definition.success;\n const isPrimitiveType = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const hasSchema = response.imports.some((imp) => imp.name === responseType);\n const isZodOutput =\n isObject(context.output.schemas) && context.output.schemas.type === 'zod';\n const isValidateResponse =\n override.query.runtimeValidation &&\n isZodOutput &&\n !isPrimitiveType &&\n hasSchema;\n\n // If validation is enabled, pipe through map(data => Schema.parse(data))\n if (isValidateResponse) {\n const schemaValueRef =\n responseType === 'Error' ? 'ErrorSchema' : responseType;\n httpCall = `${httpCall}.pipe(map(data => ${schemaValueRef}.parse(data)))`;\n }\n\n // For Angular, we use takeUntil with fromEvent to handle AbortSignal cancellation\n // This follows the pattern from TanStack Query Angular documentation\n // Note: signal can be null (from RequestInit), so we accept null | undefined\n const optionsParam = hasSignal\n ? 'options?: { signal?: AbortSignal | null }'\n : '';\n\n // Build additional params after http, handling empty queryProps properly\n const additionalParams = [queryProps, optionsParam]\n .filter(Boolean)\n .join(', ');\n\n // Note: http parameter is passed from the inject* function which has injection context\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\n http: HttpClient${additionalParams ? `,\\n ${additionalParams}` : ''}\n ): Promise<${dataType}> => {\n ${bodyForm}\n ${urlConstruction}\n const request$ = ${httpCall};\n if (options?.signal) {\n return lastValueFrom(request$.pipe(takeUntil(fromEvent(options.signal, 'abort'))));\n }\n return lastValueFrom(request$);\n }\n`;\n};\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = _props.some((prop) => prop.name === 'signal');\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(String.raw`(\\w*):\\s?${bodyDefinition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n if (mutator.isHook) {\n const ret = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return useCallback((\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n hasSignalParam,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n hasSignalParam,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return getSignalDefinition({ hasSignal, hasSignalParam });\n};\n\nexport const getSignalDefinition = ({\n hasSignal,\n hasSignalParam = false,\n}: {\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}): string => {\n if (!hasSignal) {\n return '';\n }\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n return `${signalVar}?: AbortSignal\\n`;\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n if (!mutator) {\n return httpClient === OutputHttpClient.AXIOS\n ? `axios?: AxiosRequestConfig`\n : 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n hasSignalParam?: 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\n if (!hasSignal) {\n return options;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes\n ? `...(${signalVar} ? { ${signalProp} } : {})`\n : signalProp\n }, ...${options} }`;\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}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n value += options;\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n // 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\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 hasQueryParams = Object.values(params.verbOptions).some(\n (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: '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 { name: 'MutationFunctionContext' },\n ],\n dependency: '@tanstack/angular-query-experimental',\n },\n {\n exports: [\n { name: 'inject', values: true },\n { name: 'Signal' },\n { name: 'computed', values: true },\n ],\n dependency: '@angular/core',\n },\n];\n\nexport const isVueQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasVueQuery =\n packageJson?.dependencies?.['vue-query'] ??\n packageJson?.devDependencies?.['vue-query'] ??\n packageJson?.peerDependencies?.['vue-query'];\n const hasVueQueryV4 =\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query'];\n\n return !!hasVueQuery && !hasVueQueryV4;\n};\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasVueQueryV3 = isVueQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),\n ];\n};\n\nexport const getSolidQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...getSolidQueryImports(\n isSolidQueryWithUsePrefix(packageJson) ? 'use' : 'create',\n ),\n ];\n};\n\nexport const getAngularQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n // Always use Angular HTTP dependencies for Angular httpClient\n // Previously skipped for mutators, but we now inject http everywhere\n const useAngularHttp = httpClient === OutputHttpClient.ANGULAR;\n const useAxios = !hasGlobalMutator && httpClient === OutputHttpClient.AXIOS;\n\n return [\n ...(useAngularHttp ? ANGULAR_HTTP_DEPENDENCIES : []),\n ...(useAxios ? AXIOS_DEPENDENCIES : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...ANGULAR_QUERY_DEPENDENCIES,\n ];\n};\n\nexport const isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.0.0');\n};\n\nconst isQueryV6 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nexport const isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports DataTag\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.62.0');\n};\n\nexport const isQueryV5WithRequiredContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.14.1');\n};\n\nexport const isQueryV5WithMutationContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.89.0');\n};\n\nexport const isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports infinite query options\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.80.0');\n};\n\nexport const isSolidQueryWithUsePrefix = (\n packageJson: PackageJson | undefined,\n) => {\n const version = getPackageByQueryClient(packageJson, 'solid-query');\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n // https://github.com/TanStack/query/blob/v5.71.5/packages/solid-query/src/index.ts\n return compareVersions(withoutRc, '5.71.5');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n const pkgName = '@tanstack/react-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'svelte-query': {\n const pkgName = '@tanstack/svelte-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'vue-query': {\n const pkgName = '@tanstack/vue-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'angular-query': {\n const pkgName = '@tanstack/angular-query-experimental';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'solid-query': {\n const pkgName = '@tanstack/solid-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n }\n};\n","import {\n type GeneratorMutator,\n type GetterParams,\n type GetterQueryParam,\n isObject,\n pascal,\n stringify,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport type { FrameworkAdapter } from './framework-adapter';\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nexport const QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nexport const generateQueryOptions = ({\n params,\n options,\n type,\n adapter,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n adapter?: FrameworkAdapter;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n type !== QueryType.INFINITE &&\n type !== QueryType.SUSPENSE_INFINITE &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n const enabledOption = adapter\n ? adapter.generateEnabledOption(params, options)\n : !isObject(options) || !Object.hasOwn(options, 'enabled')\n ? `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : '';\n\n return `${enabledOption}${queryConfig} ...queryOptions`;\n};\n\nexport const isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nexport const getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n adapter,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n /** 'Use' or 'Create' — from adapter.getQueryOptionsDefinitionPrefix() */\n prefix: string;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n adapter?: FrameworkAdapter;\n}) => {\n const isMutatorHook = mutator?.isHook;\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n\n // Use adapter's custom options type name for return types if available\n const optionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName(\n type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE\n ? 'infiniteQuery'\n : 'query',\n )\n : undefined;\n\n const optionType = optionsTypeName\n ? `${optionsTypeName}<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`\n : `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`;\n\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n // Mutation options\n const mutationOptionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName('mutation')\n : undefined;\n\n return mutationOptionsTypeName\n ? `${mutationOptionsTypeName}<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`\n : `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n","import {\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n GetterPropType,\n OutputClient,\n type OutputHttpClient,\n toObjectString,\n} from '@orval/core';\n\nimport {\n generateAngularHttpRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition, QueryType } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createAngularAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = 'Create';\n\n return {\n outputClient: OutputClient.ANGULAR_QUERY,\n hookPrefix: 'inject',\n isAngularHttp: true,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n // Angular: allow params to be a getter function for reactive signal support\n return toObjectString(\n props.map((prop) => {\n const getterType = prop.definition.replace(\n /^(\\w+)(\\??): (.+)$/,\n (\n _match: string,\n name: string,\n optional: string,\n type: string,\n ): string =>\n `${name}${optional}: ${type} | (() => ${type.replace(' | undefined', '')}${optional ? ' | undefined' : ''})`,\n );\n return { ...prop, definition: getterType };\n }),\n 'definition',\n );\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n _httpClient: OutputHttpClient,\n hasMutator: boolean,\n ): string {\n // Prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used\n if (!hasMutator) {\n return queryProperties ? `http, ${queryProperties}` : 'http';\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(\n props: GetterProps,\n queryParam: string,\n hasMutator: boolean,\n ): string {\n let result = props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n\n // Prefix with http for infinite queries\n // Skip when custom mutator is used\n if (!hasMutator) {\n result = result ? `http, ${result}` : 'http';\n }\n\n return result;\n },\n\n getHttpFirstParam(mutator?: GeneratorMutator): string {\n if (!mutator || mutator.hasSecondArg) {\n return 'http: HttpClient, ';\n }\n return '';\n },\n\n getMutationHttpPrefix(mutator?: GeneratorMutator): string {\n if (!mutator) {\n return 'http, ';\n }\n return '';\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `CreateQueryResult<TData, TError>`;\n }\n return `CreateInfiniteQueryResult<TData, TError>`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n }: QueryReturnStatementContext): string {\n return `return ${queryResultVarName};`;\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Angular skips DataTag annotation\n return false;\n },\n\n generateQueryInit({ mutator }: QueryInitContext): string {\n // Angular: inject HttpClient if needed, no queryOptions assignment\n if (!mutator || mutator.hasSecondArg) {\n return `const http = inject(HttpClient);`;\n }\n return '';\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n mutator,\n }: QueryInvocationContext): string {\n // Angular: () => { resolve getters; return options(http, ...); }\n return `() => {${\n props.length > 0\n ? `\n // Resolve params if getter function (for signal reactivity)\n ${props.map((p) => `const _${p.name} = typeof ${p.name} === 'function' ? ${p.name}() : ${p.name};`).join('\\n ')}`\n : ''\n }\n // Resolve options if getter function (for signal reactivity)\n const _options = typeof ${isRequestOptions ? 'options' : 'queryOptions'} === 'function' ? ${isRequestOptions ? 'options' : 'queryOptions'}() : ${isRequestOptions ? 'options' : 'queryOptions'};\n return ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http' : ''}${props.length > 0 ? `${!mutator || mutator.hasSecondArg ? ', ' : ''}${props.map((p) => `_${p.name}`).join(', ')}` : ''}, _options);\n }`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Angular never has optional queryClient argument (it injects it)\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n }): 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(httpClient, mutator);\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n // For Angular inject* functions (query hooks, not queryOptions or mutations),\n // allow options to be a getter for reactivity.\n // Inject style applies when type is defined (it's a query hook) and not forQueryOptions.\n const forAngularInject = type !== undefined && !forQueryOptions;\n if (forAngularInject) {\n return `options${isQueryRequired ? '' : '?'}: ${optionsType} | (() => ${optionsType})\\n`;\n }\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n }: MutationHookBodyContext): string {\n if (!mutator || mutator.hasSecondArg) {\n return ` const http = inject(HttpClient);${hasInvalidation ? '\\n const queryClient = inject(QueryClient);' : ''}\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(http${hasInvalidation ? ', queryClient' : ''}${isRequestOptions ? ', options' : ', mutationOptions'});\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n }\n\n const mutationImpl = `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n return ` const ${mutationOptionsVarName} = ${mutationImpl};\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n },\n\n getQueryType(type: string): string {\n return getQueryTypeForFramework(type);\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return generateAngularHttpRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { isSuspenseQuery } from '../query-options';\n\nexport const createReactAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.REACT_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryReturnType({\n type,\n isInitialDataDefined,\n }: QueryReturnTypeContext): string {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n shouldGenerateOverrideTypes(): boolean {\n return hasQueryV5;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\n\nexport const createSolidAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n hasSolidQueryUsePrefix: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.SOLID_QUERY,\n hookPrefix: hasSolidQueryUsePrefix ? 'use' : 'create',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryOptionsDefinitionPrefix(): string {\n return hasSolidQueryUsePrefix ? 'Use' : 'Create';\n },\n\n getOptionsReturnTypeName(\n type: 'query' | 'infiniteQuery' | 'mutation',\n ): string | undefined {\n // Solid Query uses SolidQueryOptions for queries, SolidInfiniteQueryOptions for infinite queries,\n // and SolidMutationOptions for mutations (these are accessors)\n if (type === 'mutation') return 'SolidMutationOptions';\n if (type === 'infiniteQuery') return 'SolidInfiniteQueryOptions';\n return 'SolidQueryOptions';\n },\n\n getQueryKeyPrefix(): string {\n // Solid Query v5 doesn't support accessing queryKey from queryOptions\n // The queryKey must be generated directly from the params\n return '';\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Solid Query works with accessor functions\n // The queryKey is accessed from within the accessor, not annotated on the return type\n return false;\n },\n\n shouldCastQueryResult(): boolean {\n // Solid Query should not cast the query result because it breaks TypeScript's\n // ability to discriminate between overloads based on initialData\n return false;\n },\n\n shouldCastQueryOptions(): boolean {\n // Solid Query should not cast the query options return type because it prevents\n // TypeScript from properly discriminating between defined and undefined initialData\n return false;\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `${prefix}QueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n }\n return `${prefix}InfiniteQueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n return `: ${prefix}MutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n // Use Object.assign to attach queryKey to the result and cast to any to satisfy TypeScript\n // The type is properly enforced by the function signature\n return `return Object.assign(${queryResultVarName}, { queryKey: ${queryOptionsVarName}.queryKey }) as any;`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n // Solid Query requires options to be wrapped in an arrow function for reactivity\n const optionsArg = isRequestOptions ? 'options' : 'queryOptions';\n const args = queryProperties\n ? `${queryProperties},${optionsArg}`\n : optionsArg;\n return `() => ${queryOptionsFnName}(${args})${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Solid is NOT in the list of frameworks supporting mutation invalidation\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n // Solid Query mutations also need to be wrapped in accessor functions\n return ` return ${operationPrefix}Mutation(() => ${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Solid Query expects queryClient to be an Accessor: () => QueryClient\n return ', queryClient?: () => QueryClient';\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n OutputClient,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport {\n generateAxiosRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createSvelteAdapter = ({\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n\n return {\n outputClient: OutputClient.SVELTE_QUERY,\n hookPrefix: hasSvelteQueryV4 ? 'create' : 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n if (hasSvelteQueryV6) {\n return toObjectString(\n props.map((p) => ({\n ...p,\n definition: p.definition.replace(':', ': () => '),\n })),\n 'definition',\n );\n }\n return toObjectString(props, 'implementation');\n },\n\n getQueryReturnType({\n type,\n isMutatorHook,\n operationName,\n }: QueryReturnTypeContext): string {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n if (hasSvelteQueryV6) {\n return `return ${queryResultVarName}`;\n }\n if (hasSvelteQueryV4) {\n return `${queryResultVarName}.queryKey = ${queryOptionsVarName}.queryKey;\n\n return ${queryResultVarName};`;\n }\n // Svelte v3 - same as default\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n }: QueryInitContext): string {\n if (hasSvelteQueryV6) {\n return '';\n }\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n queryOptionsVarName,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n if (hasSvelteQueryV6) {\n return `() => ${queryOptionsFnName}(${toObjectString(\n props.map((p) => ({\n ...p,\n name: p.default || !p.required ? `${p.name}?.()` : `${p.name}()`,\n })),\n 'name',\n )}${isRequestOptions ? 'options?.()' : 'queryOptions?.()'})`;\n }\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getQueryInvocationSuffix(): string {\n return hasSvelteQueryV6 ? `, queryClient` : '';\n },\n\n getOptionalQueryClientArgument(hasInvalidation?: boolean): string {\n if (hasSvelteQueryV6) {\n return `, queryClient?: () => QueryClient`;\n }\n if (hasQueryV5 || hasInvalidation) {\n return ', queryClient?: QueryClient';\n }\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n }): 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(httpClient, mutator);\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 }) {\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(httpClient, mutator);\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n }: MutationOnSuccessContext): string {\n const invalidateCalls = uniqueInvalidates\n .map((t) => generateInvalidateCall(t))\n .join('\\n');\n if (adapter.hasQueryV5WithMutationContextOnSuccess) {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n } else {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n },\n ...adapter,\n});\n\nexport type QueryClientType =\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n\n/**\n * Create a FrameworkAdapter for the given output client, resolving version flags\n * from the packageJson and query config.\n */\nexport const createFrameworkAdapter = ({\n outputClient,\n packageJson,\n queryVersion,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n packageJson?: PackageJson;\n queryVersion?: number;\n}): FrameworkAdapter => {\n const clientType = outputClient as QueryClientType;\n\n const _hasQueryV5 = queryVersion === 5 || isQueryV5(packageJson, clientType);\n\n const _hasQueryV5WithDataTagError =\n queryVersion === 5 || isQueryV5WithDataTagError(packageJson, clientType);\n\n const _hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(packageJson, clientType);\n const _hasQueryV5WithMutationContextOnSuccess =\n isQueryV5WithMutationContextOnSuccess(packageJson, clientType);\n const _hasQueryV5WithRequiredContextOnSuccess =\n isQueryV5WithRequiredContextOnSuccess(packageJson, clientType);\n\n switch (outputClient) {\n case OutputClientConst.VUE_QUERY: {\n const hasVueQueryV4 = !isVueQueryV3(packageJson) || queryVersion === 4;\n return withDefaults(\n createVueAdapter({\n hasVueQueryV4,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SVELTE_QUERY: {\n const hasSvelteQueryV4 =\n !isSvelteQueryV3(packageJson) || queryVersion === 4;\n const _hasSvelteQueryV6 = isSvelteQueryV6(packageJson);\n return withDefaults(\n createSvelteAdapter({\n hasSvelteQueryV4,\n hasSvelteQueryV6: _hasSvelteQueryV6,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.ANGULAR_QUERY: {\n return withDefaults(\n createAngularAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SOLID_QUERY: {\n const hasSolidQueryWithUsePrefix = isSolidQueryWithUsePrefix(packageJson);\n return withDefaults(\n createSolidAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix: hasSolidQueryWithUsePrefix,\n }),\n );\n }\n\n default: {\n // react-query is the default\n return withDefaults(\n createReactAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n }\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n type InvalidateTarget,\n isString,\n type OutputHttpClient,\n pascal,\n} from '@orval/core';\n\nimport {\n getHooksOptionImplementation,\n getMutationRequestArgs,\n getQueryErrorType,\n} from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { getQueryOptionsDefinition } from './query-options';\n\ntype NormalizedTarget = {\n query: string;\n params?: string[] | Record<string, string>;\n invalidateMode: 'invalidate' | 'reset';\n file?: string;\n};\n\nconst normalizeTarget = (target: InvalidateTarget): NormalizedTarget =>\n isString(target)\n ? { query: target, invalidateMode: 'invalidate' }\n : { ...target, invalidateMode: target.invalidateMode ?? 'invalidate' };\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 generateVariableRef = (varName: string): string => {\n const parts = varName.split('.');\n if (parts.length === 1) {\n return `variables.${varName}`;\n }\n return `variables.${parts[0]}?.${parts.slice(1).join('?.')}`;\n};\n\nconst generateParamArgs = (\n params: string[] | Record<string, string>,\n): string => {\n if (Array.isArray(params)) {\n return params.map((v) => generateVariableRef(v)).join(', ');\n }\n return Object.values(params)\n .map((v) => generateVariableRef(v))\n .join(', ');\n};\n\nconst generateInvalidateCall = (target: NormalizedTarget): string => {\n const queryKeyFn = camel(`get-${target.query}-query-key`);\n const args = target.params ? generateParamArgs(target.params) : '';\n return ` queryClient.${target.invalidateMode === 'reset' ? 'resetQueries' : 'invalidateQueries'}({ queryKey: ${queryKeyFn}(${args}) });`;\n};\n\nexport interface MutationHookContext {\n verbOptions: GeneratorVerbOptions;\n options: GeneratorOptions;\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n doc: string;\n adapter: FrameworkAdapter;\n}\n\nexport const generateMutationHook = async ({\n verbOptions,\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n}: MutationHookContext): Promise<{\n implementation: string;\n mutators: GeneratorMutator[] | undefined;\n imports: GeneratorImport[];\n}> => {\n const {\n operationName,\n body,\n props,\n mutator,\n response,\n operationId,\n override,\n } = verbOptions;\n const { route, context, output } = options;\n const query = override.query;\n\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n adapter,\n });\n\n const invalidatesConfig = (query.mutationInvalidates ?? [])\n .filter((rule) => rule.onMutations.includes(operationName))\n .flatMap((rule) => rule.invalidates)\n .map((t) => normalizeTarget(t));\n const seenTargets = new Set<string>();\n const uniqueInvalidates = invalidatesConfig.filter((target) => {\n const key = serializeTarget(target);\n if (seenTargets.has(key)) return false;\n seenTargets.add(key);\n return true;\n });\n\n const hasInvalidation =\n uniqueInvalidates.length > 0 && adapter.supportsMutationInvalidation();\n\n const mutationArguments = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n hasInvalidation,\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 });\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 );\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)})\n }\n\n${\n hasInvalidation\n ? adapter.generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n })\n : ''\n}\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : hasInvalidation\n ? '{ ...mutationOptions, mutationFn, onSuccess }'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = adapter.hookPrefix;\n\n const optionalQueryClientArgument =\n adapter.getOptionalQueryClientArgument(hasInvalidation);\n\n const mutationImplementation = adapter.generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n });\n\n const mutationOptionsVarName = camel(`${operationName}-mutation-options`);\n\n const mutationReturnType = adapter.getMutationReturnType({\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n });\n\n const mutationHookBody = adapter.generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationImplementation,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n optionalQueryClientArgument,\n });\n\n const implementation = `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${mutationReturnType} => {\n${mutationHookBody}\n }\n `;\n\n const mutators = mutationOptionsMutator\n ? [mutationOptionsMutator]\n : undefined;\n\n const imports: GeneratorImport[] = hasInvalidation\n ? uniqueInvalidates\n .filter((i) => !!i.file)\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 type 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 route,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\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 route: string;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: 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 });\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 });\n const queryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\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 });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n hasSignalParam,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n hasSignalParam,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n adapter,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n adapter,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${httpFirstParam}${queryProps} ${queryArgumentsForOptions}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${adapter.getQueryKeyPrefix()}${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${adapter.getUnrefStatements(props)}\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n }${\n adapter.shouldCastQueryOptions?.() === false\n ? ''\n : ` as ${queryOptionFnReturnType} ${\n adapter.shouldAnnotateQueryKey()\n ? `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n : ''\n }`\n }\n}`;\n const operationPrefix = adapter.hookPrefix;\n const optionalQueryClientArgument = adapter.getOptionalQueryClientArgument();\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetch = generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n queryArguments: queryArgumentsForOptions,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const shouldGenerateInvalidate =\n useInvalidate &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n const invalidateFnName = camel(`invalidate-${name}`);\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};\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 queryOptionsMutator,\n queryKeyMutator,\n route,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\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":";;;;;;;AAiBA,MAAa,yBACX,eAA6B,EAAE,EAC/B,oBAC2B;AAC3B,QAAO;EACL,GAAI,aAAa,cAAc,EAAE,aAAa,MAAM,GAAG,EAAE;EACzD,GAAI,aAAa,gBAAgB,EAAE,eAAe,MAAM,GAAG,EAAE;EAC7D,GAAI,aAAa,WAAW,EAAE,UAAU,MAAM,GAAG,EAAE;EACnD,GAAI,aAAa,cAAc,EAAE,aAAa,MAAM,GAAG,EAAE;EACzD,GAAI,aAAa,wBACb,EAAE,uBAAuB,aAAa,uBAAuB,GAC7D,EAAE;EACN,GAAI,aAAa,UAAU,EAAE,SAAS,aAAa,SAAS,GAAG,EAAE;EACjE,GAAI,aAAa,WACb,EACE,UAAU,iBAAiB,iBAAiB,aAAa,SAAS,EACnE,GACD,EAAE;EACN,GAAI,aAAa,eACb,EACE,cAAc,iBACZ,iBACA,aAAa,aACd,EACF,GACD,EAAE;EACN,GAAI,aAAa,kBACb,EACE,iBAAiB,iBACf,iBACA,aAAa,gBACd,EACF,GACD,EAAE;EACN,GAAI,aAAa,SAAS,EAAE,QAAQ,MAAM,GAAG,EAAE;EAC/C,GAAI,aAAa,2BACb,EAAE,0BAA0B,MAAM,GAClC,EAAE;EACN,GAAI,aAAa,uBACb,EAAE,sBAAsB,MAAM,GAC9B,EAAE;EACN,GAAI,aAAa,yBACb,EAAE,wBAAwB,MAAM,GAChC,EAAE;EACN,GAAI,aAAa,sBAAsB,EAAE,qBAAqB,MAAM,GAAG,EAAE;EACzE,GAAI,aAAa,2BACb,EAAE,0BAA0B,MAAM,GAClC,EAAE;EACP;;AAIH,MAAM,oBACJ,WACA,YACkC;AAClC,KAAI,SAAS,QAAQ,EAAE;AACrB,MAAI,CAAC,QAAQ,KACX,OAAM,IAAI,MAAM,UAAU,OAAO,sBAAsB,CAAC;AAG1D,SAAO;GACL,GAAG;GACH,MAAM,SAAS,QAAQ,WAAW,QAAQ,KAAK;GAC/C,SAAS,QAAQ,WAAW,CAAC,QAAQ;GACtC;;AAGH,KAAI,SAAS,QAAQ,CACnB,QAAO;EACL,MAAM,SAAS,QAAQ,WAAW,QAAQ;EAC1C,SAAS;EACV;AAGH,QAAO;;AAGT,SAAgB,wBAAwB,OAAiC;AACvE,QAAO,MAAM,KAAK,SAAS;EACzB,MAAM,CAAC,WAAW,aAAa,KAAK,eAAe,MAAM,IAAI;AAC7D,MAAI,CAAC,UAAW,QAAO;EACvB,MAAM,OACJ,KAAK,SAAS,eAAe,oBAAoB,KAAK,OAAO;EAE/D,MAAM,CAAC,MAAM,gBAAgB,UAAU,MAAM,IAAI;AACjD,SAAO;GACL,GAAG;GACH,gBAAgB,GAAG,KAAK,aAAa,KAAK,MAAM,CAAC,GAC/C,eAAe,MAAM,iBAAiB;GAEzC;GACD;;AAGJ,MAAa,kBAAkB,UAA+B;AAC5D,QAAO,MACJ,KAAK,SAAS;AACb,MAAI,KAAK,SAAS,eAAe,kBAC/B,QAAO,SAAS,KAAK,aAAa,WAAW,KAAK,KAAK;AAEzD,SAAO,GAAG,KAAK,KAAK,WAAW,KAAK,KAAK;GACzC,CACD,KAAK,KAAK;;AAGf,MAAa,uBACX,OACA,SACA,WACW,MAAM,WAAW,oBAAoB,MAAM,QAAQ,IAAI,OAAO,GAAG;AAE9E,MAAa,iBAAiB,UAC5B,oBAAoB,OAAO,8BAA8B,KAAK;AAiBhE,MAAa,4BAA4B,SAAyB;AAEhE,SAAQ,MAAR;EACE,KAAK,gBACH,QAAO;EAET,KAAK,wBACH,QAAO;EAET,QACE,QAAO;;;AAKb,MAAa,gBAAgB,EAC3B,sBAAsB,YAGlB;;;;ACtIN,MAAa,qBAAqB,CAChC;CACE,SAAS;EACP;GACE,MAAM;GACN,SAAS;GACT,QAAQ;GACR,wBAAwB;GACzB;EACD,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,iBAAiB;EACzB,EAAE,MAAM,cAAc;EACvB;CACD,YAAY;CACb,CACF;AAED,MAAa,4BAA4B;CACvC;EACE,SAAS;GACP;IAAE,MAAM;IAAc,QAAQ;IAAM;GACpC;IAAE,MAAM;IAAe,QAAQ;IAAM;GACrC;IAAE,MAAM;IAAc,QAAQ;IAAM;GACpC,EAAE,MAAM,eAAe;GACxB;EACD,YAAY;EACb;CAED;EACE,SAAS,CACP;GAAE,MAAM;GAAiB,QAAQ;GAAM,EACvC;GAAE,MAAM;GAAa,QAAQ;GAAM,CACpC;EACD,YAAY;EACb;CACD;EACE,SAAS,CACP;GAAE,MAAM;GAAa,QAAQ;GAAM,EACnC;GAAE,MAAM;GAAO,QAAQ;GAAM,CAC9B;EACD,YAAY;EACb;CACF;AAmBD,MAAa,sCACX,EACE,SACA,aACA,eACA,UACA,SACA,MACA,OACA,MACA,UACA,gBACA,YAEF,EAAE,OAAO,cACN;CACH,MAAM,mBAAmB,SAAS,mBAAmB;CACrD,MAAM,aAAa,CAAC,SAAS,SAAS;CACtC,MAAM,mBAAmB,SAAS,mBAAmB;CACrD,MAAM,YAAY,aAAa,EAC7B,qBAAqB,SAAS,MAAM,QACrC,CAAC;CAEF,MAAM,iBAAiB,MAAM,MAAM,SAAS,KAAK,SAAS,SAAS;CAEnE,MAAM,WAAW,sCAAsC;EACrD;EACA;EACA;EACA;EACA;EACD,CAAC;AAGF,KAAI,SAAS;EAIX,MAAM,gBAAgB,sBAAsB;GAC1C;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,8BAbA,CAAC,CAAC,QAAQ,OAAO,UAAU,iBAAiB;GAc5C,OAAO;GACR,CAAC;EAEF,MAAM,iBAAiB,mBACnB,8BACE,SAAS,gBACT,QAAQ,aACT,GACD;EAEJ,MAAM,sBAAsB,eAAe,OAAO,iBAAiB;AAEnE,SAAO,GAAG,SAAS,MAAM,yBAAyB,YAAY,GAAG,QAAQ,cAAc,YAAY,oBAAoB,KACrH,oBAAoB,QAAQ,eACxB,UAAU,QAAQ,OAAO,uBAAuB,KAAK,IAAI,2BAA2B,QAAQ,KAAK,MACjG,GACL,GAAG,oBAAoB;GAAE;GAAW;GAAgB,CAAC,CAAC;QACnD,SAAS;eACF,QAAQ,KAAK,GAAG,SAAS,WAAW,WAAW,UAAU;QAChE,cAAc;QACd,eAAe;;;;CAMrB,MAAM,aAAa,eAAe,OAAO,iBAAiB,CAAC,QACzD,SACA,GACD;CACD,MAAM,WAAW,SAAS,WAAW,WAAW;CAGhD,MAAM,iBAAiB,aAAa,OAAO;CAE3C,MAAM,2BAA2B,uCAC/B,UACA,aAAa,qBACd;CACD,MAAM,kBAAkB,iBACpB,4DAA4D,yBAAyB;oBACvE,MAAM,OACpB,iBAAiB,MAAM;CAG3B,MAAM,cAAwB,EAAE;AAChC,KAAI,eACF,aAAY,KAAK,qBAAqB;AAExC,KAAI,QACF,aAAY,KAAK,oCAAoC;CAMvD,MAAM,sBAAsB,uBAAuB,SAAS;CAC5D,MAAM,qBAAqB,sBACvB,IAAI,oBAAoB,KACxB;AACJ,KAAI,mBACF,aAAY,KAAK,iBAAiB,qBAAqB;CAGzD,MAAM,aACJ,YAAY,SAAS,IAAI,OAAO,YAAY,KAAK,KAAK,CAAC,MAAM;CAG/D,IAAI;CACJ,MAAM,cAAc,qBAAqB,KAAK,IAAI,SAAS;CAC3D,MAAM,UACJ,cAAc,KAAK,WACf,aACA,oBAAoB,KAAK,iBACvB,mBACA,KAAK,aACH,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,SAAS,GAAG,GAC7D;AAEV,SAAQ,MAAR;EACE,KAAK;EACL,KAAK;AACH,cAAW,QAAQ,OAAO,YAAY,MAAM,WAAW;AACvD;EAEF,KAAK;AACH,cAAW,UACP,QAAQ,OAAO,YAAY,UAAU,YAAY,SAAS,IAAI,YAAY,KAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,QAAQ,OACjH,QAAQ,OAAO,YAAY,MAAM,WAAW;AAChD;EAEF;AAEE,cAAW,QAAQ,OAAO,YAAY,QAAQ,WAAW,cAAc,WAAW;AAClF;;CAKJ,MAAM,eAAe,SAAS,WAAW;CACzC,MAAM,kBAAkB;EACtB;EACA;EACA;EACA;EACA;EACD,CAAC,SAAS,aAAa;CACxB,MAAM,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI,SAAS,aAAa;CAC3E,MAAM,cACJ,SAAS,QAAQ,OAAO,QAAQ,IAAI,QAAQ,OAAO,QAAQ,SAAS;AAQtE,KANE,SAAS,MAAM,qBACf,eACA,CAAC,mBACD,UAMA,YAAW,GAAG,SAAS,oBADrB,iBAAiB,UAAU,gBAAgB,aACa;CAW5D,MAAM,mBAAmB,CAAC,YALL,YACjB,8CACA,GAG+C,CAChD,OAAO,QAAQ,CACf,KAAK,KAAK;AAGb,QAAO,GAAG,SAAS,MAAM,yBAAyB,YAAY,GAAG,QAAQ,cAAc;sBACnE,mBAAmB,UAAU,qBAAqB,GAAG;eAC5D,SAAS;MAClB,SAAS;MACT,gBAAgB;uBACC,SAAS;;;;;;;;AAQhC,MAAa,gCACX,EACE,SACA,aACA,eACA,UACA,SACA,MACA,OAAO,QACP,MACA,UACA,gBACA,UACA,oBAEF,EAAE,OAAO,QAAQ,WACjB,UACG;CACH,IAAI,QAAQ;CACZ,IAAI,QAAQ;AAEZ,KAAI,MACF,SAAQ,wBAAwB,OAAO;AAGzC,KAAI,QAAQ,OAAO,oBACjB,SAAQ,cAAc,MAAM;CAG9B,MAAM,mBAAmB,SAAS,mBAAmB;CACrD,MAAM,aAAa,CAAC,SAAS,SAAS;CACtC,MAAM,mBAAmB,SAAS,mBAAmB;CACrD,MAAM,YAAY,aAAa,EAC7B,qBAAqB,SAAS,MAAM,QACrC,CAAC;CAEF,MAAM,iBAAiB,OAAO,MAAM,SAAS,KAAK,SAAS,SAAS;CAEpE,MAAM,+BACJ,CAAC,CAAC,QAAQ,OAAO,UAAU,iBAAiB;CAE9C,MAAM,WAAW,sCAAsC;EACrD;EACA;EACA;EACA;EACA;EACD,CAAC;AAEF,KAAI,SAAS;EACX,MAAM,gBAAgB,sBAAsB;GAC1C;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;EAEF,MAAM,iBAAiB,KAAK,WAAW,QAAQ,MAAM,OAAO,GAAG,OAAO;EACtE,MAAM,sBACJ,QAAQ,gBAAgB,KAAK,aACzB,eAAe,OAAO,iBAAiB,CAAC,QACtC,IAAI,OAAO,OAAO,GAAG,YAAY,iBAAiB,EAClD,OAAO,QAAQ,aAAa,GAAG,KAAK,WAAW,GAChD,GACD,eAAe,OAAO,iBAAiB;EAE7C,MAAM,iBAAiB,mBACnB,8BACE,SAAS,gBACT,QAAQ,aACT,GACD;AAEJ,MAAI,QAAQ,QAAQ;GAClB,MAAM,MAAM,GACV,SAAS,MAAM,2BAA2B,YAAY,GACvD,WAAW,OAAO,cAAc,CAAC;gBACxB,cAAc,KAAK,QAAQ,KAAK,GACtC,SAAS,WAAW,WAAW,UAChC;;oCAE2B,oBAAoB,KAC9C,oBAAoB,QAAQ,eACxB,UAAU,QAAQ,OAAO,uBAAuB,KAAK,IAAI,sCAAsC,QAAQ,KAAK,OAC5G,KACH,oBAAoB;IAAE;IAAW;IAAgB,CAAC,CAAC,QAAQ,SAAS;iBAC9D,cAAc;YACnB,cAAc;YACd,eAAe;cACb,cAAc;;;GAItB,MAAM,SAAS,GACb,SAAS,MAAM,2BAA2B,YAAY,GACvD,WAAW,OAAO,cAAc,CAAC;gBACxB,cAAc,KAAK,QAAQ,KAAK,GACtC,SAAS,WAAW,WAAW,UAChC;;wBAEe,oBAAoB,KAClC,oBAAoB,QAAQ,eACxB,UAAU,QAAQ,OAAO,uBAAuB,KAAK,IAAI,sCAAsC,QAAQ,KAAK,OAC5G,KACH,oBAAoB;IAAE;IAAW;IAAgB,CAAC,CAAC,QAAQ,SAAS;iBAC9D,cAAc;YACnB,cAAc;YACd,eAAe;;;;AAKrB,UAAO,QAAQ,SAAS;;AAG1B,SAAO,GAAG,SAAS,MAAM,yBAAyB,YAAY,GAAG,QAAQ,cAAc,YAAY,oBAAoB,KACrH,oBAAoB,QAAQ,eACxB,UAAU,QAAQ,OAAO,uBAAuB,KAAK,IAAI,2BAA2B,QAAQ,KAAK,MACjG,KACH,oBAAoB;GAAE;GAAW;GAAgB,CAAC,CAAC;QAClD,QAAQ,eAAe,MAAM,GAAG,GAAG;QACnC,SAAS;eACF,QAAQ,KAAK,GAAG,SAAS,WAAW,WAAW,UAAU;QAChE,cAAc;QACd,eAAe;;;;CAKrB,MAAM,mCAAmC,+BACvC,QAAQ,OAAO,SAChB;CAED,MAAM,UAAU,gBAAgB;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB,SAAS;EACzB;EACA;EACA;EACA,yBAAyB,SAAS;EAClC;EACA;EACA;EACO;EACR,CAAC;CAEF,MAAM,cAAc,gCAAgC;EAClD;EACA;EACA;EACD,CAAC;CAEF,MAAM,aAAa,eAAe,OAAO,iBAAiB;AAa1D,QAX0C,GAAG,SAAS,MAAM,yBAAyB,YAAY,GAAG,QAAQ,cAAc,YAAY,WAAW,GAAG,YAAY,4BAC9J,SAAS,WAAW,WAAW,UAChC;MACG,QAAQ,eAAe,MAAM,GAAG,GAAG;MACnC,SAAS;kBAET,mCAAmC,KAAK,WACzC,GAAG,KAAK,GAAG,QAAQ;;;;AAOxB,MAAa,mCAAmC,EAC9C,kBACA,WACA,iBAAiB,YAKb;AACJ,KAAI,iBACF,QAAO;AAGT,QAAO,oBAAoB;EAAE;EAAW;EAAgB,CAAC;;AAG3D,MAAa,uBAAuB,EAClC,WACA,iBAAiB,YAIL;AACZ,KAAI,CAAC,UACH,QAAO;AAGT,QAAO,GADW,iBAAiB,gBAAgB,SAC/B;;AAGtB,MAAa,gCACX,YACA,YACG;AACH,KAAI,CAAC,QACH,QAAO,eAAe,iBAAiB,QACnC,+BACA;AAGN,KAAI,QAAQ,gBAAgB,CAAC,QAAQ,OACnC,QAAO,oCAAoC,QAAQ,KAAK;AAG1D,KAAI,QAAQ,gBAAgB,QAAQ,OAClC,QAAO,+CAA+C,QAAQ,KAAK;AAGrE,QAAO;;AAGT,MAAa,mBAAmB,EAC9B,kBACA,SACA,8BACA,WACA,YACA,iBAAiB,YAQb;CAEJ,MAAM,YAAY,iBAAiB,gBAAgB;CAEnD,MAAM,aAAa,iBAAiB,WAAW,cAAc;AAE7D,KAAI,CAAC,WAAW,kBAAkB;EAChC,MAAM,UACJ,eAAe,iBAAiB,QAAQ,iBAAiB;AAE3D,MAAI,CAAC,UACH,QAAO;AAGT,SAAO,KACL,+BACI,OAAO,UAAU,OAAO,WAAW,YACnC,WACL,OAAO,QAAQ;;AAKlB,KAAI,SAAS,gBAAgB,eAAe,iBAAiB,SAAS;AACpE,MAAI,CAAC,UACH,QAAO;AAET,SAAO,SAAS;;AAGlB,KAAI,SAAS,gBAAgB,kBAAkB;AAC7C,MAAI,CAAC,UACH,QAAO;AAKT,SAAO,eAAe,iBAAiB,SACrC,eAAe,iBAAiB,UAC9B,mBAAmB,cACnB,KAAK,WAAW;;AAGtB,KAAI,WAAW;AAKb,MAAI,eAAe,iBAAiB,MAClC,QAAO;AAET,MAAI,eAAe,iBAAiB,WAAW,QAC7C,QAAO;AAET,SAAO,KAAK,WAAW;;AAGzB,QAAO;;AAGT,MAAa,kBAAkB,EAC7B,kBACA,YACA,cAKI;AACJ,KAAI,CAAC,iBACH,QAAO;CAGT,IAAI,QAAQ;AAEZ,KAAI,CAAC,SAAS;EACZ,MAAM,UACJ,eAAe,iBAAiB,QAC5B,0BACA;AAEN,WAAS;;AAGX,KAAI,SAAS,aACX,UAAS;AAGX,UAAS;AAET,QAAO;;AAIT,MAAM,oBAAoB,UAA0B;AAClD,KAAI,CAAC,MAAO,QAAO;AAUnB,QARe,CACb,GAAG,IAAI,IACL,MACG,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ,CACnB,CACF,CACa,KAAK,MAAM;;AAG3B,MAAa,qBACX,eACA,UACA,YACA,YACG;CACH,MAAM,aAAa,iBAAiB,SAAS,WAAW,UAAU,UAAU;AAE5E,KAAI,QACF,QAAO,QAAQ,eACX,GAAG,QAAQ,UAAU,OAAO,cAAc,GAAG,GAAG,YAAY,WAAW,KACvE;KAEJ,QAAO,eAAe,iBAAiB,QACnC,cAAc,WAAW,KACzB;;AAIR,MAAa,gCACX,kBACA,YACA,eACA,YACG;CACH,MAAM,UACJ,eAAe,iBAAiB,QAC5B,0BACA;AAEN,QAAO,mBACH,yBAAyB,cAAc;kCAErC,UACI,QAAQ,eACN,8BACA,KACF,QACL;;;;qCAI8B,SAAS,eAAe,yBAAyB,KAAK,UAAU,KAAK,eAAe,iBAAiB,QAAQ,uBAAuB,qBAAqB,MACxL;;AAGN,MAAa,0BACX,kBACA,YACA,YACG;CACH,MAAM,UACJ,eAAe,iBAAiB,QAAQ,iBAAiB;AAI3D,KAAI,SAAS,gBAAgB,eAAe,iBAAiB,QAC3D,QAAO;AAGT,QAAO,mBACH,UACE,QAAQ,eACN,mBACA,KACF,UACF;;AA4BN,MAAa,kBAAuC,WAAW;AAC7D,KAAI,OAAO,OAAO,eAAe,iBAAiB,MAChD,QAAO,oBAAoB,OAAO;AAGpC,KAAI,OAAO,OAAO,eAAe,iBAAiB,QAIhD,QAHuB,OAAO,OAAO,OAAO,YAAY,CAAC,MACtD,MAAM,EAAE,YACV,GACuB,oCAAoC,GAAG;AAGjE,QAAO;;;;;ACtuBT,MAAa,qBAA4C,CACvD;CACE,SAAS,CACP;EACE,MAAM;EACN,QAAQ;EACT,CACF;CACD,YAAY;CACb,CACF;AAED,MAAa,iCAAwD,CACnE;CACE,SAAS,CACP;EACE,MAAM;EACN,SAAS;EACT,QAAQ;EACR,wBAAwB;EACzB,CACF;CACD,YAAY;CACb,CACF;AAED,MAAM,+BAAsD,CAC1D;CACE,SAAS;EACP;GAAE,MAAM;GAAY,QAAQ;GAAM;EAClC;GAAE,MAAM;GAAoB,QAAQ;GAAM;EAC1C;GAAE,MAAM;GAAe,QAAQ;GAAM;EACrC;GAAE,MAAM;GAAkB,QAAQ;GAAM;EACxC,EAAE,MAAM,mBAAmB;EAC3B,EACE,MAAM,2BACP;EACD,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,iBAAiB;EACzB,EAAE,MAAM,oBAAoB;EAC5B,EAAE,MAAM,uBAAuB;EAC/B,EAAE,MAAM,+BAA+B;EACvC,EAAE,MAAM,YAAY;EACpB,EAAE,MAAM,wBAAwB;EAChC,EAAE,MAAM,qBAAqB;EAC9B;CACD,YAAY;CACb,CACF;AACD,MAAM,4BAAmD,CACvD;CACE,SAAS;EACP;GAAE,MAAM;GAAe,QAAQ;GAAM;EACrC;GAAE,MAAM;GAAuB,QAAQ;GAAM;EAC7C;GAAE,MAAM;GAAkB,QAAQ;GAAM;EACxC;GAAE,MAAM;GAAkB,QAAQ;GAAM;EACxC,EAAE,MAAM,sBAAsB;EAC9B,EACE,MAAM,8BACP;EACD,EAAE,MAAM,2BAA2B;EACnC,EAAE,MAAM,yBAAyB;EACjC,EAAE,MAAM,iBAAiB;EACzB,EAAE,MAAM,oBAAoB;EAC5B,EAAE,MAAM,qBAAqB;EAC7B,EAAE,MAAM,6BAA6B;EACrC,EAAE,MAAM,YAAY;EACpB,EAAE,MAAM,gBAAgB;EACxB,EAAE,MAAM,wBAAwB;EAChC,EAAE,MAAM,WAAW;EACnB,EAAE,MAAM,eAAe;EACvB,EAAE,MAAM,qBAAqB;EAC9B;CACD,YAAY;CACb,CACF;AAED,MAAa,mBAAmB,gBAAyC;CACvE,MAAM,iBACJ,aAAa,eAAe,gCAC5B,aAAa,kBAAkB,gCAC/B,aAAa,mBAAmB;CAClC,MAAM,mBACJ,aAAa,eAAe,6BAC5B,aAAa,kBAAkB,6BAC/B,aAAa,mBAAmB;AAElC,QAAO,CAAC,CAAC,kBAAkB,CAAC;;AAG9B,MAAa,mBAAmB,gBAAyC;AACvE,QAAO,UAAU,aAAa,eAAe;;AAG/C,MAAa,8BACX,kBACA,4BACA,aACA,eACG;CACH,MAAM,mBAAmB,gBAAgB,YAAY;AAErD,QAAO;EACL,GAAI,CAAC,oBAAoB,eAAe,iBAAiB,QACrD,qBACA,EAAE;EACN,GAAI,6BAA6B,iCAAiC,EAAE;EACpE,GAAI,mBACA,+BACA;EACL;;AAGH,MAAM,8BAAqD,CACzD;CACE,SAAS;EACP;GAAE,MAAM;GAAY,QAAQ;GAAM;EAClC;GAAE,MAAM;GAAoB,QAAQ;GAAM;EAC1C;GAAE,MAAM;GAAe,QAAQ;GAAM;EACrC;GAAE,MAAM;GAAkB,QAAQ;GAAM;EACxC,EAAE,MAAM,mBAAmB;EAC3B,EAAE,MAAM,2BAA2B;EACnC,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,iBAAiB;EACzB,EAAE,MAAM,oBAAoB;EAC5B,EAAE,MAAM,kBAAkB;EAC1B,EAAE,MAAM,0BAA0B;EAClC,EAAE,MAAM,YAAY;EACpB,EAAE,MAAM,eAAe;EACvB,EAAE,MAAM,qBAAqB;EAC7B,EAAE,MAAM,qBAAqB;EAC9B;CACD,YAAY;CACb,CACF;AACD,MAAM,2BAAkD,CACtD;CACE,SAAS;EACP;GAAE,MAAM;GAAY,QAAQ;GAAM;EAClC;GAAE,MAAM;GAAoB,QAAQ;GAAM;EAC1C;GAAE,MAAM;GAAoB,QAAQ;GAAM;EAC1C;GAAE,MAAM;GAA4B,QAAQ;GAAM;EAClD;GAAE,MAAM;GAAe,QAAQ;GAAM;EACrC;GAAE,MAAM;GAAkB,QAAQ;GAAM;EACxC,EAAE,MAAM,mBAAmB;EAC3B,EAAE,MAAM,6BAA6B;EACrC,EAAE,MAAM,+BAA+B;EACvC,EAAE,MAAM,2BAA2B;EACnC,EAAE,MAAM,2BAA2B;EACnC,EAAE,MAAM,mCAAmC;EAC3C,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,iBAAiB;EACzB,EAAE,MAAM,oBAAoB;EAC5B,EAAE,MAAM,2BAA2B;EACnC,EAAE,MAAM,kBAAkB;EAC1B,EAAE,MAAM,yBAAyB;EACjC,EAAE,MAAM,0BAA0B;EAClC,EAAE,MAAM,0BAA0B;EAClC,EAAE,MAAM,iCAAiC;EACzC,EAAE,MAAM,kCAAkC;EAC1C,EAAE,MAAM,YAAY;EACpB,EAAE,MAAM,eAAe;EACvB,EAAE,MAAM,gBAAgB;EACxB,EAAE,MAAM,qBAAqB;EAC7B,EAAE,MAAM,WAAW;EACnB,EAAE,MAAM,qBAAqB;EAC9B;CACD,YAAY;CACb,CACF;AAED,MAAa,6BACX,kBACA,4BACA,aACA,YACA,gBACA,aACG;CACH,MAAM,gBACJ,aAAa,eAAe,kBAC5B,aAAa,kBAAkB,kBAC/B,aAAa,mBAAmB;CAClC,MAAM,kBACJ,aAAa,eAAe,4BAC5B,aAAa,kBAAkB,4BAC/B,aAAa,mBAAmB;CAElC,MAAM,eAAe,UAAU,MAAM;CACrC,MAAM,kBACJ,iBAAiB,SACb,iBAAiB,CAAC,kBAClB,gBAAgB;AAEtB,QAAO;EACL,GAAI,oBAAoB,iBAAiB,qBAAqB,EAAE;EAChE,GAAI,CAAC,oBAAoB,eAAe,iBAAiB,QACrD,qBACA,EAAE;EACN,GAAI,6BAA6B,iCAAiC,EAAE;EACpE,GAAI,kBACA,8BACA;EACL;;AAGH,MAAM,4BAAmD;CACvD;EACE,SAAS;GACP;IAAE,MAAM;IAAY,QAAQ;IAAM;GAClC;IAAE,MAAM;IAAoB,QAAQ;IAAM;GAC1C;IAAE,MAAM;IAAe,QAAQ;IAAM;GACtC;EACD,YAAY;EACb;CACD;EACE,SAAS;GACP,EAAE,MAAM,mBAAmB;GAC3B,EAAE,MAAM,2BAA2B;GACnC,EAAE,MAAM,sBAAsB;GAC9B,EAAE,MAAM,iBAAiB;GACzB,EAAE,MAAM,oBAAoB;GAC5B,EAAE,MAAM,kBAAkB;GAC1B,EAAE,MAAM,0BAA0B;GAClC,EAAE,MAAM,YAAY;GACpB,EAAE,MAAM,yBAAyB;GACjC,EAAE,MAAM,qBAAqB;GAC9B;EACD,YAAY;EACb;CACD;EACE,SAAS,CACP;GAAE,MAAM;GAAS,QAAQ;GAAM,EAC/B;GAAE,MAAM;GAAY,QAAQ;GAAM,CACnC;EACD,YAAY;EACb;CACD;EACE,SAAS,CAAC,EAAE,MAAM,sBAAsB,CAAC;EACzC,YAAY;EACb;CACF;AAED,MAAM,yBAAgD,CACpD;CACE,SAAS;EACP;GAAE,MAAM;GAAY,QAAQ;GAAM;EAClC;GAAE,MAAM;GAAoB,QAAQ;GAAM;EAC1C;GAAE,MAAM;GAAe,QAAQ;GAAM;EACrC,EAAE,MAAM,mBAAmB;EAC3B,EAAE,MAAM,2BAA2B;EACnC,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,iBAAiB;EACzB,EAAE,MAAM,oBAAoB;EAC5B,EAAE,MAAM,YAAY;EACpB,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,8BAA8B;EACtC,EAAE,MAAM,gBAAgB;EACxB,EAAE,MAAM,yBAAyB;EACjC,EAAE,MAAM,WAAW;EACnB,EAAE,MAAM,eAAe;EACvB,EAAE,MAAM,qBAAqB;EAC9B;CACD,YAAY;CACb,EACD;CACE,SAAS;EACP;GAAE,MAAM;GAAS,QAAQ;GAAM;EAC/B,EAAE,MAAM,YAAY;EACpB;GAAE,MAAM;GAAY,QAAQ;GAAM;EACnC;CACD,YAAY;CACb,CACF;AAED,MAAM,wBACJ,WAC0B;CAC1B,MAAM,cAAc,WAAW,QAAQ,QAAQ;AAC/C,QAAO,CACL;EACE,SAAS;GACP;IAAE,MAAM,GAAG,OAAO;IAAQ,QAAQ;IAAM;GACxC;IAAE,MAAM,GAAG,OAAO;IAAgB,QAAQ;IAAM;GAChD;IAAE,MAAM,GAAG,OAAO;IAAW,QAAQ;IAAM;GAC3C,EAAE,MAAM,GAAG,YAAY,eAAe;GACtC,EAAE,MAAM,GAAG,YAAY,uBAAuB;GAC9C,EAAE,MAAM,GAAG,YAAY,kBAAkB;GACzC,EAAE,MAAM,qBAAqB;GAC7B,EAAE,MAAM,6BAA6B;GACrC,EAAE,MAAM,wBAAwB;GAChC,EAAE,MAAM,iBAAiB;GACzB,EAAE,MAAM,oBAAoB;GAC5B,EAAE,MAAM,GAAG,YAAY,cAAc;GACrC,EAAE,MAAM,GAAG,YAAY,sBAAsB;GAC7C,EAAE,MAAM,YAAY;GACpB,EAAE,MAAM,gBAAgB;GACxB,EAAE,MAAM,GAAG,YAAY,iBAAiB;GACxC,EAAE,MAAM,WAAW;GACnB,EAAE,MAAM,eAAe;GACvB,EAAE,MAAM,qBAAqB;GAC9B;EACD,YAAY;EACb,CACF;;AAGH,MAAM,6BAAoD,CACxD;CACE,SAAS;EACP;GAAE,MAAM;GAAe,QAAQ;GAAM;EACrC;GAAE,MAAM;GAAuB,QAAQ;GAAM;EAC7C;GAAE,MAAM;GAAkB,QAAQ;GAAM;EACxC,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,yBAAyB;EACjC,EAAE,MAAM,sBAAsB;EAC9B,EAAE,MAAM,8BAA8B;EACtC,EAAE,MAAM,yBAAyB;EACjC,EAAE,MAAM,iBAAiB;EACzB,EAAE,MAAM,oBAAoB;EAC5B,EAAE,MAAM,YAAY;EACpB,EAAE,MAAM,qBAAqB;EAC7B,EAAE,MAAM,6BAA6B;EACrC,EAAE,MAAM,gBAAgB;EACxB,EAAE,MAAM,wBAAwB;EAChC,EAAE,MAAM,WAAW;EACnB;GAAE,MAAM;GAAe,QAAQ;GAAM;EACrC,EAAE,MAAM,qBAAqB;EAC7B,EAAE,MAAM,2BAA2B;EACpC;CACD,YAAY;CACb,EACD;CACE,SAAS;EACP;GAAE,MAAM;GAAU,QAAQ;GAAM;EAChC,EAAE,MAAM,UAAU;EAClB;GAAE,MAAM;GAAY,QAAQ;GAAM;EACnC;CACD,YAAY;CACb,CACF;AAED,MAAa,gBAAgB,gBAAyC;CACpE,MAAM,cACJ,aAAa,eAAe,gBAC5B,aAAa,kBAAkB,gBAC/B,aAAa,mBAAmB;CAClC,MAAM,gBACJ,aAAa,eAAe,0BAC5B,aAAa,kBAAkB,0BAC/B,aAAa,mBAAmB;AAElC,QAAO,CAAC,CAAC,eAAe,CAAC;;AAG3B,MAAa,2BACX,kBACA,4BACA,aACA,eACG;CACH,MAAM,gBAAgB,aAAa,YAAY;AAE/C,QAAO;EACL,GAAI,CAAC,oBAAoB,eAAe,iBAAiB,QACrD,qBACA,EAAE;EACN,GAAI,6BAA6B,iCAAiC,EAAE;EACpE,GAAI,gBAAgB,4BAA4B;EACjD;;AAGH,MAAa,6BACX,kBACA,4BACA,aACA,eACG;AACH,QAAO;EACL,GAAI,CAAC,oBAAoB,eAAe,iBAAiB,QACrD,qBACA,EAAE;EACN,GAAI,6BAA6B,iCAAiC,EAAE;EACpE,GAAG,qBACD,0BAA0B,YAAY,GAAG,QAAQ,SAClD;EACF;;AAGH,MAAa,+BACX,kBACA,4BACA,aACA,eACG;CAGH,MAAM,iBAAiB,eAAe,iBAAiB;CACvD,MAAM,WAAW,CAAC,oBAAoB,eAAe,iBAAiB;AAEtE,QAAO;EACL,GAAI,iBAAiB,4BAA4B,EAAE;EACnD,GAAI,WAAW,qBAAqB,EAAE;EACtC,GAAI,6BAA6B,iCAAiC,EAAE;EACpE,GAAG;EACJ;;AAGH,MAAa,aACX,aACA,gBAMG;AAEH,KAAI,gBAAgB,gBAClB,QAAO;CAGT,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,QAAQ;;AAG5C,MAAM,aACJ,aACA,gBACG;CACH,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,QAAQ;;AAG5C,MAAa,6BACX,aACA,gBAMG;AAEH,KAAI,gBAAgB,gBAClB,QAAO;CAGT,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,SAAS;;AAG7C,MAAa,yCACX,aACA,gBAMG;CACH,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,SAAS;;AAG7C,MAAa,yCACX,aACA,gBAMG;CACH,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,SAAS;;AAG7C,MAAa,0CACX,aACA,gBAMG;AAEH,KAAI,gBAAgB,gBAClB,QAAO;CAGT,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,SAAS;;AAG7C,MAAa,6BACX,gBACG;CACH,MAAM,UAAU,wBAAwB,aAAa,cAAc;AAEnE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAGrC,QAAO,gBAAgB,WAAW,SAAS;;AAG7C,MAAM,2BACJ,aACA,gBAMG;AACH,SAAQ,aAAR;EACE,KAAK,eAAe;GAClB,MAAM,UAAU;AAChB,UACE,aAAa,mBAAmB,YAChC,aAAa,eAAe,YAC5B,aAAa,kBAAkB,YAC/B,aAAa,mBAAmB;;EAGpC,KAAK,gBAAgB;GACnB,MAAM,UAAU;AAChB,UACE,aAAa,mBAAmB,YAChC,aAAa,eAAe,YAC5B,aAAa,kBAAkB,YAC/B,aAAa,mBAAmB;;EAGpC,KAAK,aAAa;GAChB,MAAM,UAAU;AAChB,UACE,aAAa,mBAAmB,YAChC,aAAa,eAAe,YAC5B,aAAa,kBAAkB,YAC/B,aAAa,mBAAmB;;EAGpC,KAAK,iBAAiB;GACpB,MAAM,UAAU;AAChB,UACE,aAAa,mBAAmB,YAChC,aAAa,eAAe,YAC5B,aAAa,kBAAkB,YAC/B,aAAa,mBAAmB;;EAGpC,KAAK,eAAe;GAClB,MAAM,UAAU;AAChB,UACE,aAAa,mBAAmB,YAChC,aAAa,eAAe,YAC5B,aAAa,kBAAkB,YAC/B,aAAa,mBAAmB;;;;;;;ACzlBxC,MAAa,YAAY;CACvB,UAAU;CACV,OAAO;CACP,gBAAgB;CAChB,mBAAmB;CACpB;AAED,MAAM,4BAA4B,IAAI,IAAI,CACxC,oBACA,uBACD,CAAC;AAEF,MAAa,wBAAwB,EACnC,QACA,SACA,MACA,cAMI;AACJ,KAAI,YAAY,MACd,QAAO;CAGT,MAAM,cAAc,SAAS,QAAQ,GACjC,IAAI,UACF,OACE,UACC,GAAG,QACF,SAAS,UAAU,YACnB,SAAS,UAAU,qBACnB,0BAA0B,IAAI,IAAI,CACrC,CACF,EAAE,MAAM,GAAG,GAAG,KACf;AAEJ,KAAI,OAAO,WAAW,KAAK,gBAAgB,KAAK,EAAE;AAChD,MAAI,QACF,QAAO,GAAG,YAAY;AAGxB,SAAO;;AAST,QAAO,GANe,UAClB,QAAQ,sBAAsB,QAAQ,QAAQ,GAC9C,CAAC,SAAS,QAAQ,IAAI,CAAC,OAAO,OAAO,SAAS,UAAU,GACtD,eAAe,OAAO,KAAK,EAAE,WAAW,KAAK,CAAC,KAAK,OAAO,CAAC,MAC3D,KAEoB,YAAY;;AAGxC,MAAa,mBAAmB,SAAoB;AAClD,QAAO,CAAC,UAAU,mBAAmB,UAAU,eAAe,CAAC,SAAS,KAAK;;AAG/E,MAAa,6BAA6B,EACxC,eACA,SACA,aACA,MACA,QACA,YACA,yCACA,aACA,YACA,cACA,aACA,cAeI;CACJ,MAAM,gBAAgB,SAAS;CAC/B,MAAM,iBAAiB,CAAC,gBAAgB;AAExC,KAAI,MAAM;EACR,MAAM,iBAAiB,sBACrB,gBACI,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU,gBACf;EAED,MAAM,+BACJ,eAAe,CAAC,gBAAgB,KAAK,GACjC;UACA,OAAO,YAAY,CAAC;YAClB,eAAe;;YAEf,iBACA,eACC,SAAS,UAAU,YAClB,SAAS,UAAU,sBACrB,cACA,cACI,eACA,GACL;;WAGD;EAGN,MAAM,kBACJ,gBAAgB,SAAS,2BACrB,QAAQ,yBACN,SAAS,UAAU,YAAY,SAAS,UAAU,oBAC9C,kBACA,QACL,GACD;EAEN,MAAM,aAAa,kBACf,GAAG,gBAAgB,GAAG,eAAe,iBACnC,eACC,SAAS,UAAU,YAClB,SAAS,UAAU,sBACrB,cACA,cACI,eAAe,YAAY,OAAO,KAAK,IAAI,WAAW,MACtD,GACL,KACD,GAAG,SAAS,OAAO,KAAK,CAAC,UAAU,eAAe,iBAChD,eACC,SAAS,UAAU,YAClB,SAAS,UAAU,sBACrB,cACA,cACI,0CACE,eAAe,YAAY,OAAO,KAAK,IAAI,WAAW,MACtD,KAAK,eAAe,cAAc,YAAY,OAAO,KAAK,IAAI,WAAW,MAC3E,GACL;AAEL,SAAO,GAAG,iBAAiB,aAAa,KAAK,aAC3C,iBAAiB,MAAM,KACtB;;CAIL,MAAM,0BACJ,gBAAgB,SAAS,2BACrB,QAAQ,yBAAyB,WAAW,GAC5C;AAEN,QAAO,0BACH,GAAG,wBAAwB,sBACzB,gBACI,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU,gBACf,aAAa,cAAc,IAAI,YAAY,KAAK,OAAO,eACxD,GAAG,OAAO,qCACR,gBACI,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU,gBACf,aAAa,cAAc,IAAI,YAAY,KAAK,OAAO;;;;;AC7J9D,MAAa,wBAAwB,EACnC,YACA,4BACA,yCACA,wCACA,6CAO4B;CAC5B,MAAM,SAAS;AAEf,QAAO;EACL,cAAc,aAAa;EAC3B,YAAY;EACZ,eAAe;EACf;EACA;EACA;EACA;EACA;EAEA,wBAAwB,OAA4B;AAElD,UAAO,eACL,MAAM,KAAK,SAAS;IAClB,MAAM,aAAa,KAAK,WAAW,QACjC,uBAEE,QACA,MACA,UACA,SAEA,GAAG,OAAO,SAAS,IAAI,KAAK,YAAY,KAAK,QAAQ,gBAAgB,GAAG,GAAG,WAAW,iBAAiB,GAAG,GAC7G;AACD,WAAO;KAAE,GAAG;KAAM,YAAY;KAAY;KAC1C,EACF,aACD;;EAGH,0BACE,iBACA,aACA,YACQ;AAGR,OAAI,CAAC,WACH,QAAO,kBAAkB,SAAS,oBAAoB;AAExD,UAAO;;EAGT,0BACE,OACA,YACA,YACQ;GACR,IAAI,SAAS,MACV,KAAK,UAAU;AACd,QAAI,MAAM,SAAS,eAAe,kBAChC,QAAO,MAAM;AACf,WAAO,MAAM,SAAS,WAClB,gBAAgB,WAAW,4BAA4B,WAAW,OAClE,MAAM;KACV,CACD,KAAK,IAAI;AAIZ,OAAI,CAAC,WACH,UAAS,SAAS,SAAS,WAAW;AAGxC,UAAO;;EAGT,kBAAkB,SAAoC;AACpD,OAAI,CAAC,WAAW,QAAQ,aACtB,QAAO;AAET,UAAO;;EAGT,sBAAsB,SAAoC;AACxD,OAAI,CAAC,QACH,QAAO;AAET,UAAO;;EAGT,mBAAmB,EAAE,QAAwC;AAC3D,OAAI,SAAS,UAAU,YAAY,SAAS,UAAU,kBACpD,QAAO;AAET,UAAO;;EAGT,sBAAsB,EACpB,UACA,gBACoC;AACpC,UAAO;6BACgB,SAAS;;UAE5B,aAAa;;;;EAKnB,wBAAwB,EACtB,sBACsC;AACtC,UAAO,UAAU,mBAAmB;;EAGtC,yBAAkC;AAEhC,UAAO;;EAGT,kBAAkB,EAAE,WAAqC;AAEvD,OAAI,CAAC,WAAW,QAAQ,aACtB,QAAO;AAET,UAAO;;EAGT,4BAA4B,EAC1B,OACA,oBACA,kBACA,WACiC;AAEjC,UAAO,UACL,MAAM,SAAS,IACX;;MAEN,MAAM,KAAK,MAAM,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,oBAAoB,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,CAAC,KAAK,SAAS,KAC1G,GACL;;8BAEuB,mBAAmB,YAAY,eAAe,oBAAoB,mBAAmB,YAAY,eAAe,OAAO,mBAAmB,YAAY,eAAe;aACtL,mBAAmB,GAAG,CAAC,WAAW,QAAQ,eAAe,SAAS,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,WAAW,QAAQ,eAAe,OAAO,KAAK,MAAM,KAAK,MAAM,IAAI,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK,GAAG;;;EAItM,iCAAyC;AAEvC,UAAO;;EAGT,kCAA0C;AACxC,UAAO;;EAGT,uBAAuB,EACrB,eACA,aACA,SACA,kBACA,MACA,aACA,YACA,aACA,YACA,kBAAkB,OAClB,mBACS;GACT,MAAM,aAAa,0BAA0B;IAC3C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,cAAc;IACd;IACD,CAAC;AAEF,OAAI,CAAC,iBACH,QAAO,GAAG,OAAO,iBAAiB,oBAChC,gBAAgB,YAAY,KAAK,IAClC,IAAI;GAGP,MAAM,cAAc,6BAA6B,YAAY,QAAQ;GACrE,MAAM,kBAAkB,gBAAgB;GAGxC,MAAM,cAAc,KAClB,OAAO,UAAU,aAChB,kBAAkB,KAAK,IAAI,GAAG,WAAW,IAH1C,CAAC,QAAQ,kBAAkB,iCAAiC,KAGS,YAAY;AAMnF,OADyB,SAAS,UAAa,CAAC,gBAE9C,QAAO,UAAU,kBAAkB,KAAK,IAAI,IAAI,YAAY,YAAY,YAAY;AAGtF,UAAO,UAAU,kBAAkB,KAAK,IAAI,IAAI,YAAY;;EAG9D,+BAA+B,EAC7B,uBACA,iBACA,oBACS;AACT,UAAO,GAAG,sBAAsB,GAAG,kBAAkB,kBAAkB,KACrE,mBAAmB,YAAY,kBAChC;;EAGH,+BAAwC;AACtC,UAAO;;EAGT,yBAAyB,EACvB,iBACA,uBACA,wBACA,kBACA,SACA,mBACkC;AAClC,OAAI,CAAC,WAAW,QAAQ,aACtB,QAAO,yCAAyC,kBAAkB,qDAAqD,GAAG;cACpH,uBAAuB,KAAK,sBAAsB,OAAO,kBAAkB,kBAAkB,KAAK,mBAAmB,cAAc,oBAAoB;;eAEtJ,gBAAgB,iBAAiB,uBAAuB;AAMjE,UAAO,eAAe,uBAAuB,KAHxB,GAAG,sBAAsB,GAAG,kBAAkB,kBAAkB,KACnF,mBAAmB,YAAY,kBAChC,GAC8D;;eAEtD,gBAAgB,iBAAiB,uBAAuB;;EAGnE,aAAa,MAAsB;AACjC,UAAO,yBAAyB,KAAK;;EAGvC,wBACE,aACA,SACQ;AACR,UAAO,mCAAmC,aAAa,QAAQ;;EAElE;;;;;AC9QH,MAAa,sBAAsB,EACjC,YACA,4BACA,yCACA,wCACA,8CAO6B;CAC7B,cAAc,aAAa;CAC3B,YAAY;CACZ;CACA;CACA;CACA;CACA;CAEA,mBAAmB,EACjB,MACA,wBACiC;AACjC,SAAO,IACL,wBAAwB,CAAC,gBAAgB,KAAK,GAAG,YAAY,GAC9D,KAAK,OAAO,KAAK,CAAC,sCAAsC,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW;;CAG/J,sBAAsB,EACpB,UACA,gBACoC;AACpC,SAAO;6BACkB,SAAS;;UAE5B,aAAa;;;;CAKrB,wBAAwB,EACtB,oBACA,uBACsC;AACtC,SAAO,eAAe,mBAAmB,cAAc,oBAAoB;;CAG7E,8BAAuC;AACrC,SAAO;;CAGT,+BAA+B,EAC7B,uBACA,iBACA,oBACS;AACT,SAAO,GAAG,sBAAsB,GAAG,kBAAkB,uCAAuC,KAC1F,mBAAmB,YAAY,kBAChC;;CAGH,+BAAwC;AACtC,SAAO;;CAGT,yBAAyB,EACvB,iBACA,wBACA,iBACA,+BACkC;AAClC,SAAO,SAAS,kBAAkB,wDAAwD,GAAG,SAAS,gBAAgB,WAAW,yBAAyB,8BAA8B,kBAAkB,GAAG;;CAG/M,wBACE,aACA,SACQ;AACR,SAAO,QAAQ,QAAQ,OAAO,eAAe,iBAAiB,QAC1D,6BAA6B,aAAa,SAAS,MAAM,GACzDA,wBAA6B,aAAa,QAAQ;;CAEzD;;;;ACpFD,MAAa,sBAAsB,EACjC,YACA,4BACA,yCACA,wCACA,wCACA,8BAQ6B;CAC7B,cAAc,aAAa;CAC3B,YAAY,yBAAyB,QAAQ;CAC7C;CACA;CACA;CACA;CACA;CAEA,kCAA0C;AACxC,SAAO,yBAAyB,QAAQ;;CAG1C,yBACE,MACoB;AAGpB,MAAI,SAAS,WAAY,QAAO;AAChC,MAAI,SAAS,gBAAiB,QAAO;AACrC,SAAO;;CAGT,oBAA4B;AAG1B,SAAO;;CAGT,yBAAkC;AAGhC,SAAO;;CAGT,wBAAiC;AAG/B,SAAO;;CAGT,yBAAkC;AAGhC,SAAO;;CAGT,mBAAmB,EAAE,QAAwC;EAC3D,MAAM,SAAS,yBAAyB,QAAQ;EAChD,MAAM,eAAe,aACjB,0BAA0B,6BAA6B,aAAa,GAAG,KACvE;AAEJ,MAAI,SAAS,UAAU,YAAY,SAAS,UAAU,kBACpD,QAAO,GAAG,OAAO,2CAA2C,aAAa;AAE3E,SAAO,GAAG,OAAO,mDAAmD,aAAa;;CAGnF,sBAAsB,EACpB,UACA,gBACoC;AAEpC,SAAO,KADQ,yBAAyB,QAAQ,SAC7B;6BACM,SAAS;;UAE5B,aAAa;;;;CAKrB,wBAAwB,EACtB,oBACA,uBACsC;AAGtC,SAAO,wBAAwB,mBAAmB,gBAAgB,oBAAoB;;CAGxF,4BAA4B,EAC1B,oBACA,iBACA,kBACA,+BACiC;EAEjC,MAAM,aAAa,mBAAmB,YAAY;AAIlD,SAAO,SAAS,mBAAmB,GAHtB,kBACT,GAAG,gBAAgB,GAAG,eACtB,WACuC,GAAG,8BAA8B,kBAAkB;;CAGhG,+BAA+B,EAC7B,uBACA,oBACS;AACT,SAAO,GAAG,sBAAsB,GAC9B,mBAAmB,YAAY,kBAChC;;CAGH,+BAAwC;AAEtC,SAAO;;CAGT,4BAAoC;AAClC,SAAO;;CAGT,yBAAyB,EACvB,iBACA,wBACA,+BACkC;AAElC,SAAO,gBAAgB,gBAAgB,iBAAiB,yBAAyB,8BAA8B,kBAAkB,GAAG;;CAGtI,iCAAyC;AAEvC,SAAO;;CAGT,wBACE,aACA,SACQ;AACR,SAAO,QAAQ,QAAQ,OAAO,eAAe,iBAAiB,QAC1D,6BAA6B,aAAa,SAAS,MAAM,GACzDC,wBAA6B,aAAa,QAAQ;;CAEzD;;;;AC7ID,MAAa,uBAAuB,EAClC,kBACA,kBACA,YACA,4BACA,yCACA,wCACA,6CAS4B;CAC5B,MAAM,SAAS,mBAAmB,WAAW;AAE7C,QAAO;EACL,cAAc,aAAa;EAC3B,YAAY,mBAAmB,WAAW;EAC1C;EACA;EACA;EACA;EACA;EAEA,wBAAwB,OAA4B;AAClD,OAAI,iBACF,QAAO,eACL,MAAM,KAAK,OAAO;IAChB,GAAG;IACH,YAAY,EAAE,WAAW,QAAQ,KAAK,WAAW;IAClD,EAAE,EACH,aACD;AAEH,UAAO,eAAe,OAAO,iBAAiB;;EAGhD,mBAAmB,EACjB,MACA,eACA,iBACiC;AACjC,OAAI,CAAC,iBACH,QAAO,MAAM,OAAO,KAAK,CAAC,iCACxB,gBACI,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU,gBACf;AAGH,UAAO,SAAS,OACd,KACD,CAAC,sCAAsC,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW;;EAG9I,sBAAsB,EACpB,UACA,gBACoC;AACpC,UAAO;6BACgB,SAAS;;UAE5B,aAAa;;;;EAKnB,wBAAwB,EACtB,oBACA,uBACsC;AACtC,OAAI,iBACF,QAAO,UAAU;AAEnB,OAAI,iBACF,QAAO,GAAG,mBAAmB,cAAc,oBAAoB;;WAE5D,mBAAmB;AAGxB,UAAO,eAAe,mBAAmB,cAAc,oBAAoB;;EAG7E,kBAAkB,EAChB,oBACA,iBACA,oBAC2B;AAC3B,OAAI,iBACF,QAAO;AAGT,UAAO,SADqB,mBAAmB,iBAAiB,UAC5B,KAAK,mBAAmB,GAAG,kBAC7D,kBAAkB,MAAM,KACvB,mBAAmB,YAAY,eAAe;;EAGnD,4BAA4B,EAC1B,OACA,oBACA,kBACA,qBACA,+BACiC;AACjC,OAAI,iBACF,QAAO,SAAS,mBAAmB,GAAG,eACpC,MAAM,KAAK,OAAO;IAChB,GAAG;IACH,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,EAAE,KAAK,QAAQ,GAAG,EAAE,KAAK;IAC9D,EAAE,EACH,OACD,GAAG,mBAAmB,gBAAgB,mBAAmB;AAE5D,UAAO,GAAG,sBAAsB,8BAA8B,kBAAkB;;EAGlF,2BAAmC;AACjC,UAAO,mBAAmB,kBAAkB;;EAG9C,+BAA+B,iBAAmC;AAChE,OAAI,iBACF,QAAO;AAET,OAAI,cAAc,gBAChB,QAAO;AAET,UAAO;;EAGT,kCAA0C;AACxC,UAAO;;EAGT,uBAAuB,EACrB,eACA,aACA,SACA,kBACA,MACA,aACA,YACA,aACA,YACA,kBAAkB,OAClB,mBACS;GACT,MAAM,aAAa,0BAA0B;IAC3C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,cAAc;IACd;IACD,CAAC;AAEF,OAAI,CAAC,iBACH,QAAO,GAAG,OAAO,iBAAiB,oBAChC,gBAAgB,YAAY,KAAK,IAClC,IAAI;GAGP,MAAM,cAAc,6BAA6B,YAAY,QAAQ;GACrE,MAAM,kBAAkB,gBAAgB;GAGxC,MAAM,cAAc,KAClB,OAAO,UAAU,aAChB,kBAAkB,KAAK,IAAI,GAAG,WAAW,IAH1C,CAAC,QAAQ,kBAAkB,iCAAiC,KAGS,YAAY;AAEnF,UAAO,UAAU,kBAAkB,KAAK,IAAI,IAAI,oBAAoB,CAAC,kBAAkB,WAAW,KAAK,YAAY;;EAGrH,+BAA+B,EAC7B,uBACA,iBACA,oBACS;AACT,OAAI,iBACF,QAAO,GAAG,sBAAsB,GAAG,kBAAkB,wBAAwB,KAC3E,mBAAmB,YAAY,kBAChC;AAEH,UAAO,GAAG,sBAAsB,GAAG,kBAAkB,uCAAuC,KAC1F,mBAAmB,YAAY,kBAChC;;EAGH,+BAAwC;AACtC,UAAO;;EAGT,yBAAyB,EACvB,iBACA,wBACA,iBACA,+BACkC;AAClC,OAAI,iBACF,QAAO,SAAS,kBAAkB,4CAA4C,8BAA8B,oBAAoB,GAAG,cAAc,GAAG,SAAS,gBAAgB,uBAAuB,uBAAuB,KAAK,8BAA8B,kBAAkB,GAAG;AAGrR,UAAO,SAAS,kBAAkB,wDAAwD,GAAG,SAAS,gBAAgB,WAAW,uBAAuB;;EAG1J,aAAa,MAAsB;AACjC,OAAI,iBACF,QAAO,yBAAyB,KAAK;AAEvC,UAAO;;EAGT,wBACE,aACA,SACQ;AACR,UAAO,QAAQ,QAAQ,OAAO,eAAe,iBAAiB,QAC1D,6BAA6B,aAAa,SAAS,MAAM,GACzDC,wBAA6B,aAAa,QAAQ;;EAEzD;;;;;ACtOH,MAAa,oBAAoB,EAC/B,eACA,YACA,4BACA,yCACA,wCACA,8CAQ6B;CAC7B,cAAc,aAAa;CAC3B,YAAY;CACZ;CACA;CACA;CACA;CACA;CAEA,eAAe,OAAiC;AAC9C,SAAO,wBAAwB,MAAM;;CAGvC,mCAA4C;AAE1C,SAAO;;CAGT,0BACE,iBACA,YACQ;AAER,MAAI,eAAe,iBAAiB,SAAS,gBAC3C,QAAO,gBACJ,MAAM,IAAI,CACV,KAAK,SAAS,SAAS,KAAK,GAAG,CAC/B,KAAK,IAAI;AAEd,SAAO;;CAGT,0BAA0B,OAAoB,YAA4B;AACxE,SAAO,MACJ,KAAK,UAAU;AAEd,UAAO,MAAM,SAAS,WAClB,uBAAuB,WAAW,mCAAmC,WAAW,OAChF,MAAM;IACV,CACD,KAAK,IAAI;;CAGd,mBAAmB,EAAE,QAAwC;AAC3D,MAAI,CAAC,cACH,QAAO,yCAAyC,OAC9C,KACD,CAAC;AAGJ,MAAI,SAAS,UAAU,YAAY,SAAS,UAAU,kBACpD,QAAO,mDAAmD,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW;AAGhK,SAAO,2DAA2D,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW;;CAGxK,sBAAsB,EACpB,UACA,gBACoC;AACpC,SAAO;6BACkB,SAAS;;UAE5B,aAAa;;;;CAKrB,wBAAwB,EACtB,oBACA,uBACsC;AAItC,SAAO,GAAG,mBAAmB,oBAAoB,oBAAoB,gBAHhD,aACjB,0BAA0B,6BAA6B,aAAa,GAAG,KACvE,WAC8F;;WAE3F,mBAAmB;;CAG5B,uBAAuB,OAAuB;AAE5C,SAAO,gBAAgB,MAAM;;CAG/B,yBAAkC;AAEhC,SAAO;;CAGT,mBAAmB,OAA4B;AAC7C,SAAO,eACL,MAAM,QAAQ,SAAS,KAAK,SAAS,eAAe,kBAAkB,CACvE;;CAGH,sBACE,QACA,SACQ;AACR,MAAI,CAAC,SAAS,QAAQ,IAAI,CAAC,OAAO,OAAO,SAAS,UAAU,CAC1D,QAAO,8BAA8B,OAClC,KAAK,EAAE,WAAW,SAAS,KAAK,GAAG,CACnC,KAAK,OAAO,CAAC;AAElB,SAAO;;CAGT,oBAA4B;AAC1B,SAAO,gBAAgB,KAAK;;CAG9B,+BAA+B,EAC7B,uBACA,oBACS;AACT,SAAO,GAAG,sBAAsB,GAC9B,mBAAmB,YAAY,kBAChC;;CAGH,+BAAwC;AAEtC,SAAO;;CAGT,4BAAoC;AAClC,SAAO;;CAGT,yBAAyB,EACvB,iBACA,wBACA,+BACkC;AAClC,SAAO,gBAAgB,gBAAgB,WAAW,yBAAyB,8BAA8B,kBAAkB,GAAG;;CAGhI,wBACE,aACA,SACQ;AACR,SAAO,QAAQ,QAAQ,OAAO,eAAe,iBAAiB,QAC1D,6BAA6B,aAAa,SAAS,KAAK,GACxDC,wBAA6B,aAAa,QAAQ;;CAGxD,wBACE,MACA,MACQ;AAER,SAAO,KAAK,SAAS,eAAe,OAAO,KAAK,iBAAiB,KAAK;;CAEzE;;;;;AC7JD,MAAM,gBAAgB,aAAuD;CAE3E,eAAe;CACf,yBAAyB;CACzB,6BAA6B;CAC7B,0BAA0B;CAC1B,gCAAgC;CAGhC,iBAAiB,UAAU;CAC3B,4BAA4B,OAAO;CACnC,eAAe,SAAS;CAGxB,wCAAwC;CACxC,8BAA8B;CAC9B,mCAAmC;CACnC,6BAA6B;CAC7B,8BAA8B;CAG9B,yBAAyB;CACzB,uCAAuC;CAGvC,0BAA0B,UAAU,eAAe,OAAO,iBAAiB;CAE3E,uBAAuB,OAAO,qBAAqB;AACjD,MAAI,oBACF,QAAO,gBAAgB,MAAM;AAE/B,SAAO,KAAK,MAAM;;CAGpB,sBAAsB,QAAQ,SAAS;AACrC,MAAI,CAAC,SAAS,QAAQ,IAAI,CAAC,OAAO,OAAO,SAAS,UAAU,CAC1D,QAAO,eAAe,OAAO,KAAK,EAAE,WAAW,KAAK,CAAC,KAAK,OAAO,CAAC;AAEpE,SAAO;;CAGT,wBAAwB,MAAkB,MAAkC;AAC1E,MAAI,KAAK,SAAS,eAAe,kBAC/B,QAAO,KAAK;AACd,SAAO,KAAK,SAAS,eAAe,OAAO,KAAK,iBAAiB,KAAK;;CAGxE,0BAA0B,OAAoB,YAAoB;AAChE,SAAO,MACJ,KAAK,UAAU;AACd,OAAI,MAAM,SAAS,eAAe,kBAChC,QAAO,MAAM;AACf,UAAO,MAAM,SAAS,WAClB,gBAAgB,WAAW,4BAA4B,WAAW,OAClE,MAAM;IACV,CACD,KAAK,IAAI;;CAGd,kBAAkB,EAAE,oBAAoB,iBAAiB,oBAAoB;AAE3E,SAAO,SADqB,mBAAmB,iBAAiB,UAC5B,KAAK,mBAAmB,GAAG,kBAC7D,kBAAkB,MAAM,KACvB,mBAAmB,YAAY,eAAe;;CAGnD,4BAA4B,EAC1B,qBACA,+BACC;AACD,SAAO,GAAG,sBAAsB,8BAA8B,kBAAkB;;CAGlF,iCAAiC;AAC/B,SAAO,QAAQ,aAAa,gCAAgC;;CAG9D,uBAAuB,EACrB,eACA,aACA,SACA,kBACA,MACA,aACA,YACA,aACA,YACA,mBACC;EAED,MAAM,aAAa,0BAA0B;GAC3C;GACA;GACA;GACA;GACA,QANa,QAAQ,mCAAmC,IAAI;GAO5D,YAAY,QAAQ;GACpB,yCACE,QAAQ;GACV;GACA;GACA,cAAc;GACd;GACD,CAAC;AAEF,MAAI,CAAC,iBACH,QAAO,GAAG,OAAO,iBAAiB,oBAChC,gBAAgB,YAAY,KAAK,IAClC,IAAI;EAGP,MAAM,cAAc,6BAA6B,YAAY,QAAQ;EACrE,MAAM,kBAAkB,gBAAgB;EAGxC,MAAM,cAAc,KAClB,OAAO,UAAU,aAChB,kBAAkB,KAAK,IAAI,GAAG,WAAW,IAH1C,CAAC,QAAQ,kBAAkB,iCAAiC,KAGS,YAAY;AAEnF,SAAO,UAAU,kBAAkB,KAAK,IAAI,IAAI,YAAY;;CAG9D,0BAA0B,EACxB,eACA,aACA,kBACA,wBACA,qBACmC;EACnC,MAAM,kBAAkB,kBACrB,KAAK,MAAM,uBAAuB,EAAE,CAAC,CACrC,KAAK,KAAK;AACb,MAAI,QAAQ,wCAAwC;AAClD,OAAI,iBACF,QAAO,wDAAwD,cAAc,iBAAiB,cAAc,IAAI,YAAY,KAAK,OAAO;;MAE1I,gBAAgB;;;;AAKhB,UAAO,wDAAwD,cAAc,iBAAiB,cAAc,IAAI,YAAY,KAAK,OAAO;MACxI,gBAAgB;;;SAGX;AACL,OAAI,iBACF,QAAO,wDAAwD,cAAc,iBAAiB,cAAc,IAAI,YAAY,KAAK,OAAO,qBAAqB,QAAQ,yCAAyC,KAAK,eAAe;;MAEpO,gBAAgB;;;;AAKhB,UAAO,wDAAwD,cAAc,iBAAiB,cAAc,IAAI,YAAY,KAAK,OAAO,qBAAqB,QAAQ,yCAAyC,KAAK,eAAe;MAClO,gBAAgB;;;;;CAKpB,GAAG;CACJ;;;;;AAaD,MAAa,0BAA0B,EACrC,cACA,aACA,mBAKsB;CACtB,MAAM,aAAa;CAEnB,MAAM,cAAc,iBAAiB,KAAK,UAAU,aAAa,WAAW;CAE5E,MAAM,8BACJ,iBAAiB,KAAK,0BAA0B,aAAa,WAAW;CAE1E,MAAM,2CACJ,iBAAiB,KACjB,uCAAuC,aAAa,WAAW;CACjE,MAAM,0CACJ,sCAAsC,aAAa,WAAW;CAChE,MAAM,0CACJ,sCAAsC,aAAa,WAAW;AAEhE,SAAQ,cAAR;EACE,KAAKC,aAAkB,UAErB,QAAO,aACL,iBAAiB;GACf,eAHkB,CAAC,aAAa,YAAY,IAAI,iBAAiB;GAIjE,YAAY;GACZ,4BAA4B;GAC5B,yCACE;GACF,wCACE;GACF,wCACE;GACH,CAAC,CACH;EAGH,KAAKA,aAAkB,aAIrB,QAAO,aACL,oBAAoB;GAClB,kBAJF,CAAC,gBAAgB,YAAY,IAAI,iBAAiB;GAKhD,kBAJsB,gBAAgB,YAAY;GAKlD,YAAY;GACZ,4BAA4B;GAC5B,yCACE;GACF,wCACE;GACF,wCACE;GACH,CAAC,CACH;EAGH,KAAKA,aAAkB,cACrB,QAAO,aACL,qBAAqB;GACnB,YAAY;GACZ,4BAA4B;GAC5B,yCACE;GACF,wCACE;GACF,wCACE;GACH,CAAC,CACH;EAGH,KAAKA,aAAkB,YAErB,QAAO,aACL,mBAAmB;GACjB,YAAY;GACZ,4BAA4B;GAC5B,yCACE;GACF,wCACE;GACF,wCACE;GACF,wBAX+B,0BAA0B,YAAY;GAYtE,CAAC,CACH;EAGH,QAEE,QAAO,aACL,mBAAmB;GACjB,YAAY;GACZ,4BAA4B;GAC5B,yCACE;GACF,wCACE;GACF,wCACE;GACH,CAAC,CACH;;;;;;AClSP,MAAM,mBAAmB,WACvB,SAAS,OAAO,GACZ;CAAE,OAAO;CAAQ,gBAAgB;CAAc,GAC/C;CAAE,GAAG;CAAQ,gBAAgB,OAAO,kBAAkB;CAAc;AAE1E,MAAM,mBAAmB,WACvB,KAAK,UAAU;CACb,OAAO,OAAO;CACd,QAAQ,OAAO,UAAU,EAAE;CAC3B,gBAAgB,OAAO;CACvB,MAAM,OAAO,QAAQ;CACtB,CAAC;AAEJ,MAAM,uBAAuB,YAA4B;CACvD,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,KAAI,MAAM,WAAW,EACnB,QAAO,aAAa;AAEtB,QAAO,aAAa,MAAM,GAAG,IAAI,MAAM,MAAM,EAAE,CAAC,KAAK,KAAK;;AAG5D,MAAM,qBACJ,WACW;AACX,KAAI,MAAM,QAAQ,OAAO,CACvB,QAAO,OAAO,KAAK,MAAM,oBAAoB,EAAE,CAAC,CAAC,KAAK,KAAK;AAE7D,QAAO,OAAO,OAAO,OAAO,CACzB,KAAK,MAAM,oBAAoB,EAAE,CAAC,CAClC,KAAK,KAAK;;AAGf,MAAM,0BAA0B,WAAqC;CACnE,MAAM,aAAa,MAAM,OAAO,OAAO,MAAM,YAAY;CACzD,MAAM,OAAO,OAAO,SAAS,kBAAkB,OAAO,OAAO,GAAG;AAChE,QAAO,mBAAmB,OAAO,mBAAmB,UAAU,iBAAiB,oBAAoB,eAAe,WAAW,GAAG,KAAK;;AAYvI,MAAa,uBAAuB,OAAO,EACzC,aACA,SACA,kBACA,YACA,KACA,cAKI;CACJ,MAAM,EACJ,eACA,MACA,OACA,SACA,UACA,aACA,aACE;CACJ,MAAM,EAAE,OAAO,SAAS,WAAW;CACnC,MAAM,QAAQ,SAAS;CAEvB,MAAM,yBAAyB,MAAM,kBACjC,MAAM,gBAAgB;EACpB;EACA,SAAS,MAAM;EACf,MAAM,GAAG,cAAc;EACvB,WAAW,QAAQ;EACnB,UAAU,QAAQ,OAAO;EAC1B,CAAC,GACF;CAEJ,MAAM,cAAc,MACjB,KAAK,EAAE,YAAY,WAClB,SAAS,eAAe,OACpB,SAAS,eACP,SAAS,QAAQ,aAAa,GAAG,KAAK,WAAW,KACjD,SAAS,KAAK,eAChB,WACL,CACA,KAAK,IAAI;CAEZ,MAAM,aAAa,MAChB,KAAK,EAAE,MAAM,WAAY,SAAS,eAAe,OAAO,SAAS,KAAM,CACvE,KAAK,IAAI;CAEZ,MAAM,YAAY,kBAChB,eACA,UACA,YACA,QACD;CAED,MAAM,WAAW,SAAS,SACtB,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU;CAEd,MAAM,6BAA6B,0BAA0B;EAC3D;EACA;EACA;EACA,QAAQ,QAAQ,iCAAiC;EACjD,YAAY,QAAQ;EACpB,yCACE,QAAQ;EACV,cAAc;EACd;EACD,CAAC;CAEF,MAAM,qBAAqB,MAAM,uBAAuB,EAAE,EACvD,QAAQ,SAAS,KAAK,YAAY,SAAS,cAAc,CAAC,CAC1D,SAAS,SAAS,KAAK,YAAY,CACnC,KAAK,MAAM,gBAAgB,EAAE,CAAC;CACjC,MAAM,8BAAc,IAAI,KAAa;CACrC,MAAM,oBAAoB,kBAAkB,QAAQ,WAAW;EAC7D,MAAM,MAAM,gBAAgB,OAAO;AACnC,MAAI,YAAY,IAAI,IAAI,CAAE,QAAO;AACjC,cAAY,IAAI,IAAI;AACpB,SAAO;GACP;CAEF,MAAM,kBACJ,kBAAkB,SAAS,KAAK,QAAQ,8BAA8B;CAExE,MAAM,oBAAoB,QAAQ,uBAAuB;EACvD;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,8BAA8B,QAAQ,uBAAuB;EACjE;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACD,CAAC;CAEF,MAAM,wBAAwB,MAC5B,0BAA0B,SAAS,SAC/B,OAAO,cAAc,oBACrB,OAAO,cAAc,kBAC1B;CAED,MAAM,4BAA4B,6BAChC,kBACA,YACA,MAAM,cAAc,EACpB,QACD;CASD,MAAM,oBAAoB,gBAAgB,sBAAsB,eAAe,UAAU;0BALlE,QAAQ,kBAAkB,QAAQ,GAGhC,kBAAkB,+BAA+B,KAGd,4BAA4B,KAAK,2BAA2B;;EAExH,0BAA0B;;QAGpB,SAAS,SACL,SAAS,cAAc,SAAS,OAAO,cAAc,CAAC,UACtD,GACL;;;8DAGuD,SAAS,MAC/D,cAAc,IAAI,YAAY,KAAK,OACpC,OAAO,aAAa,UAAU,GAAG;YAC5B,aAAa,UAAU,WAAW,oBAAoB,GAAG;;oBAEjD,cAAc,GAAG,QAAQ,sBAAsB,QAAQ,GAAG,aAClE,aAAa,MAAM,KAClB,uBAAuB,kBAAkB,YAAY,QAAQ,CAAC;;;EAIzE,kBACI,QAAQ,0BAA0B;EAChC;EACA;EACA;EACA;EACA;EACD,CAAC,GACF,GACL;;UAGS,yBACI,yBACE,uBAAuB,KACxB,mCACC,uBAAuB,eACnB,cAAc,MAAM,WAAW,OAAO,KAAK,CAAC,QAC5C,KAEJ,uBAAuB,cACnB,qBAAqB,YAAY,qBAAqB,cAAc,OACpE,GACL,MACD,GACL;;;YAIL,yBACI,kBACA,kBACE,kDACA,qCACP;CAED,MAAM,kBAAkB,QAAQ;CAEhC,MAAM,8BACJ,QAAQ,+BAA+B,gBAAgB;CAEzD,MAAM,yBAAyB,QAAQ,+BAA+B;EACpE;EACA;EACA;EACD,CAAC;CAEF,MAAM,yBAAyB,MAAM,GAAG,cAAc,mBAAmB;CAEzE,MAAM,qBAAqB,QAAQ,sBAAsB;EACvD;EACA,cAAc,cAAc,IAAI,YAAY,KAAK;EAClD,CAAC;CAEF,MAAM,mBAAmB,QAAQ,yBAAyB;EACxD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;AAyCF,QAAO;EACL,gBAxCqB;EACvB,kBAAkB;;kBAEF,OACZ,cACD,CAAC,kDAAkD,SAAS;MAE3D,KAAK,aACD,eAAe,OAAO,cAAc,CAAC,iBACnC,SAAS,eACL,GAAG,QAAQ,aAAa,GAAG,KAAK,WAAW,KAC3C,KAAK,eAEX,GACL;kBACa,OAAO,cAAc,CAAC,kBAAkB,UAAU;;MAE9D,IAAI,eAAe,MACnB,GAAG,gBAAgB,GAAG,gBACvB,CAAC,eAAe,UAAU;0BACL,kBAAkB,GAAG,4BAA4B,GAAG,mBAAmB;EAC/F,iBAAiB;;;EAoBf,UAhBe,yBACb,CAAC,uBAAuB,GACxB;EAeF,SAbiC,kBAC/B,kBACG,QAAQ,MAAM,CAAC,CAAC,EAAE,KAAK,CACvB,KAAsB,OAAO;GAC5B,MAAM,MAAM,OAAO,EAAE,MAAM,YAAY;GACvC,YAAY,EAAE;GACd,QAAQ;GACT,EAAE,GACL,EAAE;EAML;;;;;AC7SH,MAAM,uBAAuB,EAC3B,eACA,WACA,iBAAiB,YAKb;AACJ,KAAI,CAAC,iBAAiB,CAAC,UACrB,QAAO;CAIT,MAAM,oBAAoB,iBAAiB,wBAAwB;AAEnE,KAAI,eAAe;AACjB,MAAI,UACF,QAAO,KAAK,kBAAkB;AAGhC,SAAO;;AAGT,QAAO,KAAK,kBAAkB;;AAGhC,MAAM,oBAAoB,EACxB,aACA,MACA,UACA,aACA,eACA,SACA,KACA,YACA,UACA,WACA,gBACA,qBACA,oBACA,iBACA,uBAiBI;AAQJ,KAAI,EANF,gBACC,SAAS,UAAU,SAClB,SAAS,UAAU,YAClB,SAAS,UAAU,kBAAkB,CAAC,YACtC,SAAS,UAAU,qBAAqB,CAAC,cAG5C,QAAO;CAGT,MAAM,eACJ,SAAS,UAAU,SAAS,SAAS,UAAU,iBAC3C,UACA;CACN,MAAM,iBAAiB,MAAM,YAAY,eAAe;AAExD,KAAI,SAAS,OAIX,QAAO,GAAG,IAAI,eAHU,MACtB,gBAAgB,cAAc,GAAG,eAClC,CAC4C,iCAAiC,SAAS,eAAe,UAAU,IAAI,WAAW,GAAG,eAAe;;UAE3I,oBAAoB,KAAK,mBAAmB,GAAG,kBACrD,kBAAkB,MAAM,KACvB,mBAAmB,YAAY,eAAe;;wBAE3B,eAAe,GAAG,oBAAoB;;oBAE1C,oBAAoB;;KAIpC,QAAO,GAAG,IAAI,eADU,MAAM,YAAY,cAAc,GAAG,eAAe,CAC7B,uCAAuC,SAAS,eAAe,UAAU,iCAAiC,WAAW,GAAG,eAAe;;UAE9K,oBAAoB,KAAK,mBAAmB,GAAG,kBACrD,kBAAkB,MAAM,KACvB,mBAAmB,YAAY,eAAe;;sBAE7B,eAAe,GAAG,oBAAoB;;;;;AAO5D,MAAM,+BAA+B,EACnC,aAAa,EAAE,MAAM,YAAY,SAAS,MAAM,kBAChD,eACA,iBACA,oBACA,aACA,QACA,OACA,SACA,qBACA,iBACA,kBACA,UACA,YACA,8BACA,WACA,OACA,KACA,aACA,UACA,aACA,eACA,cA8BI;CACJ,MAAM,EACJ,YACA,4BACA,4CACE;CAGJ,MAAM,iBAAiB,MAAM,MAC1B,SAAqB,KAAK,SAAS,SACrC;CAED,MAAM,uBAAuB,eAAe,OAAO,aAAa;CAChE,MAAM,0CAA0C,eAC9C,MAAM,KAAK,SAAS;EAClB,MAAM,QAAQ,IAAI,OAAO,OAAO,GAAG,IAAI,KAAK,KAAK,QAAQ;AAEzD,MAAI,CAAC,MAAM,KAAK,KAAK,WAAW,CAC9B,QAAO;EAGT,MAAM,0BAA0B,KAAK,WAAW,QAC9C,OACA,GAAG,KAAK,KAAK,gBACd;AACD,SAAO;GACL,GAAG;GACH,YAAY;GACb;GACD,EACF,aACD;CACD,MAAM,aAAa,eAAe,OAAO,iBAAiB;CAE1D,MAAM,wBAAwB,cAAc,aAAa,OAAO;CAEhE,MAAM,oBAAoB,aACtB,QAAQ,0BAA0B,OAAO,YAAY,CAAC,CAAC,QAAQ,GAC/D,QAAQ,0BAA0B,iBAAiB,YAAY,CAAC,CAAC,QAAQ;CAE7E,MAAM,+BAA+B,QAAQ,mBAAmB;EAC9D;EACA,eAAe,SAAS;EACxB;EACA;EACA;EACA,sBAAsB;EACvB,CAAC;CACF,MAAM,aAAa,QAAQ,mBAAmB;EAC5C;EACA,eAAe,SAAS;EACxB;EACA;EACA;EACD,CAAC;CAEF,MAAM,YAAY,kBAChB,eACA,UACA,YACA,QACD;CAED,MAAM,WAAW,SAAS,SACtB,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU;CAEd,MAAM,mCAAmC,QAAQ,uBAAuB;EACtE;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA,aAAa;EACb;EACD,CAAC;CACF,MAAM,qCAAqC,QAAQ,uBAAuB;EACxE;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACD,CAAC;CACF,MAAM,iBAAiB,QAAQ,uBAAuB;EACpD;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,2BAA2B,QAAQ,uBAAuB;EAC9D;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EAClB,CAAC;CAEF,MAAM,eAAe,gBAAgB;EACnC;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,cAAc,eAAe;EACjC;EACA;EACA;EACD,CAAC;CAEF,MAAM,mBAAmB,oBAAoB;EAC3C,eACE,CAAC,CAAC,cAAc,MAAM,MAAM,EAAE,WAAW,SAAS,aAAa;EACjE;EACA;EACD,CAAC;CAEF,MAAM,0BAA0B,0BAA0B;EACxD;EACA;EACA,aAAa;EACb;EACA,QAAQ,QAAQ,iCAAiC;EACjD;EACA;EACA;EACA;EACA,cAAc;EACd;EACD,CAAC;CAEF,MAAM,kBAAkB,qBAAqB;EAC3C;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,qBAAqB,MACzB,mBAAmB,uBAAuB,SAAS,SAC/C,OAAO,KAAK,iBACZ,OAAO,KAAK,eACjB;CAED,MAAM,sBAAsB,mBAAmB,iBAAiB;CAKhE,MAAM,qBAHuB,MAAM,MAChC,SAAqB,KAAK,SAAS,QACrC,GACiD,WAAW;CAE7D,MAAM,gBACJ,eAAe,aACX,KAAK,YAAY,OAAO,KAAK,IAAI,WAAW,MAC5C;CACN,MAAM,QACJ,eACC,SAAS,UAAU,YAAY,SAAS,UAAU,qBAC/C,mCAAmC,SAAS,IAAI,cAAc,KAC9D,sBAAsB,SAAS;CAMrC,MAAM,iBAAiB,gBAAgB,mBAAmB,cAAc,MAAM,aAAa,UAAU,IAF9E,QAAQ,kBAAkB,QAAQ,GAEiE,WAAW,GAAG,yBAAyB;;EAEjK,YAAY;;sBAGV,kBACI,GAAG,gBAAgB,KAAK,KAAK,gBAAgB,IAC3C,gBAAgB,eACZ,cAAc,MAAM,sBACpB,GACL,MACD,GAAG,QAAQ,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,IAC3E;;IAGC,SAAS,SACL,SAAS,cAAc,SAAS,OAAO,cAAc,CAAC,WACtD,GACL;;sDAGG,SAAS,SACL,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU,gBACf,IACC,cAAc,wBACV,eAAe,YAAY,OAAO,KAAK,IAAI,WAAW,MACtD,GACL,OAAO,iBAAiB,OAAO,cAAc,GAAG,oBAC/C,oBAAoB,OAAO,KAC1B,aAAa;;QAEZ,QAAQ,mBAAmB,MAAM,CAAC;;QAGlC,sBACI,yBACE,oBAAoB,KACrB,uCACC,oBAAoB,eAAe,OAAO,gBAAgB,MAAM,KAEhE,oBAAoB,cAAc,cAAc,MAAM,QAAQ,GAC/D,MACD,GACL;;aAGF,sBACI,kBACA,wBAAwB,gBAAgB,KAE5C,QAAQ,0BAA0B,KAAK,QACnC,KACA,OAAO,wBAAwB,GAC7B,QAAQ,wBAAwB,GAC5B,iBAAiB,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW,MACrH,KAEX;;CAEF,MAAM,kBAAkB,QAAQ;CAChC,MAAM,8BAA8B,QAAQ,gCAAgC;CAE5E,MAAM,gBAAgB,MAAM,GAAG,gBAAgB,GAAG,OAAO;CAEzD,MAAM,gBAAgB;kBACN,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,wCAAwC,GAAG,iCAAiC,GAAG,4BAA4B,SAAS,6BAA6B;kBAC9M,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,qBAAqB,GAAG,mCAAmC,GAAG,4BAA4B,SAAS,WAAW;kBAC3K,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,qBAAqB,GAAG,eAAe,GAAG,4BAA4B,SAAS;CAE5J,MAAM,WAAW,iBAAiB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,2BACJ,kBACC,SAAS,UAAU,SAClB,SAAS,UAAU,YAClB,SAAS,UAAU,kBAAkB,CAAC,YACtC,SAAS,UAAU,qBAAqB,CAAC;CAC9C,MAAM,mBAAmB,MAAM,cAAc,OAAO;CAGpD,MAAM,YAAY,QAAQ,kBAAkB;EAC1C;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,sBAAsB,QAAQ,4BAA4B;EAC9D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,wBAAwB,QAAQ,0BAA0B;AAEhE,QAAO;EACP,eAAe;;cAEH,OACV,KACD,CAAC,+CAA+C,SAAS;cAC9C,OAAO,KAAK,CAAC,eAAe,UAAU;;EAElD,QAAQ,6BAA6B,GAAG,gBAAgB,GAAG;EAC3D,IAAI;kBACY,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,QAAQ,wBACnF,MACD,CAAC,GAAG,eAAe,GAAG,4BAA4B,SAAS,WAAW;;IAErE,UAAU;;UAEJ,mBAAmB,KAAK,MAC9B,GAAG,gBAAgB,GAAG,QAAQ,aAAa,KAAK,GACjD,CAAC,GAAG,sBAAsB,sBAAsB,GAAG,QAAQ,yBAAyB,KAAK,QAAQ,KAAK,OAAO,aAAa;;IAEzH,QAAQ,wBAAwB;EAChC;EACA;EACA;EACA;EACD,CAAC,CAAC;;EAEH,SAAS;EAET,2BACI,GAAG,IAAI,eAAe,iBAAiB,yCAAyC,WAAW;;oDAE7C,eAAe,GAAG,mBAAmB;;;OAInF,GACL;;;AAID,MAAa,oBAAoB,OAC/B,aACA,SACA,cACA,YACG;AACH,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,qDAAqD;CAGvE,MAAM,EACJ,aACA,eACA,MACA,OAAO,QACP,MACA,QACA,UACA,SACA,UACA,aACA,SACA,eACE;CACJ,MAAM,EACJ,OACA,UAAU,EAAE,cACZ,SACA,WACE;CAGJ,MAAM,QAAQ,QAAQ,eAAe,OAAO;CAE5C,MAAM,QAAQ,SAAS;CACvB,MAAM,mBAAmB,SAAS,mBAAmB;CACrD,MAAM,wBAAwB,WAAW,cAAc;CACvD,MAAM,+BACJ,CAAC,CAAC,QAAQ,OAAO,UAAU,iBAAiB;CAE9C,MAAM,aAAa,QAAQ,OAAO;CAClC,MAAM,MAAM,MAAM;EAAE;EAAS;EAAY,CAAC;CAE1C,IAAI,iBAAiB;CACrB,IAAI;CAIJ,MAAM,0BAA0B;EAC9B,uBAAuB;EACvB,uBAAuB;EACvB,uBAAuB;EACvB,uBAAuB;EACxB,CAAC,KAAK,QAAQ;CAEf,IAAI,UACD,MAAM,QAAQ,QACb;EACE,SAAS,MAAM;EACf,SAAS,MAAM;EACf,SAAS,MAAM;EACf,SAAS,MAAM;EAChB,CAAC,KAAK,QAAQ,IACjB;CAEF,IAAI,aAAa,SAAS,MAAM,eAAe,SAAS,MAAM;AAE9D,KAAI,uBAAuB,gBAAgB,OACzC,cAAa,sBAAsB;AAIrC,KAAI,SAAS,MAAM,OAAO,QACxB,cAAa;AAIf,KAAI,SAAS,MAAM,OAAO,WACxB,WAAU;AAGZ,KAAI,SAAS;EACX,MAAM,kBAAkB,MAAM,WAC1B,MAAM,gBAAgB;GACpB;GACA,SAAS,MAAM;GACf,MAAM,GAAG,cAAc;GACvB,WAAW,QAAQ;GACnB,UAAU,QAAQ,OAAO;GAC1B,CAAC,GACF;EAEJ,MAAM,sBAAsB,MAAM,eAC9B,MAAM,gBAAgB;GACpB;GACA,SAAS,MAAM;GACf,MAAM,GAAG,cAAc;GACvB,WAAW,QAAQ;GACnB,UAAU,QAAQ,OAAO;GAC1B,CAAC,GACF;EAGJ,MAAM,kBAAkB,MACrB,KAAK,UAAU;AACd,UAAO,QAAQ,wBAAwB,OAAO,KAAK;IACnD,CACD,KAAK,IAAI;EAEZ,MAAM,qBAAqB,MACxB,QAAQ,SAAS,KAAK,SAAS,eAAe,OAAO,CACrD,KAAK,UAAU;AACd,UAAO,QAAQ,wBAAwB,OAAO,KAAK;IACnD,CACD,KAAK,IAAI;EAEZ,MAAM,UAAU;GACd,GAAI,MAAM,eAAe,uBAAuB,cAC5C,CACE;IACE,MAAM,MAAM,GAAG,cAAc,WAAW;IACxC,SAAS,MAAM;IACf,MAAM,UAAU;IAChB,YAAY,MAAM;IAClB,gBAAgB,MAAM,OAAO,cAAc,qBAAqB;IACjE,CACF,GACD,EAAE;GACN,GAAI,MAAM,YAAY,uBAAuB,WACzC,CACE;IACE,MAAM;IACN,SAAS,MAAM;IACf,MAAM,UAAU;IAChB,gBAAgB,MAAM,OAAO,cAAc,YAAY;IACxD,CACF,GACD,EAAE;GACN,GAAI,MAAM,oBAAoB,uBAAuB,mBACjD,CACE;IACE,MAAM,MAAM,GAAG,cAAc,WAAW;IACxC,SAAS,MAAM;IACf,MAAM,UAAU;IAChB,gBAAgB,MAAM,OAAO,cAAc,YAAY;IACxD,CACF,GACD,EAAE;GACN,GAAI,MAAM,4BACV,uBAAuB,2BACnB,CACE;IACE,MAAM,MAAM,GAAG,cAAc,oBAAoB;IACjD,SAAS,MAAM;IACf,MAAM,UAAU;IAChB,YAAY,MAAM;IAClB,gBAAgB,MAAM,OAAO,cAAc,qBAAqB;IACjE,CACF,GACD,EAAE;GACP;EAED,MAAM,2BAA2B,QAAQ,QACtC,KAAK,OAAO,SACX,UACA,KAAK,WAAW,MAAM,EAAE,mBAAmB,IAAI,eAAe,CACjE;EAED,IAAI,cAAc;AAElB,MAAI,CAAC,gBACH,MAAK,MAAM,eAAe,0BAA0B;GAClD,MAAM,qBAAqB,SAAiB;AAC1C,QAAI,KAAK,SAAS,IAAI,CAAE,QAAO;AAC/B,WAAO,KAAK,QAAQ,cAAc,QAAQ;;GAG5C,MAAM,gBAAgB,eACpB,MACG,QAAQ,SAAS,KAAK,SAAS,eAAe,OAAO,CACrD,KAAK,UAAU;IACd,GAAG;IACH,gBACE,KAAK,SAAS,eAAe,SAC7B,KAAK,SAAS,eAAe,oBACzB,KAAK,iBACL,kBAAkB,KAAK,eAAe;IAC7C,EAAE,EACL,iBACD;GAED,MAAM,cAAc,QAAQ,uBAC1B,OACA,CAAC,CAAC,SAAS,MAAM,oBAClB;GAGD,MAAM,qBAAqB,SAAS,MAAM,2BACtC,IAAI,cAAc,KAClB;GAIJ,MAAM,iBAAiB,MACpB,QAAQ,MACP,SAAS,MAAM,2BACX,OACA,EAAE,SAAS,eAAe,YAC/B,CACA,UAAU,MAAO,EAAE,WAAW,KAAK,EAAG,CACtC,KAAK,MAAM,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,CAC/C,KAAK,KAAK;AAGb,kBAAe;EACrB,SAAS,MAAM,uBAAuB,YAAY,GAAG,QAAQ,YAAY,eAAe,MAAM,cAAc;;MAExG;IACA,YAAY,SAAS,UAAU,YAC/B,YAAY,SAAS,UAAU,oBAC3B,eACA;IACJ;IACA;IACA,KAAK;IACN,CACE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAClB,KAAK,KAAK,CAAC;;;;;AAOd,oBAAkB;EACpB;EAEE,IAAI,uBAAuB;AAE3B,OAAK,MAAM,eAAe,QACxB,yBAAwB,4BAA4B;GAClD;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,WAAW,aAAa,EACtB,qBAAqB,SAAS,MAAM,QACrC,CAAC;GACF;GACA;GACA;GACA;GACA,aAAa,MAAM;GACnB,UAAU,MAAM;GAChB,aAAa,MAAM;GACnB,eAAe,MAAM;GACrB;GACD,CAAC;AAGJ,oBAAkB;MAChB,qBAAqB;;AAGvB,aACE,uBAAuB,kBACnB,CACE,GAAI,sBAAsB,CAAC,oBAAoB,GAAG,EAAE,EACpD,GAAI,kBAAkB,CAAC,gBAAgB,GAAG,EAAE,CAC7C,GACD;;CAGR,IAAI,UAA6B,EAAE;AAEnC,KAAI,YAAY;EACd,MAAM,iBAAiB,MAAM,qBAAqB;GAChD,aAAa;IAAE,GAAG;IAAa;IAAO;GACtC;GACA;GACA;GACA;GACA;GACD,CAAC;AAEF,oBAAkB,eAAe;AACjC,aAAW,eAAe,WACtB,CAAC,GAAI,YAAY,EAAE,EAAG,GAAG,eAAe,SAAS,GACjD;AACJ,YAAU,eAAe;;AAG3B,QAAO;EACL;EACA;EACA;EACD;;;;;ACvyBH,MAAa,uBAA4C,WAAW;AAClE,QAAO,GACL,OAAO,iBACH,KACA;0EAEL;EAED,OAAO,oBAAoB,OAAO,YAC9B,wFACA,GACL;EACC,eAAe,OAAO,CAAC;;;AAIzB,MAAa,gBAA+B,OAC1C,aACA,SACA,iBACG;CACH,MAAM,cACJ,OAAO,QAAQ,QAAQ,OAAO,YAAY,YAC1C,QAAQ,QAAQ,OAAO,QAAQ,SAAS;CAC1C,MAAM,eAAe,YAAY,SAAS,WAAW;CACrD,MAAM,sBAAsB;EAC1B;EACA;EACA;EACA;EACA;EACD,CAAC,SAAS,aAAa;CAIxB,MAAM,wBAFJ,YAAY,SAAS,MAAM,qBAAqB,eAIhD,CAAC,uBACD,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI,SAAS,aAAa,GACjE;EACE,GAAG;EACH,UAAU;GACR,GAAG,YAAY;GACf,SAAS,YAAY,SAAS,QAAQ,KAAK,QACzC,IAAI,SAAS,eAAe;IAAE,GAAG;IAAK,QAAQ;IAAM,GAAG,IACxD;GACF;EACF,GACD;CAEN,MAAM,UAAU,uBAAuB;EACrC;EACA,aAAa,QAAQ,QAAQ,OAAO;EACpC,cAAc,sBAAsB,SAAS,MAAM;EACpD,CAAC;CAEF,MAAM,UAAU,oBAAoB,sBAAsB;CAC1D,MAAM,yBAAyB,QAAQ,wBACrC,uBACA,QACD;CACD,MAAM,EACJ,gBAAgB,oBAChB,SAAS,aACT,aACE,MAAM,kBACR,uBACA,SACA,cACA,QACD;AAED,QAAO;EACL,gBAAgB,GAAG,uBAAuB,MAAM;EAChD,SAAS,CAAC,GAAG,SAAS,GAAG,YAAY;EACrC;EACD;;AAGH,MAAM,sBAOF;CACF,eAAe;CACf,aAAa;CACb,gBAAgB;CAChB,iBAAiB;CACjB,eAAe;CAChB;AAED,MAAa,WACV,EACC,OAAO,eACP,SAAS,cACT,WAUE,EAAE,WACA;CACJ,MAAM,UAAyB,aAAa,SAAS,iBAAiB;AACpE,MACE,QAAQ,SAAS,uBAChB,SAAS,eAAe,iBAAiB,aAE1C,OAAM,IAAI,MACR,0NACD;AAGH,MAAI,cAAc;GAChB,MAAM,yBAAyB,sBAC7B,cACA,QAAQ,QAAQ,UACjB;AACD,eAAY,SAAS,QAAQ,UAC3B,wBACA,YAAY,SAAS,MACtB;AACD,WAAQ,SAAS,QAAQ,UACvB,wBACA,YAAY,SAAS,MACtB;;AAEH,SAAO,cAAc,aAAa,SAAS,cAAc,OAAO;;AAGlE,QAAO;EACG;EACR,QAAQ;EACR,cAAc,oBAAoB;EACnC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/query",
|
|
3
|
-
"version": "8.5.
|
|
3
|
+
"version": "8.5.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.mts",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"nuke": "rimraf .turbo dist node_modules"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@orval/core": "8.5.
|
|
26
|
-
"@orval/fetch": "8.5.
|
|
25
|
+
"@orval/core": "8.5.2",
|
|
26
|
+
"@orval/fetch": "8.5.2",
|
|
27
27
|
"remeda": "^2.33.6"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|