Skip to content

Commit 3e82c58

Browse files
Revert "fix(vue-query): do not subscribe on server - nuxt2 memory leak fix (#5576)" (#5627)
This reverts commit f16e413.
1 parent e1abd07 commit 3e82c58

File tree

9 files changed

+40
-53
lines changed

9 files changed

+40
-53
lines changed

packages/vue-query/src/__mocks__/useQueryClient.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { QueryClient } from '../queryClient'
2-
import { noop } from '../utils'
32

43
const queryClient = new QueryClient({
54
logger: {
65
...console,
7-
error: noop,
6+
error: () => {
7+
// Noop
8+
},
89
},
910
defaultOptions: {
1011
queries: { retry: false, cacheTime: Infinity },

packages/vue-query/src/__tests__/useQuery.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import {
1515
} from './test-utils'
1616
import { useQuery } from '../useQuery'
1717
import { parseQueryArgs, useBaseQuery } from '../useBaseQuery'
18-
import { noop } from '../utils'
1918

2019
jest.mock('../useQueryClient')
2120
jest.mock('../useBaseQuery')
@@ -117,7 +116,9 @@ describe('useQuery', () => {
117116

118117
test('should update query on reactive options object change', async () => {
119118
const spy = jest.fn()
120-
const onSuccess = ref(noop)
119+
const onSuccess = ref(() => {
120+
// Noop
121+
})
121122
useQuery(
122123
['key6'],
123124
simpleFetcher,

packages/vue-query/src/useBaseQuery.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ import type {
1616
QueryObserverResult,
1717
QueryFunction,
1818
} from '@tanstack/query-core'
19-
import { isServer } from '@tanstack/query-core'
2019
import { useQueryClient } from './useQueryClient'
21-
import { updateState, isQueryKey, cloneDeepUnref, noop } from './utils'
20+
import { updateState, isQueryKey, cloneDeepUnref } from './utils'
2221
import type { MaybeRef, WithQueryClientKey } from './types'
2322
import type { UseQueryOptions } from './useQuery'
2423
import type { UseInfiniteQueryOptions } from './useInfiniteQuery'
@@ -72,20 +71,19 @@ export function useBaseQuery<
7271
const observer = new Observer(queryClient, defaultedOptions.value)
7372
const state = reactive(observer.getCurrentResult())
7473

75-
const unsubscribe = ref(noop)
74+
const unsubscribe = ref(() => {
75+
// noop
76+
})
7677

7778
watch(
7879
queryClient.isRestoring,
7980
(isRestoring) => {
8081
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
8182
if (!isRestoring) {
8283
unsubscribe.value()
83-
// Nuxt2 memory leak fix - do not subscribe on server
84-
if (!isServer) {
85-
unsubscribe.value = observer.subscribe((result) => {
86-
updateState(state, result)
87-
})
88-
}
84+
unsubscribe.value = observer.subscribe((result) => {
85+
updateState(state, result)
86+
})
8987
}
9088
},
9189
{ immediate: true },
@@ -106,7 +104,9 @@ export function useBaseQuery<
106104

107105
const suspense = () => {
108106
return new Promise<QueryObserverResult<TData, TError>>((resolve) => {
109-
let stopWatch = noop
107+
let stopWatch = () => {
108+
//noop
109+
}
110110
const run = () => {
111111
if (defaultedOptions.value.enabled !== false) {
112112
const optimisticResult = observer.getOptimisticResult(

packages/vue-query/src/useIsFetching.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'
22
import type { Ref } from 'vue-demi'
33
import type { QueryKey, QueryFilters as QF } from '@tanstack/query-core'
4-
import { isServer } from '@tanstack/query-core'
54

65
import { useQueryClient } from './useQueryClient'
7-
import { cloneDeepUnref, isQueryKey, noop } from './utils'
6+
import { cloneDeepUnref, isQueryKey } from './utils'
87
import type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'
98

109
export type QueryFilters = MaybeRefDeep<WithQueryClientKey<QF>>
@@ -24,12 +23,9 @@ export function useIsFetching(
2423

2524
const isFetching = ref(queryClient.isFetching(filters))
2625

27-
// Nuxt2 memory leak fix - do not subscribe on server
28-
const unsubscribe = isServer
29-
? noop
30-
: queryClient.getQueryCache().subscribe(() => {
31-
isFetching.value = queryClient.isFetching(filters)
32-
})
26+
const unsubscribe = queryClient.getQueryCache().subscribe(() => {
27+
isFetching.value = queryClient.isFetching(filters)
28+
})
3329

3430
watch(
3531
filters,

packages/vue-query/src/useIsMutating.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'
22
import type { Ref } from 'vue-demi'
33
import type { MutationKey, MutationFilters as MF } from '@tanstack/query-core'
4-
import { isServer } from '@tanstack/query-core'
54

65
import { useQueryClient } from './useQueryClient'
7-
import { cloneDeepUnref, isQueryKey, noop } from './utils'
6+
import { cloneDeepUnref, isQueryKey } from './utils'
87
import type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'
98

109
export type MutationFilters = MaybeRefDeep<WithQueryClientKey<MF>>
@@ -24,12 +23,9 @@ export function useIsMutating(
2423

2524
const isMutating = ref(queryClient.isMutating(filters))
2625

27-
// Nuxt2 memory leak fix - do not subscribe on server
28-
const unsubscribe = isServer
29-
? noop
30-
: queryClient.getMutationCache().subscribe(() => {
31-
isMutating.value = queryClient.isMutating(filters)
32-
})
26+
const unsubscribe = queryClient.getMutationCache().subscribe(() => {
27+
isMutating.value = queryClient.isMutating(filters)
28+
})
3329

3430
watch(
3531
filters,

packages/vue-query/src/useMutation.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,14 @@ import type {
1616
MutationObserverResult,
1717
MutationObserverOptions,
1818
} from '@tanstack/query-core'
19-
import { isServer } from '@tanstack/query-core'
2019
import type {
2120
WithQueryClientKey,
2221
MaybeRef,
2322
MaybeRefDeep,
2423
DistributiveOmit,
2524
} from './types'
2625
import { MutationObserver } from '@tanstack/query-core'
27-
import { cloneDeepUnref, updateState, isMutationKey, noop } from './utils'
26+
import { cloneDeepUnref, updateState, isMutationKey } from './utils'
2827
import { useQueryClient } from './useQueryClient'
2928

3029
type MutationResult<TData, TError, TVariables, TContext> = DistributiveOmit<
@@ -155,12 +154,9 @@ export function useMutation<
155154
)
156155
const state = reactive(observer.getCurrentResult())
157156

158-
// Nuxt2 memory leak fix - do not subscribe on server
159-
const unsubscribe = isServer
160-
? noop
161-
: observer.subscribe((result) => {
162-
updateState(state, result)
163-
})
157+
const unsubscribe = observer.subscribe((result) => {
158+
updateState(state, result)
159+
})
164160

165161
const mutate = (
166162
variables: TVariables,

packages/vue-query/src/useQueries.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
2-
import { isServer, QueriesObserver } from '@tanstack/query-core'
2+
import { QueriesObserver } from '@tanstack/query-core'
33
import {
44
computed,
55
onScopeDispose,
@@ -13,7 +13,7 @@ import type { Ref } from 'vue-demi'
1313
import type { QueryFunction, QueryObserverResult } from '@tanstack/query-core'
1414

1515
import { useQueryClient } from './useQueryClient'
16-
import { cloneDeepUnref, noop } from './utils'
16+
import { cloneDeepUnref } from './utils'
1717
import type { UseQueryOptions } from './useQuery'
1818
import type { QueryClient } from './queryClient'
1919

@@ -175,19 +175,18 @@ export function useQueries<T extends any[]>({
175175
const observer = new QueriesObserver(queryClient, defaultedQueries.value)
176176
const state = reactive(observer.getCurrentResult())
177177

178-
const unsubscribe = ref(noop)
178+
const unsubscribe = ref(() => {
179+
// noop
180+
})
179181

180182
watch(
181183
queryClient.isRestoring,
182184
(isRestoring) => {
183185
if (!isRestoring) {
184186
unsubscribe.value()
185-
// Nuxt2 memory leak fix - do not subscribe on server
186-
if (!isServer) {
187-
unsubscribe.value = observer.subscribe((result) => {
188-
state.splice(0, result.length, ...result)
189-
})
190-
}
187+
unsubscribe.value = observer.subscribe((result) => {
188+
state.splice(0, result.length, ...result)
189+
})
191190
// Subscription would not fire for persisted results
192191
state.splice(
193192
0,

packages/vue-query/src/utils.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,3 @@ function isPlainObject(value: unknown): value is Object {
6969
const prototype = Object.getPrototypeOf(value)
7070
return prototype === null || prototype === Object.prototype
7171
}
72-
73-
export function noop(): void {
74-
return undefined
75-
}

packages/vue-query/src/vueQueryPlugin.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { isServer } from '@tanstack/query-core'
33
import type { QueryClientConfig } from '@tanstack/query-core'
44

55
import { QueryClient } from './queryClient'
6-
import { getClientKey, noop } from './utils'
6+
import { getClientKey } from './utils'
77
import { setupDevtools } from './devtools/devtools'
88
import type { MaybeRefDeep } from './types'
99

@@ -61,7 +61,9 @@ export const VueQueryPlugin = {
6161
client.mount()
6262
}
6363

64-
let persisterUnmount = noop
64+
let persisterUnmount = () => {
65+
// noop
66+
}
6567

6668
if (options.clientPersister) {
6769
client.isRestoring.value = true

0 commit comments

Comments
 (0)