@orval/query 8.0.0-rc.4 → 8.0.0-rc.5
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.d.mts +3 -2
- package/dist/index.mjs +250 -30
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/index.d.mts
CHANGED
|
@@ -4,6 +4,7 @@ import { ClientBuilder, ClientDependenciesBuilder, ClientHeaderBuilder, Normaliz
|
|
|
4
4
|
declare const getSvelteQueryDependencies: ClientDependenciesBuilder;
|
|
5
5
|
declare const getReactQueryDependencies: ClientDependenciesBuilder;
|
|
6
6
|
declare const getVueQueryDependencies: ClientDependenciesBuilder;
|
|
7
|
+
declare const getAngularQueryDependencies: ClientDependenciesBuilder;
|
|
7
8
|
declare const generateQueryHeader: ClientHeaderBuilder;
|
|
8
9
|
declare const generateQuery: ClientBuilder;
|
|
9
10
|
declare const builder: ({
|
|
@@ -11,7 +12,7 @@ declare const builder: ({
|
|
|
11
12
|
options: queryOptions,
|
|
12
13
|
output
|
|
13
14
|
}?: {
|
|
14
|
-
type?: "react-query" | "vue-query" | "svelte-query";
|
|
15
|
+
type?: "react-query" | "vue-query" | "svelte-query" | "angular-query";
|
|
15
16
|
options?: QueryOptions;
|
|
16
17
|
output?: NormalizedOutputOptions;
|
|
17
18
|
}) => () => {
|
|
@@ -20,5 +21,5 @@ declare const builder: ({
|
|
|
20
21
|
dependencies: ClientDependenciesBuilder;
|
|
21
22
|
};
|
|
22
23
|
//#endregion
|
|
23
|
-
export { builder, builder as default, generateQuery, generateQueryHeader, getReactQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
|
|
24
|
+
export { builder, builder as default, generateQuery, generateQueryHeader, getAngularQueryDependencies, getReactQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
|
|
24
25
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -59,6 +59,14 @@ const vueUnRefParams = (props) => {
|
|
|
59
59
|
const wrapRouteParameters = (route, prepend, append) => route.replaceAll(TEMPLATE_TAG_REGEX, `\${${prepend}$1${append}}`);
|
|
60
60
|
const makeRouteSafe = (route) => wrapRouteParameters(route, "encodeURIComponent(String(", "))");
|
|
61
61
|
const isVue = (client) => OutputClient.VUE_QUERY === client;
|
|
62
|
+
const isAngular = (client) => OutputClient.ANGULAR_QUERY === client;
|
|
63
|
+
const getQueryTypeForFramework = (type) => {
|
|
64
|
+
switch (type) {
|
|
65
|
+
case "suspenseQuery": return "query";
|
|
66
|
+
case "suspenseInfiniteQuery": return "infiniteQuery";
|
|
67
|
+
default: return type;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
62
70
|
const getHasSignal = ({ overrideQuerySignal = false, verb }) => overrideQuerySignal && (!getIsBodyVerb(verb) || verb === Verbs.POST);
|
|
63
71
|
|
|
64
72
|
//#endregion
|
|
@@ -77,9 +85,124 @@ const AXIOS_DEPENDENCIES = [{
|
|
|
77
85
|
],
|
|
78
86
|
dependency: "axios"
|
|
79
87
|
}];
|
|
80
|
-
const
|
|
88
|
+
const ANGULAR_HTTP_DEPENDENCIES = [
|
|
89
|
+
{
|
|
90
|
+
exports: [
|
|
91
|
+
{
|
|
92
|
+
name: "HttpClient",
|
|
93
|
+
values: true
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "HttpHeaders",
|
|
97
|
+
values: true
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "HttpParams",
|
|
101
|
+
values: true
|
|
102
|
+
},
|
|
103
|
+
{ name: "HttpContext" }
|
|
104
|
+
],
|
|
105
|
+
dependency: "@angular/common/http"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
exports: [{
|
|
109
|
+
name: "lastValueFrom",
|
|
110
|
+
values: true
|
|
111
|
+
}, {
|
|
112
|
+
name: "fromEvent",
|
|
113
|
+
values: true
|
|
114
|
+
}],
|
|
115
|
+
dependency: "rxjs"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
exports: [{
|
|
119
|
+
name: "takeUntil",
|
|
120
|
+
values: true
|
|
121
|
+
}],
|
|
122
|
+
dependency: "rxjs/operators"
|
|
123
|
+
}
|
|
124
|
+
];
|
|
125
|
+
const generateQueryRequestFunction = (verbOptions, options, isVue$1, isAngularClient = false) => {
|
|
126
|
+
if (isAngularClient || options.context.output.httpClient === OutputHttpClient.ANGULAR) return generateAngularHttpRequestFunction(verbOptions, options);
|
|
81
127
|
return options.context.output.httpClient === OutputHttpClient.AXIOS ? generateAxiosRequestFunction(verbOptions, options, isVue$1) : generateRequestFunction(verbOptions, options);
|
|
82
128
|
};
|
|
129
|
+
const generateAngularHttpRequestFunction = ({ headers, queryParams, operationName, response, mutator, body, props, verb, formData, formUrlEncoded, override }, { route, context }) => {
|
|
130
|
+
const isRequestOptions = override.requestOptions !== false;
|
|
131
|
+
const isFormData = !override.formData.disabled;
|
|
132
|
+
const isFormUrlEncoded = override.formUrlEncoded !== false;
|
|
133
|
+
const hasSignal = getHasSignal({
|
|
134
|
+
overrideQuerySignal: override.query.signal,
|
|
135
|
+
verb
|
|
136
|
+
});
|
|
137
|
+
const bodyForm = generateFormDataAndUrlEncodedFunction({
|
|
138
|
+
formData,
|
|
139
|
+
formUrlEncoded,
|
|
140
|
+
body,
|
|
141
|
+
isFormData,
|
|
142
|
+
isFormUrlEncoded
|
|
143
|
+
});
|
|
144
|
+
if (mutator) {
|
|
145
|
+
const mutatorConfig = generateMutatorConfig({
|
|
146
|
+
route,
|
|
147
|
+
body,
|
|
148
|
+
headers,
|
|
149
|
+
queryParams,
|
|
150
|
+
response,
|
|
151
|
+
verb,
|
|
152
|
+
isFormData,
|
|
153
|
+
isFormUrlEncoded,
|
|
154
|
+
hasSignal,
|
|
155
|
+
isExactOptionalPropertyTypes: !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes,
|
|
156
|
+
isVue: false
|
|
157
|
+
});
|
|
158
|
+
const requestOptions = isRequestOptions ? generateMutatorRequestOptions(override.requestOptions, mutator.hasSecondArg) : "";
|
|
159
|
+
const propsImplementation = toObjectString(props, "implementation");
|
|
160
|
+
return `${override.query.shouldExportHttpClient ? "export " : ""}const ${operationName} = (\\n ${propsImplementation}\\n ${isRequestOptions && mutator.hasSecondArg ? `options${context.output.optionsParamRequired ? "" : "?"}: SecondParameter<typeof ${mutator.name}>,` : ""}${hasSignal ? String.raw`signal?: AbortSignal\n` : ""}) => {
|
|
161
|
+
${bodyForm}
|
|
162
|
+
return ${mutator.name}<${response.definition.success || "unknown"}>(
|
|
163
|
+
${mutatorConfig},
|
|
164
|
+
${requestOptions});
|
|
165
|
+
}
|
|
166
|
+
`;
|
|
167
|
+
}
|
|
168
|
+
const queryProps = toObjectString(props, "implementation").replace(/,\s*$/, "");
|
|
169
|
+
const dataType = response.definition.success || "unknown";
|
|
170
|
+
const hasQueryParams = queryParams?.schema.name;
|
|
171
|
+
const urlConstruction = hasQueryParams ? `const httpParams = params ? new HttpParams({ fromObject: params as Record<string, string> }) : undefined;
|
|
172
|
+
const url = \`${route}\`;` : `const url = \`${route}\`;`;
|
|
173
|
+
const httpOptions = [];
|
|
174
|
+
if (hasQueryParams) httpOptions.push("params: httpParams");
|
|
175
|
+
if (headers) httpOptions.push("headers: new HttpHeaders(headers)");
|
|
176
|
+
const optionsStr = httpOptions.length > 0 ? `, { ${httpOptions.join(", ")} }` : "";
|
|
177
|
+
let httpCall;
|
|
178
|
+
const bodyArg = body.definition ? toObjectString([body], "implementation").replace(/,\s*$/, "") : "";
|
|
179
|
+
switch (verb) {
|
|
180
|
+
case "get":
|
|
181
|
+
case "head":
|
|
182
|
+
httpCall = `http.${verb}<${dataType}>(url${optionsStr})`;
|
|
183
|
+
break;
|
|
184
|
+
case "delete":
|
|
185
|
+
httpCall = bodyArg ? `http.${verb}<${dataType}>(url, { ${httpOptions.length > 0 ? httpOptions.join(", ") + ", " : ""}body: ${bodyArg} })` : `http.${verb}<${dataType}>(url${optionsStr})`;
|
|
186
|
+
break;
|
|
187
|
+
default:
|
|
188
|
+
httpCall = `http.${verb}<${dataType}>(url, ${bodyArg || "undefined"}${optionsStr})`;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
const optionsParam = hasSignal ? ", options?: { signal?: AbortSignal | null }" : "";
|
|
192
|
+
return `${override.query.shouldExportHttpClient ? "export " : ""}const ${operationName} = (
|
|
193
|
+
http: HttpClient,
|
|
194
|
+
${queryProps}${optionsParam}
|
|
195
|
+
): Promise<${dataType}> => {
|
|
196
|
+
${bodyForm}
|
|
197
|
+
${urlConstruction}
|
|
198
|
+
const request$ = ${httpCall};
|
|
199
|
+
if (options?.signal) {
|
|
200
|
+
return lastValueFrom(request$.pipe(takeUntil(fromEvent(options.signal, 'abort'))));
|
|
201
|
+
}
|
|
202
|
+
return lastValueFrom(request$);
|
|
203
|
+
}
|
|
204
|
+
`;
|
|
205
|
+
};
|
|
83
206
|
const generateAxiosRequestFunction = ({ headers, queryParams, operationName, response, mutator, body, props: _props, verb, formData, formUrlEncoded, override, paramsSerializer }, { route: _route, context }, isVue$1) => {
|
|
84
207
|
let props = _props;
|
|
85
208
|
let route = _route;
|
|
@@ -115,7 +238,7 @@ const generateAxiosRequestFunction = ({ headers, queryParams, operationName, res
|
|
|
115
238
|
isVue: isVue$1
|
|
116
239
|
});
|
|
117
240
|
const bodyDefinition = body.definition.replace("[]", String.raw`\[\]`);
|
|
118
|
-
const propsImplementation = mutator?.bodyTypeName && body.definition ? toObjectString(props, "implementation").replace(
|
|
241
|
+
const propsImplementation = mutator?.bodyTypeName && body.definition ? toObjectString(props, "implementation").replace(new RegExp(String.raw`(\w*):\s?${bodyDefinition}`), `$1: ${mutator.bodyTypeName}<${body.definition}>`) : toObjectString(props, "implementation");
|
|
119
242
|
const requestOptions = isRequestOptions ? generateMutatorRequestOptions(override.requestOptions, mutator.hasSecondArg) : "";
|
|
120
243
|
if (mutator.isHook) {
|
|
121
244
|
const ret = `${override.query.shouldExportMutatorHooks ? "export " : ""}const use${pascal(operationName)}Hook = () => {
|
|
@@ -234,9 +357,11 @@ const getMutationRequestArgs = (isRequestOptions, httpClient, mutator) => {
|
|
|
234
357
|
const options = httpClient === OutputHttpClient.AXIOS ? "axiosOptions" : "fetchOptions";
|
|
235
358
|
return isRequestOptions ? mutator ? mutator?.hasSecondArg ? "requestOptions" : "" : options : "";
|
|
236
359
|
};
|
|
237
|
-
const getHttpFunctionQueryProps = (isVue$1, httpClient, queryProperties) => {
|
|
238
|
-
|
|
239
|
-
|
|
360
|
+
const getHttpFunctionQueryProps = (isVue$1, httpClient, queryProperties, isAngular$1 = false) => {
|
|
361
|
+
let result;
|
|
362
|
+
result = isVue$1 && httpClient === OutputHttpClient.FETCH && queryProperties ? queryProperties.split(",").map((prop) => `unref(${prop})`).join(",") : queryProperties;
|
|
363
|
+
if (isAngular$1 || httpClient === OutputHttpClient.ANGULAR) return result ? `http, ${result}` : "http";
|
|
364
|
+
return result;
|
|
240
365
|
};
|
|
241
366
|
const getQueryHeader = (params) => {
|
|
242
367
|
return params.output.httpClient === OutputHttpClient.FETCH ? generateFetchHeader(params) : "";
|
|
@@ -244,6 +369,20 @@ const getQueryHeader = (params) => {
|
|
|
244
369
|
|
|
245
370
|
//#endregion
|
|
246
371
|
//#region src/index.ts
|
|
372
|
+
/**
|
|
373
|
+
* Get framework-aware prefix for hook names and type definitions
|
|
374
|
+
* @param hasSvelteQueryV4 - Whether using Svelte Query v4
|
|
375
|
+
* @param isAngularClient - Whether using Angular client
|
|
376
|
+
* @param capitalize - Whether to capitalize the prefix (for type definitions)
|
|
377
|
+
* @returns The appropriate prefix string
|
|
378
|
+
*/
|
|
379
|
+
const getFrameworkPrefix = (hasSvelteQueryV4, isAngularClient, capitalize = false) => {
|
|
380
|
+
let prefix;
|
|
381
|
+
if (hasSvelteQueryV4) prefix = "create";
|
|
382
|
+
else if (isAngularClient) prefix = "inject";
|
|
383
|
+
else prefix = "use";
|
|
384
|
+
return capitalize ? prefix.charAt(0).toUpperCase() + prefix.slice(1) : prefix;
|
|
385
|
+
};
|
|
247
386
|
const REACT_DEPENDENCIES = [{
|
|
248
387
|
exports: [{
|
|
249
388
|
name: "useCallback",
|
|
@@ -517,6 +656,51 @@ const VUE_QUERY_DEPENDENCIES = [{
|
|
|
517
656
|
],
|
|
518
657
|
dependency: "vue"
|
|
519
658
|
}];
|
|
659
|
+
const ANGULAR_QUERY_DEPENDENCIES = [{
|
|
660
|
+
exports: [
|
|
661
|
+
{
|
|
662
|
+
name: "injectQuery",
|
|
663
|
+
values: true
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
name: "injectInfiniteQuery",
|
|
667
|
+
values: true
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
name: "injectMutation",
|
|
671
|
+
values: true
|
|
672
|
+
},
|
|
673
|
+
{ name: "InjectQueryOptions" },
|
|
674
|
+
{ name: "InjectMutationOptions" },
|
|
675
|
+
{ name: "CreateQueryOptions" },
|
|
676
|
+
{ name: "CreateInfiniteQueryOptions" },
|
|
677
|
+
{ name: "CreateMutationOptions" },
|
|
678
|
+
{ name: "QueryFunction" },
|
|
679
|
+
{ name: "MutationFunction" },
|
|
680
|
+
{ name: "QueryKey" },
|
|
681
|
+
{ name: "CreateQueryResult" },
|
|
682
|
+
{ name: "CreateInfiniteQueryResult" },
|
|
683
|
+
{ name: "InfiniteData" },
|
|
684
|
+
{ name: "CreateMutationResult" },
|
|
685
|
+
{ name: "DataTag" },
|
|
686
|
+
{ name: "QueryClient" },
|
|
687
|
+
{ name: "InvalidateOptions" }
|
|
688
|
+
],
|
|
689
|
+
dependency: "@tanstack/angular-query-experimental"
|
|
690
|
+
}, {
|
|
691
|
+
exports: [
|
|
692
|
+
{
|
|
693
|
+
name: "inject",
|
|
694
|
+
values: true
|
|
695
|
+
},
|
|
696
|
+
{ name: "Signal" },
|
|
697
|
+
{
|
|
698
|
+
name: "computed",
|
|
699
|
+
values: true
|
|
700
|
+
}
|
|
701
|
+
],
|
|
702
|
+
dependency: "@angular/core"
|
|
703
|
+
}];
|
|
520
704
|
const isVueQueryV3 = (packageJson) => {
|
|
521
705
|
const hasVueQuery = packageJson?.dependencies?.["vue-query"] ?? packageJson?.devDependencies?.["vue-query"] ?? packageJson?.peerDependencies?.["vue-query"];
|
|
522
706
|
const hasVueQueryV4 = packageJson?.dependencies?.["@tanstack/vue-query"] ?? packageJson?.devDependencies?.["@tanstack/vue-query"] ?? packageJson?.peerDependencies?.["@tanstack/vue-query"];
|
|
@@ -530,7 +714,18 @@ const getVueQueryDependencies = (hasGlobalMutator, hasParamsSerializerOptions, p
|
|
|
530
714
|
...hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES
|
|
531
715
|
];
|
|
532
716
|
};
|
|
717
|
+
const getAngularQueryDependencies = (hasGlobalMutator, hasParamsSerializerOptions, packageJson, httpClient) => {
|
|
718
|
+
const useAngularHttp = !hasGlobalMutator && httpClient === OutputHttpClient.ANGULAR;
|
|
719
|
+
const useAxios = !hasGlobalMutator && httpClient === OutputHttpClient.AXIOS;
|
|
720
|
+
return [
|
|
721
|
+
...useAngularHttp ? ANGULAR_HTTP_DEPENDENCIES : [],
|
|
722
|
+
...useAxios ? AXIOS_DEPENDENCIES : [],
|
|
723
|
+
...hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : [],
|
|
724
|
+
...ANGULAR_QUERY_DEPENDENCIES
|
|
725
|
+
];
|
|
726
|
+
};
|
|
533
727
|
const isQueryV5 = (packageJson, queryClient) => {
|
|
728
|
+
if (queryClient === "angular-query") return true;
|
|
534
729
|
const version = getPackageByQueryClient(packageJson, queryClient);
|
|
535
730
|
if (!version) return false;
|
|
536
731
|
const withoutRc = version.split("-")[0];
|
|
@@ -543,12 +738,14 @@ const isQueryV6 = (packageJson, queryClient) => {
|
|
|
543
738
|
return compareVersions(withoutRc, "6.0.0");
|
|
544
739
|
};
|
|
545
740
|
const isQueryV5WithDataTagError = (packageJson, queryClient) => {
|
|
741
|
+
if (queryClient === "angular-query") return true;
|
|
546
742
|
const version = getPackageByQueryClient(packageJson, queryClient);
|
|
547
743
|
if (!version) return false;
|
|
548
744
|
const withoutRc = version.split("-")[0];
|
|
549
745
|
return compareVersions(withoutRc, "5.62.0");
|
|
550
746
|
};
|
|
551
747
|
const isQueryV5WithInfiniteQueryOptionsError = (packageJson, queryClient) => {
|
|
748
|
+
if (queryClient === "angular-query") return true;
|
|
552
749
|
const version = getPackageByQueryClient(packageJson, queryClient);
|
|
553
750
|
if (!version) return false;
|
|
554
751
|
const withoutRc = version.split("-")[0];
|
|
@@ -559,6 +756,7 @@ const getPackageByQueryClient = (packageJson, queryClient) => {
|
|
|
559
756
|
case "react-query": return packageJson?.dependencies?.["@tanstack/react-query"] ?? packageJson?.devDependencies?.["@tanstack/react-query"] ?? packageJson?.peerDependencies?.["@tanstack/react-query"];
|
|
560
757
|
case "svelte-query": return packageJson?.dependencies?.["@tanstack/svelte-query"] ?? packageJson?.devDependencies?.["@tanstack/svelte-query"] ?? packageJson?.peerDependencies?.["@tanstack/svelte-query"];
|
|
561
758
|
case "vue-query": return packageJson?.dependencies?.["@tanstack/vue-query"] ?? packageJson?.devDependencies?.["@tanstack/vue-query"] ?? packageJson?.peerDependencies?.["@tanstack/vue-query"];
|
|
759
|
+
case "angular-query": return packageJson?.dependencies?.["@tanstack/angular-query-experimental"] ?? packageJson?.devDependencies?.["@tanstack/angular-query-experimental"] ?? packageJson?.peerDependencies?.["@tanstack/angular-query-experimental"];
|
|
562
760
|
}
|
|
563
761
|
};
|
|
564
762
|
const QueryType = {
|
|
@@ -580,9 +778,9 @@ const generateQueryOptions = ({ params, options, type, outputClient }) => {
|
|
|
580
778
|
const isSuspenseQuery = (type) => {
|
|
581
779
|
return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);
|
|
582
780
|
};
|
|
583
|
-
const getQueryOptionsDefinition = ({ operationName, mutator, definitions, type, hasSvelteQueryV4, hasQueryV5, hasQueryV5WithInfiniteQueryOptionsError, queryParams, queryParam, isReturnType, initialData }) => {
|
|
781
|
+
const getQueryOptionsDefinition = ({ operationName, mutator, definitions, type, hasSvelteQueryV4, hasQueryV5, hasQueryV5WithInfiniteQueryOptionsError, queryParams, queryParam, isReturnType, initialData, isAngularClient }) => {
|
|
584
782
|
const isMutatorHook = mutator?.isHook;
|
|
585
|
-
const prefix = hasSvelteQueryV4 ? "
|
|
783
|
+
const prefix = !hasSvelteQueryV4 && !isAngularClient ? "Use" : "Create";
|
|
586
784
|
const partialOptions = !isReturnType && hasQueryV5;
|
|
587
785
|
if (type) {
|
|
588
786
|
const funcReturnType = `Awaited<ReturnType<${isMutatorHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`}>>`;
|
|
@@ -598,7 +796,7 @@ const getQueryOptionsDefinition = ({ operationName, mutator, definitions, type,
|
|
|
598
796
|
}
|
|
599
797
|
return `${prefix}MutationOptions<Awaited<ReturnType<${isMutatorHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`}>>, TError,${definitions ? `{${definitions}}` : "void"}, TContext>`;
|
|
600
798
|
};
|
|
601
|
-
const generateQueryArguments = ({ operationName, definitions, mutator, isRequestOptions, type, hasSvelteQueryV4, hasQueryV5, hasQueryV5WithInfiniteQueryOptionsError, queryParams, queryParam, initialData, httpClient }) => {
|
|
799
|
+
const generateQueryArguments = ({ operationName, definitions, mutator, isRequestOptions, type, hasSvelteQueryV4, hasQueryV5, hasQueryV5WithInfiniteQueryOptionsError, queryParams, queryParam, initialData, httpClient, isAngularClient }) => {
|
|
602
800
|
const definition = getQueryOptionsDefinition({
|
|
603
801
|
operationName,
|
|
604
802
|
mutator,
|
|
@@ -610,7 +808,8 @@ const generateQueryArguments = ({ operationName, definitions, mutator, isRequest
|
|
|
610
808
|
queryParams,
|
|
611
809
|
queryParam,
|
|
612
810
|
isReturnType: false,
|
|
613
|
-
initialData
|
|
811
|
+
initialData,
|
|
812
|
+
isAngularClient
|
|
614
813
|
});
|
|
615
814
|
if (!isRequestOptions) return `${type ? "queryOptions" : "mutationOptions"}${initialData === "defined" ? "" : "?"}: ${definition}`;
|
|
616
815
|
const requestType = getQueryArgumentsRequestType(httpClient, mutator);
|
|
@@ -619,6 +818,9 @@ const generateQueryArguments = ({ operationName, definitions, mutator, isRequest
|
|
|
619
818
|
};
|
|
620
819
|
const generateQueryReturnType = ({ outputClient, type, isMutatorHook, operationName, hasVueQueryV4, hasSvelteQueryV4, hasQueryV5, hasQueryV5WithDataTagError, isInitialDataDefined }) => {
|
|
621
820
|
switch (outputClient) {
|
|
821
|
+
case OutputClient.ANGULAR_QUERY:
|
|
822
|
+
if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) return `CreateQueryResult<TData, TError>`;
|
|
823
|
+
return `CreateInfiniteQueryResult<TData, TError>`;
|
|
622
824
|
case OutputClient.SVELTE_QUERY:
|
|
623
825
|
if (!hasSvelteQueryV4) return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${isMutatorHook ? `ReturnType<typeof use${pascal(operationName)}Hook>` : `typeof ${operationName}`}>>, TError, TData, QueryKey> & { queryKey: QueryKey} }`;
|
|
624
826
|
return `Create${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ", TError" : ""}>` : "QueryKey"} }`;
|
|
@@ -631,6 +833,12 @@ const generateQueryReturnType = ({ outputClient, type, isMutatorHook, operationN
|
|
|
631
833
|
}
|
|
632
834
|
};
|
|
633
835
|
const generateMutatorReturnType = ({ outputClient, dataType, variableType }) => {
|
|
836
|
+
if (outputClient === OutputClient.ANGULAR_QUERY) return `: CreateMutationResult<
|
|
837
|
+
Awaited<ReturnType<${dataType}>>,
|
|
838
|
+
TError,
|
|
839
|
+
${variableType},
|
|
840
|
+
TContext
|
|
841
|
+
>`;
|
|
634
842
|
if (outputClient === OutputClient.REACT_QUERY) return `: UseMutationResult<
|
|
635
843
|
Awaited<ReturnType<${dataType}>>,
|
|
636
844
|
TError,
|
|
@@ -683,7 +891,7 @@ const generatePrefetch = ({ usePrefetch, type, useQuery, useInfinite, operationN
|
|
|
683
891
|
const generateQueryImplementation = ({ queryOption: { name, queryParam, options, type, queryKeyFnName }, operationName, queryProperties, queryKeyProperties, queryParams, params, props, mutator, queryOptionsMutator, queryKeyMutator, isRequestOptions, response, outputClient, httpClient, isExactOptionalPropertyTypes, hasSignal, route, hasVueQueryV4, hasSvelteQueryV4, hasSvelteQueryV6, hasQueryV5, hasQueryV5WithDataTagError, hasQueryV5WithInfiniteQueryOptionsError, doc, usePrefetch, useQuery, useInfinite, useInvalidate }) => {
|
|
684
892
|
const queryPropDefinitions = toObjectString(props, "definition");
|
|
685
893
|
const definedInitialDataQueryPropsDefinitions = toObjectString(props.map((prop) => {
|
|
686
|
-
const regex =
|
|
894
|
+
const regex = new RegExp(String.raw`^${prop.name}\s*\?:`);
|
|
687
895
|
if (!regex.test(prop.definition)) return prop;
|
|
688
896
|
const definitionWithUndefined = prop.definition.replace(regex, `${prop.name}: undefined | `);
|
|
689
897
|
return {
|
|
@@ -693,10 +901,12 @@ const generateQueryImplementation = ({ queryOption: { name, queryParam, options,
|
|
|
693
901
|
}), "definition");
|
|
694
902
|
const queryProps = toObjectString(props, "implementation");
|
|
695
903
|
const hasInfiniteQueryParam = queryParam && queryParams?.schema.name;
|
|
696
|
-
const
|
|
904
|
+
const isAngularHttp = isAngular(outputClient) || httpClient === OutputHttpClient.ANGULAR;
|
|
905
|
+
let httpFunctionProps = queryParam ? props.map((param) => {
|
|
697
906
|
if (param.type === GetterPropType.NAMED_PATH_PARAMS && !isVue(outputClient)) return param.destructured;
|
|
698
907
|
return param.name === "params" ? `{...${isVue(outputClient) ? `unref(params)` : "params"}, '${queryParam}': pageParam || ${isVue(outputClient) ? `unref(params)?.['${queryParam}']` : `params?.['${queryParam}']`}}` : param.name;
|
|
699
|
-
}).join(",") : getHttpFunctionQueryProps(isVue(outputClient), httpClient, queryProperties);
|
|
908
|
+
}).join(",") : getHttpFunctionQueryProps(isVue(outputClient), httpClient, queryProperties, isAngularHttp);
|
|
909
|
+
if (queryParam && isAngularHttp) httpFunctionProps = httpFunctionProps ? `http, ${httpFunctionProps}` : "http";
|
|
700
910
|
const definedInitialDataReturnType = generateQueryReturnType({
|
|
701
911
|
outputClient,
|
|
702
912
|
type,
|
|
@@ -732,7 +942,8 @@ const generateQueryImplementation = ({ queryOption: { name, queryParam, options,
|
|
|
732
942
|
queryParams,
|
|
733
943
|
queryParam,
|
|
734
944
|
initialData: "defined",
|
|
735
|
-
httpClient
|
|
945
|
+
httpClient,
|
|
946
|
+
isAngularClient: isAngular(outputClient)
|
|
736
947
|
});
|
|
737
948
|
const undefinedInitialDataQueryArguments = generateQueryArguments({
|
|
738
949
|
operationName,
|
|
@@ -746,7 +957,8 @@ const generateQueryImplementation = ({ queryOption: { name, queryParam, options,
|
|
|
746
957
|
queryParams,
|
|
747
958
|
queryParam,
|
|
748
959
|
initialData: "undefined",
|
|
749
|
-
httpClient
|
|
960
|
+
httpClient,
|
|
961
|
+
isAngularClient: isAngular(outputClient)
|
|
750
962
|
});
|
|
751
963
|
const queryArguments = generateQueryArguments({
|
|
752
964
|
operationName,
|
|
@@ -759,7 +971,8 @@ const generateQueryImplementation = ({ queryOption: { name, queryParam, options,
|
|
|
759
971
|
hasQueryV5WithInfiniteQueryOptionsError,
|
|
760
972
|
queryParams,
|
|
761
973
|
queryParam,
|
|
762
|
-
httpClient
|
|
974
|
+
httpClient,
|
|
975
|
+
isAngularClient: isAngular(outputClient)
|
|
763
976
|
});
|
|
764
977
|
const queryOptions = getQueryOptions({
|
|
765
978
|
isRequestOptions,
|
|
@@ -787,7 +1000,8 @@ const generateQueryImplementation = ({ queryOption: { name, queryParam, options,
|
|
|
787
1000
|
hasQueryV5WithInfiniteQueryOptionsError,
|
|
788
1001
|
queryParams,
|
|
789
1002
|
queryParam,
|
|
790
|
-
isReturnType: true
|
|
1003
|
+
isReturnType: true,
|
|
1004
|
+
isAngularClient: isAngular(outputClient)
|
|
791
1005
|
});
|
|
792
1006
|
const queryOptionsImp = generateQueryOptions({
|
|
793
1007
|
params,
|
|
@@ -803,6 +1017,7 @@ const generateQueryImplementation = ({ queryOption: { name, queryParam, options,
|
|
|
803
1017
|
const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${queryProps} ${queryArguments}) => {
|
|
804
1018
|
|
|
805
1019
|
${hookOptions}
|
|
1020
|
+
${isAngularHttp ? " const http = inject(HttpClient);" : ""}
|
|
806
1021
|
|
|
807
1022
|
const queryKey = ${queryKeyMutator ? `${queryKeyMutator.name}({ ${queryProperties} }${queryKeyMutator.hasSecondArg ? `, { url: \`${route}\`, queryOptions }` : ""});` : `${hasVueQueryV4 ? "" : "queryOptions?.queryKey ?? "}${queryKeyFnName}(${queryKeyProperties});`}
|
|
808
1023
|
|
|
@@ -814,10 +1029,10 @@ ${hookOptions}
|
|
|
814
1029
|
|
|
815
1030
|
${queryOptionsMutator ? `const customOptions = ${queryOptionsMutator.name}({...queryOptions, queryKey, queryFn}${queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ""}${queryOptionsMutator.hasThirdArg ? `, { url: \`${route}\` }` : ""});` : ""}
|
|
816
1031
|
|
|
817
|
-
return ${queryOptionsMutator ? "customOptions" : `{ queryKey, queryFn, ${queryOptionsImp}}`} as ${queryOptionFnReturnType} ${isVue(outputClient) ? "" : `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ", TError" : ""}>` : "QueryKey"} }`}
|
|
1032
|
+
return ${queryOptionsMutator ? "customOptions" : `{ queryKey, queryFn, ${queryOptionsImp}}`} as ${queryOptionFnReturnType} ${isVue(outputClient) || isAngular(outputClient) ? "" : `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ", TError" : ""}>` : "QueryKey"} }`}
|
|
818
1033
|
}`;
|
|
819
|
-
const operationPrefix = hasSvelteQueryV4
|
|
820
|
-
const optionalQueryClientArgument = hasQueryV5 ? ", queryClient?: QueryClient" : "";
|
|
1034
|
+
const operationPrefix = getFrameworkPrefix(hasSvelteQueryV4, isAngular(outputClient));
|
|
1035
|
+
const optionalQueryClientArgument = hasQueryV5 && !isAngular(outputClient) ? ", queryClient?: QueryClient" : "";
|
|
821
1036
|
const queryHookName = camel(`${operationPrefix}-${name}`);
|
|
822
1037
|
const overrideTypes = `
|
|
823
1038
|
export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\n ): ${definedInitialDataReturnType}
|
|
@@ -855,9 +1070,9 @@ export function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\n ${q
|
|
|
855
1070
|
|
|
856
1071
|
const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${queryProperties ? "," : ""}${isRequestOptions ? "options" : "queryOptions"})
|
|
857
1072
|
|
|
858
|
-
const ${queryResultVarName} = ${camel(`${operationPrefix}-${type}`)}(${hasSvelteQueryV6 ? `() => ({ ...${queryOptionsVarName}${optionalQueryClientArgument ? ", queryClient" : ""} })` : `${queryOptionsVarName}${optionalQueryClientArgument ? ", queryClient" : ""}`}) as ${returnType};
|
|
1073
|
+
const ${queryResultVarName} = ${camel(`${operationPrefix}-${isAngular(outputClient) || hasSvelteQueryV4 ? getQueryTypeForFramework(type) : type}`)}(${isAngular(outputClient) ? `() => ${queryOptionsVarName}` : hasSvelteQueryV6 ? `() => ({ ...${queryOptionsVarName}${optionalQueryClientArgument ? ", queryClient" : ""} })` : `${queryOptionsVarName}${!isAngular(outputClient) && optionalQueryClientArgument ? ", queryClient" : ""}`}) as ${returnType};
|
|
859
1074
|
|
|
860
|
-
${queryResultVarName}.queryKey = ${isVue(outputClient) ? `unref(${queryOptionsVarName})` : queryOptionsVarName}.queryKey ${isVue(outputClient) ? `as ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ", TError" : ""}>` : "QueryKey"}` : ""}
|
|
1075
|
+
${isAngular(outputClient) ? `` : `${queryResultVarName}.queryKey = ${isVue(outputClient) ? `unref(${queryOptionsVarName})` : queryOptionsVarName}.queryKey ${isVue(outputClient) ? `as ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ", TError" : ""}>` : "QueryKey"}` : ""};`}
|
|
861
1076
|
|
|
862
1077
|
return ${queryResultVarName};
|
|
863
1078
|
}\n
|
|
@@ -870,7 +1085,7 @@ ${shouldGenerateInvalidate ? `${doc}export const ${invalidateFnName} = async (\n
|
|
|
870
1085
|
}\n` : ""}
|
|
871
1086
|
`;
|
|
872
1087
|
};
|
|
873
|
-
const generateQueryHook = async ({ queryParams, operationName, body, props: _props, verb, params, override, mutator, response, operationId, summary, deprecated }, { route, override: { operations
|
|
1088
|
+
const generateQueryHook = async ({ queryParams, operationName, body, props: _props, verb, params, override, mutator, response, operationId, summary, deprecated }, { route, override: { operations }, context, output }, outputClient) => {
|
|
874
1089
|
let props = _props;
|
|
875
1090
|
if (isVue(outputClient)) props = vueWrapTypeWithMaybeRef(_props);
|
|
876
1091
|
const query = override?.query;
|
|
@@ -885,6 +1100,7 @@ const generateQueryHook = async ({ queryParams, operationName, body, props: _pro
|
|
|
885
1100
|
const hasQueryV5WithDataTagError = queryVersion === 5 || isQueryV5WithDataTagError(context.output.packageJson, outputClient);
|
|
886
1101
|
const hasQueryV5WithInfiniteQueryOptionsError = queryVersion === 5 || isQueryV5WithInfiniteQueryOptionsError(context.output.packageJson, outputClient);
|
|
887
1102
|
const httpClient = context.output.httpClient;
|
|
1103
|
+
const isAngularHttp = isAngular(outputClient) || httpClient === OutputHttpClient.ANGULAR;
|
|
888
1104
|
const doc = jsDoc({
|
|
889
1105
|
summary,
|
|
890
1106
|
deprecated
|
|
@@ -1033,7 +1249,8 @@ ${override.query.shouldExportQueryKey ? "export " : ""}const ${queryOption.query
|
|
|
1033
1249
|
hasSvelteQueryV4,
|
|
1034
1250
|
hasQueryV5,
|
|
1035
1251
|
hasQueryV5WithInfiniteQueryOptionsError,
|
|
1036
|
-
isReturnType: true
|
|
1252
|
+
isReturnType: true,
|
|
1253
|
+
isAngularClient: isAngular(outputClient)
|
|
1037
1254
|
});
|
|
1038
1255
|
const mutationArguments = generateQueryArguments({
|
|
1039
1256
|
operationName,
|
|
@@ -1043,7 +1260,8 @@ ${override.query.shouldExportQueryKey ? "export " : ""}const ${queryOption.query
|
|
|
1043
1260
|
hasSvelteQueryV4,
|
|
1044
1261
|
hasQueryV5,
|
|
1045
1262
|
hasQueryV5WithInfiniteQueryOptionsError,
|
|
1046
|
-
httpClient
|
|
1263
|
+
httpClient,
|
|
1264
|
+
isAngularClient: isAngular(outputClient)
|
|
1047
1265
|
});
|
|
1048
1266
|
const mutationOptionsFnName = camel(mutationOptionsMutator || mutator?.isHook ? `use-${operationName}-mutationOptions` : `get-${operationName}-mutationOptions`);
|
|
1049
1267
|
const mutationOptionsVarName = isRequestOptions ? "mutationOptions" : "options";
|
|
@@ -1051,6 +1269,7 @@ ${override.query.shouldExportQueryKey ? "export " : ""}const ${queryOption.query
|
|
|
1051
1269
|
TContext = unknown>(${mutationArguments}): ${mutationOptionFnReturnType} => {
|
|
1052
1270
|
|
|
1053
1271
|
${getHooksOptionImplementation(isRequestOptions, httpClient, camel(operationName), mutator)}
|
|
1272
|
+
${isAngularHttp ? " const http = inject(HttpClient);" : ""}
|
|
1054
1273
|
|
|
1055
1274
|
${mutator?.isHook ? `const ${operationName} = use${pascal(operationName)}Hook()` : ""}
|
|
1056
1275
|
|
|
@@ -1058,15 +1277,15 @@ ${getHooksOptionImplementation(isRequestOptions, httpClient, camel(operationName
|
|
|
1058
1277
|
const mutationFn: MutationFunction<Awaited<ReturnType<${dataType}>>, ${definitions ? `{${definitions}}` : "void"}> = (${properties ? "props" : ""}) => {
|
|
1059
1278
|
${properties ? `const {${properties}} = props ?? {};` : ""}
|
|
1060
1279
|
|
|
1061
|
-
return ${operationName}(${properties}${properties ? "," : ""}${getMutationRequestArgs(isRequestOptions, httpClient, mutator)})
|
|
1280
|
+
return ${operationName}(${isAngularHttp ? "http, " : ""}${properties}${properties ? "," : ""}${getMutationRequestArgs(isRequestOptions, httpClient, mutator)})
|
|
1062
1281
|
}
|
|
1063
1282
|
|
|
1064
1283
|
${mutationOptionsMutator ? `const customOptions = ${mutationOptionsMutator.name}({...mutationOptions, mutationFn}${mutationOptionsMutator.hasSecondArg ? `, { url: \`${route.replaceAll("/${", "/{")}\` }` : ""}${mutationOptionsMutator.hasThirdArg ? `, { operationId: '${operationId}', operationName: '${operationName}' }` : ""});` : ""}
|
|
1065
1284
|
|
|
1066
1285
|
|
|
1067
1286
|
return ${mutationOptionsMutator ? "customOptions" : "{ mutationFn, ...mutationOptions }"}}`;
|
|
1068
|
-
const operationPrefix = hasSvelteQueryV4
|
|
1069
|
-
const optionalQueryClientArgument = hasQueryV5 ? ", queryClient?: QueryClient" : "";
|
|
1287
|
+
const operationPrefix = getFrameworkPrefix(hasSvelteQueryV4, isAngular(outputClient));
|
|
1288
|
+
const optionalQueryClientArgument = hasQueryV5 && !isAngular(outputClient) ? ", queryClient?: QueryClient" : "";
|
|
1070
1289
|
implementation += `
|
|
1071
1290
|
${mutationOptionsFn}
|
|
1072
1291
|
|
|
@@ -1083,7 +1302,7 @@ ${mutationOptionsFn}
|
|
|
1083
1302
|
|
|
1084
1303
|
const ${mutationOptionsVarName} = ${mutationOptionsFnName}(${isRequestOptions ? "options" : "mutationOptions"});
|
|
1085
1304
|
|
|
1086
|
-
return ${operationPrefix}Mutation(${hasSvelteQueryV6 ? `() => ({ ...${mutationOptionsVarName}${optionalQueryClientArgument ? ", queryClient" : ""} })` : `${mutationOptionsVarName}${optionalQueryClientArgument ? ", queryClient" : ""}`});
|
|
1305
|
+
return ${operationPrefix}Mutation(${isAngular(outputClient) ? `() => ${mutationOptionsVarName}` : hasSvelteQueryV6 ? `() => ({ ...${mutationOptionsVarName}${optionalQueryClientArgument ? ", queryClient" : ""} })` : `${mutationOptionsVarName}${!isAngular(outputClient) && optionalQueryClientArgument ? ", queryClient" : ""}`});
|
|
1087
1306
|
}
|
|
1088
1307
|
`;
|
|
1089
1308
|
mutators = mutationOptionsMutator ? [...mutators ?? [], mutationOptionsMutator] : mutators;
|
|
@@ -1113,7 +1332,8 @@ const generateQuery = async (verbOptions, options, outputClient) => {
|
|
|
1113
1332
|
const dependenciesBuilder = {
|
|
1114
1333
|
"react-query": getReactQueryDependencies,
|
|
1115
1334
|
"vue-query": getVueQueryDependencies,
|
|
1116
|
-
"svelte-query": getSvelteQueryDependencies
|
|
1335
|
+
"svelte-query": getSvelteQueryDependencies,
|
|
1336
|
+
"angular-query": getAngularQueryDependencies
|
|
1117
1337
|
};
|
|
1118
1338
|
const builder = ({ type = "react-query", options: queryOptions, output } = {}) => () => {
|
|
1119
1339
|
const client = (verbOptions, options, outputClient) => {
|
|
@@ -1134,5 +1354,5 @@ const builder = ({ type = "react-query", options: queryOptions, output } = {}) =
|
|
|
1134
1354
|
var src_default = builder;
|
|
1135
1355
|
|
|
1136
1356
|
//#endregion
|
|
1137
|
-
export { builder, src_default as default, generateQuery, generateQueryHeader, getReactQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
|
|
1357
|
+
export { builder, src_default as default, generateQuery, generateQueryHeader, getAngularQueryDependencies, getReactQueryDependencies, getSvelteQueryDependencies, getVueQueryDependencies };
|
|
1138
1358
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["AXIOS_DEPENDENCIES: GeneratorDependency[]","isVue","generateFetchRequestFunction","getQueryHeader: ClientHeaderBuilder","REACT_DEPENDENCIES: GeneratorDependency[]","PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[]","SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[]","getSvelteQueryDependencies: ClientDependenciesBuilder","REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","REACT_QUERY_DEPENDENCIES: GeneratorDependency[]","getReactQueryDependencies: ClientDependenciesBuilder","VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","VUE_QUERY_DEPENDENCIES: GeneratorDependency[]","getVueQueryDependencies: ClientDependenciesBuilder","type","params","generateQueryHeader: ClientHeaderBuilder","generateQuery: ClientBuilder","dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query',\n ClientDependenciesBuilder\n>","client: ClientBuilder"],"sources":["../src/utils.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["import {\n getIsBodyVerb,\n type GetterProps,\n GetterPropType,\n isObject,\n isString,\n type Mutator,\n type NormalizedMutator,\n type NormalizedQueryOptions,\n OutputClient,\n type OutputClientFunc,\n type QueryOptions,\n TEMPLATE_TAG_REGEX,\n upath,\n Verbs,\n} from '@orval/core';\nimport chalk from 'chalk';\n\nexport const normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n): NormalizedQueryOptions => {\n return {\n ...(queryOptions.usePrefetch ? { usePrefetch: true } : {}),\n ...(queryOptions.useInvalidate ? { useInvalidate: true } : {}),\n ...(queryOptions.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions?.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions?.queryKey),\n }\n : {}),\n ...(queryOptions?.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions?.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(chalk.red(`Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: upath.resolve(workspace, mutator.path),\n default: (mutator.default || !mutator.name) ?? false,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: upath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n verb,\n}: {\n verb: Verbs;\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal && (!getIsBodyVerb(verb) || verb === Verbs.POST);\n","import {\n type ClientHeaderBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterResponse,\n isSyntheticDefaultImportsAllow,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n];\n\nexport const generateQueryRequestFunction = (\n verbOptions: GeneratorVerbOptions,\n options: GeneratorOptions,\n isVue: boolean,\n) => {\n return options.context.output.httpClient === OutputHttpClient.AXIOS\n ? generateAxiosRequestFunction(verbOptions, options, isVue)\n : generateFetchRequestFunction(verbOptions, options);\n};\n\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output?.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n });\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator?.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(`(\\\\w*):\\\\s?${bodyDefinition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override.requestOptions,\n mutator.hasSecondArg,\n )\n : '';\n\n if (mutator.isHook) {\n const ret = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return useCallback((\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override?.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override?.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return hasSignal ? 'signal?: AbortSignal\\n' : '';\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n if (!mutator) {\n return httpClient === OutputHttpClient.AXIOS\n ? `axios?: AxiosRequestConfig`\n : 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n}) => {\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n if (!hasSignal) {\n return options;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes ? '...(signal ? { signal } : {})' : 'signal'\n }, ...${options} }`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n return httpClient === OutputHttpClient.AXIOS\n ? 'requestOptions, signal'\n : '{ signal, ...requestOptions }';\n }\n\n if (hasSignal) {\n return httpClient === OutputHttpClient.AXIOS ? 'signal' : '{ signal }';\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n value += options;\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator?.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n return isRequestOptions\n ? mutator\n ? mutator?.hasSecondArg\n ? 'requestOptions'\n : ''\n : options\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n) => {\n if (isVue && httpClient === OutputHttpClient.FETCH && queryProperties) {\n return queryProperties\n .split(',')\n .map((prop) => `unref(${prop})`)\n .join(',');\n }\n\n return queryProperties;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n return params.output.httpClient === OutputHttpClient.FETCH\n ? generateFetchHeader(params)\n : '';\n};\n","import {\n camel,\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n compareVersions,\n generateMutator,\n generateVerbImports,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n isObject,\n jsDoc,\n mergeDeep,\n type NormalizedOutputOptions,\n OutputClient,\n type OutputClientFunc,\n OutputHttpClient,\n type PackageJson,\n pascal,\n type QueryOptions,\n stringify,\n toObjectString,\n Verbs,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport {\n AXIOS_DEPENDENCIES,\n generateQueryRequestFunction,\n getHookOptions,\n getHooksOptionImplementation,\n getHttpFunctionQueryProps,\n getMutationRequestArgs,\n getQueryArgumentsRequestType,\n getQueryErrorType,\n getQueryHeader,\n getQueryOptions,\n} from './client';\nimport {\n getHasSignal,\n isVue,\n normalizeQueryOptions,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nconst REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nconst PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'qs',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n ],\n dependency: 'qs',\n },\n];\n\nconst SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n {\n name: 'UseInfiniteQueryOptions',\n },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryStoreResult' },\n { name: 'UseInfiniteQueryStoreResult' },\n { name: 'QueryKey' },\n { name: 'CreateMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@sveltestack/svelte-query',\n },\n];\nconst SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'createQuery', values: true },\n { name: 'createInfiniteQuery', values: true },\n { name: 'createMutation', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'CreateMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/svelte-query',\n },\n];\n\nconst isSvelteQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasSvelteQuery =\n packageJson?.dependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.devDependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.peerDependencies?.['@sveltestack/svelte-query'];\n const hasSvelteQueryV4 =\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query'];\n\n return !!hasSvelteQuery && !hasSvelteQueryV4;\n};\n\nconst isSvelteQueryV6 = (packageJson: PackageJson | undefined) => {\n return isQueryV6(packageJson, 'svelte-query');\n};\n\nexport const getSvelteQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasSvelteQueryV3 = isSvelteQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasSvelteQueryV3\n ? SVELTE_QUERY_DEPENDENCIES_V3\n : SVELTE_QUERY_DEPENDENCIES),\n ];\n};\n\nconst REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'UseMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'react-query',\n },\n];\nconst REACT_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useSuspenseQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useSuspenseInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'DefinedInitialDataOptions' },\n { name: 'UndefinedInitialDataOptions' },\n { name: 'UseSuspenseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseSuspenseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'DefinedUseQueryResult' },\n { name: 'UseSuspenseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'DefinedUseInfiniteQueryResult' },\n { name: 'UseSuspenseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'InfiniteData' },\n { name: 'UseMutationResult' },\n { name: 'DataTag' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/react-query',\n },\n];\n\nexport const getReactQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient,\n hasTagsMutator,\n override,\n) => {\n const hasReactQuery =\n packageJson?.dependencies?.['react-query'] ??\n packageJson?.devDependencies?.['react-query'] ??\n packageJson?.peerDependencies?.['react-query'];\n const hasReactQueryV4 =\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query'];\n\n const useReactQueryV3 =\n override?.query.version === undefined\n ? hasReactQuery && !hasReactQueryV4\n : override?.query.version <= 3;\n\n return [\n ...(hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : []),\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(useReactQueryV3\n ? REACT_QUERY_DEPENDENCIES_V3\n : REACT_QUERY_DEPENDENCIES),\n ];\n};\n\nconst VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n ],\n dependency: 'vue-query',\n },\n {\n exports: [\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'UseMutationReturnType' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'vue-query/types',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n {\n exports: [{ name: 'UseQueryReturnType' }],\n dependency: 'vue-query/lib/vue/useBaseQuery',\n },\n];\n\nconst VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'UseQueryReturnType' },\n { name: 'UseInfiniteQueryReturnType' },\n { name: 'InfiniteData' },\n { name: 'UseMutationReturnType' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/vue-query',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'MaybeRef' },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n];\n\nconst isVueQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasVueQuery =\n packageJson?.dependencies?.['vue-query'] ??\n packageJson?.devDependencies?.['vue-query'] ??\n packageJson?.peerDependencies?.['vue-query'];\n const hasVueQueryV4 =\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query'];\n\n return !!hasVueQuery && !hasVueQueryV4;\n};\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasVueQueryV3 = isVueQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),\n ];\n};\n\nconst isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.0.0');\n};\n\nconst isQueryV6 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nconst isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.62.0');\n};\n\nconst isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '5.80.0');\n};\n\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n return (\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query']\n );\n }\n case 'svelte-query': {\n return (\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query']\n );\n }\n case 'vue-query': {\n return (\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query']\n );\n }\n }\n};\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nconst QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nconst generateQueryOptions = ({\n params,\n options,\n type,\n outputClient,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n outputClient: OutputClient | OutputClientFunc;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n (type !== QueryType.INFINITE ||\n type !== QueryType.SUSPENSE_INFINITE) &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n return `${\n !isObject(options) || !options.hasOwnProperty('enabled')\n ? isVue(outputClient)\n ? `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`\n : `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : ''\n }${queryConfig} ...queryOptions`;\n};\n\nconst isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nconst getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n}) => {\n const isMutatorHook = mutator?.isHook;\n const prefix = hasSvelteQueryV4 ? 'Create' : 'Use';\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n const optionType = `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }>`;\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n return `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n\nconst generateQueryArguments = ({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n}: {\n operationName: string;\n definitions: string;\n mutator?: GeneratorMutator;\n isRequestOptions: boolean;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n initialData?: 'defined' | 'undefined';\n httpClient: OutputHttpClient;\n}) => {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(httpClient, mutator);\n\n const isQueryRequired = initialData === 'defined';\n return `options${isQueryRequired ? '' : '?'}: { ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${requestType}}\\n`;\n};\n\nconst generateQueryReturnType = ({\n outputClient,\n type,\n isMutatorHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n type: QueryType;\n isMutatorHook?: boolean;\n operationName: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n isInitialDataDefined?: boolean;\n}) => {\n switch (outputClient) {\n case OutputClient.SVELTE_QUERY: {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey} }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.VUE_QUERY: {\n if (!hasVueQueryV4) {\n return ` UseQueryReturnType<TData, TError, Use${pascal(\n type,\n )}Result<TData, TError>> & { queryKey: QueryKey} }`;\n }\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `UseQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n\n return `UseInfiniteQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.REACT_QUERY:\n default: {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n }\n};\n\nconst generateMutatorReturnType = ({\n outputClient,\n dataType,\n variableType,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n dataType: unknown;\n variableType: unknown;\n}) => {\n if (outputClient === OutputClient.REACT_QUERY) {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.SVELTE_QUERY) {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.VUE_QUERY) {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n return '';\n};\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n if (hasQueryParam) {\n if (hasSignal) {\n return '{ signal, pageParam }';\n }\n\n return '{ pageParam }';\n }\n\n return '{ signal }';\n};\n\nconst generatePrefetch = ({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n doc,\n queryProps,\n dataType,\n errorType,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n hasSvelteQueryV6,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: QueryType;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n doc?: string;\n queryProps: string;\n dataType: string;\n errorType: string;\n queryArguments: string;\n queryOptionsVarName: string;\n queryOptionsFnName: string;\n queryProperties: string;\n isRequestOptions: boolean;\n hasSvelteQueryV6: boolean;\n}) => {\n const shouldGeneratePrefetch =\n usePrefetch &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n\n if (!shouldGeneratePrefetch) {\n return '';\n }\n\n const prefetchType =\n type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY\n ? 'query'\n : 'infinite-query';\n const prefetchFnName = camel(`prefetch-${prefetchType}`);\n\n if (mutator?.isHook) {\n const prefetchVarName = camel(\n `use-prefetch-${operationName}-${prefetchType}`,\n );\n return `${doc}export const ${prefetchVarName} = <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n const queryClient = useQueryClient();\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n return useCallback(async (): Promise<QueryClient> => {\n await queryClient.${prefetchFnName}(${queryOptionsVarName})\n return queryClient;\n },[queryClient, ${queryOptionsVarName}]);\n};\\n`;\n } else {\n const prefetchVarName = camel(`prefetch-${operationName}-${prefetchType}`);\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n await queryClient.${prefetchFnName}(${\n hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName} })`\n : queryOptionsVarName\n });\n\n return queryClient;\n}\\n`;\n }\n};\n\nconst generateQueryImplementation = ({\n queryOption: { name, queryParam, options, type, queryKeyFnName },\n operationName,\n queryProperties,\n queryKeyProperties,\n queryParams,\n params,\n props,\n mutator,\n queryOptionsMutator,\n queryKeyMutator,\n isRequestOptions,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: QueryType;\n queryParam?: string;\n queryKeyFnName: string;\n };\n isRequestOptions: boolean;\n operationName: string;\n queryProperties: string;\n queryKeyProperties: string;\n params: GetterParams;\n props: GetterProps;\n response: GetterResponse;\n queryParams?: GetterQueryParam;\n mutator?: GeneratorMutator;\n queryOptionsMutator?: GeneratorMutator;\n queryKeyMutator?: GeneratorMutator;\n outputClient: OutputClient | OutputClientFunc;\n httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n route: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n}) => {\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(`^${prop.name}\\\\s*\\\\?:`);\n\n if (!regex.test(prop.definition)) {\n return prop;\n }\n\n const definitionWithUndefined = prop.definition.replace(\n regex,\n `${prop.name}: undefined | `,\n );\n return {\n ...prop,\n definition: definitionWithUndefined,\n };\n }),\n 'definition',\n );\n const queryProps = toObjectString(props, 'implementation');\n\n const hasInfiniteQueryParam = queryParam && queryParams?.schema.name;\n\n const httpFunctionProps = queryParam\n ? props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.name === 'params'\n ? `{...${\n isVue(outputClient) ? `unref(params)` : 'params'\n }, '${queryParam}': pageParam || ${\n isVue(outputClient)\n ? `unref(params)?.['${queryParam}']`\n : `params?.['${queryParam}']`\n }}`\n : param.name;\n })\n .join(',')\n : getHttpFunctionQueryProps(\n isVue(outputClient),\n httpClient,\n queryProperties,\n );\n\n const definedInitialDataReturnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n });\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const definedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n });\n const undefinedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n });\n const queryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n httpClient,\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n outputClient,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams?.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n\n${hookOptions}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${\n hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? '\n }${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${\n isVue(outputClient)\n ? vueUnRefParams(\n props.filter(\n (prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS,\n ),\n )\n : ''\n }\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n } as ${queryOptionFnReturnType} ${\n isVue(outputClient)\n ? ''\n : `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n }\n}`;\n\n const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use';\n const optionalQueryClientArgument = hasQueryV5\n ? ', queryClient?: QueryClient'\n : '';\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetch = generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n hasSvelteQueryV6,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const shouldGenerateInvalidate =\n useInvalidate &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n const invalidateFnName = camel(`invalidate-${name}`);\n\n return `\n${queryOptionsFn}\n\nexport type ${pascal(\n name,\n )}QueryResult = NonNullable<Awaited<ReturnType<${dataType}>>>\nexport type ${pascal(name)}QueryError = ${errorType}\n\n${hasQueryV5 && OutputClient.REACT_QUERY === outputClient ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryProps} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n const ${queryResultVarName} = ${camel(`${operationPrefix}-${type}`)}(${\n hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`\n }) as ${returnType};\n\n ${queryResultVarName}.queryKey = ${\n isVue(outputClient) ? `unref(${queryOptionsVarName})` : queryOptionsVarName\n }.queryKey ${isVue(outputClient) ? `as ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'}` : ''};\n\n return ${queryResultVarName};\n}\\n\n${prefetch}\n${\n shouldGenerateInvalidate\n ? `${doc}export const ${invalidateFnName} = async (\\n queryClient: QueryClient, ${queryProps} options?: InvalidateOptions\\n ): Promise<QueryClient> => {\n\n await queryClient.invalidateQueries({ queryKey: ${queryKeyFnName}(${queryKeyProperties}) }, options);\n\n return queryClient;\n}\\n`\n : ''\n}\n`;\n};\n\nconst generateQueryHook = async (\n {\n queryParams,\n operationName,\n body,\n props: _props,\n verb,\n params,\n override,\n mutator,\n response,\n operationId,\n summary,\n deprecated,\n }: GeneratorVerbOptions,\n { route, override: { operations = {} }, context, output }: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n) => {\n let props = _props;\n if (isVue(outputClient)) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n const query = override?.query;\n const isRequestOptions = override?.requestOptions !== false;\n const operationQueryOptions = operations[operationId]?.query;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n const queryVersion = override.query.version ?? query?.version;\n\n const hasVueQueryV4 =\n OutputClient.VUE_QUERY === outputClient &&\n (!isVueQueryV3(context.output.packageJson) || queryVersion === 4);\n const hasSvelteQueryV4 =\n OutputClient.SVELTE_QUERY === outputClient &&\n (!isSvelteQueryV3(context.output.packageJson) || queryVersion === 4);\n const hasSvelteQueryV6 =\n OutputClient.SVELTE_QUERY === outputClient &&\n isSvelteQueryV6(context.output.packageJson);\n\n const hasQueryV5 =\n queryVersion === 5 ||\n isQueryV5(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const hasQueryV5WithDataTagError =\n queryVersion === 5 ||\n isQueryV5WithDataTagError(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(\n context.output.packageJson,\n outputClient as 'react-query' | 'vue-query' | 'svelte-query',\n );\n\n const httpClient = context.output.httpClient;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = !!(\n operationQueryOptions &&\n (operationQueryOptions.useQuery ||\n operationQueryOptions.useSuspenseQuery ||\n operationQueryOptions.useInfinite ||\n operationQueryOptions.useSuspenseInfiniteQuery)\n );\n\n let isQuery =\n (Verbs.GET === verb &&\n (override.query.useQuery ||\n override.query.useSuspenseQuery ||\n override.query.useInfinite ||\n override.query.useSuspenseInfiniteQuery)) ||\n hasOperationQueryOption;\n\n let isMutation = override.query.useMutation && verb !== Verbs.GET;\n\n if (operationQueryOptions?.useMutation !== undefined) {\n isMutation = operationQueryOptions.useMutation;\n }\n\n // If both query and mutation are true for a non-GET operation, prioritize query\n if (verb !== Verbs.GET && isQuery) {\n isMutation = false;\n }\n\n // If both query and mutation are true for a GET operation, prioritize mutation\n if (verb === Verbs.GET && isMutation) {\n isQuery = false;\n }\n\n if (isQuery) {\n const queryKeyMutator = query.queryKey\n ? await generateMutator({\n output,\n mutator: query.queryKey,\n name: `${operationName}QueryKey`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryOptionsMutator = query.queryOptions\n ? await generateMutator({\n output,\n mutator: query.queryOptions,\n name: `${operationName}QueryOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryProperties = props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queries = [\n ...(query?.useInfinite || operationQueryOptions?.useInfinite\n ? [\n {\n name: camel(`${operationName}-infinite`),\n options: query?.options,\n type: QueryType.INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ...(query?.useQuery || operationQueryOptions?.useQuery\n ? [\n {\n name: operationName,\n options: query?.options,\n type: QueryType.QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseQuery || operationQueryOptions?.useSuspenseQuery\n ? [\n {\n name: camel(`${operationName}-suspense`),\n options: query?.options,\n type: QueryType.SUSPENSE_QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseInfiniteQuery ||\n operationQueryOptions?.useSuspenseInfiniteQuery\n ? [\n {\n name: camel(`${operationName}-suspense-infinite`),\n options: query?.options,\n type: QueryType.SUSPENSE_INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ];\n\n // Convert \"param: Type\" to \"param?: Type\" for queryKey functions\n // to enable cache invalidation without type assertion\n const makeParamsOptional = (params: string) => {\n if (!params) return '';\n // Handle parameters with default values: \"param?: Type = value\" -> \"param: Type = value\" (remove optional marker)\n // Handle regular parameters: \"param: Type\" -> \"param?: Type\"\n return params.replaceAll(\n /(\\w+)(\\?)?:\\s*([^=,}]*?)\\s*(=\\s*[^,}]*)?([,}]|$)/g,\n (match, paramName, optionalMarker, type, defaultValue, suffix) => {\n // If parameter has a default value, don't add '?' (it's already effectively optional)\n if (defaultValue) {\n return `${paramName}: ${type.trim()}${defaultValue}${suffix}`;\n }\n // Otherwise, make it optional\n return `${paramName}?: ${type.trim()}${suffix}`;\n },\n );\n };\n\n const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n implementation += `\n${\n queryKeyMutator\n ? ''\n : uniqueQueryOptionsByKeys.reduce((acc, queryOption) => {\n const queryKeyProps = makeParamsOptional(\n toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ),\n );\n\n const routeString =\n isVue(outputClient) || override.query.shouldSplitQueryKey\n ? getRouteAsArray(route) // Note: this is required for reactivity to work, we will lose it if route params are converted into string, only as array they will be tracked // TODO: add tests for this\n : `\\`${route}\\``;\n\n // Use operation ID as query key if enabled, otherwise use route string\n const queryKeyIdentifier = override.query.useOperationIdAsQueryKey\n ? `\"${operationName}\"`\n : routeString;\n\n // 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 const queryKeyFn = `\n${override.query.shouldExportQueryKey ? 'export ' : ''}const ${queryOption.queryKeyFnName} = (${queryKeyProps}) => {\n return [\n ${[\n queryOption.type === QueryType.INFINITE ||\n queryOption.type === QueryType.SUSPENSE_INFINITE\n ? `'infinite'`\n : '',\n queryKeyIdentifier,\n queryKeyParams,\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n return acc + queryKeyFn;\n }, '')\n}`;\n\n implementation += `\n ${queries.reduce((acc, queryOption) => {\n return (\n acc +\n generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n }),\n queryOptionsMutator,\n queryKeyMutator,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n })\n );\n }, '')}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n if (isMutation) {\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n });\n\n const mutationArguments = generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n httpClient,\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const mutationOptionsVarName = isRequestOptions\n ? 'mutationOptions'\n : 'options';\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n );\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments}): ${mutationOptionFnReturnType} => {\n\n${hooksOptionImplementation}\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook()`\n : ''\n }\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<${dataType}>>, ${\n definitions ? `{${definitions}}` : 'void'\n }> = (${properties ? 'props' : ''}) => {\n ${properties ? `const {${properties}} = props ?? {};` : ''}\n\n return ${operationName}(${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator)})\n }\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = hasSvelteQueryV4 ? 'create' : 'use';\n const optionalQueryClientArgument = hasQueryV5\n ? ', queryClient?: QueryClient'\n : '';\n\n implementation += `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${generateMutatorReturnType(\n {\n outputClient,\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n },\n )} => {\n\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n });\n\n return ${operationPrefix}Mutation(${\n hasSvelteQueryV6\n ? `() => ({ ...${mutationOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${mutationOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''}`\n });\n }\n `;\n\n mutators = mutationOptionsMutator\n ? [...(mutators ?? []), mutationOptionsMutator]\n : mutators;\n }\n\n return {\n implementation,\n mutators,\n };\n};\n\nexport const generateQueryHeader: ClientHeaderBuilder = (params) => {\n return `${\n params.hasAwaitedType\n ? ''\n : `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n }\n${\n params.isRequestOptions && params.isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n${getQueryHeader(params)}\n`;\n};\n\nexport const generateQuery: ClientBuilder = async (\n verbOptions,\n options,\n outputClient,\n) => {\n const imports = generateVerbImports(verbOptions);\n const functionImplementation = generateQueryRequestFunction(\n verbOptions,\n options,\n isVue(outputClient),\n );\n const { implementation: hookImplementation, mutators } =\n await generateQueryHook(verbOptions, options, outputClient);\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports,\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?: 'react-query' | 'vue-query' | 'svelte-query';\n options?: QueryOptions;\n output?: NormalizedOutputOptions;\n } = {}) =>\n () => {\n const client: ClientBuilder = (verbOptions, options, outputClient) => {\n if (\n options.override.useNamedParameters &&\n (type === 'vue-query' || outputClient === 'vue-query')\n ) {\n throw new Error(\n `vue-query client does not support named parameters, and had broken reactivity previously, please set useNamedParameters to false; See for context: https://github.com/orval-labs/orval/pull/931#issuecomment-1752355686`,\n );\n }\n\n if (queryOptions) {\n const normalizedQueryOptions = normalizeQueryOptions(\n queryOptions,\n options.context.workspace,\n );\n verbOptions.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n options.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n }\n return generateQuery(verbOptions, options, outputClient, output);\n };\n\n return {\n client: client,\n header: generateQueryHeader,\n dependencies: dependenciesBuilder[type],\n };\n };\n\nexport default builder;\n"],"mappings":";;;;;;AAkBA,MAAa,yBACX,eAA6B,EAAE,EAC/B,oBAC2B;AAC3B,QAAO;EACL,GAAI,aAAa,cAAc,EAAE,aAAa,MAAM,GAAG,EAAE;EACzD,GAAI,aAAa,gBAAgB,EAAE,eAAe,MAAM,GAAG,EAAE;EAC7D,GAAI,aAAa,WAAW,EAAE,UAAU,MAAM,GAAG,EAAE;EACnD,GAAI,aAAa,cAAc,EAAE,aAAa,MAAM,GAAG,EAAE;EACzD,GAAI,aAAa,wBACb,EAAE,uBAAuB,aAAa,uBAAuB,GAC7D,EAAE;EACN,GAAI,aAAa,UAAU,EAAE,SAAS,aAAa,SAAS,GAAG,EAAE;EACjE,GAAI,cAAc,WACd,EACE,UAAU,iBAAiB,iBAAiB,cAAc,SAAS,EACpE,GACD,EAAE;EACN,GAAI,cAAc,eACd,EACE,cAAc,iBACZ,iBACA,cAAc,aACf,EACF,GACD,EAAE;EACN,GAAI,cAAc,kBACd,EACE,iBAAiB,iBACf,iBACA,cAAc,gBACf,EACF,GACD,EAAE;EACN,GAAI,aAAa,SAAS,EAAE,QAAQ,MAAM,GAAG,EAAE;EAC/C,GAAI,aAAa,2BACb,EAAE,0BAA0B,MAAM,GAClC,EAAE;EACN,GAAI,aAAa,uBACb,EAAE,sBAAsB,MAAM,GAC9B,EAAE;EACN,GAAI,aAAa,yBACb,EAAE,wBAAwB,MAAM,GAChC,EAAE;EACN,GAAI,aAAa,sBAAsB,EAAE,qBAAqB,MAAM,GAAG,EAAE;EACzE,GAAI,aAAa,2BACb,EAAE,0BAA0B,MAAM,GAClC,EAAE;EACP;;AAIH,MAAM,oBACJ,WACA,YACkC;AAClC,KAAI,SAAS,QAAQ,EAAE;AACrB,MAAI,CAAC,QAAQ,KACX,OAAM,IAAI,MAAM,MAAM,IAAI,sBAAsB,CAAC;AAGnD,SAAO;GACL,GAAG;GACH,MAAM,MAAM,QAAQ,WAAW,QAAQ,KAAK;GAC5C,UAAU,QAAQ,WAAW,CAAC,QAAQ,SAAS;GAChD;;AAGH,KAAI,SAAS,QAAQ,CACnB,QAAO;EACL,MAAM,MAAM,QAAQ,WAAW,QAAQ;EACvC,SAAS;EACV;AAGH,QAAO;;AAGT,SAAgB,wBAAwB,OAAiC;AACvE,QAAO,MAAM,KAAK,SAAS;EACzB,MAAM,CAAC,WAAW,aAAa,KAAK,eAAe,MAAM,IAAI;AAC7D,MAAI,CAAC,UAAW,QAAO;EACvB,MAAM,OACJ,KAAK,SAAS,eAAe,oBAAoB,KAAK,OAAO;EAE/D,MAAM,CAAC,MAAM,gBAAgB,UAAU,MAAM,IAAI;AACjD,SAAO;GACL,GAAG;GACH,gBAAgB,GAAG,KAAK,aAAa,KAAK,MAAM,CAAC,GAC/C,eAAe,MAAM,iBAAiB;GAEzC;GACD;;AAGJ,MAAa,kBAAkB,UAA+B;AAC5D,QAAO,MACJ,KAAK,SAAS;AACb,MAAI,KAAK,SAAS,eAAe,kBAC/B,QAAO,SAAS,KAAK,aAAa,WAAW,KAAK,KAAK;AAEzD,SAAO,GAAG,KAAK,KAAK,WAAW,KAAK,KAAK;GACzC,CACD,KAAK,KAAK;;AAGf,MAAa,uBACX,OACA,SACA,WACW,MAAM,WAAW,oBAAoB,MAAM,QAAQ,IAAI,OAAO,GAAG;AAE9E,MAAa,iBAAiB,UAC5B,oBAAoB,OAAO,8BAA8B,KAAK;AAEhE,MAAa,SAAS,WACpB,aAAa,cAAc;AAE7B,MAAa,gBAAgB,EAC3B,sBAAsB,OACtB,WAII,wBAAwB,CAAC,cAAc,KAAK,IAAI,SAAS,MAAM;;;;AClHrE,MAAaA,qBAA4C,CACvD;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,gCACX,aACA,SACA,YACG;AACH,QAAO,QAAQ,QAAQ,OAAO,eAAe,iBAAiB,QAC1D,6BAA6B,aAAa,SAASC,QAAM,GACzDC,wBAA6B,aAAa,QAAQ;;AAGxD,MAAa,gCACX,EACE,SACA,aACA,eACA,UACA,SACA,MACA,OAAO,QACP,MACA,UACA,gBACA,UACA,oBAEF,EAAE,OAAO,QAAQ,WACjB,YACG;CACH,IAAI,QAAQ;CACZ,IAAI,QAAQ;AAEZ,KAAID,QACF,SAAQ,wBAAwB,OAAO;AAGzC,KAAI,QAAQ,QAAQ,oBAClB,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;EACpC;EACD,CAAC;CAEF,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;GACD,CAAC;EAEF,MAAM,iBAAiB,KAAK,WAAW,QAAQ,MAAM,OAAO,GAAG,OAAO;EACtE,MAAM,sBACJ,SAAS,gBAAgB,KAAK,aAC1B,eAAe,OAAO,iBAAiB,CAAC,wBACtC,IAAI,OAAO,cAAc,iBAAiB,EAC1C,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,YAAY,2BAA2B,GAAG,QAAQ,SAAS;iBACrD,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,YAAY,2BAA2B,GAAG,QAAQ,SAAS;iBACrD,cAAc;YACnB,cAAc;YACd,eAAe;;;;AAKrB,UAAOA,UAAQ,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,YAAY,2BAA2B,GAAG;QACzCA,UAAQ,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,UAAU;EAC1B;EACA;EACA;EACA,yBAAyB,UAAU;EACnC;EACA;EACA,OAAOA;EACR,CAAC;CAEF,MAAM,cAAc,gCAAgC;EAClD;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;MACGA,UAAQ,eAAe,MAAM,GAAG,GAAG;MACnC,SAAS;kBAET,mCAAmC,KAAK,WACzC,GAAG,KAAK,GAAG,QAAQ;;;;AAOxB,MAAa,mCAAmC,EAC9C,kBACA,gBAII;AACJ,KAAI,iBACF,QAAO;AAGT,QAAO,YAAY,2BAA2B;;AAGhD,MAAa,gCACX,YACA,YACG;AACH,KAAI,CAAC,QACH,QAAO,eAAe,iBAAiB,QACnC,+BACA;AAGN,KAAI,QAAQ,gBAAgB,CAAC,QAAQ,OACnC,QAAO,oCAAoC,QAAQ,KAAK;AAG1D,KAAI,QAAQ,gBAAgB,QAAQ,OAClC,QAAO,+CAA+C,QAAQ,KAAK;AAGrE,QAAO;;AAGT,MAAa,mBAAmB,EAC9B,kBACA,SACA,8BACA,WACA,iBAOI;AACJ,KAAI,CAAC,WAAW,kBAAkB;EAChC,MAAM,UACJ,eAAe,iBAAiB,QAAQ,iBAAiB;AAE3D,MAAI,CAAC,UACH,QAAO;AAGT,SAAO,KACL,+BAA+B,kCAAkC,SAClE,OAAO,QAAQ;;AAGlB,KAAI,SAAS,gBAAgB,kBAAkB;AAC7C,MAAI,CAAC,UACH,QAAO;AAGT,SAAO,eAAe,iBAAiB,QACnC,2BACA;;AAGN,KAAI,UACF,QAAO,eAAe,iBAAiB,QAAQ,WAAW;AAG5D,QAAO;;AAGT,MAAa,kBAAkB,EAC7B,kBACA,YACA,cAKI;AACJ,KAAI,CAAC,iBACH,QAAO;CAGT,IAAI,QAAQ;AAEZ,KAAI,CAAC,SAAS;EACZ,MAAM,UACJ,eAAe,iBAAiB,QAC5B,0BACA;AAEN,WAAS;;AAGX,KAAI,SAAS,aACX,UAAS;AAGX,UAAS;AAET,QAAO;;AAIT,MAAM,oBAAoB,UAA0B;AAClD,KAAI,CAAC,MAAO,QAAO;AAUnB,QARe,CACb,GAAG,IAAI,IACL,MACG,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ,CACnB,CACF,CACa,KAAK,MAAM;;AAG3B,MAAa,qBACX,eACA,UACA,YACA,YACG;CACH,MAAM,aAAa,iBAAiB,SAAS,WAAW,UAAU,UAAU;AAE5E,KAAI,QACF,QAAO,QAAQ,eACX,GAAG,QAAQ,UAAU,OAAO,cAAc,GAAG,GAAG,YAAY,WAAW,KACvE;KAEJ,QAAO,eAAe,iBAAiB,QACnC,cAAc,WAAW,KACzB;;AAIR,MAAa,gCACX,kBACA,YACA,eACA,YACG;CACH,MAAM,UACJ,eAAe,iBAAiB,QAC5B,0BACA;AAEN,QAAO,mBACH,yBAAyB,cAAc;kCAErC,UACI,SAAS,eACP,8BACA,KACF,QACL;;;;qCAI8B,SAAS,eAAe,yBAAyB,KAAK,UAAU,KAAK,eAAe,iBAAiB,QAAQ,uBAAuB,qBAAqB,MACxL;;AAGN,MAAa,0BACX,kBACA,YACA,YACG;CACH,MAAM,UACJ,eAAe,iBAAiB,QAAQ,iBAAiB;AAE3D,QAAO,mBACH,UACE,SAAS,eACP,mBACA,KACF,UACF;;AAGN,MAAa,6BACX,SACA,YACA,oBACG;AACH,KAAIA,WAAS,eAAe,iBAAiB,SAAS,gBACpD,QAAO,gBACJ,MAAM,IAAI,CACV,KAAK,SAAS,SAAS,KAAK,GAAG,CAC/B,KAAK,IAAI;AAGd,QAAO;;AAGT,MAAaE,kBAAuC,WAAW;AAC7D,QAAO,OAAO,OAAO,eAAe,iBAAiB,QACjD,oBAAoB,OAAO,GAC3B;;;;;AChYN,MAAMC,qBAA4C,CAChD;CACE,SAAS,CACP;EACE,MAAM;EACN,QAAQ;EACT,CACF;CACD,YAAY;CACb,CACF;AAED,MAAMC,iCAAwD,CAC5D;CACE,SAAS,CACP;EACE,MAAM;EACN,SAAS;EACT,QAAQ;EACR,wBAAwB;EACzB,CACF;CACD,YAAY;CACb,CACF;AAED,MAAMC,+BAAsD,CAC1D;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,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,MAAMC,4BAAmD,CACvD;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,EACE,MAAM,8BACP;EACD,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,MAAM,mBAAmB,gBAAyC;CAChE,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,MAAM,mBAAmB,gBAAyC;AAChE,QAAO,UAAU,aAAa,eAAe;;AAG/C,MAAaC,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,MAAMC,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,MAAMC,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,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,MAAaC,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,kBACJ,UAAU,MAAM,YAAY,SACxB,iBAAiB,CAAC,kBAClB,UAAU,MAAM,WAAW;AAEjC,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,MAAMC,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,MAAMC,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,gBAAgB,gBAAyC;CAC7D,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,MAAaC,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,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,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,MAAM,6BACJ,aACA,gBACG;CACH,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,SAAS;;AAG7C,MAAM,0CACJ,aACA,gBACG;CACH,MAAM,UAAU,wBAAwB,aAAa,YAAY;AAEjE,KAAI,CAAC,QACH,QAAO;CAGT,MAAM,YAAY,QAAQ,MAAM,IAAI,CAAC;AAErC,QAAO,gBAAgB,WAAW,SAAS;;AAG7C,MAAM,2BACJ,aACA,gBACG;AACH,SAAQ,aAAR;EACE,KAAK,cACH,QACE,aAAa,eAAe,4BAC5B,aAAa,kBAAkB,4BAC/B,aAAa,mBAAmB;EAGpC,KAAK,eACH,QACE,aAAa,eAAe,6BAC5B,aAAa,kBAAkB,6BAC/B,aAAa,mBAAmB;EAGpC,KAAK,YACH,QACE,aAAa,eAAe,0BAC5B,aAAa,kBAAkB,0BAC/B,aAAa,mBAAmB;;;AAQxC,MAAM,YAAY;CAChB,UAAU;CACV,OAAO;CACP,gBAAgB;CAChB,mBAAmB;CACpB;AAED,MAAM,4BAA4B,IAAI,IAAI,CACxC,oBACA,uBACD,CAAC;AAEF,MAAM,wBAAwB,EAC5B,QACA,SACA,MACA,mBAMI;AACJ,KAAI,YAAY,MACd,QAAO;CAGT,MAAM,cAAc,SAAS,QAAQ,GACjC,IAAI,UACF,OACE,UACC,GAAG,SACD,SAAS,UAAU,YAClB,SAAS,UAAU,sBACrB,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;;AAGT,QAAO,GACL,CAAC,SAAS,QAAQ,IAAI,CAAC,QAAQ,eAAe,UAAU,GACpD,MAAM,aAAa,GACjB,8BAA8B,OAC3B,KAAK,EAAE,WAAW,SAAS,KAAK,GAAG,CACnC,KAAK,OAAO,CAAC,OAChB,eAAe,OAAO,KAAK,EAAE,WAAW,KAAK,CAAC,KAAK,OAAO,CAAC,MAC7D,KACH,YAAY;;AAGjB,MAAM,mBAAmB,SAAoB;AAC3C,QAAO,CAAC,UAAU,mBAAmB,UAAU,eAAe,CAAC,SAAS,KAAK;;AAG/E,MAAM,6BAA6B,EACjC,eACA,SACA,aACA,MACA,kBACA,YACA,yCACA,aACA,YACA,cACA,kBAaI;CACJ,MAAM,gBAAgB,SAAS;CAC/B,MAAM,SAAS,mBAAmB,WAAW;CAC7C,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;EACN,MAAM,aAAa,GAAG,SAAS,OAAO,KAAK,CAAC,UAAU,eAAe,iBACnE,eACC,SAAS,UAAU,YAAY,SAAS,UAAU,sBACnD,cACA,cACI,0CACE,eAAe,aAAa,OAAO,KAAK,IAAI,WAAW,MACvD,KAAK,eAAe,cAAc,aAAa,OAAO,KAAK,IAAI,WAAW,MAC5E,GACL;AACD,SAAO,GAAG,iBAAiB,aAAa,KAAK,aAC3C,iBAAiB,MAAM,KACtB;;AAGL,QAAO,GAAG,OAAO,qCACf,gBACI,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU,gBACf,aAAa,cAAc,IAAI,YAAY,KAAK,OAAO;;AAG1D,MAAM,0BAA0B,EAC9B,eACA,aACA,SACA,kBACA,MACA,kBACA,YACA,yCACA,aACA,YACA,aACA,iBAcI;CACJ,MAAM,aAAa,0BAA0B;EAC3C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd;EACD,CAAC;AAEF,KAAI,CAAC,iBACH,QAAO,GAAG,OAAO,iBAAiB,oBAChC,gBAAgB,YAAY,KAAK,IAClC,IAAI;CAGP,MAAM,cAAc,6BAA6B,YAAY,QAAQ;CAErE,MAAM,kBAAkB,gBAAgB;AACxC,QAAO,UAAU,kBAAkB,KAAK,IAAI,MAC1C,OAAO,UAAU,aAChB,kBAAkB,KAAK,IAAI,GAAG,WAAW,IAAI,YAAY;;AAG9D,MAAM,2BAA2B,EAC/B,cACA,MACA,eACA,eACA,eACA,kBACA,YACA,4BACA,2BAWI;AACJ,SAAQ,cAAR;EACE,KAAK,aAAa;AAChB,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;EAE9I,KAAK,aAAa;AAChB,OAAI,CAAC,cACH,QAAO,yCAAyC,OAC9C,KACD,CAAC;AAGJ,OAAI,SAAS,UAAU,YAAY,SAAS,UAAU,kBACpD,QAAO,mDAAmD,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW;AAGhK,UAAO,2DAA2D,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW;EAExK,KAAK,aAAa;EAClB,QACE,QAAO,IACL,wBAAwB,CAAC,gBAAgB,KAAK,GAAG,YAAY,GAC9D,KAAK,OAAO,KAAK,CAAC,sCAAsC,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW;;;AAKnK,MAAM,6BAA6B,EACjC,cACA,UACA,mBAKI;AACJ,KAAI,iBAAiB,aAAa,YAChC,QAAO;6BACkB,SAAS;;UAE5B,aAAa;;;AAIrB,KAAI,iBAAiB,aAAa,aAChC,QAAO;6BACkB,SAAS;;UAE5B,aAAa;;;AAIrB,KAAI,iBAAiB,aAAa,UAChC,QAAO;6BACkB,SAAS;;UAE5B,aAAa;;;AAIrB,QAAO;;AAGT,MAAM,uBAAuB,EAC3B,eACA,gBAII;AACJ,KAAI,CAAC,iBAAiB,CAAC,UACrB,QAAO;AAGT,KAAI,eAAe;AACjB,MAAI,UACF,QAAO;AAGT,SAAO;;AAGT,QAAO;;AAGT,MAAM,oBAAoB,EACxB,aACA,MACA,UACA,aACA,eACA,SACA,KACA,YACA,UACA,WACA,gBACA,qBACA,oBACA,iBACA,kBACA,uBAkBI;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,GACjC,mBACI,eAAe,oBAAoB,OACnC,oBACL;;;;;AAOH,MAAM,+BAA+B,EACnC,aAAa,EAAE,MAAM,YAAY,SAAS,MAAM,kBAChD,eACA,iBACA,oBACA,aACA,QACA,OACA,SACA,qBACA,iBACA,kBACA,UACA,cACA,YACA,8BACA,WACA,OACA,eACA,kBACA,kBACA,YACA,4BACA,yCACA,KACA,aACA,UACA,aACA,oBAoCI;CACJ,MAAM,uBAAuB,eAAe,OAAO,aAAa;CAChE,MAAM,0CAA0C,eAC9C,MAAM,KAAK,SAAS;EAClB,MAAM,wBAAQ,IAAI,OAAO,IAAI,KAAK,KAAK,UAAU;AAEjD,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,MACG,KAAK,UAAU;AACd,MACE,MAAM,SAAS,eAAe,qBAC9B,CAAC,MAAM,aAAa,CAEpB,QAAO,MAAM;AACf,SAAO,MAAM,SAAS,WAClB,OACE,MAAM,aAAa,GAAG,kBAAkB,SACzC,KAAK,WAAW,kBACf,MAAM,aAAa,GACf,oBAAoB,WAAW,MAC/B,aAAa,WAAW,IAC7B,KACD,MAAM;GACV,CACD,KAAK,IAAI,GACZ,0BACE,MAAM,aAAa,EACnB,YACA,gBACD;CAEL,MAAM,+BAA+B,wBAAwB;EAC3D;EACA;EACA,eAAe,SAAS;EACxB;EACA;EACA;EACA;EACA;EACA,sBAAsB;EACvB,CAAC;CACF,MAAM,aAAa,wBAAwB;EACzC;EACA;EACA,eAAe,SAAS;EACxB;EACA;EACA;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,uBAAuB;EAC9D;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACD,CAAC;CACF,MAAM,qCAAqC,uBAAuB;EAChE;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;EACD,CAAC;CACF,MAAM,iBAAiB,uBAAuB;EAC5C;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,eAAe,gBAAgB;EACnC;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,cAAc,eAAe;EACjC;EACA;EACA;EACD,CAAC;CAEF,MAAM,mBAAmB,oBAAoB;EAC3C,eACE,CAAC,CAAC,cAAc,MAAM,MAAM,EAAE,mBAAWC,WAAS,aAAa;EACjE;EACD,CAAC;CAEF,MAAM,0BAA0B,0BAA0B;EACxD;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACf,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,aAAa,OAAO,KAAK,IAAI,WAAW,MAC7C;CACN,MAAM,QACJ,eACC,SAAS,UAAU,YAAY,SAAS,UAAU,qBAC/C,mCAAmC,SAAS,IAAI,cAAc,KAC9D,sBAAsB,SAAS;CAErC,MAAM,iBAAiB,gBAAgB,mBAAmB,cAAc,MAAM,aAAa,UAAU,IAAI,WAAW,GAAG,eAAe;;EAEtI,YAAY;;sBAGV,kBACI,GAAG,gBAAgB,KAAK,KAAK,gBAAgB,IAC3C,gBAAgB,eACZ,cAAc,MAAM,sBACpB,GACL,MACD,GACE,gBAAgB,KAAK,+BACpB,eAAe,GAAG,mBAAmB,IAC7C;;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,aAAa,OAAO,KAAK,IAAI,WAAW,MACvD,GACL,OAAO,iBAAiB,OAAO,cAAc,GAAG,oBAC/C,oBAAoB,OAAO,KAC1B,aAAa;;QAGZ,MAAM,aAAa,GACf,eACE,MAAM,QACH,SAAS,KAAK,SAAS,eAAe,kBACxC,CACF,GACD,GACL;;QAGC,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,GAC7C,MAAM,wBAAwB,GAC7B,MAAM,aAAa,GACf,KACA,iBAAiB,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,WAAW,IAC1H;;CAGF,MAAM,kBAAkB,mBAAmB,WAAW;CACtD,MAAM,8BAA8B,aAChC,gCACA;CAEJ,MAAM,gBAAgB,MAAM,GAAG,gBAAgB,GAAG,OAAO;CAEzD,MAAM,gBAAgB;kBACN,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,wCAAwC,GAAG,iCAAiC,GAAG,4BAA4B,SAAS,6BAA6B;kBAC9M,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,qBAAqB,GAAG,mCAAmC,GAAG,4BAA4B,SAAS,WAAW;kBAC3K,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,qBAAqB,GAAG,eAAe,GAAG,4BAA4B,SAAS;CAE5J,MAAM,WAAW,iBAAiB;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,2BACJ,kBACC,SAAS,UAAU,SAClB,SAAS,UAAU,YAClB,SAAS,UAAU,kBAAkB,CAAC,YACtC,SAAS,UAAU,qBAAqB,CAAC;CAC9C,MAAM,mBAAmB,MAAM,cAAc,OAAO;AAEpD,QAAO;EACP,eAAe;;cAEH,OACV,KACD,CAAC,+CAA+C,SAAS;cAC9C,OAAO,KAAK,CAAC,eAAe,UAAU;;EAElD,cAAc,aAAa,gBAAgB,eAAe,gBAAgB,GAAG;EAC7E,IAAI;kBACY,cAAc,WAAW,MAAM,aAAa,UAAU,OAAO,WAAW,GAAG,eAAe,GAAG,4BAA4B,SAAS,WAAW;;UAErJ,oBAAoB,KAAK,mBAAmB,GAAG,kBACrD,kBAAkB,MAAM,KACvB,mBAAmB,YAAY,eAAe;;UAEzC,mBAAmB,KAAK,MAAM,GAAG,gBAAgB,GAAG,OAAO,CAAC,GAClE,mBACI,eAAe,sBAAsB,8BAA8B,kBAAkB,GAAG,OACxF,GAAG,sBAAsB,8BAA8B,kBAAkB,KAC9E,OAAO,WAAW;;IAEjB,mBAAmB,cACnB,MAAM,aAAa,GAAG,SAAS,oBAAoB,KAAK,oBACzD,YAAY,MAAM,aAAa,GAAG,MAAM,aAAa,0BAA0B,6BAA6B,aAAa,GAAG,KAAK,eAAe,GAAG;;WAE3I,mBAAmB;;EAE5B,SAAS;EAET,2BACI,GAAG,IAAI,eAAe,iBAAiB,yCAAyC,WAAW;;oDAE7C,eAAe,GAAG,mBAAmB;;;OAInF,GACL;;;AAID,MAAM,oBAAoB,OACxB,EACE,aACA,eACA,MACA,OAAO,QACP,MACA,QACA,UACA,SACA,UACA,aACA,SACA,cAEF,EAAE,OAAO,UAAU,EAAE,aAAa,EAAE,IAAI,SAAS,UACjD,iBACG;CACH,IAAI,QAAQ;AACZ,KAAI,MAAM,aAAa,CACrB,SAAQ,wBAAwB,OAAO;CAEzC,MAAM,QAAQ,UAAU;CACxB,MAAM,mBAAmB,UAAU,mBAAmB;CACtD,MAAM,wBAAwB,WAAW,cAAc;CACvD,MAAM,+BACJ,CAAC,CAAC,QAAQ,OAAO,UAAU,iBAAiB;CAC9C,MAAM,eAAe,SAAS,MAAM,WAAW,OAAO;CAEtD,MAAM,gBACJ,aAAa,cAAc,iBAC1B,CAAC,aAAa,QAAQ,OAAO,YAAY,IAAI,iBAAiB;CACjE,MAAM,mBACJ,aAAa,iBAAiB,iBAC7B,CAAC,gBAAgB,QAAQ,OAAO,YAAY,IAAI,iBAAiB;CACpE,MAAM,mBACJ,aAAa,iBAAiB,gBAC9B,gBAAgB,QAAQ,OAAO,YAAY;CAE7C,MAAM,aACJ,iBAAiB,KACjB,UACE,QAAQ,OAAO,aACf,aACD;CAEH,MAAM,6BACJ,iBAAiB,KACjB,0BACE,QAAQ,OAAO,aACf,aACD;CAEH,MAAM,0CACJ,iBAAiB,KACjB,uCACE,QAAQ,OAAO,aACf,aACD;CAEH,MAAM,aAAa,QAAQ,OAAO;CAClC,MAAM,MAAM,MAAM;EAAE;EAAS;EAAY,CAAC;CAE1C,IAAI,iBAAiB;CACrB,IAAI;CAIJ,MAAM,0BAA0B,CAAC,EAC/B,0BACC,sBAAsB,YACrB,sBAAsB,oBACtB,sBAAsB,eACtB,sBAAsB;CAG1B,IAAI,UACD,MAAM,QAAQ,SACZ,SAAS,MAAM,YACd,SAAS,MAAM,oBACf,SAAS,MAAM,eACf,SAAS,MAAM,6BACnB;CAEF,IAAI,aAAa,SAAS,MAAM,eAAe,SAAS,MAAM;AAE9D,KAAI,uBAAuB,gBAAgB,OACzC,cAAa,sBAAsB;AAIrC,KAAI,SAAS,MAAM,OAAO,QACxB,cAAa;AAIf,KAAI,SAAS,MAAM,OAAO,WACxB,WAAU;AAGZ,KAAI,SAAS;EACX,MAAM,kBAAkB,MAAM,WAC1B,MAAM,gBAAgB;GACpB;GACA,SAAS,MAAM;GACf,MAAM,GAAG,cAAc;GACvB,WAAW,QAAQ;GACnB,UAAU,QAAQ,OAAO;GAC1B,CAAC,GACF;EAEJ,MAAM,sBAAsB,MAAM,eAC9B,MAAM,gBAAgB;GACpB;GACA,SAAS,MAAM;GACf,MAAM,GAAG,cAAc;GACvB,WAAW,QAAQ;GACnB,UAAU,QAAQ,OAAO;GAC1B,CAAC,GACF;EAEJ,MAAM,kBAAkB,MACrB,KAAK,UAAU;AACd,OACE,MAAM,SAAS,eAAe,qBAC9B,CAAC,MAAM,aAAa,CAEpB,QAAO,MAAM;AACf,UAAO,MAAM,SAAS,eAAe,OACjC,KAAK,iBACL,MAAM;IACV,CACD,KAAK,IAAI;EAEZ,MAAM,qBAAqB,MACxB,QAAQ,SAAS,KAAK,SAAS,eAAe,OAAO,CACrD,KAAK,UAAU;AACd,OACE,MAAM,SAAS,eAAe,qBAC9B,CAAC,MAAM,aAAa,CAEpB,QAAO,MAAM;AACf,UAAO,MAAM,SAAS,eAAe,OACjC,KAAK,iBACL,MAAM;IACV,CACD,KAAK,IAAI;EAEZ,MAAM,UAAU;GACd,GAAI,OAAO,eAAe,uBAAuB,cAC7C,CACE;IACE,MAAM,MAAM,GAAG,cAAc,WAAW;IACxC,SAAS,OAAO;IAChB,MAAM,UAAU;IAChB,YAAY,OAAO;IACnB,gBAAgB,MAAM,OAAO,cAAc,qBAAqB;IACjE,CACF,GACD,EAAE;GACN,GAAI,OAAO,YAAY,uBAAuB,WAC1C,CACE;IACE,MAAM;IACN,SAAS,OAAO;IAChB,MAAM,UAAU;IAChB,gBAAgB,MAAM,OAAO,cAAc,YAAY;IACxD,CACF,GACD,EAAE;GACN,GAAI,OAAO,oBAAoB,uBAAuB,mBAClD,CACE;IACE,MAAM,MAAM,GAAG,cAAc,WAAW;IACxC,SAAS,OAAO;IAChB,MAAM,UAAU;IAChB,gBAAgB,MAAM,OAAO,cAAc,YAAY;IACxD,CACF,GACD,EAAE;GACN,GAAI,OAAO,4BACX,uBAAuB,2BACnB,CACE;IACE,MAAM,MAAM,GAAG,cAAc,oBAAoB;IACjD,SAAS,OAAO;IAChB,MAAM,UAAU;IAChB,YAAY,OAAO;IACnB,gBAAgB,MAAM,OAAO,cAAc,qBAAqB;IACjE,CACF,GACD,EAAE;GACP;EAID,MAAM,sBAAsB,aAAmB;AAC7C,OAAI,CAACC,SAAQ,QAAO;AAGpB,UAAOA,SAAO,WACZ,sDACC,OAAO,WAAW,gBAAgB,MAAM,cAAc,WAAW;AAEhE,QAAI,aACF,QAAO,GAAG,UAAU,IAAI,KAAK,MAAM,GAAG,eAAe;AAGvD,WAAO,GAAG,UAAU,KAAK,KAAK,MAAM,GAAG;KAE1C;;EAGH,MAAM,2BAA2B,QAAQ,QACtC,KAAK,OAAO,SACX,UACA,KAAK,WAAW,MAAM,EAAE,mBAAmB,IAAI,eAAe,CACjE;AAED,oBAAkB;EAEpB,kBACI,KACA,yBAAyB,QAAQ,KAAK,gBAAgB;GACpD,MAAM,gBAAgB,mBACpB,eACE,MAAM,QAAQ,SAAS,KAAK,SAAS,eAAe,OAAO,EAC3D,iBACD,CACF;GAED,MAAM,cACJ,MAAM,aAAa,IAAI,SAAS,MAAM,sBAClC,gBAAgB,MAAM,GACtB,KAAK,MAAM;GAGjB,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;AAoBb,UAAO,MAjBY;EACzB,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;;;;KAKT,GAAG;AAGR,oBAAkB;MAChB,QAAQ,QAAQ,KAAK,gBAAgB;AACrC,UACE,MACA,4BAA4B;IAC1B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,WAAW,aAAa;KACtB,qBAAqB,SAAS,MAAM;KACpC;KACD,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,aAAa,MAAM;IACnB,UAAU,MAAM;IAChB,aAAa,MAAM;IACnB,eAAe,MAAM;IACtB,CAAC;KAEH,GAAG,CAAC;;AAGP,aACE,uBAAuB,kBACnB,CACE,GAAI,sBAAsB,CAAC,oBAAoB,GAAG,EAAE,EACpD,GAAI,kBAAkB,CAAC,gBAAgB,GAAG,EAAE,CAC7C,GACD;;AAGR,KAAI,YAAY;EACd,MAAM,yBAAyB,MAAM,kBACjC,MAAM,gBAAgB;GACpB;GACA,SAAS,MAAM;GACf,MAAM,GAAG,cAAc;GACvB,WAAW,QAAQ;GACnB,UAAU,QAAQ,OAAO;GAC1B,CAAC,GACF;EAEJ,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;EAEZ,MAAM,aAAa,MAChB,KAAK,EAAE,MAAM,WAAY,SAAS,eAAe,OAAO,SAAS,KAAM,CACvE,KAAK,IAAI;EAEZ,MAAM,YAAY,kBAChB,eACA,UACA,YACA,QACD;EAED,MAAM,WAAW,SAAS,SACtB,wBAAwB,OAAO,cAAc,CAAC,SAC9C,UAAU;EAEd,MAAM,6BAA6B,0BAA0B;GAC3D;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;GACf,CAAC;EAEF,MAAM,oBAAoB,uBAAuB;GAC/C;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC;EAEF,MAAM,wBAAwB,MAC5B,0BAA0B,SAAS,SAC/B,OAAO,cAAc,oBACrB,OAAO,cAAc,kBAC1B;EAED,MAAM,yBAAyB,mBAC3B,oBACA;EASJ,MAAM,oBAAoB,gBAAgB,sBAAsB,eAAe,UAAU;0BACnE,kBAAkB,KAAK,2BAA2B;;EARtC,6BAChC,kBACA,YACA,MAAM,cAAc,EACpB,QACD,CAKuB;;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,aACzB,aAAa,MAAM,KAClB,uBAAuB,kBAAkB,YAAY,QAAQ,CAAC;;;UAIjE,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,qCACL;EAEC,MAAM,kBAAkB,mBAAmB,WAAW;EACtD,MAAM,8BAA8B,aAChC,gCACA;AAEJ,oBAAkB;EACpB,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,0BACxE;GACE;GACA;GACA,cAAc,cAAc,IAAI,YAAY,KAAK;GAClD,CACF,CAAC;;cAEQ,uBAAuB,KAAK,sBAAsB,GACxD,mBAAmB,YAAY,kBAChC;;eAEQ,gBAAgB,WACvB,mBACI,eAAe,yBAAyB,8BAA8B,kBAAkB,GAAG,OAC3F,GAAG,yBAAyB,8BAA8B,kBAAkB,KACjF;;;AAIH,aAAW,yBACP,CAAC,GAAI,YAAY,EAAE,EAAG,uBAAuB,GAC7C;;AAGN,QAAO;EACL;EACA;EACD;;AAGH,MAAaC,uBAA4C,WAAW;AAClE,QAAO,GACL,OAAO,iBACH,KACA;0EAEL;EAED,OAAO,oBAAoB,OAAO,YAC9B,wFACA,GACL;EACC,eAAe,OAAO,CAAC;;;AAIzB,MAAaC,gBAA+B,OAC1C,aACA,SACA,iBACG;CACH,MAAM,UAAU,oBAAoB,YAAY;CAChD,MAAM,yBAAyB,6BAC7B,aACA,SACA,MAAM,aAAa,CACpB;CACD,MAAM,EAAE,gBAAgB,oBAAoB,aAC1C,MAAM,kBAAkB,aAAa,SAAS,aAAa;AAE7D,QAAO;EACL,gBAAgB,GAAG,uBAAuB,MAAM;EAChD;EACA;EACD;;AAGH,MAAMC,sBAGF;CACF,eAAe;CACf,aAAa;CACb,gBAAgB;CACjB;AAED,MAAa,WACV,EACC,OAAO,eACP,SAAS,cACT,WAKE,EAAE,WACA;CACJ,MAAMC,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;;AAGL,kBAAe"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["AXIOS_DEPENDENCIES: GeneratorDependency[]","ANGULAR_HTTP_DEPENDENCIES: GeneratorDependency[]","isVue","generateFetchRequestFunction","httpOptions: string[]","httpCall: string","result: string","isAngular","getQueryHeader: ClientHeaderBuilder","prefix: string","REACT_DEPENDENCIES: GeneratorDependency[]","PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[]","SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[]","getSvelteQueryDependencies: ClientDependenciesBuilder","REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","REACT_QUERY_DEPENDENCIES: GeneratorDependency[]","getReactQueryDependencies: ClientDependenciesBuilder","VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[]","VUE_QUERY_DEPENDENCIES: GeneratorDependency[]","ANGULAR_QUERY_DEPENDENCIES: GeneratorDependency[]","getVueQueryDependencies: ClientDependenciesBuilder","getAngularQueryDependencies: ClientDependenciesBuilder","type","params","generateQueryHeader: ClientHeaderBuilder","generateQuery: ClientBuilder","dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query' | 'angular-query',\n ClientDependenciesBuilder\n>","client: ClientBuilder"],"sources":["../src/utils.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["import {\n getIsBodyVerb,\n type GetterProps,\n GetterPropType,\n isObject,\n isString,\n type Mutator,\n type NormalizedMutator,\n type NormalizedQueryOptions,\n OutputClient,\n type OutputClientFunc,\n type QueryOptions,\n TEMPLATE_TAG_REGEX,\n upath,\n Verbs,\n} from '@orval/core';\nimport chalk from 'chalk';\n\nexport const normalizeQueryOptions = (\n queryOptions: QueryOptions = {},\n outputWorkspace: string,\n): NormalizedQueryOptions => {\n return {\n ...(queryOptions.usePrefetch ? { usePrefetch: true } : {}),\n ...(queryOptions.useInvalidate ? { useInvalidate: true } : {}),\n ...(queryOptions.useQuery ? { useQuery: true } : {}),\n ...(queryOptions.useInfinite ? { useInfinite: true } : {}),\n ...(queryOptions.useInfiniteQueryParam\n ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam }\n : {}),\n ...(queryOptions.options ? { options: queryOptions.options } : {}),\n ...(queryOptions?.queryKey\n ? {\n queryKey: normalizeMutator(outputWorkspace, queryOptions?.queryKey),\n }\n : {}),\n ...(queryOptions?.queryOptions\n ? {\n queryOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.queryOptions,\n ),\n }\n : {}),\n ...(queryOptions?.mutationOptions\n ? {\n mutationOptions: normalizeMutator(\n outputWorkspace,\n queryOptions?.mutationOptions,\n ),\n }\n : {}),\n ...(queryOptions.signal ? { signal: true } : {}),\n ...(queryOptions.shouldExportMutatorHooks\n ? { shouldExportMutatorHooks: true }\n : {}),\n ...(queryOptions.shouldExportQueryKey\n ? { shouldExportQueryKey: true }\n : {}),\n ...(queryOptions.shouldExportHttpClient\n ? { shouldExportHttpClient: true }\n : {}),\n ...(queryOptions.shouldSplitQueryKey ? { shouldSplitQueryKey: true } : {}),\n ...(queryOptions.useOperationIdAsQueryKey\n ? { useOperationIdAsQueryKey: true }\n : {}),\n };\n};\n\n// Temporary duplicate code before next major release\nconst normalizeMutator = (\n workspace: string,\n mutator?: Mutator,\n): NormalizedMutator | undefined => {\n if (isObject(mutator)) {\n if (!mutator.path) {\n throw new Error(chalk.red(`Mutator need a path`));\n }\n\n return {\n ...mutator,\n path: upath.resolve(workspace, mutator.path),\n default: (mutator.default || !mutator.name) ?? false,\n };\n }\n\n if (isString(mutator)) {\n return {\n path: upath.resolve(workspace, mutator),\n default: true,\n };\n }\n\n return mutator;\n};\n\nexport function vueWrapTypeWithMaybeRef(props: GetterProps): GetterProps {\n return props.map((prop) => {\n const [paramName, paramType] = prop.implementation.split(':');\n if (!paramType) return prop;\n const name =\n prop.type === GetterPropType.NAMED_PATH_PARAMS ? prop.name : paramName;\n\n const [type, defaultValue] = paramType.split('=');\n return {\n ...prop,\n implementation: `${name}: MaybeRef<${type.trim()}>${\n defaultValue ? ` = ${defaultValue}` : ''\n }`,\n };\n });\n}\n\nexport const vueUnRefParams = (props: GetterProps): string => {\n return props\n .map((prop) => {\n if (prop.type === GetterPropType.NAMED_PATH_PARAMS) {\n return `const ${prop.destructured} = unref(${prop.name});`;\n }\n return `${prop.name} = unref(${prop.name});`;\n })\n .join('\\n');\n};\n\nexport const wrapRouteParameters = (\n route: string,\n prepend: string,\n append: string,\n): string => route.replaceAll(TEMPLATE_TAG_REGEX, `\\${${prepend}$1${append}}`);\n\nexport const makeRouteSafe = (route: string): string =>\n wrapRouteParameters(route, 'encodeURIComponent(String(', '))');\n\nexport const isVue = (client: OutputClient | OutputClientFunc) =>\n OutputClient.VUE_QUERY === client;\n\nexport const isAngular = (client: OutputClient | OutputClientFunc) =>\n OutputClient.ANGULAR_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 case 'suspenseInfiniteQuery':\n return 'infiniteQuery';\n default:\n return type;\n }\n};\n\nexport const getHasSignal = ({\n overrideQuerySignal = false,\n verb,\n}: {\n verb: Verbs;\n overrideQuerySignal?: boolean;\n}) => overrideQuerySignal && (!getIsBodyVerb(verb) || verb === Verbs.POST);\n","import {\n type ClientHeaderBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n type GetterResponse,\n isSyntheticDefaultImportsAllow,\n OutputHttpClient,\n pascal,\n toObjectString,\n} from '@orval/core';\nimport {\n generateFetchHeader,\n generateRequestFunction as generateFetchRequestFunction,\n} from '@orval/fetch';\n\nimport {\n getHasSignal,\n makeRouteSafe,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n\nexport const AXIOS_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'axios',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n { name: 'AxiosRequestConfig' },\n { name: 'AxiosResponse' },\n { name: 'AxiosError' },\n ],\n dependency: 'axios',\n },\n];\n\nexport const ANGULAR_HTTP_DEPENDENCIES: GeneratorDependency[] = [\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: [{ name: 'takeUntil', values: true }],\n dependency: 'rxjs/operators',\n },\n];\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 verb,\n });\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 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 }${hasSignal ? String.raw`signal?: AbortSignal\\n` : ''}) => {\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 urlConstruction = hasQueryParams\n ? `const httpParams = params ? new HttpParams({ fromObject: params as Record<string, string> }) : 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 const optionsStr =\n httpOptions.length > 0 ? `, { ${httpOptions.join(', ')} }` : '';\n\n // Build the HTTP method call\n let httpCall: string;\n const bodyArg = body.definition\n ? toObjectString([body], 'implementation').replace(/,\\s*$/, '')\n : '';\n\n switch (verb) {\n case 'get':\n case 'head': {\n httpCall = `http.${verb}<${dataType}>(url${optionsStr})`;\n break;\n }\n case 'delete': {\n httpCall = bodyArg\n ? `http.${verb}<${dataType}>(url, { ${httpOptions.length > 0 ? httpOptions.join(', ') + ', ' : ''}body: ${bodyArg} })`\n : `http.${verb}<${dataType}>(url${optionsStr})`;\n break;\n }\n default: {\n // post, put, patch\n httpCall = `http.${verb}<${dataType}>(url, ${bodyArg || 'undefined'}${optionsStr})`;\n break;\n }\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 // Note: http parameter is passed from the inject* function which has injection context\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\n http: HttpClient,\n ${queryProps}${optionsParam}\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};\n\nexport const generateAxiosRequestFunction = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props: _props,\n verb,\n formData,\n formUrlEncoded,\n override,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route: _route, context }: GeneratorOptions,\n isVue: boolean,\n) => {\n let props = _props;\n let route = _route;\n\n if (isVue) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n\n if (context.output?.urlEncodeParameters) {\n route = makeRouteSafe(route);\n }\n\n const isRequestOptions = override.requestOptions !== false;\n const isFormData = !override.formData.disabled;\n const isFormUrlEncoded = override.formUrlEncoded !== false;\n const hasSignal = getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n });\n\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal,\n isExactOptionalPropertyTypes,\n isVue,\n });\n\n const bodyDefinition = body.definition.replace('[]', String.raw`\\[\\]`);\n const propsImplementation =\n mutator?.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(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 }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }, [${operationName}])\n }\n `;\n\n const vueRet = `${\n override.query.shouldExportMutatorHooks ? 'export ' : ''\n }const use${pascal(operationName)}Hook = () => {\n const ${operationName} = ${mutator.name}<${\n response.definition.success || 'unknown'\n }>();\n\n return (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<ReturnType<typeof ${mutator.name}>>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {${bodyForm}\n return ${operationName}(\n ${mutatorConfig},\n ${requestOptions});\n }\n }\n `;\n\n return isVue ? vueRet : ret;\n }\n\n return `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasSecondArg\n ? `options${context.output.optionsParamRequired ? '' : '?'}: SecondParameter<typeof ${mutator.name}>,`\n : ''\n }${hasSignal ? 'signal?: AbortSignal\\n' : ''}) => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return ${mutator.name}<${response.definition.success || 'unknown'}>(\n ${mutatorConfig},\n ${requestOptions});\n }\n `;\n }\n\n const isSyntheticDefaultImportsAllowed = isSyntheticDefaultImportsAllow(\n context.output.tsconfig,\n );\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override?.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override?.paramsSerializerOptions,\n isExactOptionalPropertyTypes,\n hasSignal,\n isVue: isVue,\n });\n\n const optionsArgs = generateRequestOptionsArguments({\n isRequestOptions,\n hasSignal,\n });\n\n const queryProps = toObjectString(props, 'implementation');\n\n const httpRequestFunctionImplementation = `${override.query.shouldExportHttpClient ? 'export ' : ''}const ${operationName} = (\\n ${queryProps} ${optionsArgs} ): Promise<AxiosResponse<${\n response.definition.success || 'unknown'\n }>> => {\n ${isVue ? vueUnRefParams(props) : ''}\n ${bodyForm}\n return axios${\n isSyntheticDefaultImportsAllowed ? '' : '.default'\n }.${verb}(${options});\n }\n`;\n\n return httpRequestFunctionImplementation;\n};\n\nexport const generateRequestOptionsArguments = ({\n isRequestOptions,\n hasSignal,\n}: {\n isRequestOptions: boolean;\n hasSignal: boolean;\n}) => {\n if (isRequestOptions) {\n return 'options?: AxiosRequestConfig\\n';\n }\n\n return hasSignal ? 'signal?: AbortSignal\\n' : '';\n};\n\nexport const getQueryArgumentsRequestType = (\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n if (!mutator) {\n return httpClient === OutputHttpClient.AXIOS\n ? `axios?: AxiosRequestConfig`\n : 'fetch?: RequestInit';\n }\n\n if (mutator.hasSecondArg && !mutator.isHook) {\n return `request?: SecondParameter<typeof ${mutator.name}>`;\n }\n\n if (mutator.hasSecondArg && mutator.isHook) {\n return `request?: SecondParameter<ReturnType<typeof ${mutator.name}>>`;\n }\n\n return '';\n};\n\nexport const getQueryOptions = ({\n isRequestOptions,\n mutator,\n isExactOptionalPropertyTypes,\n hasSignal,\n httpClient,\n}: {\n isRequestOptions: boolean;\n mutator?: GeneratorMutator;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n httpClient: OutputHttpClient;\n}) => {\n if (!mutator && isRequestOptions) {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n if (!hasSignal) {\n return options;\n }\n\n return `{ ${\n isExactOptionalPropertyTypes ? '...(signal ? { signal } : {})' : 'signal'\n }, ...${options} }`;\n }\n\n if (mutator?.hasSecondArg && isRequestOptions) {\n if (!hasSignal) {\n return 'requestOptions';\n }\n\n return httpClient === OutputHttpClient.AXIOS\n ? 'requestOptions, signal'\n : '{ signal, ...requestOptions }';\n }\n\n if (hasSignal) {\n return httpClient === OutputHttpClient.AXIOS ? 'signal' : '{ signal }';\n }\n\n return '';\n};\n\nexport const getHookOptions = ({\n isRequestOptions,\n httpClient,\n mutator,\n}: {\n isRequestOptions: boolean;\n httpClient: OutputHttpClient;\n mutator?: GeneratorMutator;\n}) => {\n if (!isRequestOptions) {\n return '';\n }\n\n let value = 'const {query: queryOptions';\n\n if (!mutator) {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n value += options;\n }\n\n if (mutator?.hasSecondArg) {\n value += ', request: requestOptions';\n }\n\n value += '} = options ?? {};';\n\n return value;\n};\n\n// Helper to deduplicate union type string: \"A | B | B\" -> \"A | B\"\nconst dedupeUnionTypes = (types: string): string => {\n if (!types) return types;\n // Split by '|', trim spaces, filter out empty, and dedupe using a Set\n const unique = [\n ...new Set(\n types\n .split('|')\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n ];\n return unique.join(' | ');\n};\n\nexport const getQueryErrorType = (\n operationName: string,\n response: GetterResponse,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const errorsType = dedupeUnionTypes(response.definition.errors || 'unknown');\n\n if (mutator) {\n return mutator.hasErrorType\n ? `${mutator.default ? pascal(operationName) : ''}ErrorType<${errorsType}>`\n : errorsType;\n } else {\n return httpClient === OutputHttpClient.AXIOS\n ? `AxiosError<${errorsType}>`\n : errorsType;\n }\n};\n\nexport const getHooksOptionImplementation = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n operationName: string,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS\n ? ', axios: axiosOptions'\n : ', fetch: fetchOptions';\n\n return isRequestOptions\n ? `const mutationKey = ['${operationName}'];\nconst {mutation: mutationOptions${\n mutator\n ? mutator?.hasSecondArg\n ? ', request: requestOptions'\n : ''\n : options\n }} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }${mutator?.hasSecondArg ? ', request: undefined' : ''}${mutator ? '' : httpClient === OutputHttpClient.AXIOS ? ', axios: undefined' : ', fetch: undefined'}};`\n : '';\n};\n\nexport const getMutationRequestArgs = (\n isRequestOptions: boolean,\n httpClient: OutputHttpClient,\n mutator?: GeneratorMutator,\n) => {\n const options =\n httpClient === OutputHttpClient.AXIOS ? 'axiosOptions' : 'fetchOptions';\n\n return isRequestOptions\n ? mutator\n ? mutator?.hasSecondArg\n ? 'requestOptions'\n : ''\n : options\n : '';\n};\n\nexport const getHttpFunctionQueryProps = (\n isVue: boolean,\n httpClient: OutputHttpClient,\n queryProperties: string,\n isAngular = false,\n) => {\n let result: string;\n 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 if (isAngular || httpClient === OutputHttpClient.ANGULAR) {\n return result ? `http, ${result}` : 'http';\n }\n\n return result;\n};\n\nexport const getQueryHeader: ClientHeaderBuilder = (params) => {\n return params.output.httpClient === OutputHttpClient.FETCH\n ? generateFetchHeader(params)\n : '';\n};\n","import {\n camel,\n type ClientBuilder,\n type ClientDependenciesBuilder,\n type ClientHeaderBuilder,\n compareVersions,\n generateMutator,\n generateVerbImports,\n type GeneratorDependency,\n type GeneratorMutator,\n type GeneratorOptions,\n type GeneratorVerbOptions,\n getRouteAsArray,\n type GetterParams,\n type GetterProp,\n type GetterProps,\n GetterPropType,\n type GetterQueryParam,\n type GetterResponse,\n isObject,\n jsDoc,\n mergeDeep,\n type NormalizedOutputOptions,\n OutputClient,\n type OutputClientFunc,\n OutputHttpClient,\n type PackageJson,\n pascal,\n type QueryOptions,\n stringify,\n toObjectString,\n Verbs,\n} from '@orval/core';\nimport { omitBy } from 'remeda';\n\nimport {\n ANGULAR_HTTP_DEPENDENCIES,\n AXIOS_DEPENDENCIES,\n generateQueryRequestFunction,\n getHookOptions,\n getHooksOptionImplementation,\n getHttpFunctionQueryProps,\n getMutationRequestArgs,\n getQueryArgumentsRequestType,\n getQueryErrorType,\n getQueryHeader,\n getQueryOptions,\n} from './client';\nimport {\n getHasSignal,\n getQueryTypeForFramework,\n isAngular,\n isVue,\n normalizeQueryOptions,\n vueUnRefParams,\n vueWrapTypeWithMaybeRef,\n} from './utils';\n/**\n * Get framework-aware prefix for hook names and type definitions\n * @param hasSvelteQueryV4 - Whether using Svelte Query v4\n * @param isAngularClient - Whether using Angular client\n * @param capitalize - Whether to capitalize the prefix (for type definitions)\n * @returns The appropriate prefix string\n */\nconst getFrameworkPrefix = (\n hasSvelteQueryV4: boolean,\n isAngularClient: boolean,\n capitalize = false,\n): string => {\n let prefix: string;\n\n if (hasSvelteQueryV4) {\n prefix = 'create';\n } else if (isAngularClient) {\n prefix = 'inject';\n } else {\n prefix = 'use';\n }\n\n return capitalize ? prefix.charAt(0).toUpperCase() + prefix.slice(1) : prefix;\n};\n\nconst REACT_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'useCallback',\n values: true,\n },\n ],\n dependency: 'react',\n },\n];\n\nconst PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n {\n name: 'qs',\n default: true,\n values: true,\n syntheticDefaultImport: true,\n },\n ],\n dependency: 'qs',\n },\n];\n\nconst SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n {\n name: 'UseInfiniteQueryOptions',\n },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryStoreResult' },\n { name: 'UseInfiniteQueryStoreResult' },\n { name: 'QueryKey' },\n { name: 'CreateMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@sveltestack/svelte-query',\n },\n];\nconst SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'createQuery', values: true },\n { name: 'createInfiniteQuery', values: true },\n { name: 'createMutation', values: true },\n { name: 'CreateQueryOptions' },\n {\n name: 'CreateInfiniteQueryOptions',\n },\n { name: 'CreateMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/svelte-query',\n },\n];\n\nconst isSvelteQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasSvelteQuery =\n packageJson?.dependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.devDependencies?.['@sveltestack/svelte-query'] ??\n packageJson?.peerDependencies?.['@sveltestack/svelte-query'];\n const hasSvelteQueryV4 =\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query'];\n\n return !!hasSvelteQuery && !hasSvelteQueryV4;\n};\n\nconst isSvelteQueryV6 = (packageJson: PackageJson | undefined) => {\n return isQueryV6(packageJson, 'svelte-query');\n};\n\nexport const getSvelteQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasSvelteQueryV3 = isSvelteQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasSvelteQueryV3\n ? SVELTE_QUERY_DEPENDENCIES_V3\n : SVELTE_QUERY_DEPENDENCIES),\n ];\n};\n\nconst REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'UseMutationResult' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'react-query',\n },\n];\nconst REACT_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useSuspenseQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useSuspenseInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'useQueryClient', values: true },\n { name: 'UseQueryOptions' },\n { name: 'DefinedInitialDataOptions' },\n { name: 'UndefinedInitialDataOptions' },\n { name: 'UseSuspenseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseSuspenseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'DefinedUseQueryResult' },\n { name: 'UseSuspenseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'DefinedUseInfiniteQueryResult' },\n { name: 'UseSuspenseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'QueryClient' },\n { name: 'InfiniteData' },\n { name: 'UseMutationResult' },\n { name: 'DataTag' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/react-query',\n },\n];\n\nexport const getReactQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator,\n hasParamsSerializerOptions,\n packageJson,\n httpClient,\n hasTagsMutator,\n override,\n) => {\n const hasReactQuery =\n packageJson?.dependencies?.['react-query'] ??\n packageJson?.devDependencies?.['react-query'] ??\n packageJson?.peerDependencies?.['react-query'];\n const hasReactQueryV4 =\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query'];\n\n const useReactQueryV3 =\n override?.query.version === undefined\n ? hasReactQuery && !hasReactQueryV4\n : override?.query.version <= 3;\n\n return [\n ...(hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : []),\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(useReactQueryV3\n ? REACT_QUERY_DEPENDENCIES_V3\n : REACT_QUERY_DEPENDENCIES),\n ];\n};\n\nconst VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n ],\n dependency: 'vue-query',\n },\n {\n exports: [\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'UseQueryResult' },\n { name: 'UseInfiniteQueryResult' },\n { name: 'QueryKey' },\n { name: 'UseMutationReturnType' },\n { name: 'InvalidateOptions' },\n ],\n dependency: 'vue-query/types',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n {\n exports: [{ name: 'UseQueryReturnType' }],\n dependency: 'vue-query/lib/vue/useBaseQuery',\n },\n];\n\nconst VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'useQuery', values: true },\n { name: 'useInfiniteQuery', values: true },\n { name: 'useMutation', values: true },\n { name: 'UseQueryOptions' },\n { name: 'UseInfiniteQueryOptions' },\n { name: 'UseMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'UseQueryReturnType' },\n { name: 'UseInfiniteQueryReturnType' },\n { name: 'InfiniteData' },\n { name: 'UseMutationReturnType' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\n { name: 'InvalidateOptions' },\n ],\n dependency: '@tanstack/vue-query',\n },\n {\n exports: [\n { name: 'unref', values: true },\n { name: 'MaybeRef' },\n { name: 'computed', values: true },\n ],\n dependency: 'vue',\n },\n];\n\nconst ANGULAR_QUERY_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'injectQuery', values: true },\n { name: 'injectInfiniteQuery', values: true },\n { name: 'injectMutation', values: true },\n { name: 'InjectQueryOptions' },\n { name: 'InjectMutationOptions' },\n { name: 'CreateQueryOptions' },\n { name: 'CreateInfiniteQueryOptions' },\n { name: 'CreateMutationOptions' },\n { name: 'QueryFunction' },\n { name: 'MutationFunction' },\n { name: 'QueryKey' },\n { name: 'CreateQueryResult' },\n { name: 'CreateInfiniteQueryResult' },\n { name: 'InfiniteData' },\n { name: 'CreateMutationResult' },\n { name: 'DataTag' },\n { name: 'QueryClient' },\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\nconst isVueQueryV3 = (packageJson: PackageJson | undefined) => {\n const hasVueQuery =\n packageJson?.dependencies?.['vue-query'] ??\n packageJson?.devDependencies?.['vue-query'] ??\n packageJson?.peerDependencies?.['vue-query'];\n const hasVueQueryV4 =\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query'];\n\n return !!hasVueQuery && !hasVueQueryV4;\n};\n\nexport const getVueQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n const hasVueQueryV3 = isVueQueryV3(packageJson);\n\n return [\n ...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS\n ? AXIOS_DEPENDENCIES\n : []),\n ...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),\n ...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),\n ];\n};\n\nexport const getAngularQueryDependencies: ClientDependenciesBuilder = (\n hasGlobalMutator: boolean,\n hasParamsSerializerOptions: boolean,\n packageJson,\n httpClient?: OutputHttpClient,\n) => {\n // Use Angular HTTP dependencies by default for angular-query, or when explicitly set\n const useAngularHttp =\n !hasGlobalMutator && 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\nconst isQueryV5 = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'angular-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',\n) => {\n const version = getPackageByQueryClient(packageJson, queryClient);\n\n if (!version) {\n return false;\n }\n\n const withoutRc = version.split('-')[0];\n\n return compareVersions(withoutRc, '6.0.0');\n};\n\nconst isQueryV5WithDataTagError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'angular-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\nconst isQueryV5WithInfiniteQueryOptionsError = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'angular-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\nconst getPackageByQueryClient = (\n packageJson: PackageJson | undefined,\n queryClient: 'react-query' | 'vue-query' | 'svelte-query' | 'angular-query',\n) => {\n switch (queryClient) {\n case 'react-query': {\n return (\n packageJson?.dependencies?.['@tanstack/react-query'] ??\n packageJson?.devDependencies?.['@tanstack/react-query'] ??\n packageJson?.peerDependencies?.['@tanstack/react-query']\n );\n }\n case 'svelte-query': {\n return (\n packageJson?.dependencies?.['@tanstack/svelte-query'] ??\n packageJson?.devDependencies?.['@tanstack/svelte-query'] ??\n packageJson?.peerDependencies?.['@tanstack/svelte-query']\n );\n }\n case 'vue-query': {\n return (\n packageJson?.dependencies?.['@tanstack/vue-query'] ??\n packageJson?.devDependencies?.['@tanstack/vue-query'] ??\n packageJson?.peerDependencies?.['@tanstack/vue-query']\n );\n }\n case 'angular-query': {\n return (\n packageJson?.dependencies?.['@tanstack/angular-query-experimental'] ??\n packageJson?.devDependencies?.[\n '@tanstack/angular-query-experimental'\n ] ??\n packageJson?.peerDependencies?.['@tanstack/angular-query-experimental']\n );\n }\n }\n};\n\ntype QueryType = 'infiniteQuery' | 'query';\n\nconst QueryType = {\n INFINITE: 'infiniteQuery' as QueryType,\n QUERY: 'query' as QueryType,\n SUSPENSE_QUERY: 'suspenseQuery' as QueryType,\n SUSPENSE_INFINITE: 'suspenseInfiniteQuery' as QueryType,\n};\n\nconst INFINITE_QUERY_PROPERTIES = new Set([\n 'getNextPageParam',\n 'getPreviousPageParam',\n]);\n\nconst generateQueryOptions = ({\n params,\n options,\n type,\n outputClient,\n}: {\n params: GetterParams;\n options?: object | boolean;\n type: QueryType;\n outputClient: OutputClient | OutputClientFunc;\n}) => {\n if (options === false) {\n return '';\n }\n\n const queryConfig = isObject(options)\n ? ` ${stringify(\n omitBy(\n options,\n (_, key) =>\n (type !== QueryType.INFINITE ||\n type !== QueryType.SUSPENSE_INFINITE) &&\n INFINITE_QUERY_PROPERTIES.has(key),\n ),\n )?.slice(1, -1)}`\n : '';\n\n if (params.length === 0 || isSuspenseQuery(type)) {\n if (options) {\n return `${queryConfig} ...queryOptions`;\n }\n\n return '...queryOptions';\n }\n\n return `${\n !isObject(options) || !options.hasOwnProperty('enabled')\n ? isVue(outputClient)\n ? `enabled: computed(() => !!(${params\n .map(({ name }) => `unref(${name})`)\n .join(' && ')})),`\n : `enabled: !!(${params.map(({ name }) => name).join(' && ')}),`\n : ''\n }${queryConfig} ...queryOptions`;\n};\n\nconst isSuspenseQuery = (type: QueryType) => {\n return [QueryType.SUSPENSE_INFINITE, QueryType.SUSPENSE_QUERY].includes(type);\n};\n\nconst getQueryOptionsDefinition = ({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType,\n initialData,\n isAngularClient,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n definitions: string;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n isReturnType: boolean;\n initialData?: 'defined' | 'undefined';\n isAngularClient: boolean;\n}) => {\n const isMutatorHook = mutator?.isHook;\n const prefix = !hasSvelteQueryV4 && !isAngularClient ? 'Use' : 'Create';\n const partialOptions = !isReturnType && hasQueryV5;\n\n if (type) {\n const funcReturnType = `Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>`;\n\n const optionTypeInitialDataPostfix =\n initialData && !isSuspenseQuery(type)\n ? ` & Pick<\n ${pascal(initialData)}InitialDataOptions<\n ${funcReturnType},\n TError,\n ${funcReturnType}${\n hasQueryV5 &&\n (type === QueryType.INFINITE ||\n type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? `, QueryKey`\n : ''\n }\n > , 'initialData'\n >`\n : '';\n const optionType = `${prefix}${pascal(type)}Options<${funcReturnType}, TError, TData${\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE) &&\n queryParam &&\n queryParams\n ? hasQueryV5WithInfiniteQueryOptionsError\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : `, ${funcReturnType}, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }>`;\n return `${partialOptions ? 'Partial<' : ''}${optionType}${\n partialOptions ? '>' : ''\n }${optionTypeInitialDataPostfix}`;\n }\n\n return `${prefix}MutationOptions<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError,${definitions ? `{${definitions}}` : 'void'}, TContext>`;\n};\n\nconst generateQueryArguments = ({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData,\n httpClient,\n isAngularClient,\n}: {\n operationName: string;\n definitions: string;\n mutator?: GeneratorMutator;\n isRequestOptions: boolean;\n type?: QueryType;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n queryParams?: GetterQueryParam;\n queryParam?: string;\n initialData?: 'defined' | 'undefined';\n httpClient: OutputHttpClient;\n isAngularClient: boolean;\n}) => {\n const definition = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: false,\n initialData,\n isAngularClient,\n });\n\n if (!isRequestOptions) {\n return `${type ? 'queryOptions' : 'mutationOptions'}${\n initialData === 'defined' ? '' : '?'\n }: ${definition}`;\n }\n\n const requestType = getQueryArgumentsRequestType(httpClient, mutator);\n\n const isQueryRequired = initialData === 'defined';\n return `options${isQueryRequired ? '' : '?'}: { ${\n type ? 'query' : 'mutation'\n }${isQueryRequired ? '' : '?'}:${definition}, ${requestType}}\\n`;\n};\n\nconst generateQueryReturnType = ({\n outputClient,\n type,\n isMutatorHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n type: QueryType;\n isMutatorHook?: boolean;\n operationName: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n isInitialDataDefined?: boolean;\n}) => {\n switch (outputClient) {\n case OutputClient.ANGULAR_QUERY: {\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `CreateQueryResult<TData, TError>`;\n }\n return `CreateInfiniteQueryResult<TData, TError>`;\n }\n case OutputClient.SVELTE_QUERY: {\n if (!hasSvelteQueryV4) {\n return `Use${pascal(type)}StoreResult<Awaited<ReturnType<${\n isMutatorHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>, TError, TData, QueryKey> & { queryKey: QueryKey} }`;\n }\n\n return `Create${pascal(\n type,\n )}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.VUE_QUERY: {\n if (!hasVueQueryV4) {\n return ` UseQueryReturnType<TData, TError, Use${pascal(\n type,\n )}Result<TData, TError>> & { queryKey: QueryKey} }`;\n }\n\n if (type !== QueryType.INFINITE && type !== QueryType.SUSPENSE_INFINITE) {\n return `UseQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n\n return `UseInfiniteQueryReturnType<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n case OutputClient.REACT_QUERY:\n default: {\n return ` ${\n isInitialDataDefined && !isSuspenseQuery(type) ? 'Defined' : ''\n }Use${pascal(type)}Result<TData, TError> & { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`;\n }\n }\n};\n\nconst generateMutatorReturnType = ({\n outputClient,\n dataType,\n variableType,\n}: {\n outputClient: OutputClient | OutputClientFunc;\n dataType: unknown;\n variableType: unknown;\n}) => {\n if (outputClient === OutputClient.ANGULAR_QUERY) {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.REACT_QUERY) {\n return `: UseMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.SVELTE_QUERY) {\n return `: CreateMutationResult<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n if (outputClient === OutputClient.VUE_QUERY) {\n return `: UseMutationReturnType<\n Awaited<ReturnType<${dataType}>>,\n TError,\n ${variableType},\n TContext\n >`;\n }\n return '';\n};\n\nconst getQueryFnArguments = ({\n hasQueryParam,\n hasSignal,\n}: {\n hasQueryParam: boolean;\n hasSignal: boolean;\n}) => {\n if (!hasQueryParam && !hasSignal) {\n return '';\n }\n\n if (hasQueryParam) {\n if (hasSignal) {\n return '{ signal, pageParam }';\n }\n\n return '{ pageParam }';\n }\n\n return '{ signal }';\n};\n\nconst generatePrefetch = ({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n doc,\n queryProps,\n dataType,\n errorType,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n hasSvelteQueryV6,\n}: {\n operationName: string;\n mutator?: GeneratorMutator;\n type: QueryType;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n doc?: string;\n queryProps: string;\n dataType: string;\n errorType: string;\n queryArguments: string;\n queryOptionsVarName: string;\n queryOptionsFnName: string;\n queryProperties: string;\n isRequestOptions: boolean;\n hasSvelteQueryV6: boolean;\n}) => {\n const shouldGeneratePrefetch =\n usePrefetch &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n\n if (!shouldGeneratePrefetch) {\n return '';\n }\n\n const prefetchType =\n type === QueryType.QUERY || type === QueryType.SUSPENSE_QUERY\n ? 'query'\n : 'infinite-query';\n const prefetchFnName = camel(`prefetch-${prefetchType}`);\n\n if (mutator?.isHook) {\n const prefetchVarName = camel(\n `use-prefetch-${operationName}-${prefetchType}`,\n );\n return `${doc}export const ${prefetchVarName} = <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n const queryClient = useQueryClient();\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n return useCallback(async (): Promise<QueryClient> => {\n await queryClient.${prefetchFnName}(${queryOptionsVarName})\n return queryClient;\n },[queryClient, ${queryOptionsVarName}]);\n};\\n`;\n } else {\n const prefetchVarName = camel(`prefetch-${operationName}-${prefetchType}`);\n return `${doc}export const ${prefetchVarName} = async <TData = Awaited<ReturnType<${dataType}>>, TError = ${errorType}>(\\n queryClient: QueryClient, ${queryProps} ${queryArguments}\\n ): Promise<QueryClient> => {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n await queryClient.${prefetchFnName}(${\n hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName} })`\n : queryOptionsVarName\n });\n\n return queryClient;\n}\\n`;\n }\n};\n\nconst generateQueryImplementation = ({\n queryOption: { name, queryParam, options, type, queryKeyFnName },\n operationName,\n queryProperties,\n queryKeyProperties,\n queryParams,\n params,\n props,\n mutator,\n queryOptionsMutator,\n queryKeyMutator,\n isRequestOptions,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch,\n useQuery,\n useInfinite,\n useInvalidate,\n}: {\n queryOption: {\n name: string;\n options?: object | boolean;\n type: QueryType;\n queryParam?: string;\n queryKeyFnName: string;\n };\n isRequestOptions: boolean;\n operationName: string;\n queryProperties: string;\n queryKeyProperties: string;\n params: GetterParams;\n props: GetterProps;\n response: GetterResponse;\n queryParams?: GetterQueryParam;\n mutator?: GeneratorMutator;\n queryOptionsMutator?: GeneratorMutator;\n queryKeyMutator?: GeneratorMutator;\n outputClient: OutputClient | OutputClientFunc;\n httpClient: OutputHttpClient;\n isExactOptionalPropertyTypes: boolean;\n hasSignal: boolean;\n route: string;\n hasVueQueryV4: boolean;\n hasSvelteQueryV4: boolean;\n hasSvelteQueryV6: boolean;\n hasQueryV5: boolean;\n hasQueryV5WithDataTagError: boolean;\n hasQueryV5WithInfiniteQueryOptionsError: boolean;\n doc?: string;\n usePrefetch?: boolean;\n useQuery?: boolean;\n useInfinite?: boolean;\n useInvalidate?: boolean;\n}) => {\n const queryPropDefinitions = toObjectString(props, 'definition');\n const definedInitialDataQueryPropsDefinitions = toObjectString(\n props.map((prop) => {\n const regex = new RegExp(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 isAngularHttp =\n isAngular(outputClient) || httpClient === OutputHttpClient.ANGULAR;\n\n let httpFunctionProps = queryParam\n ? props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.name === 'params'\n ? `{...${\n isVue(outputClient) ? `unref(params)` : 'params'\n }, '${queryParam}': pageParam || ${\n isVue(outputClient)\n ? `unref(params)?.['${queryParam}']`\n : `params?.['${queryParam}']`\n }}`\n : param.name;\n })\n .join(',')\n : getHttpFunctionQueryProps(\n isVue(outputClient),\n httpClient,\n queryProperties,\n isAngularHttp,\n );\n\n // For Angular with infinite queries, we need to prefix with http\n if (queryParam && isAngularHttp) {\n httpFunctionProps = httpFunctionProps\n ? `http, ${httpFunctionProps}`\n : 'http';\n }\n\n const definedInitialDataReturnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n isInitialDataDefined: true,\n });\n const returnType = generateQueryReturnType({\n outputClient,\n type,\n isMutatorHook: mutator?.isHook,\n operationName,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n });\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const definedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n mutator,\n definitions: '',\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'defined',\n httpClient,\n isAngularClient: isAngular(outputClient),\n });\n const undefinedInitialDataQueryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n initialData: 'undefined',\n httpClient,\n isAngularClient: isAngular(outputClient),\n });\n const queryArguments = generateQueryArguments({\n operationName,\n definitions: '',\n mutator,\n isRequestOptions,\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n httpClient,\n isAngularClient: isAngular(outputClient),\n });\n\n const queryOptions = getQueryOptions({\n isRequestOptions,\n isExactOptionalPropertyTypes,\n mutator,\n hasSignal,\n httpClient,\n });\n\n const hookOptions = getHookOptions({\n isRequestOptions,\n httpClient,\n mutator,\n });\n\n const queryFnArguments = getQueryFnArguments({\n hasQueryParam:\n !!queryParam && props.some(({ type }) => type === 'queryParam'),\n hasSignal,\n });\n\n const queryOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions: '',\n type,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n queryParams,\n queryParam,\n isReturnType: true,\n isAngularClient: isAngular(outputClient),\n });\n\n const queryOptionsImp = generateQueryOptions({\n params,\n options,\n type,\n outputClient,\n });\n\n const queryOptionsFnName = camel(\n queryKeyMutator || queryOptionsMutator || mutator?.isHook\n ? `use-${name}-queryOptions`\n : `get-${name}-queryOptions`,\n );\n\n const queryOptionsVarName = isRequestOptions ? 'queryOptions' : 'options';\n\n const hasParamReservedWord = props.some(\n (prop: GetterProp) => prop.name === 'query',\n );\n const queryResultVarName = hasParamReservedWord ? '_query' : 'query';\n\n const infiniteParam =\n queryParams && queryParam\n ? `, ${queryParams?.schema.name}['${queryParam}']`\n : '';\n const TData =\n hasQueryV5 &&\n (type === QueryType.INFINITE || type === QueryType.SUSPENSE_INFINITE)\n ? `InfiniteData<Awaited<ReturnType<${dataType}>>${infiniteParam}>`\n : `Awaited<ReturnType<${dataType}>>`;\n\n const queryOptionsFn = `export const ${queryOptionsFnName} = <TData = ${TData}, TError = ${errorType}>(${queryProps} ${queryArguments}) => {\n\n${hookOptions}\n${isAngularHttp ? ' const http = inject(HttpClient);' : ''}\n\n const queryKey = ${\n queryKeyMutator\n ? `${queryKeyMutator.name}({ ${queryProperties} }${\n queryKeyMutator.hasSecondArg\n ? `, { url: \\`${route}\\`, queryOptions }`\n : ''\n });`\n : `${\n hasVueQueryV4 ? '' : 'queryOptions?.queryKey ?? '\n }${queryKeyFnName}(${queryKeyProperties});`\n }\n\n ${\n mutator?.isHook\n ? `const ${operationName} = use${pascal(operationName)}Hook();`\n : ''\n }\n\n const queryFn: QueryFunction<Awaited<ReturnType<${\n mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`\n }>>${\n hasQueryV5 && hasInfiniteQueryParam\n ? `, QueryKey, ${queryParams?.schema.name}['${queryParam}']`\n : ''\n }> = (${queryFnArguments}) => ${operationName}(${httpFunctionProps}${\n httpFunctionProps ? ', ' : ''\n }${queryOptions});\n\n ${\n isVue(outputClient)\n ? vueUnRefParams(\n props.filter(\n (prop) => prop.type === GetterPropType.NAMED_PATH_PARAMS,\n ),\n )\n : ''\n }\n\n ${\n queryOptionsMutator\n ? `const customOptions = ${\n queryOptionsMutator.name\n }({...queryOptions, queryKey, queryFn}${\n queryOptionsMutator.hasSecondArg ? `, { ${queryProperties} }` : ''\n }${\n queryOptionsMutator.hasThirdArg ? `, { url: \\`${route}\\` }` : ''\n });`\n : ''\n }\n\n return ${\n queryOptionsMutator\n ? 'customOptions'\n : `{ queryKey, queryFn, ${queryOptionsImp}}`\n } as ${queryOptionFnReturnType} ${\n isVue(outputClient) || isAngular(outputClient)\n ? ''\n : `& { queryKey: ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'} }`\n }\n}`;\n const operationPrefix = getFrameworkPrefix(\n hasSvelteQueryV4,\n isAngular(outputClient),\n );\n const optionalQueryClientArgument =\n hasQueryV5 && !isAngular(outputClient) ? ', queryClient?: QueryClient' : '';\n\n const queryHookName = camel(`${operationPrefix}-${name}`);\n\n const overrideTypes = `\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${definedInitialDataQueryPropsDefinitions} ${definedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${definedInitialDataReturnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${undefinedInitialDataQueryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryPropDefinitions} ${queryArguments} ${optionalQueryClientArgument}\\n ): ${returnType}`;\n\n const prefetch = generatePrefetch({\n usePrefetch,\n type,\n useQuery,\n useInfinite,\n operationName,\n mutator,\n queryProps,\n dataType,\n errorType,\n hasSvelteQueryV6,\n queryArguments,\n queryOptionsVarName,\n queryOptionsFnName,\n queryProperties,\n isRequestOptions,\n doc,\n });\n\n const shouldGenerateInvalidate =\n useInvalidate &&\n (type === QueryType.QUERY ||\n type === QueryType.INFINITE ||\n (type === QueryType.SUSPENSE_QUERY && !useQuery) ||\n (type === QueryType.SUSPENSE_INFINITE && !useInfinite));\n const invalidateFnName = camel(`invalidate-${name}`);\n\n return `\n${queryOptionsFn}\n\nexport type ${pascal(\n name,\n )}QueryResult = NonNullable<Awaited<ReturnType<${dataType}>>>\nexport type ${pascal(name)}QueryError = ${errorType}\n\n${hasQueryV5 && OutputClient.REACT_QUERY === outputClient ? overrideTypes : ''}\n${doc}\nexport function ${queryHookName}<TData = ${TData}, TError = ${errorType}>(\\n ${queryProps} ${queryArguments} ${optionalQueryClientArgument} \\n ): ${returnType} {\n\n const ${queryOptionsVarName} = ${queryOptionsFnName}(${queryProperties}${\n queryProperties ? ',' : ''\n }${isRequestOptions ? 'options' : 'queryOptions'})\n\n const ${queryResultVarName} = ${camel(\n `${operationPrefix}-${isAngular(outputClient) || hasSvelteQueryV4 ? getQueryTypeForFramework(type) : type}`,\n )}(${\n isAngular(outputClient)\n ? `() => ${queryOptionsVarName}`\n : hasSvelteQueryV6\n ? `() => ({ ...${queryOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${queryOptionsVarName}${!isAngular(outputClient) && optionalQueryClientArgument ? ', queryClient' : ''}`\n }) as ${returnType};\n\n ${\n isAngular(outputClient)\n ? ``\n : `${queryResultVarName}.queryKey = ${\n isVue(outputClient)\n ? `unref(${queryOptionsVarName})`\n : queryOptionsVarName\n }.queryKey ${isVue(outputClient) ? `as ${hasQueryV5 ? `DataTag<QueryKey, TData${hasQueryV5WithDataTagError ? ', TError' : ''}>` : 'QueryKey'}` : ''};`\n }\n\n return ${queryResultVarName};\n}\\n\n${prefetch}\n${\n shouldGenerateInvalidate\n ? `${doc}export const ${invalidateFnName} = async (\\n queryClient: QueryClient, ${queryProps} options?: InvalidateOptions\\n ): Promise<QueryClient> => {\n\n await queryClient.invalidateQueries({ queryKey: ${queryKeyFnName}(${queryKeyProperties}) }, options);\n\n return queryClient;\n}\\n`\n : ''\n}\n`;\n};\n\nconst generateQueryHook = async (\n {\n queryParams,\n operationName,\n body,\n props: _props,\n verb,\n params,\n override,\n mutator,\n response,\n operationId,\n summary,\n deprecated,\n }: GeneratorVerbOptions,\n { route, override: { operations }, context, output }: GeneratorOptions,\n outputClient: OutputClient | OutputClientFunc,\n) => {\n let props = _props;\n if (isVue(outputClient)) {\n props = vueWrapTypeWithMaybeRef(_props);\n }\n const query = override?.query;\n const isRequestOptions = override?.requestOptions !== false;\n const operationQueryOptions = operations[operationId]?.query;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n const queryVersion = override.query.version ?? query?.version;\n\n const hasVueQueryV4 =\n OutputClient.VUE_QUERY === outputClient &&\n (!isVueQueryV3(context.output.packageJson) || queryVersion === 4);\n const hasSvelteQueryV4 =\n OutputClient.SVELTE_QUERY === outputClient &&\n (!isSvelteQueryV3(context.output.packageJson) || queryVersion === 4);\n const hasSvelteQueryV6 =\n OutputClient.SVELTE_QUERY === outputClient &&\n isSvelteQueryV6(context.output.packageJson);\n\n const hasQueryV5 =\n queryVersion === 5 ||\n isQueryV5(\n context.output.packageJson,\n outputClient as\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query',\n );\n\n const hasQueryV5WithDataTagError =\n queryVersion === 5 ||\n isQueryV5WithDataTagError(\n context.output.packageJson,\n outputClient as\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query',\n );\n\n const hasQueryV5WithInfiniteQueryOptionsError =\n queryVersion === 5 ||\n isQueryV5WithInfiniteQueryOptionsError(\n context.output.packageJson,\n outputClient as\n | 'react-query'\n | 'vue-query'\n | 'svelte-query'\n | 'angular-query',\n );\n\n const httpClient = context.output.httpClient;\n const isAngularHttp =\n isAngular(outputClient) || httpClient === OutputHttpClient.ANGULAR;\n const doc = jsDoc({ summary, deprecated });\n\n let implementation = '';\n let mutators;\n\n // Allows operationQueryOptions (which is the Orval config override for the operationId)\n // to override non-GET verbs\n const hasOperationQueryOption = !!(\n operationQueryOptions &&\n (operationQueryOptions.useQuery ||\n operationQueryOptions.useSuspenseQuery ||\n operationQueryOptions.useInfinite ||\n operationQueryOptions.useSuspenseInfiniteQuery)\n );\n\n let isQuery =\n (Verbs.GET === verb &&\n (override.query.useQuery ||\n override.query.useSuspenseQuery ||\n override.query.useInfinite ||\n override.query.useSuspenseInfiniteQuery)) ||\n hasOperationQueryOption;\n\n let isMutation = override.query.useMutation && verb !== Verbs.GET;\n\n if (operationQueryOptions?.useMutation !== undefined) {\n isMutation = operationQueryOptions.useMutation;\n }\n\n // If both query and mutation are true for a non-GET operation, prioritize query\n if (verb !== Verbs.GET && isQuery) {\n isMutation = false;\n }\n\n // If both query and mutation are true for a GET operation, prioritize mutation\n if (verb === Verbs.GET && isMutation) {\n isQuery = false;\n }\n\n if (isQuery) {\n const queryKeyMutator = query.queryKey\n ? await generateMutator({\n output,\n mutator: query.queryKey,\n name: `${operationName}QueryKey`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryOptionsMutator = query.queryOptions\n ? await generateMutator({\n output,\n mutator: query.queryOptions,\n name: `${operationName}QueryOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const queryProperties = props\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queryKeyProperties = props\n .filter((prop) => prop.type !== GetterPropType.HEADER)\n .map((param) => {\n if (\n param.type === GetterPropType.NAMED_PATH_PARAMS &&\n !isVue(outputClient)\n )\n return param.destructured;\n return param.type === GetterPropType.BODY\n ? body.implementation\n : param.name;\n })\n .join(',');\n\n const queries = [\n ...(query?.useInfinite || operationQueryOptions?.useInfinite\n ? [\n {\n name: camel(`${operationName}-infinite`),\n options: query?.options,\n type: QueryType.INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ...(query?.useQuery || operationQueryOptions?.useQuery\n ? [\n {\n name: operationName,\n options: query?.options,\n type: QueryType.QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseQuery || operationQueryOptions?.useSuspenseQuery\n ? [\n {\n name: camel(`${operationName}-suspense`),\n options: query?.options,\n type: QueryType.SUSPENSE_QUERY,\n queryKeyFnName: camel(`get-${operationName}-query-key`),\n },\n ]\n : []),\n ...(query?.useSuspenseInfiniteQuery ||\n operationQueryOptions?.useSuspenseInfiniteQuery\n ? [\n {\n name: camel(`${operationName}-suspense-infinite`),\n options: query?.options,\n type: QueryType.SUSPENSE_INFINITE,\n queryParam: query?.useInfiniteQueryParam,\n queryKeyFnName: camel(`get-${operationName}-infinite-query-key`),\n },\n ]\n : []),\n ];\n\n // Convert \"param: Type\" to \"param?: Type\" for queryKey functions\n // to enable cache invalidation without type assertion\n const makeParamsOptional = (params: string) => {\n if (!params) return '';\n // Handle parameters with default values: \"param?: Type = value\" -> \"param: Type = value\" (remove optional marker)\n // Handle regular parameters: \"param: Type\" -> \"param?: Type\"\n return params.replaceAll(\n /(\\w+)(\\?)?:\\s*([^=,}]*?)\\s*(=\\s*[^,}]*)?([,}]|$)/g,\n (match, paramName, optionalMarker, type, defaultValue, suffix) => {\n // If parameter has a default value, don't add '?' (it's already effectively optional)\n if (defaultValue) {\n return `${paramName}: ${type.trim()}${defaultValue}${suffix}`;\n }\n // Otherwise, make it optional\n return `${paramName}?: ${type.trim()}${suffix}`;\n },\n );\n };\n\n const uniqueQueryOptionsByKeys = queries.filter(\n (obj, index, self) =>\n index ===\n self.findIndex((t) => t.queryKeyFnName === obj.queryKeyFnName),\n );\n\n implementation += `\n${\n queryKeyMutator\n ? ''\n : uniqueQueryOptionsByKeys.reduce((acc, queryOption) => {\n const queryKeyProps = makeParamsOptional(\n toObjectString(\n props.filter((prop) => prop.type !== GetterPropType.HEADER),\n 'implementation',\n ),\n );\n\n const routeString =\n isVue(outputClient) || override.query.shouldSplitQueryKey\n ? getRouteAsArray(route) // Note: this is required for reactivity to work, we will lose it if route params are converted into string, only as array they will be tracked // TODO: add tests for this\n : `\\`${route}\\``;\n\n // Use operation ID as query key if enabled, otherwise use route string\n const queryKeyIdentifier = override.query.useOperationIdAsQueryKey\n ? `\"${operationName}\"`\n : routeString;\n\n // 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 const queryKeyFn = `\n${override.query.shouldExportQueryKey ? 'export ' : ''}const ${queryOption.queryKeyFnName} = (${queryKeyProps}) => {\n return [\n ${[\n queryOption.type === QueryType.INFINITE ||\n queryOption.type === QueryType.SUSPENSE_INFINITE\n ? `'infinite'`\n : '',\n queryKeyIdentifier,\n queryKeyParams,\n body.implementation,\n ]\n .filter((x) => !!x)\n .join(', ')}\n ] as const;\n }\n`;\n return acc + queryKeyFn;\n }, '')\n}`;\n\n implementation += `\n ${queries.reduce((acc, queryOption) => {\n return (\n acc +\n generateQueryImplementation({\n queryOption,\n operationName,\n queryProperties,\n queryKeyProperties,\n params,\n props,\n mutator,\n isRequestOptions,\n queryParams,\n response,\n outputClient,\n httpClient,\n isExactOptionalPropertyTypes,\n hasSignal: getHasSignal({\n overrideQuerySignal: override.query.signal,\n verb,\n }),\n queryOptionsMutator,\n queryKeyMutator,\n route,\n hasVueQueryV4,\n hasSvelteQueryV4,\n hasSvelteQueryV6,\n hasQueryV5,\n hasQueryV5WithDataTagError,\n hasQueryV5WithInfiniteQueryOptionsError,\n doc,\n usePrefetch: query.usePrefetch,\n useQuery: query.useQuery,\n useInfinite: query.useInfinite,\n useInvalidate: query.useInvalidate,\n })\n );\n }, '')}\n`;\n\n mutators =\n queryOptionsMutator || queryKeyMutator\n ? [\n ...(queryOptionsMutator ? [queryOptionsMutator] : []),\n ...(queryKeyMutator ? [queryKeyMutator] : []),\n ]\n : undefined;\n }\n\n if (isMutation) {\n const mutationOptionsMutator = query.mutationOptions\n ? await generateMutator({\n output,\n mutator: query.mutationOptions,\n name: `${operationName}MutationOptions`,\n workspace: context.workspace,\n tsconfig: context.output.tsconfig,\n })\n : undefined;\n\n const definitions = props\n .map(({ definition, type }) =>\n type === GetterPropType.BODY\n ? mutator?.bodyTypeName\n ? `data: ${mutator.bodyTypeName}<${body.definition}>`\n : `data: ${body.definition}`\n : definition,\n )\n .join(';');\n\n const properties = props\n .map(({ name, type }) => (type === GetterPropType.BODY ? 'data' : name))\n .join(',');\n\n const errorType = getQueryErrorType(\n operationName,\n response,\n httpClient,\n mutator,\n );\n\n const dataType = mutator?.isHook\n ? `ReturnType<typeof use${pascal(operationName)}Hook>`\n : `typeof ${operationName}`;\n\n const mutationOptionFnReturnType = getQueryOptionsDefinition({\n operationName,\n mutator,\n definitions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n isReturnType: true,\n isAngularClient: isAngular(outputClient),\n });\n\n const mutationArguments = generateQueryArguments({\n operationName,\n definitions,\n mutator,\n isRequestOptions,\n hasSvelteQueryV4,\n hasQueryV5,\n hasQueryV5WithInfiniteQueryOptionsError,\n httpClient,\n isAngularClient: isAngular(outputClient),\n });\n\n const mutationOptionsFnName = camel(\n mutationOptionsMutator || mutator?.isHook\n ? `use-${operationName}-mutationOptions`\n : `get-${operationName}-mutationOptions`,\n );\n\n const mutationOptionsVarName = isRequestOptions\n ? 'mutationOptions'\n : 'options';\n\n const hooksOptionImplementation = getHooksOptionImplementation(\n isRequestOptions,\n httpClient,\n camel(operationName),\n mutator,\n );\n\n const mutationOptionsFn = `export const ${mutationOptionsFnName} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments}): ${mutationOptionFnReturnType} => {\n\n${hooksOptionImplementation}\n${isAngularHttp ? ' const http = inject(HttpClient);' : ''}\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}(${isAngularHttp ? 'http, ' : ''}${properties}${\n properties ? ',' : ''\n }${getMutationRequestArgs(isRequestOptions, httpClient, mutator)})\n }\n\n ${\n mutationOptionsMutator\n ? `const customOptions = ${\n mutationOptionsMutator.name\n }({...mutationOptions, mutationFn}${\n mutationOptionsMutator.hasSecondArg\n ? `, { url: \\`${route.replaceAll('/${', '/{')}\\` }`\n : ''\n }${\n mutationOptionsMutator.hasThirdArg\n ? `, { operationId: '${operationId}', operationName: '${operationName}' }`\n : ''\n });`\n : ''\n }\n\n\n return ${\n mutationOptionsMutator\n ? 'customOptions'\n : '{ mutationFn, ...mutationOptions }'\n }}`;\n\n const operationPrefix = getFrameworkPrefix(\n hasSvelteQueryV4,\n isAngular(outputClient),\n );\n const optionalQueryClientArgument =\n hasQueryV5 && !isAngular(outputClient)\n ? ', queryClient?: QueryClient'\n : '';\n\n implementation += `\n${mutationOptionsFn}\n\n export type ${pascal(\n operationName,\n )}MutationResult = NonNullable<Awaited<ReturnType<${dataType}>>>\n ${\n body.definition\n ? `export type ${pascal(operationName)}MutationBody = ${\n mutator?.bodyTypeName\n ? `${mutator.bodyTypeName}<${body.definition}>`\n : body.definition\n }`\n : ''\n }\n export type ${pascal(operationName)}MutationError = ${errorType}\n\n ${doc}export const ${camel(\n `${operationPrefix}-${operationName}`,\n )} = <TError = ${errorType},\n TContext = unknown>(${mutationArguments} ${optionalQueryClientArgument})${generateMutatorReturnType(\n {\n outputClient,\n dataType,\n variableType: definitions ? `{${definitions}}` : 'void',\n },\n )} => {\n\n const ${mutationOptionsVarName} = ${mutationOptionsFnName}(${\n isRequestOptions ? 'options' : 'mutationOptions'\n });\n\n return ${operationPrefix}Mutation(${\n isAngular(outputClient)\n ? `() => ${mutationOptionsVarName}`\n : hasSvelteQueryV6\n ? `() => ({ ...${mutationOptionsVarName}${optionalQueryClientArgument ? ', queryClient' : ''} })`\n : `${mutationOptionsVarName}${!isAngular(outputClient) && optionalQueryClientArgument ? ', queryClient' : ''}`\n });\n }\n `;\n\n mutators = mutationOptionsMutator\n ? [...(mutators ?? []), mutationOptionsMutator]\n : mutators;\n }\n\n return {\n implementation,\n mutators,\n };\n};\n\nexport const generateQueryHeader: ClientHeaderBuilder = (params) => {\n return `${\n params.hasAwaitedType\n ? ''\n : `type AwaitedInput<T> = PromiseLike<T> | T;\\n\n type Awaited<O> = O extends AwaitedInput<infer T> ? T : never;\\n\\n`\n }\n${\n params.isRequestOptions && params.isMutator\n ? `type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\\n\\n`\n : ''\n}\n${getQueryHeader(params)}\n`;\n};\n\nexport const generateQuery: ClientBuilder = async (\n verbOptions,\n options,\n outputClient,\n) => {\n const imports = generateVerbImports(verbOptions);\n const functionImplementation = generateQueryRequestFunction(\n verbOptions,\n options,\n isVue(outputClient),\n );\n const { implementation: hookImplementation, mutators } =\n await generateQueryHook(verbOptions, options, outputClient);\n\n return {\n implementation: `${functionImplementation}\\n\\n${hookImplementation}`,\n imports,\n mutators,\n };\n};\n\nconst dependenciesBuilder: Record<\n 'react-query' | 'vue-query' | 'svelte-query' | 'angular-query',\n ClientDependenciesBuilder\n> = {\n 'react-query': getReactQueryDependencies,\n 'vue-query': getVueQueryDependencies,\n 'svelte-query': getSvelteQueryDependencies,\n 'angular-query': getAngularQueryDependencies,\n};\n\nexport const builder =\n ({\n type = 'react-query',\n options: queryOptions,\n output,\n }: {\n type?: 'react-query' | 'vue-query' | 'svelte-query' | 'angular-query';\n options?: QueryOptions;\n output?: NormalizedOutputOptions;\n } = {}) =>\n () => {\n const client: ClientBuilder = (verbOptions, options, outputClient) => {\n if (\n options.override.useNamedParameters &&\n (type === 'vue-query' || outputClient === 'vue-query')\n ) {\n throw new Error(\n `vue-query client does not support named parameters, and had broken reactivity previously, please set useNamedParameters to false; See for context: https://github.com/orval-labs/orval/pull/931#issuecomment-1752355686`,\n );\n }\n\n if (queryOptions) {\n const normalizedQueryOptions = normalizeQueryOptions(\n queryOptions,\n options.context.workspace,\n );\n verbOptions.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n options.override.query = mergeDeep(\n normalizedQueryOptions,\n verbOptions.override.query,\n );\n }\n return generateQuery(verbOptions, options, outputClient, output);\n };\n\n return {\n client: client,\n header: generateQueryHeader,\n dependencies: dependenciesBuilder[type],\n };\n };\n\nexport default builder;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/query",
|
|
3
|
-
"version": "8.0.0-rc.
|
|
3
|
+
"version": "8.0.0-rc.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
"nuke": "rimraf .turbo dist node_modules"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@orval/core": "8.0.0-rc.
|
|
27
|
-
"@orval/fetch": "8.0.0-rc.
|
|
26
|
+
"@orval/core": "8.0.0-rc.5",
|
|
27
|
+
"@orval/fetch": "8.0.0-rc.5",
|
|
28
28
|
"chalk": "^5.6.2",
|
|
29
29
|
"remeda": "^2.32.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"eslint": "9.39.
|
|
33
|
-
"rimraf": "6.1.
|
|
34
|
-
"tsdown": "0.
|
|
35
|
-
"vitest": "4.0.
|
|
32
|
+
"eslint": "9.39.2",
|
|
33
|
+
"rimraf": "6.1.2",
|
|
34
|
+
"tsdown": "0.18.2",
|
|
35
|
+
"vitest": "4.0.16"
|
|
36
36
|
},
|
|
37
37
|
"stableVersion": "8.0.0-rc.4"
|
|
38
38
|
}
|