@orval/query 8.8.0 → 8.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -3,7 +3,6 @@ import { generateFetchHeader, generateRequestFunction } from "@orval/fetch";
3
3
  import nodePath from "node:path";
4
4
  import { styleText } from "node:util";
5
5
  import { omitBy } from "remeda";
6
-
7
6
  //#region src/utils.ts
8
7
  const normalizeQueryOptions = (queryOptions = {}, outputWorkspace) => {
9
8
  return {
@@ -72,7 +71,6 @@ const getQueryTypeForFramework = (type) => {
72
71
  }
73
72
  };
74
73
  const getHasSignal = ({ overrideQuerySignal = false }) => overrideQuerySignal;
75
-
76
74
  //#endregion
77
75
  //#region src/client.ts
78
76
  const AXIOS_DEPENDENCIES = [{
@@ -416,7 +414,6 @@ const getQueryHeader = (params) => {
416
414
  if (params.output.httpClient === OutputHttpClient.ANGULAR) return (params.tag ? Object.values(params.verbOptions).filter((verbOption) => kebab(verbOption.tags[0] ?? "default") === params.tag) : Object.values(params.verbOptions)).some((v) => v.queryParams) ? getAngularFilteredParamsHelperBody() : "";
417
415
  return "";
418
416
  };
419
-
420
417
  //#endregion
421
418
  //#region src/dependencies.ts
422
419
  const REACT_DEPENDENCIES = [{
@@ -887,7 +884,6 @@ const getPackageByQueryClient = (packageJson, queryClient) => {
887
884
  }
888
885
  }
889
886
  };
890
-
891
887
  //#endregion
892
888
  //#region src/query-options.ts
893
889
  const QueryType = {
@@ -928,7 +924,6 @@ const getQueryOptionsDefinition = ({ operationName, mutator, definitions, type,
928
924
  const mutationOptionsTypeName = isReturnType && adapter?.getOptionsReturnTypeName ? adapter.getOptionsReturnTypeName("mutation") : void 0;
929
925
  return mutationOptionsTypeName ? `${mutationOptionsTypeName}<Awaited<ReturnType<${isMutatorHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`}>>, TError,${definitions ? `{${definitions}}` : "void"}, TContext>` : `${prefix}MutationOptions<Awaited<ReturnType<${isMutatorHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`}>>, TError,${definitions ? `{${definitions}}` : "void"}, TContext>`;
930
926
  };
931
-
932
927
  //#endregion
933
928
  //#region src/frameworks/angular.ts
934
929
  const createAngularAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => {
@@ -1049,10 +1044,26 @@ const createAngularAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQuery
1049
1044
  },
1050
1045
  generateRequestFunction(verbOptions, options) {
1051
1046
  return generateAngularHttpRequestFunction(verbOptions, options);
1047
+ },
1048
+ generatePrefetch({ usePrefetch, type, useQuery, useInfinite, operationName, mutator, doc, queryProps, dataType, errorType, queryArguments, queryOptionsVarName, queryOptionsFnName, queryProperties, isRequestOptions }) {
1049
+ if (!(usePrefetch && (type === QueryType.QUERY || type === QueryType.INFINITE || type === QueryType.SUSPENSE_QUERY && !useQuery || type === QueryType.SUSPENSE_INFINITE && !useInfinite))) return "";
1050
+ const prefetchType = type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY ? "query" : "infinite-query";
1051
+ const prefetchFnName = camel(`prefetch-${prefetchType}`);
1052
+ return `${doc}export const ${camel(`prefetch-${operationName}-${prefetchType}`)} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\n queryClient: QueryClient, ${!mutator || mutator.hasSecondArg ? "http: HttpClient, " : ""}${queryProps} ${queryArguments}\n ): Promise<QueryClient> => {
1053
+
1054
+ const ${queryOptionsVarName} = ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? "http, " : ""}${queryProperties}${queryProperties ? "," : ""}${isRequestOptions ? "options" : "queryOptions"})
1055
+
1056
+ if (${queryOptionsVarName}.enabled === false) {
1057
+ return queryClient;
1058
+ }
1059
+
1060
+ await queryClient.${prefetchFnName}(${queryOptionsVarName});
1061
+
1062
+ return queryClient;
1063
+ }\n`;
1052
1064
  }
1053
1065
  };
1054
1066
  };
1055
-
1056
1067
  //#endregion
1057
1068
  //#region src/frameworks/react.ts
1058
1069
  const createReactAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => ({
@@ -1093,7 +1104,6 @@ const createReactAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5
1093
1104
  return options.context.output.httpClient === OutputHttpClient.AXIOS ? generateAxiosRequestFunction(verbOptions, options, false) : generateRequestFunction(verbOptions, options);
1094
1105
  }
1095
1106
  });
1096
-
1097
1107
  //#endregion
1098
1108
  //#region src/frameworks/solid.ts
1099
1109
  const createSolidAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess, hasSolidQueryUsePrefix }) => ({
@@ -1164,7 +1174,6 @@ const createSolidAdapter = ({ hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5
1164
1174
  return options.context.output.httpClient === OutputHttpClient.AXIOS ? generateAxiosRequestFunction(verbOptions, options, false) : generateRequestFunction(verbOptions, options);
1165
1175
  }
1166
1176
  });
1167
-
1168
1177
  //#endregion
1169
1178
  //#region src/frameworks/svelte.ts
1170
1179
  const createSvelteAdapter = ({ hasSvelteQueryV4, hasSvelteQueryV6, hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => {
@@ -1265,7 +1274,6 @@ const createSvelteAdapter = ({ hasSvelteQueryV4, hasSvelteQueryV6, hasQueryV5, h
1265
1274
  }
1266
1275
  };
1267
1276
  };
1268
-
1269
1277
  //#endregion
1270
1278
  //#region src/frameworks/vue.ts
1271
1279
  const createVueAdapter = ({ hasVueQueryV4, hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, hasQueryV5WithMutationContextOnSuccess, hasQueryV5WithRequiredContextOnSuccess }) => ({
@@ -1344,7 +1352,6 @@ const createVueAdapter = ({ hasVueQueryV4, hasQueryV5, hasQueryV5WithDataTagErro
1344
1352
  return prop.type === GetterPropType.BODY ? body.implementation : prop.name;
1345
1353
  }
1346
1354
  });
1347
-
1348
1355
  //#endregion
1349
1356
  //#region src/frameworks/index.ts
1350
1357
  /** Fill in defaults for fields that most adapters leave empty or share a common implementation. */
@@ -1493,7 +1500,6 @@ const createFrameworkAdapter = ({ outputClient, packageJson, queryVersion }) =>
1493
1500
  }));
1494
1501
  }
1495
1502
  };
1496
-
1497
1503
  //#endregion
1498
1504
  //#region src/mutation-generator.ts
1499
1505
  const normalizeInvalidateMode = (invalidateMode) => invalidateMode === "reset" ? "reset" : "invalidate";
@@ -1576,14 +1582,15 @@ const needsQueryKeyFnCall = (target, spec) => {
1576
1582
  if (findOperationInfo(spec, target.query)?.hasRequiredPathParams) return false;
1577
1583
  return true;
1578
1584
  };
1579
- const generateVariableRef = (varName) => {
1580
- const parts = varName.split(".");
1581
- if (parts.length === 1) return `variables.${varName}`;
1585
+ const generateParamArg = (param) => {
1586
+ if (!isString(param)) return JSON.stringify(param.literal);
1587
+ const parts = param.split(".");
1588
+ if (parts.length === 1) return `variables.${param}`;
1582
1589
  return `variables.${parts[0]}?.${parts.slice(1).join("?.")}`;
1583
1590
  };
1584
1591
  const generateParamArgs = (params) => {
1585
- if (Array.isArray(params)) return params.map((v) => generateVariableRef(v)).join(", ");
1586
- return Object.values(params).map((v) => generateVariableRef(v)).join(", ");
1592
+ if (Array.isArray(params)) return params.map((v) => generateParamArg(v)).join(", ");
1593
+ return Object.values(params).map((v) => generateParamArg(v)).join(", ");
1587
1594
  };
1588
1595
  /**
1589
1596
  * Create a generateInvalidateCall function that has access to the OpenAPI spec
@@ -1730,7 +1737,6 @@ ${mutationHookBody}
1730
1737
  })) : []
1731
1738
  };
1732
1739
  };
1733
-
1734
1740
  //#endregion
1735
1741
  //#region src/query-generator.ts
1736
1742
  const getQueryFnArguments = ({ hasQueryParam, hasSignal, hasSignalParam = false }) => {
@@ -1910,7 +1916,7 @@ ${hookOptions}
1910
1916
  export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\n ): ${definedInitialDataReturnType}
1911
1917
  export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\n ): ${returnType}
1912
1918
  export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\n ): ${returnType}`;
1913
- const prefetch = generatePrefetch({
1919
+ const prefetchContext = {
1914
1920
  usePrefetch,
1915
1921
  type,
1916
1922
  useQuery,
@@ -1926,7 +1932,8 @@ export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${q
1926
1932
  queryProperties,
1927
1933
  isRequestOptions,
1928
1934
  doc
1929
- });
1935
+ };
1936
+ const prefetch = adapter.generatePrefetch ? adapter.generatePrefetch(prefetchContext) : generatePrefetch(prefetchContext);
1930
1937
  const isPrimaryQueryType = type === QueryType.QUERY || type === QueryType.INFINITE || type === QueryType.SUSPENSE_QUERY && !useQuery || type === QueryType.SUSPENSE_INFINITE && !useInfinite;
1931
1938
  const shouldGenerateInvalidate = useInvalidate && isPrimaryQueryType;
1932
1939
  const invalidateFnName = camel(`invalidate-${name}`);
@@ -2167,7 +2174,6 @@ ${queryKeyFns}`;
2167
2174
  imports
2168
2175
  };
2169
2176
  };
2170
-
2171
2177
  //#endregion
2172
2178
  //#region src/index.ts
2173
2179
  const generateQueryHeader = (params) => {
@@ -2234,7 +2240,7 @@ const builder = ({ type = "react-query", options: queryOptions, output } = {}) =
2234
2240
  dependencies: dependenciesBuilder[type]
2235
2241
  };
2236
2242
  };
2237
-
2238
2243
  //#endregion
2239
2244
  export { builder, builder as default, generateQuery, generateQueryHeader, getAngularQueryDependencies, getReactQueryDependencies, getSolidQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
2245
+
2240
2246
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","OutputClientConst"],"sources":["../src/utils.ts","../src/client.ts","../src/dependencies.ts","../src/query-options.ts","../src/frameworks/angular.ts","../src/frameworks/react.ts","../src/frameworks/solid.ts","../src/frameworks/svelte.ts","../src/frameworks/vue.ts","../src/frameworks/index.ts","../src/mutation-generator.ts","../src/query-generator.ts","../src/index.ts"],"sourcesContent":["import nodePath from 'node:path';\nimport { styleText } from 'node:util';\n\nimport {\n type GetterProps,\n GetterPropType,\n isObject,\n isString,\n type Mutator,\n type NormalizedMutator,\n type NormalizedQueryOptions,\n OutputClient,\n type OutputClientFunc,\n type QueryOptions,\n TEMPLATE_TAG_REGEX,\n} from '@orval/core';\n\nexport const normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n): NormalizedQueryOptions => {\n return {\n ...(queryOptions.usePrefetch ? { usePrefetch: true } : {}),\n ...(queryOptions.useInvalidate ? { useInvalidate: true } : {}),\n ...(queryOptions.useSetQueryData ? { useSetQueryData: true } : {}),\n ...(queryOptions.useGetQueryData ? { useGetQueryData: true } : {}),\n ...(queryOptions.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions.queryKey),\n }\n : {}),\n ...(queryOptions.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n const m = mutator as Exclude<Mutator, string>;\n if (!m.path) {\n throw new Error(styleText('red', `Mutator need a path`));\n }\n\n return {\n path: nodePath.resolve(workspace, m.path),\n name: m.name,\n default: m.default ?? !m.name,\n alias: m.alias,\n external: m.external,\n extension: m.extension,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: nodePath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return undefined;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const isSolid = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SOLID_QUERY === client;\n\nexport const isAngular = (client: OutputClient | OutputClientFunc) =>\n OutputClient.ANGULAR_QUERY === client;\n\nexport const isReact = (client: OutputClient | OutputClientFunc) =>\n OutputClient.REACT_QUERY === client;\n\nexport const isSvelte = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SVELTE_QUERY === client;\n\nexport const getQueryTypeForFramework = (type: string): string => {\n // Angular Query and Svelte Query don't have suspense variants, map them to regular queries\n switch (type) {\n case 'suspenseQuery': {\n return 'query';\n }\n case 'suspenseInfiniteQuery': {\n return 'infiniteQuery';\n }\n default: {\n return type;\n }\n }\n};\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n}: {\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal;\n","import {\n type ClientHeaderBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getAngularFilteredParamsCallExpression,\n getAngularFilteredParamsHelperBody,\n getSuccessResponseType,\n type GetterResponse,\n isObject,\n isSyntheticDefaultImportsAllow,\n kebab,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const ANGULAR_HTTP_DEPENDENCIES = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders', values: true },\n { name: 'HttpParams', values: true },\n { name: 'HttpContext' },\n ],\n dependency: '@angular/common/http',\n },\n // Note: 'inject' from @angular/core is already in ANGULAR_QUERY_DEPENDENCIES\n {\n exports: [\n { name: 'lastValueFrom', values: true },\n { name: 'fromEvent', values: true },\n ],\n dependency: 'rxjs',\n },\n {\n exports: [\n { name: 'takeUntil', values: true },\n { name: 'map', values: true },\n ],\n dependency: 'rxjs/operators',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n isAngularClient = false,\n) => {\n if (\n isAngularClient ||\n options.context.output.httpClient === OutputHttpClient.ANGULAR\n ) {\n return generateAngularHttpRequestFunction(verbOptions, options);\n }\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAngularHttpRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some((prop) => prop.name === 'signal');\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n // Handle mutator case\n if (mutator) {\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue: false,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n const propsImplementation = toObjectString(props, 'implementation');\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n } ${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n // Generate native Angular HttpClient implementation\n const queryProps = toObjectString(props, 'implementation').replace(\n /,\\s*$/,\n '',\n );\n const dataType = response.definition.success || 'unknown';\n\n // Build URL with query params - use httpParams to avoid shadowing the 'params' variable\n const hasQueryParams = queryParams?.schema.name;\n // The queryParams variable from function props is always named 'params'\n const filteredParamsExpression = getAngularFilteredParamsCallExpression(\n 'params',\n queryParams?.requiredNullableKeys,\n );\n const urlConstruction = hasQueryParams\n ? `const httpParams = params ? new HttpParams({ fromObject: ${filteredParamsExpression} }) : undefined;\n const url = \\`${route}\\`;`\n : `const url = \\`${route}\\`;`;\n\n // Build request options\n const httpOptions: string[] = [];\n if (hasQueryParams) {\n httpOptions.push('params: httpParams');\n }\n if (headers) {\n httpOptions.push('headers: new HttpHeaders(headers)');\n }\n\n // Use only success response content types to determine responseType\n // (response.contentTypes includes error responses which may be JSON and would\n // incorrectly prevent text/blob responseType from being set)\n const successResponseType = getSuccessResponseType(response);\n const responseTypeOption = successResponseType\n ? `'${successResponseType}'`\n : undefined;\n if (responseTypeOption) {\n httpOptions.push(`responseType: ${responseTypeOption}`);\n }\n\n const optionsStr =\n httpOptions.length > 0 ? `, { ${httpOptions.join(', ')} }` : '';\n\n // Build the HTTP method call\n let httpCall: string;\n const httpGeneric = responseTypeOption ? '' : `<${dataType}>`;\n const bodyArg =\n isFormData && body.formData\n ? 'formData'\n : isFormUrlEncoded && body.formUrlEncoded\n ? 'formUrlEncoded'\n : body.definition\n ? toObjectString([body], 'implementation').replace(/,\\s*$/, '')\n : '';\n\n switch (verb) {\n case 'get':\n case 'head': {\n httpCall = `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n case 'delete': {\n httpCall = bodyArg\n ? `http.${verb}${httpGeneric}(url, { ${httpOptions.length > 0 ? httpOptions.join(', ') + ', ' : ''}body: ${bodyArg} })`\n : `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n default: {\n // post, put, patch\n httpCall = `http.${verb}${httpGeneric}(url, ${bodyArg || 'undefined'}${optionsStr})`;\n break;\n }\n }\n\n // Detect if Zod runtime validation should be applied\n const responseType = response.definition.success;\n const isPrimitiveType = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const hasSchema = response.imports.some((imp) => imp.name === responseType);\n const isZodOutput =\n isObject(context.output.schemas) && context.output.schemas.type === 'zod';\n const isValidateResponse =\n override.query.runtimeValidation &&\n isZodOutput &&\n !isPrimitiveType &&\n hasSchema;\n\n // If validation is enabled, pipe through map(data => Schema.parse(data))\n if (isValidateResponse) {\n const schemaValueRef =\n responseType === 'Error' ? 'ErrorSchema' : responseType;\n httpCall = `${httpCall}.pipe(map(data => ${schemaValueRef}.parse(data)))`;\n }\n\n // For Angular, we use takeUntil with fromEvent to handle AbortSignal cancellation\n // This follows the pattern from TanStack Query Angular documentation\n // Note: signal can be null (from RequestInit), so we accept null | undefined\n const optionsParam = hasSignal\n ? 'options?: { signal?: AbortSignal | null }'\n : '';\n\n // Build additional params after http, handling empty queryProps properly\n const additionalParams = [queryProps, optionsParam]\n .filter(Boolean)\n .join(', ');\n\n // Note: http parameter is passed from the inject* function which has injection context\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\n http: HttpClient${additionalParams ? `,\\n ${additionalParams}` : ''}\n ): Promise<${dataType}> => {\n ${bodyForm}\n ${urlConstruction}\n const request$ = ${httpCall};\n if (options?.signal) {\n return lastValueFrom(request$.pipe(takeUntil(fromEvent(options.signal, 'abort'))));\n }\n return lastValueFrom(request$);\n }\n`;\n};\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = _props.some((prop) => prop.name === 'signal');\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(String.raw`(\\w*):\\s?${bodyDefinition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n if (mutator.isHook) {\n const ret = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return useCallback((\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n hasSignalParam,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n hasSignalParam,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return getSignalDefinition({ hasSignal, hasSignalParam });\n};\n\nexport const getSignalDefinition = ({\n hasSignal,\n hasSignalParam = false,\n}: {\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}): string => {\n if (!hasSignal) {\n return '';\n }\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n return `${signalVar}?: AbortSignal\\n`;\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n return `axios?: AxiosRequestConfig`;\n }\n if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n return 'fetch?: RequestInit, fetcher?: typeof globalThis.fetch';\n }\n return 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n hasSignalParam = false,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n hasSignalParam?: boolean;\n useRuntimeFetcher?: boolean;\n}) => {\n // Use querySignal if API has a param named \"signal\" to avoid conflict\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n // Only use explicit `signal: querySignal` when there's a naming conflict\n const signalProp = hasSignalParam ? `signal: ${signalVar}` : 'signal';\n\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n if (!hasSignal) {\n return `${options}${fetcherArg}`;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes\n ? `...(${signalVar} ? { ${signalProp} } : {})`\n : signalProp\n }, ...${options} }${fetcherArg}`;\n }\n\n // For Angular mutators with hasSecondArg, pass http through options parameter\n // http is injected in the queryOptionsFn and passed here as the second arg to the mutator\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n if (!hasSignal) {\n return 'http';\n }\n return `http, ${signalVar}`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n // Axios and Angular mutators: signal is a separate argument\n // Fetch mutators: signal is wrapped in options object\n return httpClient === OutputHttpClient.AXIOS ||\n httpClient === OutputHttpClient.ANGULAR\n ? `requestOptions, ${signalVar}`\n : `{ ${signalProp}, ...requestOptions }`;\n }\n\n if (hasSignal) {\n // Axios: signal is always separate\n // Angular with mutator: signal is separate (mutator pattern)\n // Angular without mutator: signal is wrapped (native pattern)\n // Fetch/other: signal is wrapped\n if (httpClient === OutputHttpClient.AXIOS) {\n return signalVar;\n }\n if (httpClient === OutputHttpClient.ANGULAR && mutator) {\n return signalVar;\n }\n return `{ ${signalProp} }`;\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n useRuntimeFetcher?: boolean;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n value += ', axios: axiosOptions';\n } else if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n value += ', fetch: fetchOptions, fetcher: fetcherFn';\n } else {\n value += ', fetch: fetchOptions';\n }\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n const fetcherOption =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcher: fetcherFn'\n : '';\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : `, fetch: fetchOptions${fetcherOption}`;\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n // For Angular mutators with hasSecondArg, pass http (which is injected in inject* fn)\n // http is required as first param so no assertion needed\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n return 'http';\n }\n\n return isRequestOptions\n ? mutator\n ? mutator.hasSecondArg\n ? 'requestOptions'\n : ''\n : `${options}${fetcherArg}`\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n isAngular = false,\n hasMutator = false,\n) => {\n const result =\n isVue && httpClient === OutputHttpClient.FETCH && queryProperties\n ? queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',')\n : queryProperties;\n\n // For Angular, prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used - mutator handles HTTP client internally\n // http is required as first param so no assertion needed\n if ((isAngular || httpClient === OutputHttpClient.ANGULAR) && !hasMutator) {\n return result ? `http, ${result}` : 'http';\n }\n\n return result;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n if (params.output.httpClient === OutputHttpClient.FETCH) {\n return generateFetchHeader(params);\n }\n\n if (params.output.httpClient === OutputHttpClient.ANGULAR) {\n const relevantVerbs = params.tag\n ? Object.values(params.verbOptions).filter(\n (verbOption) => kebab(verbOption.tags[0] ?? 'default') === params.tag,\n )\n : Object.values(params.verbOptions);\n const hasQueryParams = relevantVerbs.some((v) => v.queryParams);\n\n return hasQueryParams ? getAngularFilteredParamsHelperBody() : '';\n }\n\n return '';\n};\n","import {\n type ClientDependenciesBuilder,\n compareVersions,\n type GeneratorDependency,\n OutputHttpClient,\n type PackageJson,\n} from '@orval/core';\n\nimport { ANGULAR_HTTP_DEPENDENCIES, AXIOS_DEPENDENCIES } from './client';\n\nexport const REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nexport const PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'qs',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n ],\n dependency: 'qs',\n },\n];\n\nconst SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n {\n name: 'UseInfiniteQueryOptions',\n },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryStoreResult' },\n { name: 'UseInfiniteQueryStoreResult' },\n { name: 'QueryKey' },\n { name: 'CreateMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@sveltestack/svelte-query',\n },\n];\nconst SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'createQuery', values: true },\n { name: 'createInfiniteQuery', values: true },\n { name: 'createMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'MutationFunctionContext' },\n { name: 'CreateMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/svelte-query',\n },\n];\n\nexport const isSvelteQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasSvelteQuery =\n packageJson?.dependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.devDependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.peerDependencies?.['@sveltestack/svelte-query'];\n const hasSvelteQueryV4 =\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query'];\n\n return !!hasSvelteQuery && !hasSvelteQueryV4;\n};\n\nexport const isSvelteQueryV6 = (packageJson: PackageJson | undefined) => {\n return isQueryV6(packageJson, 'svelte-query');\n};\n\nexport const getSvelteQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasSvelteQueryV3 = isSvelteQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasSvelteQueryV3\n ? SVELTE_QUERY_DEPENDENCIES_V3\n : SVELTE_QUERY_DEPENDENCIES),\n ];\n};\n\nconst REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'UseMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'react-query',\n },\n];\nconst REACT_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useSuspenseQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useSuspenseInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'DefinedInitialDataOptions' },\n { name: 'UndefinedInitialDataOptions' },\n { name: 'UseSuspenseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseSuspenseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'MutationFunctionContext' },\n { name: 'UseQueryResult' },\n { name: 'DefinedUseQueryResult' },\n { name: 'UseSuspenseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'DefinedUseInfiniteQueryResult' },\n { name: 'UseSuspenseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'InfiniteData' },\n { name: 'UseMutationResult' },\n { name: 'DataTag' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/react-query',\n },\n];\n\nexport const getReactQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient,\n hasTagsMutator,\n override,\n) => {\n const hasReactQuery =\n packageJson?.dependencies?.['react-query'] ??\n packageJson?.devDependencies?.['react-query'] ??\n packageJson?.peerDependencies?.['react-query'];\n const hasReactQueryV4 =\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query'];\n\n const queryVersion = override?.query.version;\n const useReactQueryV3 =\n queryVersion === undefined\n ? hasReactQuery && !hasReactQueryV4\n : queryVersion <= 3;\n\n return [\n ...(hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : []),\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(useReactQueryV3\n ? REACT_QUERY_DEPENDENCIES_V3\n : REACT_QUERY_DEPENDENCIES),\n ];\n};\n\nconst VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n ],\n dependency: 'vue-query',\n },\n {\n exports: [\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'UseMutationReturnType' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'vue-query/types',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n {\n exports: [{ name: 'UseQueryReturnType' }],\n dependency: 'vue-query/lib/vue/useBaseQuery',\n },\n];\n\nconst VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'UseQueryReturnType' },\n { name: 'UseInfiniteQueryReturnType' },\n { name: 'InfiniteData' },\n { name: 'UseMutationReturnType' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/vue-query',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'MaybeRef' },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n];\n\nconst getSolidQueryImports = (\n prefix: 'use' | 'create',\n): GeneratorDependency[] => {\n const capitalized = prefix === 'use' ? 'Use' : 'Create';\n return [\n {\n exports: [\n { name: `${prefix}Query`, values: true },\n { name: `${prefix}InfiniteQuery`, values: true },\n { name: `${prefix}Mutation`, values: true },\n { name: `${capitalized}QueryOptions` },\n { name: `${capitalized}InfiniteQueryOptions` },\n { name: `${capitalized}MutationOptions` },\n { name: 'SolidQueryOptions' },\n { name: 'SolidInfiniteQueryOptions' },\n { name: 'SolidMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: `${capitalized}QueryResult` },\n { name: `${capitalized}InfiniteQueryResult` },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: `${capitalized}MutationResult` },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/solid-query',\n },\n ];\n};\n\nconst ANGULAR_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'injectQuery', values: true },\n { name: 'injectInfiniteQuery', values: true },\n { name: 'injectMutation', values: true },\n { name: 'InjectQueryOptions' },\n { name: 'InjectMutationOptions' },\n { name: 'CreateQueryOptions' },\n { name: 'CreateInfiniteQueryOptions' },\n { name: 'CreateMutationOptions' },\n { name: 'MutationFunctionContext' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient', values: true },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/angular-query-experimental',\n },\n {\n exports: [\n { name: 'inject', values: true },\n { name: 'Signal' },\n { name: 'computed', values: true },\n ],\n dependency: '@angular/core',\n },\n];\n\nexport const isVueQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasVueQuery =\n packageJson?.dependencies?.['vue-query'] ??\n packageJson?.devDependencies?.['vue-query'] ??\n packageJson?.peerDependencies?.['vue-query'];\n const hasVueQueryV4 =\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query'];\n\n return !!hasVueQuery && !hasVueQueryV4;\n};\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasVueQueryV3 = isVueQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),\n ];\n};\n\nexport const getSolidQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...getSolidQueryImports(\n isSolidQueryWithUsePrefix(packageJson) ? 'use' : 'create',\n ),\n ];\n};\n\nexport const getAngularQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n // Always use Angular HTTP dependencies for Angular httpClient\n // Previously skipped for mutators, but we now inject http everywhere\n const useAngularHttp = httpClient === OutputHttpClient.ANGULAR;\n const useAxios = !hasGlobalMutator && httpClient === OutputHttpClient.AXIOS;\n\n return [\n ...(useAngularHttp ? ANGULAR_HTTP_DEPENDENCIES : []),\n ...(useAxios ? AXIOS_DEPENDENCIES : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...ANGULAR_QUERY_DEPENDENCIES,\n ];\n};\n\nexport const isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.0.0');\n};\n\nconst isQueryV6 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nexport const isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports DataTag\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.62.0');\n};\n\nexport const isQueryV5WithRequiredContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.14.1');\n};\n\nexport const isQueryV5WithMutationContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.89.0');\n};\n\nexport const isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports infinite query options\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.80.0');\n};\n\nexport const isSolidQueryWithUsePrefix = (\n packageJson: PackageJson | undefined,\n) => {\n const version = getPackageByQueryClient(packageJson, 'solid-query');\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n // https://github.com/TanStack/query/blob/v5.71.5/packages/solid-query/src/index.ts\n return compareVersions(withoutRc, '5.71.5');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n const pkgName = '@tanstack/react-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'svelte-query': {\n const pkgName = '@tanstack/svelte-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'vue-query': {\n const pkgName = '@tanstack/vue-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'angular-query': {\n const pkgName = '@tanstack/angular-query-experimental';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'solid-query': {\n const pkgName = '@tanstack/solid-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n }\n};\n","import {\n type GeneratorMutator,\n type GetterParams,\n type GetterQueryParam,\n isObject,\n pascal,\n stringify,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport type { FrameworkAdapter } from './framework-adapter';\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nexport const QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nexport const generateQueryOptions = ({\n params,\n options,\n type,\n adapter,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n adapter?: FrameworkAdapter;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n type !== QueryType.INFINITE &&\n type !== QueryType.SUSPENSE_INFINITE &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n const enabledOption = adapter\n ? adapter.generateEnabledOption(params, options)\n : !isObject(options) || !Object.hasOwn(options, 'enabled')\n ? `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : '';\n\n return `${enabledOption}${queryConfig} ...queryOptions`;\n};\n\nexport const isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nexport const getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n adapter,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n /** 'Use' or 'Create' — from adapter.getQueryOptionsDefinitionPrefix() */\n prefix: string;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n adapter?: FrameworkAdapter;\n}) => {\n const isMutatorHook = mutator?.isHook;\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n\n // Use adapter's custom options type name for return types if available\n const optionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName(\n type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE\n ? 'infiniteQuery'\n : 'query',\n )\n : undefined;\n\n const optionType = optionsTypeName\n ? `${optionsTypeName}<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`\n : `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`;\n\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n // Mutation options\n const mutationOptionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName('mutation')\n : undefined;\n\n return mutationOptionsTypeName\n ? `${mutationOptionsTypeName}<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`\n : `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n","import {\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n GetterPropType,\n OutputClient,\n type OutputHttpClient,\n toObjectString,\n} from '@orval/core';\n\nimport {\n generateAngularHttpRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition, QueryType } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createAngularAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = 'Create';\n\n return {\n outputClient: OutputClient.ANGULAR_QUERY,\n hookPrefix: 'inject',\n isAngularHttp: true,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n // Angular: allow params to be a getter function for reactive signal support\n return toObjectString(\n props.map((prop) => {\n const getterType = prop.definition.replace(\n /^(\\w+)(\\??): (.+)$/,\n (\n _match: string,\n name: string,\n optional: string,\n type: string,\n ): string =>\n `${name}${optional}: ${type} | (() => ${type.replace(' | undefined', '')}${optional ? ' | undefined' : ''})`,\n );\n return { ...prop, definition: getterType };\n }),\n 'definition',\n );\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n _httpClient: OutputHttpClient,\n hasMutator: boolean,\n ): string {\n // Prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used\n if (!hasMutator) {\n return queryProperties ? `http, ${queryProperties}` : 'http';\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(\n props: GetterProps,\n queryParam: string,\n hasMutator: boolean,\n ): string {\n let result = props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n\n // Prefix with http for infinite queries\n // Skip when custom mutator is used\n if (!hasMutator) {\n result = result ? `http, ${result}` : 'http';\n }\n\n return result;\n },\n\n getHttpFirstParam(mutator?: GeneratorMutator): string {\n if (!mutator || mutator.hasSecondArg) {\n return 'http: HttpClient, ';\n }\n return '';\n },\n\n getMutationHttpPrefix(mutator?: GeneratorMutator): string {\n if (!mutator) {\n return 'http, ';\n }\n return '';\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `CreateQueryResult<TData, TError>`;\n }\n return `CreateInfiniteQueryResult<TData, TError>`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n }: QueryReturnStatementContext): string {\n return `return ${queryResultVarName};`;\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Angular skips DataTag annotation\n return false;\n },\n\n generateQueryInit({ mutator }: QueryInitContext): string {\n // Angular: inject HttpClient if needed, no queryOptions assignment\n if (!mutator || mutator.hasSecondArg) {\n return `const http = inject(HttpClient);`;\n }\n return '';\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n mutator,\n }: QueryInvocationContext): string {\n // Angular: () => { resolve getters; return options(http, ...); }\n return `() => {${\n props.length > 0\n ? `\n // Resolve params if getter function (for signal reactivity)\n ${props.map((p) => `const _${p.name} = typeof ${p.name} === 'function' ? ${p.name}() : ${p.name};`).join('\\n ')}`\n : ''\n }\n // Resolve options if getter function (for signal reactivity)\n const _options = typeof ${isRequestOptions ? 'options' : 'queryOptions'} === 'function' ? ${isRequestOptions ? 'options' : 'queryOptions'}() : ${isRequestOptions ? 'options' : 'queryOptions'};\n return ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http' : ''}${props.length > 0 ? `${!mutator || mutator.hasSecondArg ? ', ' : ''}${props.map((p) => `_${p.name}`).join(', ')}` : ''}, _options);\n }`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Angular never has optional queryClient argument (it injects it)\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n // For Angular inject* functions (query hooks, not queryOptions or mutations),\n // allow options to be a getter for reactivity.\n // Inject style applies when type is defined (it's a query hook) and not forQueryOptions.\n const forAngularInject = type !== undefined && !forQueryOptions;\n if (forAngularInject) {\n return `options${isQueryRequired ? '' : '?'}: ${optionsType} | (() => ${optionsType})\\n`;\n }\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n }: MutationHookBodyContext): string {\n if (!mutator || mutator.hasSecondArg) {\n return ` const http = inject(HttpClient);${hasInvalidation ? '\\n const queryClient = inject(QueryClient);' : ''}\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(http${hasInvalidation ? ', queryClient' : ''}${isRequestOptions ? ', options' : ', mutationOptions'});\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n }\n\n const mutationImpl = `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n return ` const ${mutationOptionsVarName} = ${mutationImpl};\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n },\n\n getQueryType(type: string): string {\n return getQueryTypeForFramework(type);\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return generateAngularHttpRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { isSuspenseQuery } from '../query-options';\n\nexport const createReactAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.REACT_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryReturnType({\n type,\n isInitialDataDefined,\n }: QueryReturnTypeContext): string {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n shouldGenerateOverrideTypes(): boolean {\n return hasQueryV5;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\n\nexport const createSolidAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n hasSolidQueryUsePrefix: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.SOLID_QUERY,\n hookPrefix: hasSolidQueryUsePrefix ? 'use' : 'create',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryOptionsDefinitionPrefix(): string {\n return hasSolidQueryUsePrefix ? 'Use' : 'Create';\n },\n\n getOptionsReturnTypeName(\n type: 'query' | 'infiniteQuery' | 'mutation',\n ): string | undefined {\n // Solid Query uses SolidQueryOptions for queries, SolidInfiniteQueryOptions for infinite queries,\n // and SolidMutationOptions for mutations (these are accessors)\n if (type === 'mutation') return 'SolidMutationOptions';\n if (type === 'infiniteQuery') return 'SolidInfiniteQueryOptions';\n return 'SolidQueryOptions';\n },\n\n getQueryKeyPrefix(): string {\n // Solid Query v5 doesn't support accessing queryKey from queryOptions\n // The queryKey must be generated directly from the params\n return '';\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Solid Query works with accessor functions\n // The queryKey is accessed from within the accessor, not annotated on the return type\n return false;\n },\n\n shouldCastQueryResult(): boolean {\n // Solid Query should not cast the query result because it breaks TypeScript's\n // ability to discriminate between overloads based on initialData\n return false;\n },\n\n shouldCastQueryOptions(): boolean {\n // Solid Query should not cast the query options return type because it prevents\n // TypeScript from properly discriminating between defined and undefined initialData\n return false;\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `${prefix}QueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n }\n return `${prefix}InfiniteQueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n return `: ${prefix}MutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n // Use Object.assign to attach queryKey to the result and cast to any to satisfy TypeScript\n // The type is properly enforced by the function signature\n return `return Object.assign(${queryResultVarName}, { queryKey: ${queryOptionsVarName}.queryKey }) as any;`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n // Solid Query requires options to be wrapped in an arrow function for reactivity\n const optionsArg = isRequestOptions ? 'options' : 'queryOptions';\n const args = queryProperties\n ? `${queryProperties},${optionsArg}`\n : optionsArg;\n return `() => ${queryOptionsFnName}(${args})${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Solid is NOT in the list of frameworks supporting mutation invalidation\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n // Solid Query mutations also need to be wrapped in accessor functions\n return ` return ${operationPrefix}Mutation(() => ${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Solid Query expects queryClient to be an Accessor: () => QueryClient\n return ', queryClient?: () => QueryClient';\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n OutputClient,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport {\n generateAxiosRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createSvelteAdapter = ({\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n\n return {\n outputClient: OutputClient.SVELTE_QUERY,\n hookPrefix: hasSvelteQueryV4 ? 'create' : 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n if (hasSvelteQueryV6) {\n return toObjectString(\n props.map((p) => ({\n ...p,\n definition: p.definition.replace(':', ': () => '),\n })),\n 'definition',\n );\n }\n return toObjectString(props, 'implementation');\n },\n\n getQueryReturnType({\n type,\n isMutatorHook,\n operationName,\n }: QueryReturnTypeContext): string {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n if (hasSvelteQueryV6) {\n return `return ${queryResultVarName}`;\n }\n if (hasSvelteQueryV4) {\n return `${queryResultVarName}.queryKey = ${queryOptionsVarName}.queryKey;\n\n return ${queryResultVarName};`;\n }\n // Svelte v3 - same as default\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n }: QueryInitContext): string {\n if (hasSvelteQueryV6) {\n return '';\n }\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n queryOptionsVarName,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n if (hasSvelteQueryV6) {\n return `() => ${queryOptionsFnName}(${toObjectString(\n props.map((p) => ({\n ...p,\n name: p.default || !p.required ? `${p.name}?.()` : `${p.name}()`,\n })),\n 'name',\n )}${isRequestOptions ? 'options?.()' : 'queryOptions?.()'})`;\n }\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getQueryInvocationSuffix(): string {\n return hasSvelteQueryV6 ? `, queryClient` : '';\n },\n\n getOptionalQueryClientArgument(hasInvalidation?: boolean): string {\n if (hasSvelteQueryV6) {\n return `, queryClient?: () => QueryClient`;\n }\n if (hasQueryV5 || hasInvalidation) {\n return ', queryClient?: QueryClient';\n }\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${hasSvelteQueryV6 && !forQueryOptions ? '() => ' : ''}${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n if (hasSvelteQueryV6) {\n return `${mutationOptionsFnName}(${hasInvalidation ? `backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n }?.())`;\n }\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n if (hasSvelteQueryV6) {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient(${optionalQueryClientArgument ? 'queryClient?.()' : ''});\\n ` : ''}return ${operationPrefix}Mutation(() => ({ ...${mutationImplementation} })${optionalQueryClientArgument ? `, queryClient` : ''});`;\n }\n // Svelte v4/v5\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation});`;\n },\n\n getQueryType(type: string): string {\n if (hasSvelteQueryV4) {\n return getQueryTypeForFramework(type);\n }\n return type;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\nimport { vueUnRefParams, vueWrapTypeWithMaybeRef } from '../utils';\n\nexport const createVueAdapter = ({\n hasVueQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasVueQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.VUE_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n transformProps(props: GetterProps): GetterProps {\n return vueWrapTypeWithMaybeRef(props);\n },\n\n shouldDestructureNamedPathParams(): boolean {\n // Vue keeps param.name for named path params (doesn't destructure)\n return false;\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n httpClient: OutputHttpClient,\n ): string {\n // Vue with fetch: unref each prop\n if (httpClient === OutputHttpClient.FETCH && queryProperties) {\n return queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',');\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string): string {\n return props\n .map((param) => {\n // Vue does NOT destructure named path params (keeps param.name)\n return param.name === 'params'\n ? `{...unref(params), '${queryParam}': pageParam || unref(params)?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (!hasVueQueryV4) {\n return ` UseQueryReturnType<TData, TError, Use${pascal(\n type,\n )}Result<TData, TError>> & { queryKey: QueryKey }`;\n }\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `UseQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n\n return `UseInfiniteQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n return `${queryResultVarName}.queryKey = unref(${queryOptionsVarName}).queryKey as ${queryKeyType};\n\n return ${queryResultVarName};`;\n },\n\n getQueryKeyRouteString(route: string): string {\n // Vue always uses getRouteAsArray for reactivity\n return getRouteAsArray(route);\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Vue skips DataTag annotation\n return false;\n },\n\n getUnrefStatements(props: GetterProps): string {\n return vueUnRefParams(\n props.filter((prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS),\n );\n },\n\n generateEnabledOption(\n params: GetterParams,\n options?: object | boolean,\n ): string {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`;\n }\n return '';\n },\n\n getQueryKeyPrefix(): string {\n return hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? ';\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Vue is NOT in the list: isAngularClient || isReact(outputClient) || isSvelte(outputClient)\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, true)\n : generateFetchRequestFunction(verbOptions, options);\n },\n\n getQueryPropertyForProp(\n prop: GetterProp,\n body: { implementation: string },\n ): string {\n // Vue does NOT destructure named path params (keeps param.name for reactivity)\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n});\n","import {\n getRouteAsArray,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n type OutputClient,\n OutputClient as OutputClientConst,\n type OutputClientFunc,\n type PackageJson,\n toObjectString,\n} from '@orval/core';\n\nimport { getQueryArgumentsRequestType } from '../client';\nimport {\n isQueryV5,\n isQueryV5WithDataTagError,\n isQueryV5WithInfiniteQueryOptionsError,\n isQueryV5WithMutationContextOnSuccess,\n isQueryV5WithRequiredContextOnSuccess,\n isSolidQueryWithUsePrefix,\n isSvelteQueryV3,\n isSvelteQueryV6,\n isVueQueryV3,\n} from '../dependencies';\nimport type {\n FrameworkAdapter,\n FrameworkAdapterConfig,\n MutationOnSuccessContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { createAngularAdapter } from './angular';\nimport { createReactAdapter } from './react';\nimport { createSolidAdapter } from './solid';\nimport { createSvelteAdapter } from './svelte';\nimport { createVueAdapter } from './vue';\n\n/** Fill in defaults for fields that most adapters leave empty or share a common implementation. */\nconst withDefaults = (adapter: FrameworkAdapterConfig): FrameworkAdapter => ({\n // --- Original defaults (false / empty string) ---\n isAngularHttp: false,\n getHttpFirstParam: () => '',\n getMutationHttpPrefix: () => '',\n getUnrefStatements: () => '',\n getQueryInvocationSuffix: () => '',\n\n // --- Identity / pass-through defaults ---\n transformProps: (props) => props,\n getHttpFunctionQueryProps: (qp) => qp,\n getQueryType: (type) => type,\n\n // --- Boolean defaults ---\n shouldDestructureNamedPathParams: () => true,\n shouldAnnotateQueryKey: () => true,\n shouldGenerateOverrideTypes: () => false,\n shouldCastQueryResult: () => true,\n shouldCastQueryOptions: () => true,\n\n // --- String defaults ---\n getQueryKeyPrefix: () => 'queryOptions?.queryKey ?? ',\n getQueryOptionsDefinitionPrefix: () => 'Use',\n\n // --- Common implementation defaults ---\n getHookPropsDefinitions: (props) => toObjectString(props, 'implementation'),\n\n getQueryKeyRouteString(route, shouldSplitQueryKey) {\n if (shouldSplitQueryKey) {\n return getRouteAsArray(route);\n }\n return `\\`${route}\\``;\n },\n\n generateEnabledOption(params, options) {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`;\n }\n return '';\n },\n\n getQueryPropertyForProp(prop: GetterProp, body: { implementation: string }) {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS)\n return prop.destructured;\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string) {\n return props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n generateQueryInit({ queryOptionsFnName, queryProperties, isRequestOptions }) {\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsVarName,\n optionalQueryClientArgument,\n }) {\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getOptionalQueryClientArgument() {\n return adapter.hasQueryV5 ? ', queryClient?: QueryClient' : '';\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n }) {\n const prefix = adapter.getQueryOptionsDefinitionPrefix?.() ?? 'Use';\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n }: MutationOnSuccessContext): string {\n const invalidateCalls = uniqueInvalidates\n .map((t) => generateInvalidateCall(t))\n .join('\\n');\n if (adapter.hasQueryV5WithMutationContextOnSuccess) {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n } else {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n },\n ...adapter,\n});\n\nexport type QueryClientType =\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n\n/**\n * Create a FrameworkAdapter for the given output client, resolving version flags\n * from the packageJson and query config.\n */\nexport const createFrameworkAdapter = ({\n outputClient,\n packageJson,\n queryVersion,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n packageJson?: PackageJson;\n queryVersion?: number;\n}): FrameworkAdapter => {\n const clientType = outputClient as QueryClientType;\n\n const _hasQueryV5 = queryVersion === 5 || isQueryV5(packageJson, clientType);\n\n const _hasQueryV5WithDataTagError =\n queryVersion === 5 || isQueryV5WithDataTagError(packageJson, clientType);\n\n const _hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(packageJson, clientType);\n const _hasQueryV5WithMutationContextOnSuccess =\n isQueryV5WithMutationContextOnSuccess(packageJson, clientType);\n const _hasQueryV5WithRequiredContextOnSuccess =\n isQueryV5WithRequiredContextOnSuccess(packageJson, clientType);\n\n switch (outputClient) {\n case OutputClientConst.VUE_QUERY: {\n const hasVueQueryV4 = !isVueQueryV3(packageJson) || queryVersion === 4;\n return withDefaults(\n createVueAdapter({\n hasVueQueryV4,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SVELTE_QUERY: {\n const hasSvelteQueryV4 =\n !isSvelteQueryV3(packageJson) || queryVersion === 4;\n const _hasSvelteQueryV6 = isSvelteQueryV6(packageJson);\n return withDefaults(\n createSvelteAdapter({\n hasSvelteQueryV4,\n hasSvelteQueryV6: _hasSvelteQueryV6,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.ANGULAR_QUERY: {\n return withDefaults(\n createAngularAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SOLID_QUERY: {\n const hasSolidQueryWithUsePrefix = isSolidQueryWithUsePrefix(packageJson);\n return withDefaults(\n createSolidAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix: hasSolidQueryWithUsePrefix,\n }),\n );\n }\n\n default: {\n // react-query is the default\n return withDefaults(\n createReactAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n }\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n type InvalidateTarget,\n isString,\n type OutputHttpClient,\n pascal,\n} from '@orval/core';\n\nimport {\n getHooksOptionImplementation,\n getMutationRequestArgs,\n getQueryErrorType,\n} from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { getQueryOptionsDefinition } from './query-options';\n\ninterface NormalizedTarget {\n query: string;\n params?: string[] | Record<string, string>;\n invalidateMode: 'invalidate' | 'reset';\n file?: string;\n}\n\nconst normalizeInvalidateMode = (\n invalidateMode: string | undefined,\n): NormalizedTarget['invalidateMode'] =>\n invalidateMode === 'reset' ? 'reset' : 'invalidate';\n\nconst normalizeTarget = (target: InvalidateTarget): NormalizedTarget =>\n isString(target)\n ? { query: target, invalidateMode: 'invalidate' }\n : {\n ...target,\n invalidateMode: normalizeInvalidateMode(target.invalidateMode),\n };\n\nconst serializeTarget = (target: NormalizedTarget): string =>\n JSON.stringify({\n query: target.query,\n params: target.params ?? [],\n invalidateMode: target.invalidateMode,\n file: target.file ?? '',\n });\n\nconst HTTP_METHODS = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'options',\n 'head',\n 'trace',\n];\n\ninterface OperationRouteInfo {\n route: string;\n /** true when the route has path params that lack a default value */\n hasRequiredPathParams: boolean;\n}\n\ninterface SpecPathItem {\n parameters?: SpecParameter[];\n [method: string]: unknown;\n}\n\ninterface SpecOperation {\n operationId?: string;\n parameters?: SpecParameter[];\n}\n\ninterface SpecParameter {\n in?: string;\n default?: unknown;\n schema?: { default?: unknown };\n}\n\n/**\n * Look up an operation's route and path-parameter metadata from the OpenAPI\n * spec. Matches against both the raw `operationId` and its camelCase form\n * so that renamed/overridden operations are still found.\n */\nconst findOperationInfo = (\n spec: Record<string, unknown> | undefined,\n operationName: string,\n): OperationRouteInfo | undefined => {\n const paths = spec?.paths;\n if (!paths || typeof paths !== 'object') return undefined;\n\n for (const [routePath, rawPathItem] of Object.entries(\n paths as Record<string, unknown>,\n )) {\n if (!rawPathItem || typeof rawPathItem !== 'object') continue;\n const pathItem = rawPathItem as SpecPathItem;\n\n for (const method of HTTP_METHODS) {\n const operation = pathItem[method] as SpecOperation | undefined;\n const opId = operation?.operationId;\n if (!opId) continue;\n // Match both raw operationId and its camelCase generated name\n if (opId !== operationName && camel(opId) !== operationName) continue;\n\n if (!routePath.includes('{')) {\n return { route: routePath, hasRequiredPathParams: false };\n }\n\n // Collect path parameters from both path-level and operation-level\n const pathParams = [\n ...(Array.isArray(pathItem.parameters) ? pathItem.parameters : []),\n ...(Array.isArray(operation.parameters) ? operation.parameters : []),\n ].filter((p) => p.in === 'path');\n\n const hasRequiredPathParams = pathParams.some(\n (p) => p.schema?.default === undefined && p.default === undefined,\n );\n\n return { route: routePath, hasRequiredPathParams };\n }\n }\n return undefined;\n};\n\n/**\n * Extract the static route prefix before the first path parameter.\n * e.g. \"/pets/{petId}\" → \"/pets/\", \"/pets\" → \"/pets\"\n *\n * Returns `undefined` when the prefix contains no meaningful literal\n * segments (e.g. \"/{tenantId}/pets\") to avoid overly-broad invalidation.\n */\nconst getStaticRoutePrefix = (route: string): string | undefined => {\n const idx = route.indexOf('{');\n if (idx === -1) return route;\n const prefix = route.slice(0, idx);\n // Guard: a prefix like \"/\" has no stable literal segment and would\n // match every route-style query key – fall back to the zero-arg call.\n const hasLiteralSegment = prefix\n .split('/')\n .some((segment) => segment.length > 0);\n return hasLiteralSegment ? prefix : undefined;\n};\n\n/**\n * Check whether the target invalidation needs to call the query key function.\n * Returns false when no params are specified and the route has required path\n * parameters (without defaults), meaning we should use predicate-based broad\n * invalidation instead of calling the function without the required arguments.\n */\nconst hasNonEmptyParams = (\n params: string[] | Record<string, string> | undefined,\n): params is string[] | Record<string, string> => {\n if (!params) return false;\n if (Array.isArray(params)) return params.length > 0;\n return Object.keys(params).length > 0;\n};\n\nconst needsQueryKeyFnCall = (\n target: NormalizedTarget,\n spec: Record<string, unknown> | undefined,\n): boolean => {\n if (hasNonEmptyParams(target.params)) return true;\n const info = findOperationInfo(spec, target.query);\n if (info?.hasRequiredPathParams) return false;\n return true;\n};\n\nconst generateVariableRef = (varName: string): string => {\n const parts = varName.split('.');\n if (parts.length === 1) {\n return `variables.${varName}`;\n }\n return `variables.${parts[0]}?.${parts.slice(1).join('?.')}`;\n};\n\nconst generateParamArgs = (\n params: string[] | Record<string, string>,\n): string => {\n if (Array.isArray(params)) {\n return params.map((v) => generateVariableRef(v)).join(', ');\n }\n return Object.values(params)\n .map((v) => generateVariableRef(v))\n .join(', ');\n};\n\n/**\n * Create a generateInvalidateCall function that has access to the OpenAPI spec\n * for intelligent route-based invalidation when params are not specified.\n */\nconst createGenerateInvalidateCall = (\n spec: Record<string, unknown> | undefined,\n shouldSplitQueryKey: boolean,\n) => {\n return (target: NormalizedTarget): string => {\n const method =\n target.invalidateMode === 'reset' ? 'resetQueries' : 'invalidateQueries';\n const queryKeyFn = camel(`get-${target.query}-query-key`);\n\n if (hasNonEmptyParams(target.params)) {\n const args = generateParamArgs(target.params);\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}(${args}) });`;\n }\n\n // No params specified – check if the target query has required path params\n const info = findOperationInfo(spec, target.query);\n\n if (info?.hasRequiredPathParams) {\n // Route has required path parameters (no defaults) – use broad\n // invalidation instead of calling the query key function without\n // the required arguments.\n const prefix = getStaticRoutePrefix(info.route);\n\n // When the prefix has no meaningful literal segments (e.g. route\n // starts with a path param like /{tenantId}/...), fall through to\n // the zero-arg call rather than generating an overly-broad match.\n if (prefix !== undefined) {\n if (shouldSplitQueryKey) {\n // Split-key mode: query keys are arrays like ['pets', petId].\n // Use partial key matching with static route segments.\n const segments = prefix\n .split('/')\n .filter((s) => s !== '')\n .map((s) => `'${s}'`)\n .join(', ');\n return ` queryClient.${method}({ queryKey: [${segments}] });`;\n }\n\n // Default mode: query keys are template strings like ['/pets/${petId}'].\n // Use predicate with startsWith for broad matching.\n return ` queryClient.${method}({ predicate: (query) => typeof query.queryKey[0] === 'string' && query.queryKey[0].startsWith('${prefix}') });`;\n }\n }\n\n // No path params or route not found – call query key function without args\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}() });`;\n };\n};\n\nexport interface MutationHookContext {\n verbOptions: GeneratorVerbOptions;\n options: GeneratorOptions;\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n doc: string;\n adapter: FrameworkAdapter;\n}\n\nexport const generateMutationHook = async ({\n verbOptions,\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n}: MutationHookContext): Promise<{\n implementation: string;\n mutators: GeneratorMutator[] | undefined;\n imports: GeneratorImport[];\n}> => {\n const {\n operationName,\n body,\n props,\n mutator,\n response,\n operationId,\n override,\n } = verbOptions;\n const { route, context, output } = options;\n const query = override.query;\n\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n adapter,\n });\n\n const invalidatesConfig = (query.mutationInvalidates ?? [])\n .filter((rule) => rule.onMutations.includes(operationName))\n .flatMap((rule) => rule.invalidates)\n .map((t) => normalizeTarget(t));\n const seenTargets = new Set<string>();\n const uniqueInvalidates = invalidatesConfig.filter((target) => {\n const key = serializeTarget(target);\n if (seenTargets.has(key)) return false;\n seenTargets.add(key);\n return true;\n });\n\n const hasInvalidation =\n uniqueInvalidates.length > 0 && adapter.supportsMutationInvalidation();\n\n const useRuntimeFetcher = override.fetch.useRuntimeFetcher;\n\n const mutationArguments = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getMutationOptions function (includes http: HttpClient param for Angular)\n const mutationArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n forQueryOptions: true,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n useRuntimeFetcher,\n );\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n // For Angular/React mutations with invalidation, add queryClient as second required param\n const queryClientParam = hasInvalidation ? 'queryClient: QueryClient, ' : '';\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${httpFirstParam}${queryClientParam}${mutationArgumentsForOptions}): ${mutationOptionFnReturnType} => {\n\n${hooksOptionImplementation}\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook()`\n : ''\n }\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<${dataType}>>, ${\n definitions ? `{${definitions}}` : 'void'\n }> = (${properties ? 'props' : ''}) => {\n ${properties ? `const {${properties}} = props ?? {};` : ''}\n\n return ${operationName}(${adapter.getMutationHttpPrefix(mutator)}${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator, useRuntimeFetcher)})\n }\n\n${\n hasInvalidation\n ? adapter.generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall: createGenerateInvalidateCall(\n context.spec,\n !!query.shouldSplitQueryKey,\n ),\n uniqueInvalidates,\n })\n : ''\n}\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : hasInvalidation\n ? '{ ...mutationOptions, mutationFn, onSuccess }'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = adapter.hookPrefix;\n\n const optionalQueryClientArgument =\n adapter.getOptionalQueryClientArgument(hasInvalidation);\n\n const mutationImplementation = adapter.generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n });\n\n const mutationOptionsVarName = camel(`${operationName}-mutation-options`);\n\n const mutationReturnType = adapter.getMutationReturnType({\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n });\n\n const mutationHookBody = adapter.generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationImplementation,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n optionalQueryClientArgument,\n });\n\n const implementation = `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${mutationReturnType} => {\n${mutationHookBody}\n }\n `;\n\n const mutators = mutationOptionsMutator\n ? [mutationOptionsMutator]\n : undefined;\n\n const imports: GeneratorImport[] = hasInvalidation\n ? uniqueInvalidates\n .filter((i) => !!i.file && needsQueryKeyFnCall(i, context.spec))\n .map<GeneratorImport>((i) => ({\n name: camel(`get-${i.query}-query-key`),\n importPath: i.file,\n values: true,\n }))\n : [];\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n jsDoc,\n OutputClient,\n type OutputClientFunc,\n type OutputHttpClient,\n pascal,\n toObjectString,\n Verbs,\n} from '@orval/core';\n\nimport { getHookOptions, getQueryErrorType, getQueryOptions } from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { generateMutationHook } from './mutation-generator';\nimport {\n generateQueryOptions,\n getQueryOptionsDefinition,\n QueryType,\n} from './query-options';\nimport { getHasSignal } from './utils';\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n hasSignalParam = false,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n // Rename AbortSignal if API has a param named \"signal\" to avoid conflict\n const signalDestructure = hasSignalParam ? 'signal: querySignal' : 'signal';\n\n if (hasQueryParam) {\n if (hasSignal) {\n return `{ ${signalDestructure}, pageParam }`;\n }\n\n return '{ pageParam }';\n }\n\n return `{ ${signalDestructure} }`;\n};\n\nconst generatePrefetch = ({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n doc,\n queryProps,\n dataType,\n errorType,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: (typeof QueryType)[keyof typeof QueryType];\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n doc?: string;\n queryProps: string;\n dataType: string;\n errorType: string;\n queryArguments: string;\n queryOptionsVarName: string;\n queryOptionsFnName: string;\n queryProperties: string;\n isRequestOptions: boolean;\n}) => {\n const shouldGeneratePrefetch =\n usePrefetch &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n\n if (!shouldGeneratePrefetch) {\n return '';\n }\n\n const prefetchType =\n type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY\n ? 'query'\n : 'infinite-query';\n const prefetchFnName = camel(`prefetch-${prefetchType}`);\n\n if (mutator?.isHook) {\n const prefetchVarName = camel(\n `use-prefetch-${operationName}-${prefetchType}`,\n );\n return `${doc}export const ${prefetchVarName} = <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n const queryClient = useQueryClient();\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n return useCallback(async (): Promise<QueryClient> => {\n await queryClient.${prefetchFnName}(${queryOptionsVarName})\n return queryClient;\n },[queryClient, ${queryOptionsVarName}]);\n};\\n`;\n } else {\n const prefetchVarName = camel(`prefetch-${operationName}-${prefetchType}`);\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n await queryClient.${prefetchFnName}(${queryOptionsVarName});\n\n return queryClient;\n}\\n`;\n }\n};\n\nconst generateQueryImplementation = ({\n queryOption: { name, queryParam, options, type, queryKeyFnName },\n operationName,\n queryProperties,\n queryKeyProperties,\n queryParams,\n params,\n props,\n mutator,\n queryOptionsMutator,\n queryKeyMutator,\n isRequestOptions,\n response,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n useRuntimeFetcher,\n route,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n useSetQueryData,\n useGetQueryData,\n adapter,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: (typeof QueryType)[keyof typeof QueryType];\n queryParam?: string;\n queryKeyFnName: string;\n };\n isRequestOptions: boolean;\n operationName: string;\n queryProperties: string;\n queryKeyProperties: string;\n params: GetterParams;\n props: GetterProps;\n response: GetterResponse;\n queryParams?: GetterQueryParam;\n mutator?: GeneratorMutator;\n queryOptionsMutator?: GeneratorMutator;\n queryKeyMutator?: GeneratorMutator;\n httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n useRuntimeFetcher?: boolean;\n route: string;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n useSetQueryData?: boolean;\n useGetQueryData?: boolean;\n adapter: FrameworkAdapter;\n}) => {\n const {\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n } = adapter;\n\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some(\n (prop: GetterProp) => prop.name === 'signal',\n );\n\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(String.raw`^${prop.name}\\s*\\?:`);\n\n if (!regex.test(prop.definition)) {\n return prop;\n }\n\n const definitionWithUndefined = prop.definition.replace(\n regex,\n `${prop.name}: undefined | `,\n );\n return {\n ...prop,\n definition: definitionWithUndefined,\n };\n }),\n 'definition',\n );\n const queryProps = toObjectString(props, 'implementation');\n\n const hasInfiniteQueryParam = queryParam && queryParams?.schema.name;\n\n const httpFunctionProps = queryParam\n ? adapter.getInfiniteQueryHttpProps(props, queryParam, !!mutator)\n : adapter.getHttpFunctionQueryProps(queryProperties, httpClient, !!mutator);\n\n const definedInitialDataReturnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n });\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const definedInitialDataQueryArguments = adapter.generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n useRuntimeFetcher,\n });\n const undefinedInitialDataQueryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n useRuntimeFetcher,\n });\n const queryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getQueryOptions function (includes http: HttpClient param for Angular)\n const queryArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n forQueryOptions: true,\n useRuntimeFetcher,\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n hasSignalParam,\n useRuntimeFetcher,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n hasSignalParam,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n adapter,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n adapter,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${httpFirstParam}${queryProps} ${queryArgumentsForOptions}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${adapter.getQueryKeyPrefix()}${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${adapter.getUnrefStatements(props)}\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n }${\n adapter.shouldCastQueryOptions?.() === false\n ? ''\n : ` as ${queryOptionFnReturnType} ${\n adapter.shouldAnnotateQueryKey()\n ? `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n : ''\n }`\n }\n}`;\n const operationPrefix = adapter.hookPrefix;\n const optionalQueryClientArgument = adapter.getOptionalQueryClientArgument();\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetch = generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n queryArguments: queryArgumentsForOptions,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const isPrimaryQueryType =\n type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite);\n\n const shouldGenerateInvalidate = useInvalidate && isPrimaryQueryType;\n const invalidateFnName = camel(`invalidate-${name}`);\n\n const shouldGenerateSetQueryData = useSetQueryData && isPrimaryQueryType;\n const isReactQuery = adapter.outputClient === OutputClient.REACT_QUERY;\n const setQueryDataFnName = isReactQuery\n ? camel(`use-set-${name}-query-data`)\n : camel(`set-${name}-query-data`);\n const setQueryDataKeyExpr = queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${queryKeyMutator.hasSecondArg ? `, { url: \\`${route}\\` }` : ''})`\n : `${queryKeyFnName}(${queryKeyProperties})`;\n const setQueryDataProps = toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ).replaceAll('?:', ':');\n\n const shouldGenerateGetQueryData = useGetQueryData && isPrimaryQueryType;\n const getQueryDataFnName = isReactQuery\n ? camel(`use-get-${name}-query-data`)\n : camel(`get-${name}-query-data`);\n const getQueryDataKeyExpr = setQueryDataKeyExpr;\n const getQueryDataProps = setQueryDataProps;\n\n // Generate query init (e.g. const queryOptions = fn(...) or const http = inject(HttpClient))\n const queryInit = adapter.generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n });\n\n // Generate query hook invocation arguments\n const queryInvocationArgs = adapter.generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n operationPrefix,\n type,\n queryOptionsVarName,\n optionalQueryClientArgument,\n });\n\n const queryInvocationSuffix = adapter.getQueryInvocationSuffix();\n\n return `\n${queryOptionsFn}\n\nexport type ${pascal(\n name,\n )}QueryResult = NonNullable<Awaited<ReturnType<${dataType}>>>\nexport type ${pascal(name)}QueryError = ${errorType}\n\n${adapter.shouldGenerateOverrideTypes() ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${adapter.getHookPropsDefinitions(\n props,\n )} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n ${queryInit}\n\n const ${queryResultVarName} = ${camel(\n `${operationPrefix}-${adapter.getQueryType(type)}`,\n )}(${queryInvocationArgs}${queryInvocationSuffix})${adapter.shouldCastQueryResult?.() === false ? '' : ` as ${returnType}`};\n\n ${adapter.getQueryReturnStatement({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n queryResultVarName,\n queryOptionsVarName,\n })}\n}\\n\n${prefetch}\n${\n shouldGenerateInvalidate\n ? `${doc}export const ${invalidateFnName} = async (\\n queryClient: QueryClient, ${queryProps} options?: InvalidateOptions\\n ): Promise<QueryClient> => {\n\n await queryClient.invalidateQueries({ queryKey: ${queryKeyFnName}(${queryKeyProperties}) }, options);\n\n return queryClient;\n}\\n`\n : ''\n}\n${\n shouldGenerateSetQueryData\n ? isReactQuery\n ? `${doc}export const ${setQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n };\n}\\n`\n : `${doc}export const ${setQueryDataFnName} = (queryClient: QueryClient, ${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n}\\n`\n : ''\n}\n${\n shouldGenerateGetQueryData\n ? isReactQuery\n ? `${doc}export const ${getQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\n}\\n`\n : `${doc}export const ${getQueryDataFnName} = (queryClient: QueryClient, ${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\\n`\n : ''\n}\n`;\n};\n\nexport const generateQueryHook = async (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n adapter?: FrameworkAdapter,\n) => {\n if (!adapter) {\n throw new Error('FrameworkAdapter is required for generateQueryHook');\n }\n\n const {\n queryParams,\n operationName,\n body,\n props: _props,\n verb,\n params,\n override,\n mutator,\n response,\n operationId,\n summary,\n deprecated,\n } = verbOptions;\n const {\n route,\n override: { operations },\n context,\n output,\n } = options;\n\n // Use adapter to transform props (Vue wraps with MaybeRef)\n const props = adapter.transformProps(_props);\n\n const query = override.query;\n const isRequestOptions = override.requestOptions !== false;\n const operationQueryOptions = operations[operationId]?.query;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const httpClient = context.output.httpClient;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators: GeneratorMutator[] | undefined;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = [\n operationQueryOptions?.useQuery,\n operationQueryOptions?.useSuspenseQuery,\n operationQueryOptions?.useInfinite,\n operationQueryOptions?.useSuspenseInfiniteQuery,\n ].some(Boolean);\n\n let isQuery =\n (Verbs.GET === verb &&\n [\n override.query.useQuery,\n override.query.useSuspenseQuery,\n override.query.useInfinite,\n override.query.useSuspenseInfiniteQuery,\n ].some(Boolean)) ||\n hasOperationQueryOption;\n\n let isMutation = override.query.useMutation && verb !== Verbs.GET;\n\n if (operationQueryOptions?.useMutation !== undefined) {\n isMutation = operationQueryOptions.useMutation;\n }\n\n // If both query and mutation are true for a non-GET operation, prioritize query\n if (verb !== Verbs.GET && isQuery) {\n isMutation = false;\n }\n\n // If both query and mutation are true for a GET operation, prioritize mutation\n if (verb === Verbs.GET && isMutation) {\n isQuery = false;\n }\n\n if (isQuery) {\n const queryKeyMutator = query.queryKey\n ? await generateMutator({\n output,\n mutator: query.queryKey,\n name: `${operationName}QueryKey`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryOptionsMutator = query.queryOptions\n ? await generateMutator({\n output,\n mutator: query.queryOptions,\n name: `${operationName}QueryOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n // Use adapter to determine how to map props to query properties\n const queryProperties = props\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\n })\n .join(',');\n\n const queries = [\n ...(query.useInfinite || operationQueryOptions?.useInfinite\n ? [\n {\n name: camel(`${operationName}-infinite`),\n options: query.options,\n type: QueryType.INFINITE,\n queryParam: query.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ...(query.useQuery || operationQueryOptions?.useQuery\n ? [\n {\n name: operationName,\n options: query.options,\n type: QueryType.QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query.useSuspenseQuery || operationQueryOptions?.useSuspenseQuery\n ? [\n {\n name: camel(`${operationName}-suspense`),\n options: query.options,\n type: QueryType.SUSPENSE_QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query.useSuspenseInfiniteQuery ||\n operationQueryOptions?.useSuspenseInfiniteQuery\n ? [\n {\n name: camel(`${operationName}-suspense-infinite`),\n options: query.options,\n type: QueryType.SUSPENSE_INFINITE,\n queryParam: query.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ];\n\n const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n let queryKeyFns = '';\n\n if (!queryKeyMutator) {\n for (const queryOption of uniqueQueryOptionsByKeys) {\n const makeOptionalParam = (impl: string) => {\n if (impl.includes('=')) return impl;\n return impl.replace(/^(\\w+):\\s*/, '$1?: ');\n };\n\n const queryKeyProps = toObjectString(\n props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((prop) => ({\n ...prop,\n implementation:\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS\n ? prop.implementation\n : makeOptionalParam(prop.implementation),\n })),\n 'implementation',\n );\n\n const routeString = adapter.getQueryKeyRouteString(\n route,\n !!override.query.shouldSplitQueryKey,\n );\n\n // Use operation ID as query key if enabled, otherwise use route string\n const queryKeyIdentifier = override.query.useOperationIdAsQueryKey\n ? `\"${operationName}\"`\n : routeString;\n\n // Use all params in query key when useOperationIdAsQueryKey=true, otherwise use only query param\n // All params sorted by required first\n const queryKeyParams = props\n .filter((p) =>\n override.query.useOperationIdAsQueryKey\n ? true\n : p.type === GetterPropType.QUERY_PARAM,\n )\n .toSorted((a) => (a.required ? -1 : 1))\n .map((p) => `...(${p.name} ? [${p.name}] : [])`)\n .join(', ');\n\n // Note: do not unref() params in Vue - this will make key lose reactivity\n queryKeyFns += `\n${override.query.shouldExportQueryKey ? 'export ' : ''}const ${queryOption.queryKeyFnName} = (${queryKeyProps}) => {\n return [\n ${[\n queryOption.type === QueryType.INFINITE ||\n queryOption.type === QueryType.SUSPENSE_INFINITE\n ? `'infinite'`\n : '',\n queryKeyIdentifier,\n queryKeyParams,\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n }\n }\n\n implementation += `\n${queryKeyFns}`;\n\n let queryImplementations = '';\n\n for (const queryOption of queries) {\n queryImplementations += generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n }),\n useRuntimeFetcher: override.fetch.useRuntimeFetcher,\n queryOptionsMutator,\n queryKeyMutator,\n route,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n useSetQueryData:\n operationQueryOptions?.useSetQueryData ?? query.useSetQueryData,\n useGetQueryData:\n operationQueryOptions?.useGetQueryData ?? query.useGetQueryData,\n adapter,\n });\n }\n\n implementation += `\n ${queryImplementations}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n let imports: GeneratorImport[] = [];\n\n if (isMutation) {\n const mutationResult = await generateMutationHook({\n verbOptions: { ...verbOptions, props },\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n });\n\n implementation += mutationResult.implementation;\n mutators = mutationResult.mutators\n ? [...(mutators ?? []), ...mutationResult.mutators]\n : mutators;\n imports = mutationResult.imports;\n }\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n generateVerbImports,\n mergeDeep,\n type NormalizedOutputOptions,\n type QueryOptions,\n} from '@orval/core';\n\nimport { getQueryHeader } from './client';\nimport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\nimport { createFrameworkAdapter } from './frameworks';\nimport { generateQueryHook } from './query-generator';\nimport { normalizeQueryOptions } from './utils';\n\nexport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\n\nexport const generateQueryHeader: ClientHeaderBuilder = (params) => {\n return `${\n params.hasAwaitedType\n ? ''\n : `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n }\n${\n params.isRequestOptions && params.isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n${getQueryHeader(params)}\n`;\n};\n\nexport const generateQuery: ClientBuilder = async (\n verbOptions,\n options,\n outputClient,\n) => {\n const isZodOutput =\n typeof options.context.output.schemas === 'object' &&\n options.context.output.schemas.type === 'zod';\n const responseType = verbOptions.response.definition.success;\n const isPrimitiveResponse = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const shouldUseRuntimeValidation =\n verbOptions.override.query.runtimeValidation && isZodOutput;\n\n const normalizedVerbOptions =\n shouldUseRuntimeValidation &&\n !isPrimitiveResponse &&\n verbOptions.response.imports.some((imp) => imp.name === responseType)\n ? {\n ...verbOptions,\n response: {\n ...verbOptions.response,\n imports: verbOptions.response.imports.map((imp) =>\n imp.name === responseType ? { ...imp, values: true } : imp,\n ),\n },\n }\n : verbOptions;\n\n const adapter = createFrameworkAdapter({\n outputClient,\n packageJson: options.context.output.packageJson,\n queryVersion: normalizedVerbOptions.override.query.version,\n });\n\n const imports = generateVerbImports(normalizedVerbOptions);\n const functionImplementation = adapter.generateRequestFunction(\n normalizedVerbOptions,\n options,\n );\n const {\n implementation: hookImplementation,\n imports: hookImports,\n mutators,\n } = await generateQueryHook(\n normalizedVerbOptions,\n options,\n outputClient,\n adapter,\n );\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports: [...imports, ...hookImports],\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n 'angular-query': getAngularQueryDependencies,\n 'solid-query': getSolidQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n options?: QueryOptions;\n output?: NormalizedOutputOptions;\n } = {}) =>\n () => {\n const client: ClientBuilder = (verbOptions, options, outputClient) => {\n if (\n options.override.useNamedParameters &&\n (type === 'vue-query' || outputClient === 'vue-query')\n ) {\n throw new Error(\n `vue-query client does not support named parameters, and had broken reactivity previously, please set useNamedParameters to false; See for context: https://github.com/orval-labs/orval/pull/931#issuecomment-1752355686`,\n );\n }\n\n if (queryOptions) {\n const normalizedQueryOptions = normalizeQueryOptions(\n queryOptions,\n options.context.workspace,\n );\n verbOptions.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n options.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n }\n return generateQuery(verbOptions, options, outputClient, output);\n };\n\n return {\n client: client,\n header: generateQueryHeader,\n dependencies: dependenciesBuilder[type],\n };\n };\n\nexport default builder;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","generateFetchRequestFunction","OutputClientConst"],"sources":["../src/utils.ts","../src/client.ts","../src/dependencies.ts","../src/query-options.ts","../src/frameworks/angular.ts","../src/frameworks/react.ts","../src/frameworks/solid.ts","../src/frameworks/svelte.ts","../src/frameworks/vue.ts","../src/frameworks/index.ts","../src/mutation-generator.ts","../src/query-generator.ts","../src/index.ts"],"sourcesContent":["import nodePath from 'node:path';\nimport { styleText } from 'node:util';\n\nimport {\n type GetterProps,\n GetterPropType,\n isObject,\n isString,\n type Mutator,\n type NormalizedMutator,\n type NormalizedQueryOptions,\n OutputClient,\n type OutputClientFunc,\n type QueryOptions,\n TEMPLATE_TAG_REGEX,\n} from '@orval/core';\n\nexport const normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n): NormalizedQueryOptions => {\n return {\n ...(queryOptions.usePrefetch ? { usePrefetch: true } : {}),\n ...(queryOptions.useInvalidate ? { useInvalidate: true } : {}),\n ...(queryOptions.useSetQueryData ? { useSetQueryData: true } : {}),\n ...(queryOptions.useGetQueryData ? { useGetQueryData: true } : {}),\n ...(queryOptions.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions.queryKey),\n }\n : {}),\n ...(queryOptions.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n const m = mutator as Exclude<Mutator, string>;\n if (!m.path) {\n throw new Error(styleText('red', `Mutator need a path`));\n }\n\n return {\n path: nodePath.resolve(workspace, m.path),\n name: m.name,\n default: m.default ?? !m.name,\n alias: m.alias,\n external: m.external,\n extension: m.extension,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: nodePath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return undefined;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const isSolid = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SOLID_QUERY === client;\n\nexport const isAngular = (client: OutputClient | OutputClientFunc) =>\n OutputClient.ANGULAR_QUERY === client;\n\nexport const isReact = (client: OutputClient | OutputClientFunc) =>\n OutputClient.REACT_QUERY === client;\n\nexport const isSvelte = (client: OutputClient | OutputClientFunc) =>\n OutputClient.SVELTE_QUERY === client;\n\nexport const getQueryTypeForFramework = (type: string): string => {\n // Angular Query and Svelte Query don't have suspense variants, map them to regular queries\n switch (type) {\n case 'suspenseQuery': {\n return 'query';\n }\n case 'suspenseInfiniteQuery': {\n return 'infiniteQuery';\n }\n default: {\n return type;\n }\n }\n};\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n}: {\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal;\n","import {\n type ClientHeaderBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getAngularFilteredParamsCallExpression,\n getAngularFilteredParamsHelperBody,\n getSuccessResponseType,\n type GetterResponse,\n isObject,\n isSyntheticDefaultImportsAllow,\n kebab,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const ANGULAR_HTTP_DEPENDENCIES = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders', values: true },\n { name: 'HttpParams', values: true },\n { name: 'HttpContext' },\n ],\n dependency: '@angular/common/http',\n },\n // Note: 'inject' from @angular/core is already in ANGULAR_QUERY_DEPENDENCIES\n {\n exports: [\n { name: 'lastValueFrom', values: true },\n { name: 'fromEvent', values: true },\n ],\n dependency: 'rxjs',\n },\n {\n exports: [\n { name: 'takeUntil', values: true },\n { name: 'map', values: true },\n ],\n dependency: 'rxjs/operators',\n },\n] as const satisfies readonly GeneratorDependency[];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n isAngularClient = false,\n) => {\n if (\n isAngularClient ||\n options.context.output.httpClient === OutputHttpClient.ANGULAR\n ) {\n return generateAngularHttpRequestFunction(verbOptions, options);\n }\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAngularHttpRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n formData,\n formUrlEncoded,\n override,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n) => {\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some((prop) => prop.name === 'signal');\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n // Handle mutator case\n if (mutator) {\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue: false,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n const propsImplementation = toObjectString(props, 'implementation');\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n } ${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n // Generate native Angular HttpClient implementation\n const queryProps = toObjectString(props, 'implementation').replace(\n /,\\s*$/,\n '',\n );\n const dataType = response.definition.success || 'unknown';\n\n // Build URL with query params - use httpParams to avoid shadowing the 'params' variable\n const hasQueryParams = queryParams?.schema.name;\n // The queryParams variable from function props is always named 'params'\n const filteredParamsExpression = getAngularFilteredParamsCallExpression(\n 'params',\n queryParams?.requiredNullableKeys,\n );\n const urlConstruction = hasQueryParams\n ? `const httpParams = params ? new HttpParams({ fromObject: ${filteredParamsExpression} }) : undefined;\n const url = \\`${route}\\`;`\n : `const url = \\`${route}\\`;`;\n\n // Build request options\n const httpOptions: string[] = [];\n if (hasQueryParams) {\n httpOptions.push('params: httpParams');\n }\n if (headers) {\n httpOptions.push('headers: new HttpHeaders(headers)');\n }\n\n // Use only success response content types to determine responseType\n // (response.contentTypes includes error responses which may be JSON and would\n // incorrectly prevent text/blob responseType from being set)\n const successResponseType = getSuccessResponseType(response);\n const responseTypeOption = successResponseType\n ? `'${successResponseType}'`\n : undefined;\n if (responseTypeOption) {\n httpOptions.push(`responseType: ${responseTypeOption}`);\n }\n\n const optionsStr =\n httpOptions.length > 0 ? `, { ${httpOptions.join(', ')} }` : '';\n\n // Build the HTTP method call\n let httpCall: string;\n const httpGeneric = responseTypeOption ? '' : `<${dataType}>`;\n const bodyArg =\n isFormData && body.formData\n ? 'formData'\n : isFormUrlEncoded && body.formUrlEncoded\n ? 'formUrlEncoded'\n : body.definition\n ? toObjectString([body], 'implementation').replace(/,\\s*$/, '')\n : '';\n\n switch (verb) {\n case 'get':\n case 'head': {\n httpCall = `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n case 'delete': {\n httpCall = bodyArg\n ? `http.${verb}${httpGeneric}(url, { ${httpOptions.length > 0 ? httpOptions.join(', ') + ', ' : ''}body: ${bodyArg} })`\n : `http.${verb}${httpGeneric}(url${optionsStr})`;\n break;\n }\n default: {\n // post, put, patch\n httpCall = `http.${verb}${httpGeneric}(url, ${bodyArg || 'undefined'}${optionsStr})`;\n break;\n }\n }\n\n // Detect if Zod runtime validation should be applied\n const responseType = response.definition.success;\n const isPrimitiveType = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const hasSchema = response.imports.some((imp) => imp.name === responseType);\n const isZodOutput =\n isObject(context.output.schemas) && context.output.schemas.type === 'zod';\n const isValidateResponse =\n override.query.runtimeValidation &&\n isZodOutput &&\n !isPrimitiveType &&\n hasSchema;\n\n // If validation is enabled, pipe through map(data => Schema.parse(data))\n if (isValidateResponse) {\n const schemaValueRef =\n responseType === 'Error' ? 'ErrorSchema' : responseType;\n httpCall = `${httpCall}.pipe(map(data => ${schemaValueRef}.parse(data)))`;\n }\n\n // For Angular, we use takeUntil with fromEvent to handle AbortSignal cancellation\n // This follows the pattern from TanStack Query Angular documentation\n // Note: signal can be null (from RequestInit), so we accept null | undefined\n const optionsParam = hasSignal\n ? 'options?: { signal?: AbortSignal | null }'\n : '';\n\n // Build additional params after http, handling empty queryProps properly\n const additionalParams = [queryProps, optionsParam]\n .filter(Boolean)\n .join(', ');\n\n // Note: http parameter is passed from the inject* function which has injection context\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\n http: HttpClient${additionalParams ? `,\\n ${additionalParams}` : ''}\n ): Promise<${dataType}> => {\n ${bodyForm}\n ${urlConstruction}\n const request$ = ${httpCall};\n if (options?.signal) {\n return lastValueFrom(request$.pipe(takeUntil(fromEvent(options.signal, 'abort'))));\n }\n return lastValueFrom(request$);\n }\n`;\n};\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n });\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = _props.some((prop) => prop.name === 'signal');\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n hasSignalParam,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(String.raw`(\\w*):\\s?${bodyDefinition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n if (mutator.isHook) {\n const ret = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return useCallback((\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${getSignalDefinition({ hasSignal, hasSignalParam })}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n hasSignalParam,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n hasSignalParam,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n hasSignalParam = false,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return getSignalDefinition({ hasSignal, hasSignalParam });\n};\n\nexport const getSignalDefinition = ({\n hasSignal,\n hasSignalParam = false,\n}: {\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}): string => {\n if (!hasSignal) {\n return '';\n }\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n return `${signalVar}?: AbortSignal\\n`;\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n return `axios?: AxiosRequestConfig`;\n }\n if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n return 'fetch?: RequestInit, fetcher?: typeof globalThis.fetch';\n }\n return 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n hasSignalParam = false,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n hasSignalParam?: boolean;\n useRuntimeFetcher?: boolean;\n}) => {\n // Use querySignal if API has a param named \"signal\" to avoid conflict\n const signalVar = hasSignalParam ? 'querySignal' : 'signal';\n // Only use explicit `signal: querySignal` when there's a naming conflict\n const signalProp = hasSignalParam ? `signal: ${signalVar}` : 'signal';\n\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n if (!hasSignal) {\n return `${options}${fetcherArg}`;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes\n ? `...(${signalVar} ? { ${signalProp} } : {})`\n : signalProp\n }, ...${options} }${fetcherArg}`;\n }\n\n // For Angular mutators with hasSecondArg, pass http through options parameter\n // http is injected in the queryOptionsFn and passed here as the second arg to the mutator\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n if (!hasSignal) {\n return 'http';\n }\n return `http, ${signalVar}`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n // Axios and Angular mutators: signal is a separate argument\n // Fetch mutators: signal is wrapped in options object\n return httpClient === OutputHttpClient.AXIOS ||\n httpClient === OutputHttpClient.ANGULAR\n ? `requestOptions, ${signalVar}`\n : `{ ${signalProp}, ...requestOptions }`;\n }\n\n if (hasSignal) {\n // Axios: signal is always separate\n // Angular with mutator: signal is separate (mutator pattern)\n // Angular without mutator: signal is wrapped (native pattern)\n // Fetch/other: signal is wrapped\n if (httpClient === OutputHttpClient.AXIOS) {\n return signalVar;\n }\n if (httpClient === OutputHttpClient.ANGULAR && mutator) {\n return signalVar;\n }\n return `{ ${signalProp} }`;\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher = false,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n useRuntimeFetcher?: boolean;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n if (httpClient === OutputHttpClient.AXIOS) {\n value += ', axios: axiosOptions';\n } else if (httpClient === OutputHttpClient.FETCH && useRuntimeFetcher) {\n value += ', fetch: fetchOptions, fetcher: fetcherFn';\n } else {\n value += ', fetch: fetchOptions';\n }\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n const fetcherOption =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcher: fetcherFn'\n : '';\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : `, fetch: fetchOptions${fetcherOption}`;\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n useRuntimeFetcher?: boolean,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n const fetcherArg =\n httpClient === OutputHttpClient.FETCH && useRuntimeFetcher\n ? ', fetcherFn'\n : '';\n\n // For Angular mutators with hasSecondArg, pass http (which is injected in inject* fn)\n // http is required as first param so no assertion needed\n if (mutator?.hasSecondArg && httpClient === OutputHttpClient.ANGULAR) {\n return 'http';\n }\n\n return isRequestOptions\n ? mutator\n ? mutator.hasSecondArg\n ? 'requestOptions'\n : ''\n : `${options}${fetcherArg}`\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n isAngular = false,\n hasMutator = false,\n) => {\n const result =\n isVue && httpClient === OutputHttpClient.FETCH && queryProperties\n ? queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',')\n : queryProperties;\n\n // For Angular, prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used - mutator handles HTTP client internally\n // http is required as first param so no assertion needed\n if ((isAngular || httpClient === OutputHttpClient.ANGULAR) && !hasMutator) {\n return result ? `http, ${result}` : 'http';\n }\n\n return result;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n if (params.output.httpClient === OutputHttpClient.FETCH) {\n return generateFetchHeader(params);\n }\n\n if (params.output.httpClient === OutputHttpClient.ANGULAR) {\n const relevantVerbs = params.tag\n ? Object.values(params.verbOptions).filter(\n (verbOption) => kebab(verbOption.tags[0] ?? 'default') === params.tag,\n )\n : Object.values(params.verbOptions);\n const hasQueryParams = relevantVerbs.some((v) => v.queryParams);\n\n return hasQueryParams ? getAngularFilteredParamsHelperBody() : '';\n }\n\n return '';\n};\n","import {\n type ClientDependenciesBuilder,\n compareVersions,\n type GeneratorDependency,\n OutputHttpClient,\n type PackageJson,\n} from '@orval/core';\n\nimport { ANGULAR_HTTP_DEPENDENCIES, AXIOS_DEPENDENCIES } from './client';\n\nexport const REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nexport const PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'qs',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n ],\n dependency: 'qs',\n },\n];\n\nconst SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n {\n name: 'UseInfiniteQueryOptions',\n },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryStoreResult' },\n { name: 'UseInfiniteQueryStoreResult' },\n { name: 'QueryKey' },\n { name: 'CreateMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@sveltestack/svelte-query',\n },\n];\nconst SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'createQuery', values: true },\n { name: 'createInfiniteQuery', values: true },\n { name: 'createMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'MutationFunctionContext' },\n { name: 'CreateMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/svelte-query',\n },\n];\n\nexport const isSvelteQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasSvelteQuery =\n packageJson?.dependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.devDependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.peerDependencies?.['@sveltestack/svelte-query'];\n const hasSvelteQueryV4 =\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query'];\n\n return !!hasSvelteQuery && !hasSvelteQueryV4;\n};\n\nexport const isSvelteQueryV6 = (packageJson: PackageJson | undefined) => {\n return isQueryV6(packageJson, 'svelte-query');\n};\n\nexport const getSvelteQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasSvelteQueryV3 = isSvelteQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasSvelteQueryV3\n ? SVELTE_QUERY_DEPENDENCIES_V3\n : SVELTE_QUERY_DEPENDENCIES),\n ];\n};\n\nconst REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'UseMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'react-query',\n },\n];\nconst REACT_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useSuspenseQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useSuspenseInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'DefinedInitialDataOptions' },\n { name: 'UndefinedInitialDataOptions' },\n { name: 'UseSuspenseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseSuspenseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'MutationFunctionContext' },\n { name: 'UseQueryResult' },\n { name: 'DefinedUseQueryResult' },\n { name: 'UseSuspenseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'DefinedUseInfiniteQueryResult' },\n { name: 'UseSuspenseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'InfiniteData' },\n { name: 'UseMutationResult' },\n { name: 'DataTag' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/react-query',\n },\n];\n\nexport const getReactQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient,\n hasTagsMutator,\n override,\n) => {\n const hasReactQuery =\n packageJson?.dependencies?.['react-query'] ??\n packageJson?.devDependencies?.['react-query'] ??\n packageJson?.peerDependencies?.['react-query'];\n const hasReactQueryV4 =\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query'];\n\n const queryVersion = override?.query.version;\n const useReactQueryV3 =\n queryVersion === undefined\n ? hasReactQuery && !hasReactQueryV4\n : queryVersion <= 3;\n\n return [\n ...(hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : []),\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(useReactQueryV3\n ? REACT_QUERY_DEPENDENCIES_V3\n : REACT_QUERY_DEPENDENCIES),\n ];\n};\n\nconst VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n ],\n dependency: 'vue-query',\n },\n {\n exports: [\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'UseMutationReturnType' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'vue-query/types',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n {\n exports: [{ name: 'UseQueryReturnType' }],\n dependency: 'vue-query/lib/vue/useBaseQuery',\n },\n];\n\nconst VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'UseQueryReturnType' },\n { name: 'UseInfiniteQueryReturnType' },\n { name: 'InfiniteData' },\n { name: 'UseMutationReturnType' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/vue-query',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'MaybeRef' },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n];\n\nconst getSolidQueryImports = (\n prefix: 'use' | 'create',\n): GeneratorDependency[] => {\n const capitalized = prefix === 'use' ? 'Use' : 'Create';\n return [\n {\n exports: [\n { name: `${prefix}Query`, values: true },\n { name: `${prefix}InfiniteQuery`, values: true },\n { name: `${prefix}Mutation`, values: true },\n { name: `${capitalized}QueryOptions` },\n { name: `${capitalized}InfiniteQueryOptions` },\n { name: `${capitalized}MutationOptions` },\n { name: 'SolidQueryOptions' },\n { name: 'SolidInfiniteQueryOptions' },\n { name: 'SolidMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: `${capitalized}QueryResult` },\n { name: `${capitalized}InfiniteQueryResult` },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: `${capitalized}MutationResult` },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/solid-query',\n },\n ];\n};\n\nconst ANGULAR_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'injectQuery', values: true },\n { name: 'injectInfiniteQuery', values: true },\n { name: 'injectMutation', values: true },\n { name: 'InjectQueryOptions' },\n { name: 'InjectMutationOptions' },\n { name: 'CreateQueryOptions' },\n { name: 'CreateInfiniteQueryOptions' },\n { name: 'CreateMutationOptions' },\n { name: 'MutationFunctionContext' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient', values: true },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/angular-query-experimental',\n },\n {\n exports: [\n { name: 'inject', values: true },\n { name: 'Signal' },\n { name: 'computed', values: true },\n ],\n dependency: '@angular/core',\n },\n];\n\nexport const isVueQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasVueQuery =\n packageJson?.dependencies?.['vue-query'] ??\n packageJson?.devDependencies?.['vue-query'] ??\n packageJson?.peerDependencies?.['vue-query'];\n const hasVueQueryV4 =\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query'];\n\n return !!hasVueQuery && !hasVueQueryV4;\n};\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasVueQueryV3 = isVueQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),\n ];\n};\n\nexport const getSolidQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...getSolidQueryImports(\n isSolidQueryWithUsePrefix(packageJson) ? 'use' : 'create',\n ),\n ];\n};\n\nexport const getAngularQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n // Always use Angular HTTP dependencies for Angular httpClient\n // Previously skipped for mutators, but we now inject http everywhere\n const useAngularHttp = httpClient === OutputHttpClient.ANGULAR;\n const useAxios = !hasGlobalMutator && httpClient === OutputHttpClient.AXIOS;\n\n return [\n ...(useAngularHttp ? ANGULAR_HTTP_DEPENDENCIES : []),\n ...(useAxios ? AXIOS_DEPENDENCIES : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...ANGULAR_QUERY_DEPENDENCIES,\n ];\n};\n\nexport const isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.0.0');\n};\n\nconst isQueryV6 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nexport const isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports DataTag\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.62.0');\n};\n\nexport const isQueryV5WithRequiredContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.14.1');\n};\n\nexport const isQueryV5WithMutationContextOnSuccess = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.89.0');\n};\n\nexport const isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n // Angular Query is v5 only and supports infinite query options\n if (queryClient === 'angular-query') {\n return true;\n }\n\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.80.0');\n};\n\nexport const isSolidQueryWithUsePrefix = (\n packageJson: PackageJson | undefined,\n) => {\n const version = getPackageByQueryClient(packageJson, 'solid-query');\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n // https://github.com/TanStack/query/blob/v5.71.5/packages/solid-query/src/index.ts\n return compareVersions(withoutRc, '5.71.5');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n const pkgName = '@tanstack/react-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'svelte-query': {\n const pkgName = '@tanstack/svelte-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'vue-query': {\n const pkgName = '@tanstack/vue-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'angular-query': {\n const pkgName = '@tanstack/angular-query-experimental';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n case 'solid-query': {\n const pkgName = '@tanstack/solid-query';\n return (\n packageJson?.resolvedVersions?.[pkgName] ??\n packageJson?.dependencies?.[pkgName] ??\n packageJson?.devDependencies?.[pkgName] ??\n packageJson?.peerDependencies?.[pkgName]\n );\n }\n }\n};\n","import {\n type GeneratorMutator,\n type GetterParams,\n type GetterQueryParam,\n isObject,\n pascal,\n stringify,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport type { FrameworkAdapter } from './framework-adapter';\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nexport const QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nexport const generateQueryOptions = ({\n params,\n options,\n type,\n adapter,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n adapter?: FrameworkAdapter;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n type !== QueryType.INFINITE &&\n type !== QueryType.SUSPENSE_INFINITE &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n const enabledOption = adapter\n ? adapter.generateEnabledOption(params, options)\n : !isObject(options) || !Object.hasOwn(options, 'enabled')\n ? `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : '';\n\n return `${enabledOption}${queryConfig} ...queryOptions`;\n};\n\nexport const isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nexport const getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n adapter,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n /** 'Use' or 'Create' — from adapter.getQueryOptionsDefinitionPrefix() */\n prefix: string;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n adapter?: FrameworkAdapter;\n}) => {\n const isMutatorHook = mutator?.isHook;\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n\n // Use adapter's custom options type name for return types if available\n const optionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName(\n type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE\n ? 'infiniteQuery'\n : 'query',\n )\n : undefined;\n\n const optionType = optionsTypeName\n ? `${optionsTypeName}<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`\n : `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }>`;\n\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n // Mutation options\n const mutationOptionsTypeName =\n isReturnType && adapter?.getOptionsReturnTypeName\n ? adapter.getOptionsReturnTypeName('mutation')\n : undefined;\n\n return mutationOptionsTypeName\n ? `${mutationOptionsTypeName}<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`\n : `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n","import {\n camel,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n GetterPropType,\n OutputClient,\n type OutputHttpClient,\n toObjectString,\n} from '@orval/core';\n\nimport {\n generateAngularHttpRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n PrefetchContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition, QueryType } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createAngularAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = 'Create';\n\n return {\n outputClient: OutputClient.ANGULAR_QUERY,\n hookPrefix: 'inject',\n isAngularHttp: true,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n // Angular: allow params to be a getter function for reactive signal support\n return toObjectString(\n props.map((prop) => {\n const getterType = prop.definition.replace(\n /^(\\w+)(\\??): (.+)$/,\n (\n _match: string,\n name: string,\n optional: string,\n type: string,\n ): string =>\n `${name}${optional}: ${type} | (() => ${type.replace(' | undefined', '')}${optional ? ' | undefined' : ''})`,\n );\n return { ...prop, definition: getterType };\n }),\n 'definition',\n );\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n _httpClient: OutputHttpClient,\n hasMutator: boolean,\n ): string {\n // Prefix with http since request functions take HttpClient as first param\n // Skip when custom mutator is used\n if (!hasMutator) {\n return queryProperties ? `http, ${queryProperties}` : 'http';\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(\n props: GetterProps,\n queryParam: string,\n hasMutator: boolean,\n ): string {\n let result = props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n\n // Prefix with http for infinite queries\n // Skip when custom mutator is used\n if (!hasMutator) {\n result = result ? `http, ${result}` : 'http';\n }\n\n return result;\n },\n\n getHttpFirstParam(mutator?: GeneratorMutator): string {\n if (!mutator || mutator.hasSecondArg) {\n return 'http: HttpClient, ';\n }\n return '';\n },\n\n getMutationHttpPrefix(mutator?: GeneratorMutator): string {\n if (!mutator) {\n return 'http, ';\n }\n return '';\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `CreateQueryResult<TData, TError>`;\n }\n return `CreateInfiniteQueryResult<TData, TError>`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n }: QueryReturnStatementContext): string {\n return `return ${queryResultVarName};`;\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Angular skips DataTag annotation\n return false;\n },\n\n generateQueryInit({ mutator }: QueryInitContext): string {\n // Angular: inject HttpClient if needed, no queryOptions assignment\n if (!mutator || mutator.hasSecondArg) {\n return `const http = inject(HttpClient);`;\n }\n return '';\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n mutator,\n }: QueryInvocationContext): string {\n // Angular: () => { resolve getters; return options(http, ...); }\n return `() => {${\n props.length > 0\n ? `\n // Resolve params if getter function (for signal reactivity)\n ${props.map((p) => `const _${p.name} = typeof ${p.name} === 'function' ? ${p.name}() : ${p.name};`).join('\\n ')}`\n : ''\n }\n // Resolve options if getter function (for signal reactivity)\n const _options = typeof ${isRequestOptions ? 'options' : 'queryOptions'} === 'function' ? ${isRequestOptions ? 'options' : 'queryOptions'}() : ${isRequestOptions ? 'options' : 'queryOptions'};\n return ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http' : ''}${props.length > 0 ? `${!mutator || mutator.hasSecondArg ? ', ' : ''}${props.map((p) => `_${p.name}`).join(', ')}` : ''}, _options);\n }`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Angular never has optional queryClient argument (it injects it)\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n // For Angular inject* functions (query hooks, not queryOptions or mutations),\n // allow options to be a getter for reactivity.\n // Inject style applies when type is defined (it's a query hook) and not forQueryOptions.\n const forAngularInject = type !== undefined && !forQueryOptions;\n if (forAngularInject) {\n return `options${isQueryRequired ? '' : '?'}: ${optionsType} | (() => ${optionsType})\\n`;\n }\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n }: MutationHookBodyContext): string {\n if (!mutator || mutator.hasSecondArg) {\n return ` const http = inject(HttpClient);${hasInvalidation ? '\\n const queryClient = inject(QueryClient);' : ''}\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(http${hasInvalidation ? ', queryClient' : ''}${isRequestOptions ? ', options' : ', mutationOptions'});\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n }\n\n const mutationImpl = `${mutationOptionsFnName}(${hasInvalidation ? `queryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n return ` const ${mutationOptionsVarName} = ${mutationImpl};\n\n return ${operationPrefix}Mutation(() => ${mutationOptionsVarName});`;\n },\n\n getQueryType(type: string): string {\n return getQueryTypeForFramework(type);\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return generateAngularHttpRequestFunction(verbOptions, options);\n },\n\n generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n doc,\n queryProps,\n dataType,\n errorType,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n }: PrefetchContext): string {\n const shouldGeneratePrefetch =\n usePrefetch &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n\n if (!shouldGeneratePrefetch) {\n return '';\n }\n\n const prefetchType =\n type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY\n ? 'query'\n : 'infinite-query';\n const prefetchFnName = camel(`prefetch-${prefetchType}`);\n const prefetchVarName = camel(\n `prefetch-${operationName}-${prefetchType}`,\n );\n\n // Angular: plain async function with http param (no React hooks like useQueryClient/useCallback)\n const httpParam =\n !mutator || mutator.hasSecondArg ? 'http: HttpClient, ' : '';\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${httpParam}${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${!mutator || mutator.hasSecondArg ? 'http, ' : ''}${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n if (${queryOptionsVarName}.enabled === false) {\n return queryClient;\n }\n\n await queryClient.${prefetchFnName}(${queryOptionsVarName});\n\n return queryClient;\n}\\n`;\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { isSuspenseQuery } from '../query-options';\n\nexport const createReactAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.REACT_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryReturnType({\n type,\n isInitialDataDefined,\n }: QueryReturnTypeContext): string {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n shouldGenerateOverrideTypes(): boolean {\n return hasQueryV5;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n OutputClient,\n OutputHttpClient,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\n\nexport const createSolidAdapter = ({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix,\n}: {\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n hasSolidQueryUsePrefix: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.SOLID_QUERY,\n hookPrefix: hasSolidQueryUsePrefix ? 'use' : 'create',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getQueryOptionsDefinitionPrefix(): string {\n return hasSolidQueryUsePrefix ? 'Use' : 'Create';\n },\n\n getOptionsReturnTypeName(\n type: 'query' | 'infiniteQuery' | 'mutation',\n ): string | undefined {\n // Solid Query uses SolidQueryOptions for queries, SolidInfiniteQueryOptions for infinite queries,\n // and SolidMutationOptions for mutations (these are accessors)\n if (type === 'mutation') return 'SolidMutationOptions';\n if (type === 'infiniteQuery') return 'SolidInfiniteQueryOptions';\n return 'SolidQueryOptions';\n },\n\n getQueryKeyPrefix(): string {\n // Solid Query v5 doesn't support accessing queryKey from queryOptions\n // The queryKey must be generated directly from the params\n return '';\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Solid Query works with accessor functions\n // The queryKey is accessed from within the accessor, not annotated on the return type\n return false;\n },\n\n shouldCastQueryResult(): boolean {\n // Solid Query should not cast the query result because it breaks TypeScript's\n // ability to discriminate between overloads based on initialData\n return false;\n },\n\n shouldCastQueryOptions(): boolean {\n // Solid Query should not cast the query options return type because it prevents\n // TypeScript from properly discriminating between defined and undefined initialData\n return false;\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `${prefix}QueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n }\n return `${prefix}InfiniteQueryResult<TData, TError> & { queryKey: ${queryKeyType} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n const prefix = hasSolidQueryUsePrefix ? 'Use' : 'Create';\n return `: ${prefix}MutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n // Use Object.assign to attach queryKey to the result and cast to any to satisfy TypeScript\n // The type is properly enforced by the function signature\n return `return Object.assign(${queryResultVarName}, { queryKey: ${queryOptionsVarName}.queryKey }) as any;`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n // Solid Query requires options to be wrapped in an arrow function for reactivity\n const optionsArg = isRequestOptions ? 'options' : 'queryOptions';\n const args = queryProperties\n ? `${queryProperties},${optionsArg}`\n : optionsArg;\n return `() => ${queryOptionsFnName}(${args})${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Solid is NOT in the list of frameworks supporting mutation invalidation\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n // Solid Query mutations also need to be wrapped in accessor functions\n return ` return ${operationPrefix}Mutation(() => ${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n getOptionalQueryClientArgument(): string {\n // Solid Query expects queryClient to be an Accessor: () => QueryClient\n return ', queryClient?: () => QueryClient';\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n});\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterProps,\n OutputClient,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport {\n generateAxiosRequestFunction,\n getQueryArgumentsRequestType,\n} from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryInitContext,\n QueryInvocationContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { getQueryTypeForFramework } from '../utils';\n\nexport const createSvelteAdapter = ({\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => {\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n\n return {\n outputClient: OutputClient.SVELTE_QUERY,\n hookPrefix: hasSvelteQueryV4 ? 'create' : 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n getHookPropsDefinitions(props: GetterProps): string {\n if (hasSvelteQueryV6) {\n return toObjectString(\n props.map((p) => ({\n ...p,\n definition: p.definition.replace(':', ': () => '),\n })),\n 'definition',\n );\n }\n return toObjectString(props, 'implementation');\n },\n\n getQueryReturnType({\n type,\n isMutatorHook,\n operationName,\n }: QueryReturnTypeContext): string {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n if (hasSvelteQueryV6) {\n return `return ${queryResultVarName}`;\n }\n if (hasSvelteQueryV4) {\n return `${queryResultVarName}.queryKey = ${queryOptionsVarName}.queryKey;\n\n return ${queryResultVarName};`;\n }\n // Svelte v3 - same as default\n return `return { ...${queryResultVarName}, queryKey: ${queryOptionsVarName}.queryKey };`;\n },\n\n generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n }: QueryInitContext): string {\n if (hasSvelteQueryV6) {\n return '';\n }\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n isRequestOptions,\n queryOptionsVarName,\n optionalQueryClientArgument,\n }: QueryInvocationContext): string {\n if (hasSvelteQueryV6) {\n return `() => ${queryOptionsFnName}(${toObjectString(\n props.map((p) => ({\n ...p,\n name: p.default || !p.required ? `${p.name}?.()` : `${p.name}()`,\n })),\n 'name',\n )}${isRequestOptions ? 'options?.()' : 'queryOptions?.()'})`;\n }\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getQueryInvocationSuffix(): string {\n return hasSvelteQueryV6 ? `, queryClient` : '';\n },\n\n getOptionalQueryClientArgument(hasInvalidation?: boolean): string {\n if (hasSvelteQueryV6) {\n return `, queryClient?: () => QueryClient`;\n }\n if (hasQueryV5 || hasInvalidation) {\n return ', queryClient?: QueryClient';\n }\n return '';\n },\n\n getQueryOptionsDefinitionPrefix(): string {\n return prefix;\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n forQueryOptions = false,\n hasInvalidation,\n useRuntimeFetcher,\n }): string {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${hasSvelteQueryV6 && !forQueryOptions ? '() => ' : ''}${optionsType}\\n`;\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n }): string {\n if (hasSvelteQueryV6) {\n return `${mutationOptionsFnName}(${hasInvalidation ? `backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n }?.())`;\n }\n return `${mutationOptionsFnName}(${hasInvalidation ? `queryClient ?? backupQueryClient, ` : ''}${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n return true;\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n hasInvalidation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n if (hasSvelteQueryV6) {\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient(${optionalQueryClientArgument ? 'queryClient?.()' : ''});\\n ` : ''}return ${operationPrefix}Mutation(() => ({ ...${mutationImplementation} })${optionalQueryClientArgument ? `, queryClient` : ''});`;\n }\n // Svelte v4/v5\n return ` ${hasInvalidation ? `const backupQueryClient = useQueryClient();\\n ` : ''}return ${operationPrefix}Mutation(${mutationImplementation});`;\n },\n\n getQueryType(type: string): string {\n if (hasSvelteQueryV4) {\n return getQueryTypeForFramework(type);\n }\n return type;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, false)\n : generateFetchRequestFunction(verbOptions, options);\n },\n };\n};\n","import {\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n OutputClient,\n OutputHttpClient,\n pascal,\n} from '@orval/core';\nimport { generateRequestFunction as generateFetchRequestFunction } from '@orval/fetch';\n\nimport { generateAxiosRequestFunction } from '../client';\nimport type {\n FrameworkAdapterConfig,\n MutationHookBodyContext,\n MutationReturnTypeContext,\n QueryReturnStatementContext,\n QueryReturnTypeContext,\n} from '../framework-adapter';\nimport { QueryType } from '../query-options';\nimport { vueUnRefParams, vueWrapTypeWithMaybeRef } from '../utils';\n\nexport const createVueAdapter = ({\n hasVueQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n}: {\n hasVueQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n hasQueryV5WithMutationContextOnSuccess: boolean;\n hasQueryV5WithRequiredContextOnSuccess: boolean;\n}): FrameworkAdapterConfig => ({\n outputClient: OutputClient.VUE_QUERY,\n hookPrefix: 'use',\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess,\n\n transformProps(props: GetterProps): GetterProps {\n return vueWrapTypeWithMaybeRef(props);\n },\n\n shouldDestructureNamedPathParams(): boolean {\n // Vue keeps param.name for named path params (doesn't destructure)\n return false;\n },\n\n getHttpFunctionQueryProps(\n queryProperties: string,\n httpClient: OutputHttpClient,\n ): string {\n // Vue with fetch: unref each prop\n if (httpClient === OutputHttpClient.FETCH && queryProperties) {\n return queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',');\n }\n return queryProperties;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string): string {\n return props\n .map((param) => {\n // Vue does NOT destructure named path params (keeps param.name)\n return param.name === 'params'\n ? `{...unref(params), '${queryParam}': pageParam || unref(params)?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n getQueryReturnType({ type }: QueryReturnTypeContext): string {\n if (!hasVueQueryV4) {\n return ` UseQueryReturnType<TData, TError, Use${pascal(\n type,\n )}Result<TData, TError>> & { queryKey: QueryKey }`;\n }\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `UseQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n\n return `UseInfiniteQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n },\n\n getMutationReturnType({\n dataType,\n variableType,\n }: MutationReturnTypeContext): string {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n },\n\n getQueryReturnStatement({\n queryResultVarName,\n queryOptionsVarName,\n }: QueryReturnStatementContext): string {\n const queryKeyType = hasQueryV5\n ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>`\n : 'QueryKey';\n return `${queryResultVarName}.queryKey = unref(${queryOptionsVarName}).queryKey as ${queryKeyType};\n\n return ${queryResultVarName};`;\n },\n\n getQueryKeyRouteString(route: string): string {\n // Vue always uses getRouteAsArray for reactivity\n return getRouteAsArray(route);\n },\n\n shouldAnnotateQueryKey(): boolean {\n // Vue skips DataTag annotation\n return false;\n },\n\n getUnrefStatements(props: GetterProps): string {\n return vueUnRefParams(\n props.filter((prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS),\n );\n },\n\n generateEnabledOption(\n params: GetterParams,\n options?: object | boolean,\n ): string {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`;\n }\n return '';\n },\n\n getQueryKeyPrefix(): string {\n return hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? ';\n },\n\n generateMutationImplementation({\n mutationOptionsFnName,\n isRequestOptions,\n }): string {\n return `${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n })`;\n },\n\n supportsMutationInvalidation(): boolean {\n // Vue is NOT in the list: isAngularClient || isReact(outputClient) || isSvelte(outputClient)\n return false;\n },\n\n generateMutationOnSuccess(): string {\n return '';\n },\n\n generateMutationHookBody({\n operationPrefix,\n mutationImplementation,\n optionalQueryClientArgument,\n }: MutationHookBodyContext): string {\n return ` return ${operationPrefix}Mutation(${mutationImplementation}${optionalQueryClientArgument ? `, queryClient` : ''});`;\n },\n\n generateRequestFunction(\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n ): string {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, true)\n : generateFetchRequestFunction(verbOptions, options);\n },\n\n getQueryPropertyForProp(\n prop: GetterProp,\n body: { implementation: string },\n ): string {\n // Vue does NOT destructure named path params (keeps param.name for reactivity)\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n});\n","import {\n getRouteAsArray,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n isObject,\n type OutputClient,\n OutputClient as OutputClientConst,\n type OutputClientFunc,\n type PackageJson,\n toObjectString,\n} from '@orval/core';\n\nimport { getQueryArgumentsRequestType } from '../client';\nimport {\n isQueryV5,\n isQueryV5WithDataTagError,\n isQueryV5WithInfiniteQueryOptionsError,\n isQueryV5WithMutationContextOnSuccess,\n isQueryV5WithRequiredContextOnSuccess,\n isSolidQueryWithUsePrefix,\n isSvelteQueryV3,\n isSvelteQueryV6,\n isVueQueryV3,\n} from '../dependencies';\nimport type {\n FrameworkAdapter,\n FrameworkAdapterConfig,\n MutationOnSuccessContext,\n} from '../framework-adapter';\nimport { getQueryOptionsDefinition } from '../query-options';\nimport { createAngularAdapter } from './angular';\nimport { createReactAdapter } from './react';\nimport { createSolidAdapter } from './solid';\nimport { createSvelteAdapter } from './svelte';\nimport { createVueAdapter } from './vue';\n\n/** Fill in defaults for fields that most adapters leave empty or share a common implementation. */\nconst withDefaults = (adapter: FrameworkAdapterConfig): FrameworkAdapter => ({\n // --- Original defaults (false / empty string) ---\n isAngularHttp: false,\n getHttpFirstParam: () => '',\n getMutationHttpPrefix: () => '',\n getUnrefStatements: () => '',\n getQueryInvocationSuffix: () => '',\n\n // --- Identity / pass-through defaults ---\n transformProps: (props) => props,\n getHttpFunctionQueryProps: (qp) => qp,\n getQueryType: (type) => type,\n\n // --- Boolean defaults ---\n shouldDestructureNamedPathParams: () => true,\n shouldAnnotateQueryKey: () => true,\n shouldGenerateOverrideTypes: () => false,\n shouldCastQueryResult: () => true,\n shouldCastQueryOptions: () => true,\n\n // --- String defaults ---\n getQueryKeyPrefix: () => 'queryOptions?.queryKey ?? ',\n getQueryOptionsDefinitionPrefix: () => 'Use',\n\n // --- Common implementation defaults ---\n getHookPropsDefinitions: (props) => toObjectString(props, 'implementation'),\n\n getQueryKeyRouteString(route, shouldSplitQueryKey) {\n if (shouldSplitQueryKey) {\n return getRouteAsArray(route);\n }\n return `\\`${route}\\``;\n },\n\n generateEnabledOption(params, options) {\n if (!isObject(options) || !Object.hasOwn(options, 'enabled')) {\n return `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`;\n }\n return '';\n },\n\n getQueryPropertyForProp(prop: GetterProp, body: { implementation: string }) {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS)\n return prop.destructured;\n return prop.type === GetterPropType.BODY ? body.implementation : prop.name;\n },\n\n getInfiniteQueryHttpProps(props: GetterProps, queryParam: string) {\n return props\n .map((param) => {\n if (param.type === GetterPropType.NAMED_PATH_PARAMS)\n return param.destructured;\n return param.name === 'params'\n ? `{...params, '${queryParam}': pageParam || params?.['${queryParam}']}`\n : param.name;\n })\n .join(',');\n },\n\n generateQueryInit({ queryOptionsFnName, queryProperties, isRequestOptions }) {\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n return `const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})`;\n },\n\n generateQueryInvocationArgs({\n queryOptionsVarName,\n optionalQueryClientArgument,\n }) {\n return `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`;\n },\n\n getOptionalQueryClientArgument() {\n return adapter.hasQueryV5 ? ', queryClient?: QueryClient' : '';\n },\n\n generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n }) {\n const prefix = adapter.getQueryOptionsDefinitionPrefix?.() ?? 'Use';\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n prefix,\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(\n httpClient,\n mutator,\n useRuntimeFetcher,\n );\n const isQueryRequired = initialData === 'defined';\n const skipInvalidationProp =\n !type && hasInvalidation ? 'skipInvalidation?: boolean, ' : '';\n const optionsType = `{ ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${skipInvalidationProp}${requestType}}`;\n\n return `options${isQueryRequired ? '' : '?'}: ${optionsType}\\n`;\n },\n\n generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall,\n uniqueInvalidates,\n }: MutationOnSuccessContext): string {\n const invalidateCalls = uniqueInvalidates\n .map((t) => generateInvalidateCall(t))\n .join('\\n');\n if (adapter.hasQueryV5WithMutationContextOnSuccess) {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, onMutateResult: TContext, context: MutationFunctionContext) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, onMutateResult, context);\n };`;\n } else {\n if (isRequestOptions) {\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n if (!options?.skipInvalidation) {\n ${invalidateCalls}\n }\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n return ` const onSuccess = (data: Awaited<ReturnType<typeof ${operationName}>>, variables: ${definitions ? `{${definitions}}` : 'void'}, context: TContext${adapter.hasQueryV5WithRequiredContextOnSuccess ? '' : ' | undefined'}) => {\n ${invalidateCalls}\n mutationOptions?.onSuccess?.(data, variables, context);\n };`;\n }\n },\n ...adapter,\n});\n\nexport type QueryClientType =\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n\n/**\n * Create a FrameworkAdapter for the given output client, resolving version flags\n * from the packageJson and query config.\n */\nexport const createFrameworkAdapter = ({\n outputClient,\n packageJson,\n queryVersion,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n packageJson?: PackageJson;\n queryVersion?: number;\n}): FrameworkAdapter => {\n const clientType = outputClient as QueryClientType;\n\n const _hasQueryV5 = queryVersion === 5 || isQueryV5(packageJson, clientType);\n\n const _hasQueryV5WithDataTagError =\n queryVersion === 5 || isQueryV5WithDataTagError(packageJson, clientType);\n\n const _hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(packageJson, clientType);\n const _hasQueryV5WithMutationContextOnSuccess =\n isQueryV5WithMutationContextOnSuccess(packageJson, clientType);\n const _hasQueryV5WithRequiredContextOnSuccess =\n isQueryV5WithRequiredContextOnSuccess(packageJson, clientType);\n\n switch (outputClient) {\n case OutputClientConst.VUE_QUERY: {\n const hasVueQueryV4 = !isVueQueryV3(packageJson) || queryVersion === 4;\n return withDefaults(\n createVueAdapter({\n hasVueQueryV4,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SVELTE_QUERY: {\n const hasSvelteQueryV4 =\n !isSvelteQueryV3(packageJson) || queryVersion === 4;\n const _hasSvelteQueryV6 = isSvelteQueryV6(packageJson);\n return withDefaults(\n createSvelteAdapter({\n hasSvelteQueryV4,\n hasSvelteQueryV6: _hasSvelteQueryV6,\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.ANGULAR_QUERY: {\n return withDefaults(\n createAngularAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n\n case OutputClientConst.SOLID_QUERY: {\n const hasSolidQueryWithUsePrefix = isSolidQueryWithUsePrefix(packageJson);\n return withDefaults(\n createSolidAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n hasSolidQueryUsePrefix: hasSolidQueryWithUsePrefix,\n }),\n );\n }\n\n default: {\n // react-query is the default\n return withDefaults(\n createReactAdapter({\n hasQueryV5: _hasQueryV5,\n hasQueryV5WithDataTagError: _hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError:\n _hasQueryV5WithInfiniteQueryOptionsError,\n hasQueryV5WithMutationContextOnSuccess:\n _hasQueryV5WithMutationContextOnSuccess,\n hasQueryV5WithRequiredContextOnSuccess:\n _hasQueryV5WithRequiredContextOnSuccess,\n }),\n );\n }\n }\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n GetterPropType,\n type InvalidateTarget,\n type InvalidateTargetParam,\n isString,\n type OutputHttpClient,\n pascal,\n} from '@orval/core';\n\nimport {\n getHooksOptionImplementation,\n getMutationRequestArgs,\n getQueryErrorType,\n} from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { getQueryOptionsDefinition } from './query-options';\n\ninterface NormalizedTarget {\n query: string;\n params?: InvalidateTargetParam[] | Record<string, InvalidateTargetParam>;\n invalidateMode: 'invalidate' | 'reset';\n file?: string;\n}\n\nconst normalizeInvalidateMode = (\n invalidateMode: string | undefined,\n): NormalizedTarget['invalidateMode'] =>\n invalidateMode === 'reset' ? 'reset' : 'invalidate';\n\nconst normalizeTarget = (target: InvalidateTarget): NormalizedTarget =>\n isString(target)\n ? { query: target, invalidateMode: 'invalidate' }\n : {\n ...target,\n invalidateMode: normalizeInvalidateMode(target.invalidateMode),\n };\n\nconst serializeTarget = (target: NormalizedTarget): string =>\n JSON.stringify({\n query: target.query,\n params: target.params ?? [],\n invalidateMode: target.invalidateMode,\n file: target.file ?? '',\n });\n\nconst HTTP_METHODS = [\n 'get',\n 'post',\n 'put',\n 'delete',\n 'patch',\n 'options',\n 'head',\n 'trace',\n];\n\ninterface OperationRouteInfo {\n route: string;\n /** true when the route has path params that lack a default value */\n hasRequiredPathParams: boolean;\n}\n\ninterface SpecPathItem {\n parameters?: SpecParameter[];\n [method: string]: unknown;\n}\n\ninterface SpecOperation {\n operationId?: string;\n parameters?: SpecParameter[];\n}\n\ninterface SpecParameter {\n in?: string;\n default?: unknown;\n schema?: { default?: unknown };\n}\n\n/**\n * Look up an operation's route and path-parameter metadata from the OpenAPI\n * spec. Matches against both the raw `operationId` and its camelCase form\n * so that renamed/overridden operations are still found.\n */\nconst findOperationInfo = (\n spec: Record<string, unknown> | undefined,\n operationName: string,\n): OperationRouteInfo | undefined => {\n const paths = spec?.paths;\n if (!paths || typeof paths !== 'object') return undefined;\n\n for (const [routePath, rawPathItem] of Object.entries(\n paths as Record<string, unknown>,\n )) {\n if (!rawPathItem || typeof rawPathItem !== 'object') continue;\n const pathItem = rawPathItem as SpecPathItem;\n\n for (const method of HTTP_METHODS) {\n const operation = pathItem[method] as SpecOperation | undefined;\n const opId = operation?.operationId;\n if (!opId) continue;\n // Match both raw operationId and its camelCase generated name\n if (opId !== operationName && camel(opId) !== operationName) continue;\n\n if (!routePath.includes('{')) {\n return { route: routePath, hasRequiredPathParams: false };\n }\n\n // Collect path parameters from both path-level and operation-level\n const pathParams = [\n ...(Array.isArray(pathItem.parameters) ? pathItem.parameters : []),\n ...(Array.isArray(operation.parameters) ? operation.parameters : []),\n ].filter((p) => p.in === 'path');\n\n const hasRequiredPathParams = pathParams.some(\n (p) => p.schema?.default === undefined && p.default === undefined,\n );\n\n return { route: routePath, hasRequiredPathParams };\n }\n }\n return undefined;\n};\n\n/**\n * Extract the static route prefix before the first path parameter.\n * e.g. \"/pets/{petId}\" → \"/pets/\", \"/pets\" → \"/pets\"\n *\n * Returns `undefined` when the prefix contains no meaningful literal\n * segments (e.g. \"/{tenantId}/pets\") to avoid overly-broad invalidation.\n */\nconst getStaticRoutePrefix = (route: string): string | undefined => {\n const idx = route.indexOf('{');\n if (idx === -1) return route;\n const prefix = route.slice(0, idx);\n // Guard: a prefix like \"/\" has no stable literal segment and would\n // match every route-style query key – fall back to the zero-arg call.\n const hasLiteralSegment = prefix\n .split('/')\n .some((segment) => segment.length > 0);\n return hasLiteralSegment ? prefix : undefined;\n};\n\n/**\n * Check whether the target invalidation needs to call the query key function.\n * Returns false when no params are specified and the route has required path\n * parameters (without defaults), meaning we should use predicate-based broad\n * invalidation instead of calling the function without the required arguments.\n */\nconst hasNonEmptyParams = (\n params:\n | InvalidateTargetParam[]\n | Record<string, InvalidateTargetParam>\n | undefined,\n): params is\n | InvalidateTargetParam[]\n | Record<string, InvalidateTargetParam> => {\n if (!params) return false;\n if (Array.isArray(params)) return params.length > 0;\n return Object.keys(params).length > 0;\n};\n\nconst needsQueryKeyFnCall = (\n target: NormalizedTarget,\n spec: Record<string, unknown> | undefined,\n): boolean => {\n if (hasNonEmptyParams(target.params)) return true;\n const info = findOperationInfo(spec, target.query);\n if (info?.hasRequiredPathParams) return false;\n return true;\n};\n\nconst generateParamArg = (param: InvalidateTargetParam): string => {\n if (!isString(param)) {\n return JSON.stringify(param.literal);\n }\n const parts = param.split('.');\n if (parts.length === 1) {\n return `variables.${param}`;\n }\n return `variables.${parts[0]}?.${parts.slice(1).join('?.')}`;\n};\n\nconst generateParamArgs = (\n params: InvalidateTargetParam[] | Record<string, InvalidateTargetParam>,\n): string => {\n if (Array.isArray(params)) {\n return params.map((v) => generateParamArg(v)).join(', ');\n }\n return Object.values(params)\n .map((v) => generateParamArg(v))\n .join(', ');\n};\n\n/**\n * Create a generateInvalidateCall function that has access to the OpenAPI spec\n * for intelligent route-based invalidation when params are not specified.\n */\nconst createGenerateInvalidateCall = (\n spec: Record<string, unknown> | undefined,\n shouldSplitQueryKey: boolean,\n) => {\n return (target: NormalizedTarget): string => {\n const method =\n target.invalidateMode === 'reset' ? 'resetQueries' : 'invalidateQueries';\n const queryKeyFn = camel(`get-${target.query}-query-key`);\n\n if (hasNonEmptyParams(target.params)) {\n const args = generateParamArgs(target.params);\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}(${args}) });`;\n }\n\n // No params specified – check if the target query has required path params\n const info = findOperationInfo(spec, target.query);\n\n if (info?.hasRequiredPathParams) {\n // Route has required path parameters (no defaults) – use broad\n // invalidation instead of calling the query key function without\n // the required arguments.\n const prefix = getStaticRoutePrefix(info.route);\n\n // When the prefix has no meaningful literal segments (e.g. route\n // starts with a path param like /{tenantId}/...), fall through to\n // the zero-arg call rather than generating an overly-broad match.\n if (prefix !== undefined) {\n if (shouldSplitQueryKey) {\n // Split-key mode: query keys are arrays like ['pets', petId].\n // Use partial key matching with static route segments.\n const segments = prefix\n .split('/')\n .filter((s) => s !== '')\n .map((s) => `'${s}'`)\n .join(', ');\n return ` queryClient.${method}({ queryKey: [${segments}] });`;\n }\n\n // Default mode: query keys are template strings like ['/pets/${petId}'].\n // Use predicate with startsWith for broad matching.\n return ` queryClient.${method}({ predicate: (query) => typeof query.queryKey[0] === 'string' && query.queryKey[0].startsWith('${prefix}') });`;\n }\n }\n\n // No path params or route not found – call query key function without args\n return ` queryClient.${method}({ queryKey: ${queryKeyFn}() });`;\n };\n};\n\nexport interface MutationHookContext {\n verbOptions: GeneratorVerbOptions;\n options: GeneratorOptions;\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n doc: string;\n adapter: FrameworkAdapter;\n}\n\nexport const generateMutationHook = async ({\n verbOptions,\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n}: MutationHookContext): Promise<{\n implementation: string;\n mutators: GeneratorMutator[] | undefined;\n imports: GeneratorImport[];\n}> => {\n const {\n operationName,\n body,\n props,\n mutator,\n response,\n operationId,\n override,\n } = verbOptions;\n const { route, context, output } = options;\n const query = override.query;\n\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5: adapter.hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError:\n adapter.hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n adapter,\n });\n\n const invalidatesConfig = (query.mutationInvalidates ?? [])\n .filter((rule) => rule.onMutations.includes(operationName))\n .flatMap((rule) => rule.invalidates)\n .map((t) => normalizeTarget(t));\n const seenTargets = new Set<string>();\n const uniqueInvalidates = invalidatesConfig.filter((target) => {\n const key = serializeTarget(target);\n if (seenTargets.has(key)) return false;\n seenTargets.add(key);\n return true;\n });\n\n const hasInvalidation =\n uniqueInvalidates.length > 0 && adapter.supportsMutationInvalidation();\n\n const useRuntimeFetcher = override.fetch.useRuntimeFetcher;\n\n const mutationArguments = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getMutationOptions function (includes http: HttpClient param for Angular)\n const mutationArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n httpClient,\n forQueryOptions: true,\n hasInvalidation,\n useRuntimeFetcher,\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n useRuntimeFetcher,\n );\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n // For Angular/React mutations with invalidation, add queryClient as second required param\n const queryClientParam = hasInvalidation ? 'queryClient: QueryClient, ' : '';\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${httpFirstParam}${queryClientParam}${mutationArgumentsForOptions}): ${mutationOptionFnReturnType} => {\n\n${hooksOptionImplementation}\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook()`\n : ''\n }\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<${dataType}>>, ${\n definitions ? `{${definitions}}` : 'void'\n }> = (${properties ? 'props' : ''}) => {\n ${properties ? `const {${properties}} = props ?? {};` : ''}\n\n return ${operationName}(${adapter.getMutationHttpPrefix(mutator)}${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator, useRuntimeFetcher)})\n }\n\n${\n hasInvalidation\n ? adapter.generateMutationOnSuccess({\n operationName,\n definitions,\n isRequestOptions,\n generateInvalidateCall: createGenerateInvalidateCall(\n context.spec,\n !!query.shouldSplitQueryKey,\n ),\n uniqueInvalidates,\n })\n : ''\n}\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : hasInvalidation\n ? '{ ...mutationOptions, mutationFn, onSuccess }'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = adapter.hookPrefix;\n\n const optionalQueryClientArgument =\n adapter.getOptionalQueryClientArgument(hasInvalidation);\n\n const mutationImplementation = adapter.generateMutationImplementation({\n mutationOptionsFnName,\n hasInvalidation,\n isRequestOptions,\n });\n\n const mutationOptionsVarName = camel(`${operationName}-mutation-options`);\n\n const mutationReturnType = adapter.getMutationReturnType({\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n });\n\n const mutationHookBody = adapter.generateMutationHookBody({\n operationPrefix,\n mutationOptionsFnName,\n mutationImplementation,\n mutationOptionsVarName,\n isRequestOptions,\n mutator,\n hasInvalidation,\n optionalQueryClientArgument,\n });\n\n const implementation = `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${mutationReturnType} => {\n${mutationHookBody}\n }\n `;\n\n const mutators = mutationOptionsMutator\n ? [mutationOptionsMutator]\n : undefined;\n\n const imports: GeneratorImport[] = hasInvalidation\n ? uniqueInvalidates\n .filter((i) => !!i.file && needsQueryKeyFnCall(i, context.spec))\n .map<GeneratorImport>((i) => ({\n name: camel(`get-${i.query}-query-key`),\n importPath: i.file,\n values: true,\n }))\n : [];\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n camel,\n generateMutator,\n type GeneratorImport,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n jsDoc,\n OutputClient,\n type OutputClientFunc,\n type OutputHttpClient,\n pascal,\n toObjectString,\n Verbs,\n} from '@orval/core';\n\nimport { getHookOptions, getQueryErrorType, getQueryOptions } from './client';\nimport type { FrameworkAdapter } from './framework-adapter';\nimport { generateMutationHook } from './mutation-generator';\nimport {\n generateQueryOptions,\n getQueryOptionsDefinition,\n QueryType,\n} from './query-options';\nimport { getHasSignal } from './utils';\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n hasSignalParam = false,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n hasSignalParam?: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n // Rename AbortSignal if API has a param named \"signal\" to avoid conflict\n const signalDestructure = hasSignalParam ? 'signal: querySignal' : 'signal';\n\n if (hasQueryParam) {\n if (hasSignal) {\n return `{ ${signalDestructure}, pageParam }`;\n }\n\n return '{ pageParam }';\n }\n\n return `{ ${signalDestructure} }`;\n};\n\nconst generatePrefetch = ({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n doc,\n queryProps,\n dataType,\n errorType,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: (typeof QueryType)[keyof typeof QueryType];\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n doc?: string;\n queryProps: string;\n dataType: string;\n errorType: string;\n queryArguments: string;\n queryOptionsVarName: string;\n queryOptionsFnName: string;\n queryProperties: string;\n isRequestOptions: boolean;\n}) => {\n const shouldGeneratePrefetch =\n usePrefetch &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n\n if (!shouldGeneratePrefetch) {\n return '';\n }\n\n const prefetchType =\n type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY\n ? 'query'\n : 'infinite-query';\n const prefetchFnName = camel(`prefetch-${prefetchType}`);\n\n if (mutator?.isHook) {\n const prefetchVarName = camel(\n `use-prefetch-${operationName}-${prefetchType}`,\n );\n return `${doc}export const ${prefetchVarName} = <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n const queryClient = useQueryClient();\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n return useCallback(async (): Promise<QueryClient> => {\n await queryClient.${prefetchFnName}(${queryOptionsVarName})\n return queryClient;\n },[queryClient, ${queryOptionsVarName}]);\n};\\n`;\n } else {\n const prefetchVarName = camel(`prefetch-${operationName}-${prefetchType}`);\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n await queryClient.${prefetchFnName}(${queryOptionsVarName});\n\n return queryClient;\n}\\n`;\n }\n};\n\nconst generateQueryImplementation = ({\n queryOption: { name, queryParam, options, type, queryKeyFnName },\n operationName,\n queryProperties,\n queryKeyProperties,\n queryParams,\n params,\n props,\n mutator,\n queryOptionsMutator,\n queryKeyMutator,\n isRequestOptions,\n response,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n useRuntimeFetcher,\n route,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n useSetQueryData,\n useGetQueryData,\n adapter,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: (typeof QueryType)[keyof typeof QueryType];\n queryParam?: string;\n queryKeyFnName: string;\n };\n isRequestOptions: boolean;\n operationName: string;\n queryProperties: string;\n queryKeyProperties: string;\n params: GetterParams;\n props: GetterProps;\n response: GetterResponse;\n queryParams?: GetterQueryParam;\n mutator?: GeneratorMutator;\n queryOptionsMutator?: GeneratorMutator;\n queryKeyMutator?: GeneratorMutator;\n httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n useRuntimeFetcher?: boolean;\n route: string;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n useSetQueryData?: boolean;\n useGetQueryData?: boolean;\n adapter: FrameworkAdapter;\n}) => {\n const {\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n } = adapter;\n\n // Check if API has a param named \"signal\" to avoid conflict with AbortSignal\n const hasSignalParam = props.some(\n (prop: GetterProp) => prop.name === 'signal',\n );\n\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(String.raw`^${prop.name}\\s*\\?:`);\n\n if (!regex.test(prop.definition)) {\n return prop;\n }\n\n const definitionWithUndefined = prop.definition.replace(\n regex,\n `${prop.name}: undefined | `,\n );\n return {\n ...prop,\n definition: definitionWithUndefined,\n };\n }),\n 'definition',\n );\n const queryProps = toObjectString(props, 'implementation');\n\n const hasInfiniteQueryParam = queryParam && queryParams?.schema.name;\n\n const httpFunctionProps = queryParam\n ? adapter.getInfiniteQueryHttpProps(props, queryParam, !!mutator)\n : adapter.getHttpFunctionQueryProps(queryProperties, httpClient, !!mutator);\n\n const definedInitialDataReturnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = adapter.getQueryReturnType({\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n });\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const definedInitialDataQueryArguments = adapter.generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n useRuntimeFetcher,\n });\n const undefinedInitialDataQueryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n useRuntimeFetcher,\n });\n const queryArguments = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n useRuntimeFetcher,\n });\n\n // Separate arguments for getQueryOptions function (includes http: HttpClient param for Angular)\n const queryArgumentsForOptions = adapter.generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n queryParams,\n queryParam,\n httpClient,\n forQueryOptions: true,\n useRuntimeFetcher,\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n hasSignalParam,\n useRuntimeFetcher,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n useRuntimeFetcher,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n hasSignalParam,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n prefix: adapter.getQueryOptionsDefinitionPrefix(),\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n adapter,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n adapter,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n // For Angular, add http: HttpClient as FIRST param (required, before optional params)\n // This avoids TS1016 \"required param cannot follow optional param\"\n const httpFirstParam = adapter.getHttpFirstParam(mutator);\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${httpFirstParam}${queryProps} ${queryArgumentsForOptions}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${adapter.getQueryKeyPrefix()}${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${adapter.getUnrefStatements(props)}\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n }${\n adapter.shouldCastQueryOptions?.() === false\n ? ''\n : ` as ${queryOptionFnReturnType} ${\n adapter.shouldAnnotateQueryKey()\n ? `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n : ''\n }`\n }\n}`;\n const operationPrefix = adapter.hookPrefix;\n const optionalQueryClientArgument = adapter.getOptionalQueryClientArgument();\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetchContext = {\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n queryArguments: queryArgumentsForOptions,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n };\n\n const prefetch = adapter.generatePrefetch\n ? adapter.generatePrefetch(prefetchContext)\n : generatePrefetch(prefetchContext);\n\n const isPrimaryQueryType =\n type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite);\n\n const shouldGenerateInvalidate = useInvalidate && isPrimaryQueryType;\n const invalidateFnName = camel(`invalidate-${name}`);\n\n const shouldGenerateSetQueryData = useSetQueryData && isPrimaryQueryType;\n const isReactQuery = adapter.outputClient === OutputClient.REACT_QUERY;\n const setQueryDataFnName = isReactQuery\n ? camel(`use-set-${name}-query-data`)\n : camel(`set-${name}-query-data`);\n const setQueryDataKeyExpr = queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${queryKeyMutator.hasSecondArg ? `, { url: \\`${route}\\` }` : ''})`\n : `${queryKeyFnName}(${queryKeyProperties})`;\n const setQueryDataProps = toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ).replaceAll('?:', ':');\n\n const shouldGenerateGetQueryData = useGetQueryData && isPrimaryQueryType;\n const getQueryDataFnName = isReactQuery\n ? camel(`use-get-${name}-query-data`)\n : camel(`get-${name}-query-data`);\n const getQueryDataKeyExpr = setQueryDataKeyExpr;\n const getQueryDataProps = setQueryDataProps;\n\n // Generate query init (e.g. const queryOptions = fn(...) or const http = inject(HttpClient))\n const queryInit = adapter.generateQueryInit({\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n });\n\n // Generate query hook invocation arguments\n const queryInvocationArgs = adapter.generateQueryInvocationArgs({\n props,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n mutator,\n operationPrefix,\n type,\n queryOptionsVarName,\n optionalQueryClientArgument,\n });\n\n const queryInvocationSuffix = adapter.getQueryInvocationSuffix();\n\n return `\n${queryOptionsFn}\n\nexport type ${pascal(\n name,\n )}QueryResult = NonNullable<Awaited<ReturnType<${dataType}>>>\nexport type ${pascal(name)}QueryError = ${errorType}\n\n${adapter.shouldGenerateOverrideTypes() ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${adapter.getHookPropsDefinitions(\n props,\n )} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n ${queryInit}\n\n const ${queryResultVarName} = ${camel(\n `${operationPrefix}-${adapter.getQueryType(type)}`,\n )}(${queryInvocationArgs}${queryInvocationSuffix})${adapter.shouldCastQueryResult?.() === false ? '' : ` as ${returnType}`};\n\n ${adapter.getQueryReturnStatement({\n hasQueryV5,\n hasQueryV5WithDataTagError,\n queryResultVarName,\n queryOptionsVarName,\n })}\n}\\n\n${prefetch}\n${\n shouldGenerateInvalidate\n ? `${doc}export const ${invalidateFnName} = async (\\n queryClient: QueryClient, ${queryProps} options?: InvalidateOptions\\n ): Promise<QueryClient> => {\n\n await queryClient.invalidateQueries({ queryKey: ${queryKeyFnName}(${queryKeyProperties}) }, options);\n\n return queryClient;\n}\\n`\n : ''\n}\n${\n shouldGenerateSetQueryData\n ? isReactQuery\n ? `${doc}export const ${setQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n };\n}\\n`\n : `${doc}export const ${setQueryDataFnName} = (queryClient: QueryClient, ${setQueryDataProps}updater: ${TData} | undefined | ((old: ${TData} | undefined) => ${TData} | undefined)) => {\n queryClient.setQueryData(${setQueryDataKeyExpr}, updater);\n}\\n`\n : ''\n}\n${\n shouldGenerateGetQueryData\n ? isReactQuery\n ? `${doc}export const ${getQueryDataFnName} = () => {\n const queryClient = useQueryClient();\n return (${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\n}\\n`\n : `${doc}export const ${getQueryDataFnName} = (queryClient: QueryClient, ${getQueryDataProps}) =>\n queryClient.getQueryData<${TData}>(${getQueryDataKeyExpr});\\n`\n : ''\n}\n`;\n};\n\nexport const generateQueryHook = async (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n adapter?: FrameworkAdapter,\n) => {\n if (!adapter) {\n throw new Error('FrameworkAdapter is required for generateQueryHook');\n }\n\n const {\n queryParams,\n operationName,\n body,\n props: _props,\n verb,\n params,\n override,\n mutator,\n response,\n operationId,\n summary,\n deprecated,\n } = verbOptions;\n const {\n route,\n override: { operations },\n context,\n output,\n } = options;\n\n // Use adapter to transform props (Vue wraps with MaybeRef)\n const props = adapter.transformProps(_props);\n\n const query = override.query;\n const isRequestOptions = override.requestOptions !== false;\n const operationQueryOptions = operations[operationId]?.query;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const httpClient = context.output.httpClient;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators: GeneratorMutator[] | undefined;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = [\n operationQueryOptions?.useQuery,\n operationQueryOptions?.useSuspenseQuery,\n operationQueryOptions?.useInfinite,\n operationQueryOptions?.useSuspenseInfiniteQuery,\n ].some(Boolean);\n\n let isQuery =\n (Verbs.GET === verb &&\n [\n override.query.useQuery,\n override.query.useSuspenseQuery,\n override.query.useInfinite,\n override.query.useSuspenseInfiniteQuery,\n ].some(Boolean)) ||\n hasOperationQueryOption;\n\n let isMutation = override.query.useMutation && verb !== Verbs.GET;\n\n if (operationQueryOptions?.useMutation !== undefined) {\n isMutation = operationQueryOptions.useMutation;\n }\n\n // If both query and mutation are true for a non-GET operation, prioritize query\n if (verb !== Verbs.GET && isQuery) {\n isMutation = false;\n }\n\n // If both query and mutation are true for a GET operation, prioritize mutation\n if (verb === Verbs.GET && isMutation) {\n isQuery = false;\n }\n\n if (isQuery) {\n const queryKeyMutator = query.queryKey\n ? await generateMutator({\n output,\n mutator: query.queryKey,\n name: `${operationName}QueryKey`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryOptionsMutator = query.queryOptions\n ? await generateMutator({\n output,\n mutator: query.queryOptions,\n name: `${operationName}QueryOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n // Use adapter to determine how to map props to query properties\n const queryProperties = props\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n return adapter.getQueryPropertyForProp(param, body);\n })\n .join(',');\n\n const queries = [\n ...(query.useInfinite || operationQueryOptions?.useInfinite\n ? [\n {\n name: camel(`${operationName}-infinite`),\n options: query.options,\n type: QueryType.INFINITE,\n queryParam: query.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ...(query.useQuery || operationQueryOptions?.useQuery\n ? [\n {\n name: operationName,\n options: query.options,\n type: QueryType.QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query.useSuspenseQuery || operationQueryOptions?.useSuspenseQuery\n ? [\n {\n name: camel(`${operationName}-suspense`),\n options: query.options,\n type: QueryType.SUSPENSE_QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query.useSuspenseInfiniteQuery ||\n operationQueryOptions?.useSuspenseInfiniteQuery\n ? [\n {\n name: camel(`${operationName}-suspense-infinite`),\n options: query.options,\n type: QueryType.SUSPENSE_INFINITE,\n queryParam: query.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ];\n\n const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n let queryKeyFns = '';\n\n if (!queryKeyMutator) {\n for (const queryOption of uniqueQueryOptionsByKeys) {\n const makeOptionalParam = (impl: string) => {\n if (impl.includes('=')) return impl;\n return impl.replace(/^(\\w+):\\s*/, '$1?: ');\n };\n\n const queryKeyProps = toObjectString(\n props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((prop) => ({\n ...prop,\n implementation:\n prop.type === GetterPropType.PARAM ||\n prop.type === GetterPropType.NAMED_PATH_PARAMS\n ? prop.implementation\n : makeOptionalParam(prop.implementation),\n })),\n 'implementation',\n );\n\n const routeString = adapter.getQueryKeyRouteString(\n route,\n !!override.query.shouldSplitQueryKey,\n );\n\n // Use operation ID as query key if enabled, otherwise use route string\n const queryKeyIdentifier = override.query.useOperationIdAsQueryKey\n ? `\"${operationName}\"`\n : routeString;\n\n // Use all params in query key when useOperationIdAsQueryKey=true, otherwise use only query param\n // All params sorted by required first\n const queryKeyParams = props\n .filter((p) =>\n override.query.useOperationIdAsQueryKey\n ? true\n : p.type === GetterPropType.QUERY_PARAM,\n )\n .toSorted((a) => (a.required ? -1 : 1))\n .map((p) => `...(${p.name} ? [${p.name}] : [])`)\n .join(', ');\n\n // Note: do not unref() params in Vue - this will make key lose reactivity\n queryKeyFns += `\n${override.query.shouldExportQueryKey ? 'export ' : ''}const ${queryOption.queryKeyFnName} = (${queryKeyProps}) => {\n return [\n ${[\n queryOption.type === QueryType.INFINITE ||\n queryOption.type === QueryType.SUSPENSE_INFINITE\n ? `'infinite'`\n : '',\n queryKeyIdentifier,\n queryKeyParams,\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n }\n }\n\n implementation += `\n${queryKeyFns}`;\n\n let queryImplementations = '';\n\n for (const queryOption of queries) {\n queryImplementations += generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n }),\n useRuntimeFetcher: override.fetch.useRuntimeFetcher,\n queryOptionsMutator,\n queryKeyMutator,\n route,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n useSetQueryData:\n operationQueryOptions?.useSetQueryData ?? query.useSetQueryData,\n useGetQueryData:\n operationQueryOptions?.useGetQueryData ?? query.useGetQueryData,\n adapter,\n });\n }\n\n implementation += `\n ${queryImplementations}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n let imports: GeneratorImport[] = [];\n\n if (isMutation) {\n const mutationResult = await generateMutationHook({\n verbOptions: { ...verbOptions, props },\n options,\n isRequestOptions,\n httpClient,\n doc,\n adapter,\n });\n\n implementation += mutationResult.implementation;\n mutators = mutationResult.mutators\n ? [...(mutators ?? []), ...mutationResult.mutators]\n : mutators;\n imports = mutationResult.imports;\n }\n\n return {\n implementation,\n mutators,\n imports,\n };\n};\n","import {\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n generateVerbImports,\n mergeDeep,\n type NormalizedOutputOptions,\n type QueryOptions,\n} from '@orval/core';\n\nimport { getQueryHeader } from './client';\nimport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\nimport { createFrameworkAdapter } from './frameworks';\nimport { generateQueryHook } from './query-generator';\nimport { normalizeQueryOptions } from './utils';\n\nexport {\n getAngularQueryDependencies,\n getReactQueryDependencies,\n getSolidQueryDependencies,\n getSvelteQueryDependencies,\n getVueQueryDependencies,\n} from './dependencies';\n\nexport const generateQueryHeader: ClientHeaderBuilder = (params) => {\n return `${\n params.hasAwaitedType\n ? ''\n : `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n }\n${\n params.isRequestOptions && params.isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n${getQueryHeader(params)}\n`;\n};\n\nexport const generateQuery: ClientBuilder = async (\n verbOptions,\n options,\n outputClient,\n) => {\n const isZodOutput =\n typeof options.context.output.schemas === 'object' &&\n options.context.output.schemas.type === 'zod';\n const responseType = verbOptions.response.definition.success;\n const isPrimitiveResponse = [\n 'string',\n 'number',\n 'boolean',\n 'void',\n 'unknown',\n ].includes(responseType);\n const shouldUseRuntimeValidation =\n verbOptions.override.query.runtimeValidation && isZodOutput;\n\n const normalizedVerbOptions =\n shouldUseRuntimeValidation &&\n !isPrimitiveResponse &&\n verbOptions.response.imports.some((imp) => imp.name === responseType)\n ? {\n ...verbOptions,\n response: {\n ...verbOptions.response,\n imports: verbOptions.response.imports.map((imp) =>\n imp.name === responseType ? { ...imp, values: true } : imp,\n ),\n },\n }\n : verbOptions;\n\n const adapter = createFrameworkAdapter({\n outputClient,\n packageJson: options.context.output.packageJson,\n queryVersion: normalizedVerbOptions.override.query.version,\n });\n\n const imports = generateVerbImports(normalizedVerbOptions);\n const functionImplementation = adapter.generateRequestFunction(\n normalizedVerbOptions,\n options,\n );\n const {\n implementation: hookImplementation,\n imports: hookImports,\n mutators,\n } = await generateQueryHook(\n normalizedVerbOptions,\n options,\n outputClient,\n adapter,\n );\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports: [...imports, ...hookImports],\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n 'angular-query': getAngularQueryDependencies,\n 'solid-query': getSolidQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?:\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query'\n | 'solid-query';\n options?: QueryOptions;\n output?: NormalizedOutputOptions;\n } = {}) =>\n () => {\n const client: ClientBuilder = (verbOptions, options, outputClient) => {\n if (\n options.override.useNamedParameters &&\n (type === 'vue-query' || outputClient === 'vue-query')\n ) {\n throw new Error(\n `vue-query client does not support named parameters, and had broken reactivity previously, please set useNamedParameters to false; See for context: https://github.com/orval-labs/orval/pull/931#issuecomment-1752355686`,\n );\n }\n\n if (queryOptions) {\n const normalizedQueryOptions = normalizeQueryOptions(\n queryOptions,\n options.context.workspace,\n );\n verbOptions.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n options.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n }\n return generateQuery(verbOptions, options, outputClient, output);\n };\n\n return {\n client: client,\n header: generateQueryHeader,\n dependencies: dependenciesBuilder[type],\n };\n };\n\nexport default builder;\n"],"mappings":";;;;;;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,kBAAkB,EAAE,iBAAiB,MAAM,GAAG,EAAE;EACjE,GAAI,aAAa,kBAAkB,EAAE,iBAAiB,MAAM,GAAG,EAAE;EACjE,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;EACrB,MAAM,IAAI;AACV,MAAI,CAAC,EAAE,KACL,OAAM,IAAI,MAAM,UAAU,OAAO,sBAAsB,CAAC;AAG1D,SAAO;GACL,MAAM,SAAS,QAAQ,WAAW,EAAE,KAAK;GACzC,MAAM,EAAE;GACR,SAAS,EAAE,WAAW,CAAC,EAAE;GACzB,OAAO,EAAE;GACT,UAAU,EAAE;GACZ,WAAW,EAAE;GACd;;AAGH,KAAI,SAAS,QAAQ,CACnB,QAAO;EACL,MAAM,SAAS,QAAQ,WAAW,QAAQ;EAC1C,SAAS;EACV;;AAML,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;;;AC3IN,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,KAAA;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,SACA,sBACG;AACH,KAAI,CAAC,SAAS;AACZ,MAAI,eAAe,iBAAiB,MAClC,QAAO;AAET,MAAI,eAAe,iBAAiB,SAAS,kBAC3C,QAAO;AAET,SAAO;;AAGT,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,OACjB,oBAAoB,YAShB;CAEJ,MAAM,YAAY,iBAAiB,gBAAgB;CAEnD,MAAM,aAAa,iBAAiB,WAAW,cAAc;AAE7D,KAAI,CAAC,WAAW,kBAAkB;EAChC,MAAM,UACJ,eAAe,iBAAiB,QAAQ,iBAAiB;EAC3D,MAAM,aACJ,eAAe,iBAAiB,SAAS,oBACrC,gBACA;AAEN,MAAI,CAAC,UACH,QAAO,GAAG,UAAU;AAGtB,SAAO,KACL,+BACI,OAAO,UAAU,OAAO,WAAW,YACnC,WACL,OAAO,QAAQ,IAAI;;AAKtB,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,SACA,oBAAoB,YAMhB;AACJ,KAAI,CAAC,iBACH,QAAO;CAGT,IAAI,QAAQ;AAEZ,KAAI,CAAC,QACH,KAAI,eAAe,iBAAiB,MAClC,UAAS;UACA,eAAe,iBAAiB,SAAS,kBAClD,UAAS;KAET,UAAS;AAIb,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,SACA,sBACG;CACH,MAAM,gBACJ,eAAe,iBAAiB,SAAS,oBACrC,yBACA;CACN,MAAM,UACJ,eAAe,iBAAiB,QAC5B,0BACA,wBAAwB;AAE9B,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,SACA,sBACG;CACH,MAAM,UACJ,eAAe,iBAAiB,QAAQ,iBAAiB;CAC3D,MAAM,aACJ,eAAe,iBAAiB,SAAS,oBACrC,gBACA;AAIN,KAAI,SAAS,gBAAgB,eAAe,iBAAiB,QAC3D,QAAO;AAGT,QAAO,mBACH,UACE,QAAQ,eACN,mBACA,KACF,GAAG,UAAU,eACf;;AA4BN,MAAa,kBAAuC,WAAW;AAC7D,KAAI,OAAO,OAAO,eAAe,iBAAiB,MAChD,QAAO,oBAAoB,OAAO;AAGpC,KAAI,OAAO,OAAO,eAAe,iBAAiB,QAQhD,SAPsB,OAAO,MACzB,OAAO,OAAO,OAAO,YAAY,CAAC,QAC/B,eAAe,MAAM,WAAW,KAAK,MAAM,UAAU,KAAK,OAAO,IACnE,GACD,OAAO,OAAO,OAAO,YAAY,EACA,MAAM,MAAM,EAAE,YAAY,GAEvC,oCAAoC,GAAG;AAGjE,QAAO;;;;ACnwBT,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,KAAA,IACb,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,2BAA2B;EACnC,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;EAC9B;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,KAAA;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,KAAA;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;;;;AC3J9D,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,iBACA,qBACS;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,6BAClB,YACA,SACA,kBACD;GACD,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,KAAA,KAAa,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;;EAGjE,iBAAiB,EACf,aACA,MACA,UACA,aACA,eACA,SACA,KACA,YACA,UACA,WACA,gBACA,qBACA,oBACA,iBACA,oBAC0B;AAQ1B,OAAI,EANF,gBACC,SAAS,UAAU,SAClB,SAAS,UAAU,YAClB,SAAS,UAAU,kBAAkB,CAAC,YACtC,SAAS,UAAU,qBAAqB,CAAC,cAG5C,QAAO;GAGT,MAAM,eACJ,SAAS,UAAU,SAAS,SAAS,UAAU,iBAC3C,UACA;GACN,MAAM,iBAAiB,MAAM,YAAY,eAAe;AAQxD,UAAO,GAAG,IAAI,eAPU,MACtB,YAAY,cAAc,GAAG,eAC9B,CAK4C,uCAAuC,SAAS,eAAe,UAAU,iCADpH,CAAC,WAAW,QAAQ,eAAe,uBAAuB,KACuG,WAAW,GAAG,eAAe;;UAE5L,oBAAoB,KAAK,mBAAmB,GAAG,CAAC,WAAW,QAAQ,eAAe,WAAW,KAAK,kBACxG,kBAAkB,MAAM,KACvB,mBAAmB,YAAY,eAAe;;QAE3C,oBAAoB;;;;sBAIN,eAAe,GAAG,oBAAoB;;;;;EAKzD;;;;AC7UH,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,iBACA,qBACS;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,6BAClB,YACA,SACA,kBACD;GACD,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;;;;AC3OH,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,iBACA,qBACC;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,6BAClB,YACA,SACA,kBACD;EACD,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;;;;;ACtSP,MAAM,2BACJ,mBAEA,mBAAmB,UAAU,UAAU;AAEzC,MAAM,mBAAmB,WACvB,SAAS,OAAO,GACZ;CAAE,OAAO;CAAQ,gBAAgB;CAAc,GAC/C;CACE,GAAG;CACH,gBAAgB,wBAAwB,OAAO,eAAe;CAC/D;AAEP,MAAM,mBAAmB,WACvB,KAAK,UAAU;CACb,OAAO,OAAO;CACd,QAAQ,OAAO,UAAU,EAAE;CAC3B,gBAAgB,OAAO;CACvB,MAAM,OAAO,QAAQ;CACtB,CAAC;AAEJ,MAAM,eAAe;CACnB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;;;;;AA6BD,MAAM,qBACJ,MACA,kBACmC;CACnC,MAAM,QAAQ,MAAM;AACpB,KAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO,KAAA;AAEhD,MAAK,MAAM,CAAC,WAAW,gBAAgB,OAAO,QAC5C,MACD,EAAE;AACD,MAAI,CAAC,eAAe,OAAO,gBAAgB,SAAU;EACrD,MAAM,WAAW;AAEjB,OAAK,MAAM,UAAU,cAAc;GACjC,MAAM,YAAY,SAAS;GAC3B,MAAM,OAAO,WAAW;AACxB,OAAI,CAAC,KAAM;AAEX,OAAI,SAAS,iBAAiB,MAAM,KAAK,KAAK,cAAe;AAE7D,OAAI,CAAC,UAAU,SAAS,IAAI,CAC1B,QAAO;IAAE,OAAO;IAAW,uBAAuB;IAAO;AAa3D,UAAO;IAAE,OAAO;IAAW,uBATR,CACjB,GAAI,MAAM,QAAQ,SAAS,WAAW,GAAG,SAAS,aAAa,EAAE,EACjE,GAAI,MAAM,QAAQ,UAAU,WAAW,GAAG,UAAU,aAAa,EAAE,CACpE,CAAC,QAAQ,MAAM,EAAE,OAAO,OAAO,CAES,MACtC,MAAM,EAAE,QAAQ,YAAY,KAAA,KAAa,EAAE,YAAY,KAAA,EACzD;IAEiD;;;;;;;;;;;AAaxD,MAAM,wBAAwB,UAAsC;CAClE,MAAM,MAAM,MAAM,QAAQ,IAAI;AAC9B,KAAI,QAAQ,GAAI,QAAO;CACvB,MAAM,SAAS,MAAM,MAAM,GAAG,IAAI;AAMlC,QAH0B,OACvB,MAAM,IAAI,CACV,MAAM,YAAY,QAAQ,SAAS,EAAE,GACb,SAAS,KAAA;;;;;;;;AAStC,MAAM,qBACJ,WAM2C;AAC3C,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,MAAM,QAAQ,OAAO,CAAE,QAAO,OAAO,SAAS;AAClD,QAAO,OAAO,KAAK,OAAO,CAAC,SAAS;;AAGtC,MAAM,uBACJ,QACA,SACY;AACZ,KAAI,kBAAkB,OAAO,OAAO,CAAE,QAAO;AAE7C,KADa,kBAAkB,MAAM,OAAO,MAAM,EACxC,sBAAuB,QAAO;AACxC,QAAO;;AAGT,MAAM,oBAAoB,UAAyC;AACjE,KAAI,CAAC,SAAS,MAAM,CAClB,QAAO,KAAK,UAAU,MAAM,QAAQ;CAEtC,MAAM,QAAQ,MAAM,MAAM,IAAI;AAC9B,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,iBAAiB,EAAE,CAAC,CAAC,KAAK,KAAK;AAE1D,QAAO,OAAO,OAAO,OAAO,CACzB,KAAK,MAAM,iBAAiB,EAAE,CAAC,CAC/B,KAAK,KAAK;;;;;;AAOf,MAAM,gCACJ,MACA,wBACG;AACH,SAAQ,WAAqC;EAC3C,MAAM,SACJ,OAAO,mBAAmB,UAAU,iBAAiB;EACvD,MAAM,aAAa,MAAM,OAAO,OAAO,MAAM,YAAY;AAEzD,MAAI,kBAAkB,OAAO,OAAO,CAElC,QAAO,mBAAmB,OAAO,eAAe,WAAW,GAD9C,kBAAkB,OAAO,OAAO,CACsB;EAIrE,MAAM,OAAO,kBAAkB,MAAM,OAAO,MAAM;AAElD,MAAI,MAAM,uBAAuB;GAI/B,MAAM,SAAS,qBAAqB,KAAK,MAAM;AAK/C,OAAI,WAAW,KAAA,GAAW;AACxB,QAAI,oBAQF,QAAO,mBAAmB,OAAO,gBALhB,OACd,MAAM,IAAI,CACV,QAAQ,MAAM,MAAM,GAAG,CACvB,KAAK,MAAM,IAAI,EAAE,GAAG,CACpB,KAAK,KAAK,CAC6C;AAK5D,WAAO,mBAAmB,OAAO,kGAAkG,OAAO;;;AAK9I,SAAO,mBAAmB,OAAO,eAAe,WAAW;;;AAa/D,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,KAAA;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,SAAS,MAAM;CAEzC,MAAM,oBAAoB,QAAQ,uBAAuB;EACvD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,8BAA8B,QAAQ,uBAAuB;EACjE;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;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,SACA,kBACD;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,SAAS,kBAAkB,CAAC;;;EAI5F,kBACI,QAAQ,0BAA0B;EAChC;EACA;EACA;EACA,wBAAwB,6BACtB,QAAQ,MACR,CAAC,CAAC,MAAM,oBACT;EACD;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,KAAA;EAeF,SAbiC,kBAC/B,kBACG,QAAQ,MAAM,CAAC,CAAC,EAAE,QAAQ,oBAAoB,GAAG,QAAQ,KAAK,CAAC,CAC/D,KAAsB,OAAO;GAC5B,MAAM,MAAM,OAAO,EAAE,MAAM,YAAY;GACvC,YAAY,EAAE;GACd,QAAQ;GACT,EAAE,GACL,EAAE;EAML;;;;AC9eH,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,mBACA,OACA,KACA,aACA,UACA,aACA,eACA,iBACA,iBACA,cAiCI;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;EACA;EACD,CAAC;CACF,MAAM,qCAAqC,QAAQ,uBAAuB;EACxE;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACA;EACD,CAAC;CACF,MAAM,iBAAiB,QAAQ,uBAAuB;EACpD;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,2BAA2B,QAAQ,uBAAuB;EAC9D;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACD,CAAC;CAEF,MAAM,eAAe,gBAAgB;EACnC;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,cAAc,eAAe;EACjC;EACA;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,kBAAkB;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,gBAAgB;EAChB;EACA;EACA;EACA;EACA;EACD;CAED,MAAM,WAAW,QAAQ,mBACrB,QAAQ,iBAAiB,gBAAgB,GACzC,iBAAiB,gBAAgB;CAErC,MAAM,qBACJ,SAAS,UAAU,SACnB,SAAS,UAAU,YAClB,SAAS,UAAU,kBAAkB,CAAC,YACtC,SAAS,UAAU,qBAAqB,CAAC;CAE5C,MAAM,2BAA2B,iBAAiB;CAClD,MAAM,mBAAmB,MAAM,cAAc,OAAO;CAEpD,MAAM,6BAA6B,mBAAmB;CACtD,MAAM,eAAe,QAAQ,iBAAiB,aAAa;CAC3D,MAAM,qBAAqB,eACvB,MAAM,WAAW,KAAK,aAAa,GACnC,MAAM,OAAO,KAAK,aAAa;CACnC,MAAM,sBAAsB,kBACxB,GAAG,gBAAgB,KAAK,KAAK,gBAAgB,IAAI,gBAAgB,eAAe,cAAc,MAAM,QAAQ,GAAG,KAC/G,GAAG,eAAe,GAAG,mBAAmB;CAC5C,MAAM,oBAAoB,eACxB,MAAM,QAAQ,SAAS,KAAK,SAAS,eAAe,OAAO,EAC3D,iBACD,CAAC,WAAW,MAAM,IAAI;CAEvB,MAAM,6BAA6B,mBAAmB;CACtD,MAAM,qBAAqB,eACvB,MAAM,WAAW,KAAK,aAAa,GACnC,MAAM,OAAO,KAAK,aAAa;CACnC,MAAM,sBAAsB;CAC5B,MAAM,oBAAoB;CAG1B,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;EAEC,6BACI,eACE,GAAG,IAAI,eAAe,mBAAmB;;YAErC,kBAAkB,WAAW,MAAM,wBAAwB,MAAM,mBAAmB,MAAM;+BACvE,oBAAoB;;OAG3C,GAAG,IAAI,eAAe,mBAAmB,gCAAgC,kBAAkB,WAAW,MAAM,wBAAwB,MAAM,mBAAmB,MAAM;6BAC9I,oBAAoB;OAE3C,GACL;EAEC,6BACI,eACE,GAAG,IAAI,eAAe,mBAAmB;;YAErC,kBAAkB;+BACC,MAAM,IAAI,oBAAoB;OAErD,GAAG,IAAI,eAAe,mBAAmB,gCAAgC,kBAAkB;6BACtE,MAAM,IAAI,oBAAoB,QACrD,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,KAAA,EACzC,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,KAAA;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,KAAA;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,mBAAmB,SAAS,MAAM;GAClC;GACA;GACA;GACA;GACA,aAAa,MAAM;GACnB,UAAU,MAAM;GAChB,aAAa,MAAM;GACnB,eAAe,MAAM;GACrB,iBACE,uBAAuB,mBAAmB,MAAM;GAClD,iBACE,uBAAuB,mBAAmB,MAAM;GAClD;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,KAAA;;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;;;;AC32BH,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.8.0",
3
+ "version": "8.8.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,14 +35,14 @@
35
35
  "nuke": "rimraf .turbo dist node_modules"
36
36
  },
37
37
  "dependencies": {
38
- "@orval/core": "8.8.0",
39
- "@orval/fetch": "8.8.0",
38
+ "@orval/core": "8.8.1",
39
+ "@orval/fetch": "8.8.1",
40
40
  "remeda": "^2.33.6"
41
41
  },
42
42
  "devDependencies": {
43
43
  "eslint": "10.1.0",
44
44
  "rimraf": "6.1.2",
45
- "tsdown": "0.20.3",
45
+ "tsdown": "0.21.9",
46
46
  "typescript": "5.9.3",
47
47
  "vitest": "4.0.18"
48
48
  },