Skip to content

Commit fb6a0a9

Browse files
committed
Revert "chore: drop Tanstack Query v3 compatibility (#2487)"
This reverts commit e00076f.
1 parent af5f1d5 commit fb6a0a9

File tree

2 files changed

+141
-7
lines changed

2 files changed

+141
-7
lines changed

packages/core/src/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ export type NormalizedQueryOptions = {
584584
shouldSplitQueryKey?: boolean;
585585
useOperationIdAsQueryKey?: boolean;
586586
signal?: boolean;
587-
version?: 4 | 5;
587+
version?: 3 | 4 | 5;
588588
};
589589

590590
export type QueryOptions = {
@@ -606,7 +606,7 @@ export type QueryOptions = {
606606
shouldSplitQueryKey?: boolean;
607607
useOperationIdAsQueryKey?: boolean;
608608
signal?: boolean;
609-
version?: 4 | 5;
609+
version?: 3 | 4 | 5;
610610
};
611611

612612
export type AngularOptions = {

packages/query/src/index.ts

Lines changed: 139 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,28 @@ const PARAMS_SERIALIZER_DEPENDENCIES: GeneratorDependency[] = [
7979
},
8080
];
8181

82+
const SVELTE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [
83+
{
84+
exports: [
85+
{ name: 'useQuery', values: true },
86+
{ name: 'useInfiniteQuery', values: true },
87+
{ name: 'useMutation', values: true },
88+
{ name: 'UseQueryOptions' },
89+
{
90+
name: 'UseInfiniteQueryOptions',
91+
},
92+
{ name: 'UseMutationOptions' },
93+
{ name: 'QueryFunction' },
94+
{ name: 'MutationFunction' },
95+
{ name: 'UseQueryStoreResult' },
96+
{ name: 'UseInfiniteQueryStoreResult' },
97+
{ name: 'QueryKey' },
98+
{ name: 'CreateMutationResult' },
99+
{ name: 'InvalidateOptions' },
100+
],
101+
dependency: '@sveltestack/svelte-query',
102+
},
103+
];
82104
const SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [
83105
{
84106
exports: [
@@ -105,6 +127,19 @@ const SVELTE_QUERY_DEPENDENCIES: GeneratorDependency[] = [
105127
},
106128
];
107129

130+
const isSvelteQueryV3 = (packageJson: PackageJson | undefined) => {
131+
const hasSvelteQuery =
132+
packageJson?.dependencies?.['@sveltestack/svelte-query'] ??
133+
packageJson?.devDependencies?.['@sveltestack/svelte-query'] ??
134+
packageJson?.peerDependencies?.['@sveltestack/svelte-query'];
135+
const hasSvelteQueryV4 =
136+
packageJson?.dependencies?.['@tanstack/svelte-query'] ??
137+
packageJson?.devDependencies?.['@tanstack/svelte-query'] ??
138+
packageJson?.peerDependencies?.['@tanstack/svelte-query'];
139+
140+
return !!hasSvelteQuery && !hasSvelteQueryV4;
141+
};
142+
108143
const isSvelteQueryV6 = (packageJson: PackageJson | undefined) => {
109144
return isQueryV6(packageJson, 'svelte-query');
110145
};
@@ -115,15 +150,41 @@ export const getSvelteQueryDependencies: ClientDependenciesBuilder = (
115150
packageJson,
116151
httpClient?: OutputHttpClient,
117152
) => {
153+
const hasSvelteQueryV3 = isSvelteQueryV3(packageJson);
154+
118155
return [
119156
...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS
120157
? AXIOS_DEPENDENCIES
121158
: []),
122159
...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),
123-
...SVELTE_QUERY_DEPENDENCIES,
160+
...(hasSvelteQueryV3
161+
? SVELTE_QUERY_DEPENDENCIES_V3
162+
: SVELTE_QUERY_DEPENDENCIES),
124163
];
125164
};
126165

166+
const REACT_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [
167+
{
168+
exports: [
169+
{ name: 'useQuery', values: true },
170+
{ name: 'useInfiniteQuery', values: true },
171+
{ name: 'useMutation', values: true },
172+
{ name: 'useQueryClient', values: true },
173+
{ name: 'UseQueryOptions' },
174+
{ name: 'UseInfiniteQueryOptions' },
175+
{ name: 'UseMutationOptions' },
176+
{ name: 'QueryFunction' },
177+
{ name: 'MutationFunction' },
178+
{ name: 'UseQueryResult' },
179+
{ name: 'UseInfiniteQueryResult' },
180+
{ name: 'QueryKey' },
181+
{ name: 'QueryClient' },
182+
{ name: 'UseMutationResult' },
183+
{ name: 'InvalidateOptions' },
184+
],
185+
dependency: 'react-query',
186+
},
187+
];
127188
const REACT_QUERY_DEPENDENCIES: GeneratorDependency[] = [
128189
{
129190
exports: [
@@ -165,17 +226,71 @@ export const getReactQueryDependencies: ClientDependenciesBuilder = (
165226
packageJson,
166227
httpClient,
167228
hasTagsMutator,
229+
override,
168230
) => {
231+
const hasReactQuery =
232+
packageJson?.dependencies?.['react-query'] ??
233+
packageJson?.devDependencies?.['react-query'] ??
234+
packageJson?.peerDependencies?.['react-query'];
235+
const hasReactQueryV4 =
236+
packageJson?.dependencies?.['@tanstack/react-query'] ??
237+
packageJson?.devDependencies?.['@tanstack/react-query'] ??
238+
packageJson?.peerDependencies?.['@tanstack/react-query'];
239+
240+
const useReactQueryV3 =
241+
override?.query.version === undefined
242+
? hasReactQuery && !hasReactQueryV4
243+
: override?.query.version <= 3;
244+
169245
return [
170246
...(hasGlobalMutator || hasTagsMutator ? REACT_DEPENDENCIES : []),
171247
...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS
172248
? AXIOS_DEPENDENCIES
173249
: []),
174250
...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),
175-
...REACT_QUERY_DEPENDENCIES,
251+
...(useReactQueryV3
252+
? REACT_QUERY_DEPENDENCIES_V3
253+
: REACT_QUERY_DEPENDENCIES),
176254
];
177255
};
178256

257+
const VUE_QUERY_DEPENDENCIES_V3: GeneratorDependency[] = [
258+
{
259+
exports: [
260+
{ name: 'useQuery', values: true },
261+
{ name: 'useInfiniteQuery', values: true },
262+
{ name: 'useMutation', values: true },
263+
],
264+
dependency: 'vue-query',
265+
},
266+
{
267+
exports: [
268+
{ name: 'UseQueryOptions' },
269+
{ name: 'UseInfiniteQueryOptions' },
270+
{ name: 'UseMutationOptions' },
271+
{ name: 'QueryFunction' },
272+
{ name: 'MutationFunction' },
273+
{ name: 'UseQueryResult' },
274+
{ name: 'UseInfiniteQueryResult' },
275+
{ name: 'QueryKey' },
276+
{ name: 'UseMutationReturnType' },
277+
{ name: 'InvalidateOptions' },
278+
],
279+
dependency: 'vue-query/types',
280+
},
281+
{
282+
exports: [
283+
{ name: 'unref', values: true },
284+
{ name: 'computed', values: true },
285+
],
286+
dependency: 'vue',
287+
},
288+
{
289+
exports: [{ name: 'UseQueryReturnType' }],
290+
dependency: 'vue-query/lib/vue/useBaseQuery',
291+
},
292+
];
293+
179294
const VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [
180295
{
181296
exports: [
@@ -208,18 +323,33 @@ const VUE_QUERY_DEPENDENCIES: GeneratorDependency[] = [
208323
},
209324
];
210325

326+
const isVueQueryV3 = (packageJson: PackageJson | undefined) => {
327+
const hasVueQuery =
328+
packageJson?.dependencies?.['vue-query'] ??
329+
packageJson?.devDependencies?.['vue-query'] ??
330+
packageJson?.peerDependencies?.['vue-query'];
331+
const hasVueQueryV4 =
332+
packageJson?.dependencies?.['@tanstack/vue-query'] ??
333+
packageJson?.devDependencies?.['@tanstack/vue-query'] ??
334+
packageJson?.peerDependencies?.['@tanstack/vue-query'];
335+
336+
return !!hasVueQuery && !hasVueQueryV4;
337+
};
338+
211339
export const getVueQueryDependencies: ClientDependenciesBuilder = (
212340
hasGlobalMutator: boolean,
213341
hasParamsSerializerOptions: boolean,
214342
packageJson,
215343
httpClient?: OutputHttpClient,
216344
) => {
345+
const hasVueQueryV3 = isVueQueryV3(packageJson);
346+
217347
return [
218348
...(!hasGlobalMutator && httpClient === OutputHttpClient.AXIOS
219349
? AXIOS_DEPENDENCIES
220350
: []),
221351
...(hasParamsSerializerOptions ? PARAMS_SERIALIZER_DEPENDENCIES : []),
222-
...VUE_QUERY_DEPENDENCIES,
352+
...(hasVueQueryV3 ? VUE_QUERY_DEPENDENCIES_V3 : VUE_QUERY_DEPENDENCIES),
223353
];
224354
};
225355

@@ -1136,8 +1266,12 @@ const generateQueryHook = async (
11361266
!!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;
11371267
const queryVersion = override.query.version ?? query?.version;
11381268

1139-
const hasVueQueryV4 = OutputClient.VUE_QUERY === outputClient;
1140-
const hasSvelteQueryV4 = OutputClient.SVELTE_QUERY === outputClient;
1269+
const hasVueQueryV4 =
1270+
OutputClient.VUE_QUERY === outputClient &&
1271+
(!isVueQueryV3(context.output.packageJson) || queryVersion === 4);
1272+
const hasSvelteQueryV4 =
1273+
OutputClient.SVELTE_QUERY === outputClient &&
1274+
(!isSvelteQueryV3(context.output.packageJson) || queryVersion === 4);
11411275
const hasSvelteQueryV6 =
11421276
OutputClient.SVELTE_QUERY === outputClient &&
11431277
isSvelteQueryV6(context.output.packageJson);

0 commit comments

Comments
 (0)