@tanstack/vue-query 4.29.10 → 4.29.13

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.
Files changed (84) hide show
  1. package/README.md +18 -14
  2. package/build/lib/useBaseQuery.esm.js +11 -9
  3. package/build/lib/useBaseQuery.esm.js.map +1 -1
  4. package/build/lib/useBaseQuery.js +10 -8
  5. package/build/lib/useBaseQuery.js.map +1 -1
  6. package/build/lib/useBaseQuery.mjs +11 -9
  7. package/build/lib/useBaseQuery.mjs.map +1 -1
  8. package/build/lib/useIsFetching.esm.js +5 -3
  9. package/build/lib/useIsFetching.esm.js.map +1 -1
  10. package/build/lib/useIsFetching.js +4 -2
  11. package/build/lib/useIsFetching.js.map +1 -1
  12. package/build/lib/useIsFetching.mjs +5 -3
  13. package/build/lib/useIsFetching.mjs.map +1 -1
  14. package/build/lib/useIsMutating.esm.js +5 -3
  15. package/build/lib/useIsMutating.esm.js.map +1 -1
  16. package/build/lib/useIsMutating.js +4 -2
  17. package/build/lib/useIsMutating.js.map +1 -1
  18. package/build/lib/useIsMutating.mjs +5 -3
  19. package/build/lib/useIsMutating.mjs.map +1 -1
  20. package/build/lib/useMutation.esm.js +5 -4
  21. package/build/lib/useMutation.esm.js.map +1 -1
  22. package/build/lib/useMutation.js +3 -2
  23. package/build/lib/useMutation.js.map +1 -1
  24. package/build/lib/useMutation.mjs +5 -4
  25. package/build/lib/useMutation.mjs.map +1 -1
  26. package/build/lib/useQueries.esm.js +11 -8
  27. package/build/lib/useQueries.esm.js.map +1 -1
  28. package/build/lib/useQueries.js +9 -6
  29. package/build/lib/useQueries.js.map +1 -1
  30. package/build/lib/useQueries.mjs +11 -8
  31. package/build/lib/useQueries.mjs.map +1 -1
  32. package/build/lib/utils.d.ts +1 -0
  33. package/build/lib/utils.esm.js +5 -1
  34. package/build/lib/utils.esm.js.map +1 -1
  35. package/build/lib/utils.js +5 -0
  36. package/build/lib/utils.js.map +1 -1
  37. package/build/lib/utils.mjs +5 -1
  38. package/build/lib/utils.mjs.map +1 -1
  39. package/build/lib/vueQueryPlugin.esm.js +2 -3
  40. package/build/lib/vueQueryPlugin.esm.js.map +1 -1
  41. package/build/lib/vueQueryPlugin.js +1 -2
  42. package/build/lib/vueQueryPlugin.js.map +1 -1
  43. package/build/lib/vueQueryPlugin.mjs +2 -3
  44. package/build/lib/vueQueryPlugin.mjs.map +1 -1
  45. package/build/umd/index.development.js +45 -35
  46. package/build/umd/index.development.js.map +1 -1
  47. package/build/umd/index.production.js +1 -1
  48. package/build/umd/index.production.js.map +1 -1
  49. package/package.json +2 -2
  50. package/build/lib/__mocks__/useBaseQuery.d.ts.map +0 -1
  51. package/build/lib/__mocks__/useQueryClient.d.ts.map +0 -1
  52. package/build/lib/__tests__/mutationCache.test.d.ts.map +0 -1
  53. package/build/lib/__tests__/queryCache.test.d.ts.map +0 -1
  54. package/build/lib/__tests__/queryClient.test.d.ts.map +0 -1
  55. package/build/lib/__tests__/test-utils.d.ts.map +0 -1
  56. package/build/lib/__tests__/useInfiniteQuery.test.d.ts.map +0 -1
  57. package/build/lib/__tests__/useInfiniteQuery.types.test.d.ts.map +0 -1
  58. package/build/lib/__tests__/useIsFetching.test.d.ts.map +0 -1
  59. package/build/lib/__tests__/useIsMutating.test.d.ts.map +0 -1
  60. package/build/lib/__tests__/useMutation.test.d.ts.map +0 -1
  61. package/build/lib/__tests__/useMutation.types.test.d.ts.map +0 -1
  62. package/build/lib/__tests__/useQueries.test.d.ts.map +0 -1
  63. package/build/lib/__tests__/useQuery.test.d.ts.map +0 -1
  64. package/build/lib/__tests__/useQuery.types.test.d.ts.map +0 -1
  65. package/build/lib/__tests__/useQueryClient.test.d.ts.map +0 -1
  66. package/build/lib/__tests__/utils.test.d.ts.map +0 -1
  67. package/build/lib/__tests__/vueQueryPlugin.test.d.ts.map +0 -1
  68. package/build/lib/devtools/devtools.d.ts.map +0 -1
  69. package/build/lib/devtools/utils.d.ts.map +0 -1
  70. package/build/lib/index.d.ts.map +0 -1
  71. package/build/lib/mutationCache.d.ts.map +0 -1
  72. package/build/lib/queryCache.d.ts.map +0 -1
  73. package/build/lib/queryClient.d.ts.map +0 -1
  74. package/build/lib/types.d.ts.map +0 -1
  75. package/build/lib/useBaseQuery.d.ts.map +0 -1
  76. package/build/lib/useInfiniteQuery.d.ts.map +0 -1
  77. package/build/lib/useIsFetching.d.ts.map +0 -1
  78. package/build/lib/useIsMutating.d.ts.map +0 -1
  79. package/build/lib/useMutation.d.ts.map +0 -1
  80. package/build/lib/useQueries.d.ts.map +0 -1
  81. package/build/lib/useQuery.d.ts.map +0 -1
  82. package/build/lib/useQueryClient.d.ts.map +0 -1
  83. package/build/lib/utils.d.ts.map +0 -1
  84. package/build/lib/vueQueryPlugin.d.ts.map +0 -1
package/README.md CHANGED
@@ -47,37 +47,41 @@ Visit https://tanstack.com/query/v4/docs/adapters/vue-query
47
47
  2. Initialize **Vue Query** via **VueQueryPlugin**
48
48
 
49
49
  ```tsx
50
- import { createApp } from "vue";
51
- import { VueQueryPlugin } from "@tanstack/vue-query";
50
+ import { createApp } from 'vue'
51
+ import { VueQueryPlugin } from '@tanstack/vue-query'
52
52
 
53
- import App from "./App.vue";
53
+ import App from './App.vue'
54
54
 
55
- createApp(App).use(VueQueryPlugin).mount("#app");
55
+ createApp(App).use(VueQueryPlugin).mount('#app')
56
56
  ```
57
57
 
58
58
  3. Use query
59
59
 
60
60
  ```tsx
61
- import { defineComponent } from "vue";
62
- import { useQuery } from "@tanstack/vue-query";
61
+ import { defineComponent } from 'vue'
62
+ import { useQuery } from '@tanstack/vue-query'
63
63
 
64
64
  export default defineComponent({
65
- name: "MyComponent",
65
+ name: 'MyComponent',
66
66
  setup() {
67
- const query = useQuery({ queryKey: ["todos"], queryFn: getTodos });
67
+ const query = useQuery({ queryKey: ['todos'], queryFn: getTodos })
68
68
 
69
69
  return {
70
70
  query,
71
- };
71
+ }
72
72
  },
73
- });
73
+ })
74
74
  ```
75
75
 
76
76
  4. If you need to update options on your query dynamically, make sure to pass them as reactive variables
77
77
 
78
78
  ```tsx
79
- const id = ref(1);
80
- const enabled = ref(false);
81
-
82
- const query = useQuery({ queryKey: ["todos", id], queryFn: () => getTodos(id), enabled });
79
+ const id = ref(1)
80
+ const enabled = ref(false)
81
+
82
+ const query = useQuery({
83
+ queryKey: ['todos', id],
84
+ queryFn: () => getTodos(id),
85
+ enabled,
86
+ })
83
87
  ```
@@ -1,6 +1,7 @@
1
1
  import { computed, reactive, ref, watch, onScopeDispose, toRefs, readonly, unref } from 'vue-demi';
2
+ import { isServer } from '@tanstack/query-core';
2
3
  import { useQueryClient } from './useQueryClient.esm.js';
3
- import { updateState, isQueryKey, cloneDeepUnref } from './utils.esm.js';
4
+ import { noop, updateState, isQueryKey, cloneDeepUnref } from './utils.esm.js';
4
5
 
5
6
  function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
6
7
  var _options$value$queryC;
@@ -14,15 +15,17 @@ function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
14
15
  });
15
16
  const observer = new Observer(queryClient, defaultedOptions.value);
16
17
  const state = reactive(observer.getCurrentResult());
17
- const unsubscribe = ref(() => {// noop
18
- });
18
+ const unsubscribe = ref(noop);
19
19
  watch(queryClient.isRestoring, isRestoring => {
20
20
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
21
21
  if (!isRestoring) {
22
- unsubscribe.value();
23
- unsubscribe.value = observer.subscribe(result => {
24
- updateState(state, result);
25
- });
22
+ unsubscribe.value(); // Nuxt2 memory leak fix - do not subscribe on server
23
+
24
+ if (!isServer) {
25
+ unsubscribe.value = observer.subscribe(result => {
26
+ updateState(state, result);
27
+ });
28
+ }
26
29
  }
27
30
  }, {
28
31
  immediate: true
@@ -39,8 +42,7 @@ function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
39
42
 
40
43
  const suspense = () => {
41
44
  return new Promise(resolve => {
42
- let stopWatch = () => {//noop
43
- };
45
+ let stopWatch = noop;
44
46
 
45
47
  const run = () => {
46
48
  if (defaultedOptions.value.enabled !== false) {
@@ -1 +1 @@
1
- {"version":3,"file":"useBaseQuery.esm.js","sources":["../../src/useBaseQuery.ts"],"sourcesContent":["import {\n onScopeDispose,\n toRefs,\n readonly,\n reactive,\n watch,\n ref,\n computed,\n unref,\n} from 'vue-demi'\nimport type { ToRefs, UnwrapRef } from 'vue-demi'\nimport type {\n QueryObserver,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n QueryFunction,\n} from '@tanstack/query-core'\nimport { useQueryClient } from './useQueryClient'\nimport { updateState, isQueryKey, cloneDeepUnref } from './utils'\nimport type { MaybeRef, WithQueryClientKey } from './types'\nimport type { UseQueryOptions } from './useQuery'\nimport type { UseInfiniteQueryOptions } from './useInfiniteQuery'\n\nexport type UseQueryReturnType<\n TData,\n TError,\n Result = QueryObserverResult<TData, TError>,\n> = ToRefs<Readonly<Result>> & {\n suspense: () => Promise<Result>\n}\n\ntype UseQueryOptionsGeneric<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> =\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n Observer: typeof QueryObserver,\n arg1:\n | TQueryKey\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>,\n arg2:\n | QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n arg3: UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n): UseQueryReturnType<TData, TError> {\n const options = computed(() => parseQueryArgs(arg1, arg2, arg3))\n\n const queryClient =\n options.value.queryClient ?? useQueryClient(options.value.queryClientKey)\n\n const defaultedOptions = computed(() => {\n const defaulted = queryClient.defaultQueryOptions(options.value)\n defaulted._optimisticResults = queryClient.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n })\n\n const observer = new Observer(queryClient, defaultedOptions.value)\n const state = reactive(observer.getCurrentResult())\n\n const unsubscribe = ref(() => {\n // noop\n })\n\n watch(\n queryClient.isRestoring,\n (isRestoring) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isRestoring) {\n unsubscribe.value()\n unsubscribe.value = observer.subscribe((result) => {\n updateState(state, result)\n })\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedOptions,\n () => {\n observer.setOptions(defaultedOptions.value)\n updateState(state, observer.getCurrentResult())\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe.value()\n })\n\n const suspense = () => {\n return new Promise<QueryObserverResult<TData, TError>>((resolve) => {\n let stopWatch = () => {\n //noop\n }\n const run = () => {\n if (defaultedOptions.value.enabled !== false) {\n const optimisticResult = observer.getOptimisticResult(\n defaultedOptions.value,\n )\n if (optimisticResult.isStale) {\n stopWatch()\n resolve(observer.fetchOptimistic(defaultedOptions.value))\n } else {\n stopWatch()\n resolve(optimisticResult)\n }\n }\n }\n\n run()\n\n stopWatch = watch(defaultedOptions, run, { deep: true })\n })\n }\n\n return {\n ...(toRefs(readonly(state)) as UseQueryReturnType<TData, TError>),\n suspense,\n }\n}\n\nexport function parseQueryArgs<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1:\n | MaybeRef<TQueryKey>\n | MaybeRef<UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>>,\n arg2:\n | MaybeRef<QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>>\n | MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n arg3: MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n): WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n> {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n const plainArg3 = unref(arg3)\n\n let options = plainArg1\n\n if (!isQueryKey(plainArg1)) {\n options = plainArg1\n } else if (typeof plainArg2 === 'function') {\n options = { ...plainArg3, queryKey: plainArg1, queryFn: plainArg2 }\n } else {\n options = { ...plainArg2, queryKey: plainArg1 }\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >\n}\n"],"names":["useBaseQuery","Observer","arg1","arg2","arg3","options","computed","parseQueryArgs","queryClient","value","useQueryClient","queryClientKey","defaultedOptions","defaulted","defaultQueryOptions","_optimisticResults","isRestoring","observer","state","reactive","getCurrentResult","unsubscribe","ref","watch","subscribe","result","updateState","immediate","setOptions","deep","onScopeDispose","suspense","Promise","resolve","stopWatch","run","enabled","optimisticResult","getOptimisticResult","isStale","fetchOptimistic","toRefs","readonly","plainArg1","unref","plainArg2","plainArg3","isQueryKey","queryKey","queryFn","cloneDeepUnref"],"mappings":"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"}
1
+ {"version":3,"file":"useBaseQuery.esm.js","sources":["../../src/useBaseQuery.ts"],"sourcesContent":["import {\n onScopeDispose,\n toRefs,\n readonly,\n reactive,\n watch,\n ref,\n computed,\n unref,\n} from 'vue-demi'\nimport type { ToRefs, UnwrapRef } from 'vue-demi'\nimport type {\n QueryObserver,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n QueryFunction,\n} from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\nimport { useQueryClient } from './useQueryClient'\nimport { updateState, isQueryKey, cloneDeepUnref, noop } from './utils'\nimport type { MaybeRef, WithQueryClientKey } from './types'\nimport type { UseQueryOptions } from './useQuery'\nimport type { UseInfiniteQueryOptions } from './useInfiniteQuery'\n\nexport type UseQueryReturnType<\n TData,\n TError,\n Result = QueryObserverResult<TData, TError>,\n> = ToRefs<Readonly<Result>> & {\n suspense: () => Promise<Result>\n}\n\ntype UseQueryOptionsGeneric<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> =\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n Observer: typeof QueryObserver,\n arg1:\n | TQueryKey\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>,\n arg2:\n | QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n arg3: UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n): UseQueryReturnType<TData, TError> {\n const options = computed(() => parseQueryArgs(arg1, arg2, arg3))\n\n const queryClient =\n options.value.queryClient ?? useQueryClient(options.value.queryClientKey)\n\n const defaultedOptions = computed(() => {\n const defaulted = queryClient.defaultQueryOptions(options.value)\n defaulted._optimisticResults = queryClient.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n })\n\n const observer = new Observer(queryClient, defaultedOptions.value)\n const state = reactive(observer.getCurrentResult())\n\n const unsubscribe = ref(noop)\n\n watch(\n queryClient.isRestoring,\n (isRestoring) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isRestoring) {\n unsubscribe.value()\n // Nuxt2 memory leak fix - do not subscribe on server\n if (!isServer) {\n unsubscribe.value = observer.subscribe((result) => {\n updateState(state, result)\n })\n }\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedOptions,\n () => {\n observer.setOptions(defaultedOptions.value)\n updateState(state, observer.getCurrentResult())\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe.value()\n })\n\n const suspense = () => {\n return new Promise<QueryObserverResult<TData, TError>>((resolve) => {\n let stopWatch = noop\n const run = () => {\n if (defaultedOptions.value.enabled !== false) {\n const optimisticResult = observer.getOptimisticResult(\n defaultedOptions.value,\n )\n if (optimisticResult.isStale) {\n stopWatch()\n resolve(observer.fetchOptimistic(defaultedOptions.value))\n } else {\n stopWatch()\n resolve(optimisticResult)\n }\n }\n }\n\n run()\n\n stopWatch = watch(defaultedOptions, run, { deep: true })\n })\n }\n\n return {\n ...(toRefs(readonly(state)) as UseQueryReturnType<TData, TError>),\n suspense,\n }\n}\n\nexport function parseQueryArgs<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1:\n | MaybeRef<TQueryKey>\n | MaybeRef<UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>>,\n arg2:\n | MaybeRef<QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>>\n | MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n arg3: MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n): WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n> {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n const plainArg3 = unref(arg3)\n\n let options = plainArg1\n\n if (!isQueryKey(plainArg1)) {\n options = plainArg1\n } else if (typeof plainArg2 === 'function') {\n options = { ...plainArg3, queryKey: plainArg1, queryFn: plainArg2 }\n } else {\n options = { ...plainArg2, queryKey: plainArg1 }\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >\n}\n"],"names":["useBaseQuery","Observer","arg1","arg2","arg3","options","computed","parseQueryArgs","queryClient","value","useQueryClient","queryClientKey","defaultedOptions","defaulted","defaultQueryOptions","_optimisticResults","isRestoring","observer","state","reactive","getCurrentResult","unsubscribe","ref","noop","watch","isServer","subscribe","result","updateState","immediate","setOptions","deep","onScopeDispose","suspense","Promise","resolve","stopWatch","run","enabled","optimisticResult","getOptimisticResult","isStale","fetchOptimistic","toRefs","readonly","plainArg1","unref","plainArg2","plainArg3","isQueryKey","queryKey","queryFn","cloneDeepUnref"],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vueDemi = require('vue-demi');
6
+ var queryCore = require('@tanstack/query-core');
6
7
  var useQueryClient = require('./useQueryClient.js');
7
8
  var utils = require('./utils.js');
8
9
 
@@ -18,15 +19,17 @@ function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
18
19
  });
19
20
  const observer = new Observer(queryClient, defaultedOptions.value);
20
21
  const state = vueDemi.reactive(observer.getCurrentResult());
21
- const unsubscribe = vueDemi.ref(() => {// noop
22
- });
22
+ const unsubscribe = vueDemi.ref(utils.noop);
23
23
  vueDemi.watch(queryClient.isRestoring, isRestoring => {
24
24
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
25
25
  if (!isRestoring) {
26
- unsubscribe.value();
27
- unsubscribe.value = observer.subscribe(result => {
28
- utils.updateState(state, result);
29
- });
26
+ unsubscribe.value(); // Nuxt2 memory leak fix - do not subscribe on server
27
+
28
+ if (!queryCore.isServer) {
29
+ unsubscribe.value = observer.subscribe(result => {
30
+ utils.updateState(state, result);
31
+ });
32
+ }
30
33
  }
31
34
  }, {
32
35
  immediate: true
@@ -43,8 +46,7 @@ function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
43
46
 
44
47
  const suspense = () => {
45
48
  return new Promise(resolve => {
46
- let stopWatch = () => {//noop
47
- };
49
+ let stopWatch = utils.noop;
48
50
 
49
51
  const run = () => {
50
52
  if (defaultedOptions.value.enabled !== false) {
@@ -1 +1 @@
1
- {"version":3,"file":"useBaseQuery.js","sources":["../../src/useBaseQuery.ts"],"sourcesContent":["import {\n onScopeDispose,\n toRefs,\n readonly,\n reactive,\n watch,\n ref,\n computed,\n unref,\n} from 'vue-demi'\nimport type { ToRefs, UnwrapRef } from 'vue-demi'\nimport type {\n QueryObserver,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n QueryFunction,\n} from '@tanstack/query-core'\nimport { useQueryClient } from './useQueryClient'\nimport { updateState, isQueryKey, cloneDeepUnref } from './utils'\nimport type { MaybeRef, WithQueryClientKey } from './types'\nimport type { UseQueryOptions } from './useQuery'\nimport type { UseInfiniteQueryOptions } from './useInfiniteQuery'\n\nexport type UseQueryReturnType<\n TData,\n TError,\n Result = QueryObserverResult<TData, TError>,\n> = ToRefs<Readonly<Result>> & {\n suspense: () => Promise<Result>\n}\n\ntype UseQueryOptionsGeneric<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> =\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n Observer: typeof QueryObserver,\n arg1:\n | TQueryKey\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>,\n arg2:\n | QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n arg3: UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n): UseQueryReturnType<TData, TError> {\n const options = computed(() => parseQueryArgs(arg1, arg2, arg3))\n\n const queryClient =\n options.value.queryClient ?? useQueryClient(options.value.queryClientKey)\n\n const defaultedOptions = computed(() => {\n const defaulted = queryClient.defaultQueryOptions(options.value)\n defaulted._optimisticResults = queryClient.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n })\n\n const observer = new Observer(queryClient, defaultedOptions.value)\n const state = reactive(observer.getCurrentResult())\n\n const unsubscribe = ref(() => {\n // noop\n })\n\n watch(\n queryClient.isRestoring,\n (isRestoring) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isRestoring) {\n unsubscribe.value()\n unsubscribe.value = observer.subscribe((result) => {\n updateState(state, result)\n })\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedOptions,\n () => {\n observer.setOptions(defaultedOptions.value)\n updateState(state, observer.getCurrentResult())\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe.value()\n })\n\n const suspense = () => {\n return new Promise<QueryObserverResult<TData, TError>>((resolve) => {\n let stopWatch = () => {\n //noop\n }\n const run = () => {\n if (defaultedOptions.value.enabled !== false) {\n const optimisticResult = observer.getOptimisticResult(\n defaultedOptions.value,\n )\n if (optimisticResult.isStale) {\n stopWatch()\n resolve(observer.fetchOptimistic(defaultedOptions.value))\n } else {\n stopWatch()\n resolve(optimisticResult)\n }\n }\n }\n\n run()\n\n stopWatch = watch(defaultedOptions, run, { deep: true })\n })\n }\n\n return {\n ...(toRefs(readonly(state)) as UseQueryReturnType<TData, TError>),\n suspense,\n }\n}\n\nexport function parseQueryArgs<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1:\n | MaybeRef<TQueryKey>\n | MaybeRef<UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>>,\n arg2:\n | MaybeRef<QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>>\n | MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n arg3: MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n): WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n> {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n const plainArg3 = unref(arg3)\n\n let options = plainArg1\n\n if (!isQueryKey(plainArg1)) {\n options = plainArg1\n } else if (typeof plainArg2 === 'function') {\n options = { ...plainArg3, queryKey: plainArg1, queryFn: plainArg2 }\n } else {\n options = { ...plainArg2, queryKey: plainArg1 }\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >\n}\n"],"names":["useBaseQuery","Observer","arg1","arg2","arg3","options","computed","parseQueryArgs","queryClient","value","useQueryClient","queryClientKey","defaultedOptions","defaulted","defaultQueryOptions","_optimisticResults","isRestoring","observer","state","reactive","getCurrentResult","unsubscribe","ref","watch","subscribe","result","updateState","immediate","setOptions","deep","onScopeDispose","suspense","Promise","resolve","stopWatch","run","enabled","optimisticResult","getOptimisticResult","isStale","fetchOptimistic","toRefs","readonly","plainArg1","unref","plainArg2","plainArg3","isQueryKey","queryKey","queryFn","cloneDeepUnref"],"mappings":"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"}
1
+ {"version":3,"file":"useBaseQuery.js","sources":["../../src/useBaseQuery.ts"],"sourcesContent":["import {\n onScopeDispose,\n toRefs,\n readonly,\n reactive,\n watch,\n ref,\n computed,\n unref,\n} from 'vue-demi'\nimport type { ToRefs, UnwrapRef } from 'vue-demi'\nimport type {\n QueryObserver,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n QueryFunction,\n} from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\nimport { useQueryClient } from './useQueryClient'\nimport { updateState, isQueryKey, cloneDeepUnref, noop } from './utils'\nimport type { MaybeRef, WithQueryClientKey } from './types'\nimport type { UseQueryOptions } from './useQuery'\nimport type { UseInfiniteQueryOptions } from './useInfiniteQuery'\n\nexport type UseQueryReturnType<\n TData,\n TError,\n Result = QueryObserverResult<TData, TError>,\n> = ToRefs<Readonly<Result>> & {\n suspense: () => Promise<Result>\n}\n\ntype UseQueryOptionsGeneric<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> =\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n Observer: typeof QueryObserver,\n arg1:\n | TQueryKey\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>,\n arg2:\n | QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n arg3: UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n): UseQueryReturnType<TData, TError> {\n const options = computed(() => parseQueryArgs(arg1, arg2, arg3))\n\n const queryClient =\n options.value.queryClient ?? useQueryClient(options.value.queryClientKey)\n\n const defaultedOptions = computed(() => {\n const defaulted = queryClient.defaultQueryOptions(options.value)\n defaulted._optimisticResults = queryClient.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n })\n\n const observer = new Observer(queryClient, defaultedOptions.value)\n const state = reactive(observer.getCurrentResult())\n\n const unsubscribe = ref(noop)\n\n watch(\n queryClient.isRestoring,\n (isRestoring) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isRestoring) {\n unsubscribe.value()\n // Nuxt2 memory leak fix - do not subscribe on server\n if (!isServer) {\n unsubscribe.value = observer.subscribe((result) => {\n updateState(state, result)\n })\n }\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedOptions,\n () => {\n observer.setOptions(defaultedOptions.value)\n updateState(state, observer.getCurrentResult())\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe.value()\n })\n\n const suspense = () => {\n return new Promise<QueryObserverResult<TData, TError>>((resolve) => {\n let stopWatch = noop\n const run = () => {\n if (defaultedOptions.value.enabled !== false) {\n const optimisticResult = observer.getOptimisticResult(\n defaultedOptions.value,\n )\n if (optimisticResult.isStale) {\n stopWatch()\n resolve(observer.fetchOptimistic(defaultedOptions.value))\n } else {\n stopWatch()\n resolve(optimisticResult)\n }\n }\n }\n\n run()\n\n stopWatch = watch(defaultedOptions, run, { deep: true })\n })\n }\n\n return {\n ...(toRefs(readonly(state)) as UseQueryReturnType<TData, TError>),\n suspense,\n }\n}\n\nexport function parseQueryArgs<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1:\n | MaybeRef<TQueryKey>\n | MaybeRef<UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>>,\n arg2:\n | MaybeRef<QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>>\n | MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n arg3: MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n): WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n> {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n const plainArg3 = unref(arg3)\n\n let options = plainArg1\n\n if (!isQueryKey(plainArg1)) {\n options = plainArg1\n } else if (typeof plainArg2 === 'function') {\n options = { ...plainArg3, queryKey: plainArg1, queryFn: plainArg2 }\n } else {\n options = { ...plainArg2, queryKey: plainArg1 }\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >\n}\n"],"names":["useBaseQuery","Observer","arg1","arg2","arg3","options","computed","parseQueryArgs","queryClient","value","useQueryClient","queryClientKey","defaultedOptions","defaulted","defaultQueryOptions","_optimisticResults","isRestoring","observer","state","reactive","getCurrentResult","unsubscribe","ref","noop","watch","isServer","subscribe","result","updateState","immediate","setOptions","deep","onScopeDispose","suspense","Promise","resolve","stopWatch","run","enabled","optimisticResult","getOptimisticResult","isStale","fetchOptimistic","toRefs","readonly","plainArg1","unref","plainArg2","plainArg3","isQueryKey","queryKey","queryFn","cloneDeepUnref"],"mappings":";;;;;;;;;AA0CO,SAASA,YAAT,CAMLC,QANK,EAOLC,IAPK,EAULC,IAEkE,GAAG,EAZhE,EAaLC,IAAoE,GAAG,EAblE,EAc8B;AAAA,EAAA,IAAA,qBAAA,CAAA;;AACnC,EAAA,MAAMC,OAAO,GAAGC,gBAAQ,CAAC,MAAMC,cAAc,CAACL,IAAD,EAAOC,IAAP,EAAaC,IAAb,CAArB,CAAxB,CAAA;AAEA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,6BAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;AAGA,EAAA,MAAMC,gBAAgB,GAAGN,gBAAQ,CAAC,MAAM;IACtC,MAAMO,SAAS,GAAGL,WAAW,CAACM,mBAAZ,CAAgCT,OAAO,CAACI,KAAxC,CAAlB,CAAA;IACAI,SAAS,CAACE,kBAAV,GAA+BP,WAAW,CAACQ,WAAZ,CAAwBP,KAAxB,GAC3B,aAD2B,GAE3B,YAFJ,CAAA;AAIA,IAAA,OAAOI,SAAP,CAAA;AACD,GAPgC,CAAjC,CAAA;EASA,MAAMI,QAAQ,GAAG,IAAIhB,QAAJ,CAAaO,WAAb,EAA0BI,gBAAgB,CAACH,KAA3C,CAAjB,CAAA;EACA,MAAMS,KAAK,GAAGC,gBAAQ,CAACF,QAAQ,CAACG,gBAAT,EAAD,CAAtB,CAAA;AAEA,EAAA,MAAMC,WAAW,GAAGC,WAAG,CAACC,UAAD,CAAvB,CAAA;AAEAC,EAAAA,aAAK,CACHhB,WAAW,CAACQ,WADT,EAEFA,WAAD,IAAiB;AACf;IACA,IAAI,CAACA,WAAL,EAAkB;MAChBK,WAAW,CAACZ,KAAZ,EAAA,CADgB;;MAGhB,IAAI,CAACgB,kBAAL,EAAe;QACbJ,WAAW,CAACZ,KAAZ,GAAoBQ,QAAQ,CAACS,SAAT,CAAoBC,MAAD,IAAY;AACjDC,UAAAA,iBAAW,CAACV,KAAD,EAAQS,MAAR,CAAX,CAAA;AACD,SAFmB,CAApB,CAAA;AAGD,OAAA;AACF,KAAA;AACF,GAbE,EAcH;AAAEE,IAAAA,SAAS,EAAE,IAAA;AAAb,GAdG,CAAL,CAAA;EAiBAL,aAAK,CACHZ,gBADG,EAEH,MAAM;AACJK,IAAAA,QAAQ,CAACa,UAAT,CAAoBlB,gBAAgB,CAACH,KAArC,CAAA,CAAA;AACAmB,IAAAA,iBAAW,CAACV,KAAD,EAAQD,QAAQ,CAACG,gBAAT,EAAR,CAAX,CAAA;AACD,GALE,EAMH;AAAEW,IAAAA,IAAI,EAAE,IAAA;AAAR,GANG,CAAL,CAAA;AASAC,EAAAA,sBAAc,CAAC,MAAM;AACnBX,IAAAA,WAAW,CAACZ,KAAZ,EAAA,CAAA;AACD,GAFa,CAAd,CAAA;;EAIA,MAAMwB,QAAQ,GAAG,MAAM;AACrB,IAAA,OAAO,IAAIC,OAAJ,CAAiDC,OAAD,IAAa;MAClE,IAAIC,SAAS,GAAGb,UAAhB,CAAA;;MACA,MAAMc,GAAG,GAAG,MAAM;AAChB,QAAA,IAAIzB,gBAAgB,CAACH,KAAjB,CAAuB6B,OAAvB,KAAmC,KAAvC,EAA8C;UAC5C,MAAMC,gBAAgB,GAAGtB,QAAQ,CAACuB,mBAAT,CACvB5B,gBAAgB,CAACH,KADM,CAAzB,CAAA;;UAGA,IAAI8B,gBAAgB,CAACE,OAArB,EAA8B;YAC5BL,SAAS,EAAA,CAAA;YACTD,OAAO,CAAClB,QAAQ,CAACyB,eAAT,CAAyB9B,gBAAgB,CAACH,KAA1C,CAAD,CAAP,CAAA;AACD,WAHD,MAGO;YACL2B,SAAS,EAAA,CAAA;YACTD,OAAO,CAACI,gBAAD,CAAP,CAAA;AACD,WAAA;AACF,SAAA;OAZH,CAAA;;MAeAF,GAAG,EAAA,CAAA;AAEHD,MAAAA,SAAS,GAAGZ,aAAK,CAACZ,gBAAD,EAAmByB,GAAnB,EAAwB;AAAEN,QAAAA,IAAI,EAAE,IAAA;AAAR,OAAxB,CAAjB,CAAA;AACD,KApBM,CAAP,CAAA;GADF,CAAA;;EAwBA,OAAO,EACL,GAAIY,cAAM,CAACC,gBAAQ,CAAC1B,KAAD,CAAT,CADL;AAELe,IAAAA,QAAAA;GAFF,CAAA;AAID,CAAA;AAEM,SAAS1B,cAAT,CAOLL,IAPK,EAULC,IAIK,GAAG,EAdH,EAeLC,IAEC,GAAG,EAjBC,EAoBL;AACA,EAAA,MAAMyC,SAAS,GAAGC,aAAK,CAAC5C,IAAD,CAAvB,CAAA;AACA,EAAA,MAAM6C,SAAS,GAAGD,aAAK,CAAC3C,IAAD,CAAvB,CAAA;AACA,EAAA,MAAM6C,SAAS,GAAGF,aAAK,CAAC1C,IAAD,CAAvB,CAAA;EAEA,IAAIC,OAAO,GAAGwC,SAAd,CAAA;;AAEA,EAAA,IAAI,CAACI,gBAAU,CAACJ,SAAD,CAAf,EAA4B;AAC1BxC,IAAAA,OAAO,GAAGwC,SAAV,CAAA;AACD,GAFD,MAEO,IAAI,OAAOE,SAAP,KAAqB,UAAzB,EAAqC;IAC1C1C,OAAO,GAAG,EAAE,GAAG2C,SAAL;AAAgBE,MAAAA,QAAQ,EAAEL,SAA1B;AAAqCM,MAAAA,OAAO,EAAEJ,SAAAA;KAAxD,CAAA;AACD,GAFM,MAEA;IACL1C,OAAO,GAAG,EAAE,GAAG0C,SAAL;AAAgBG,MAAAA,QAAQ,EAAEL,SAAAA;KAApC,CAAA;AACD,GAAA;;EAED,OAAOO,oBAAc,CAAC/C,OAAD,CAArB,CAAA;AAGD;;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { computed, reactive, ref, watch, onScopeDispose, toRefs, readonly, unref } from 'vue-demi';
2
+ import { isServer } from '@tanstack/query-core';
2
3
  import { useQueryClient } from './useQueryClient.mjs';
3
- import { updateState, isQueryKey, cloneDeepUnref } from './utils.mjs';
4
+ import { noop, updateState, isQueryKey, cloneDeepUnref } from './utils.mjs';
4
5
 
5
6
  function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
6
7
  var _options$value$queryC;
@@ -14,15 +15,17 @@ function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
14
15
  });
15
16
  const observer = new Observer(queryClient, defaultedOptions.value);
16
17
  const state = reactive(observer.getCurrentResult());
17
- const unsubscribe = ref(() => {// noop
18
- });
18
+ const unsubscribe = ref(noop);
19
19
  watch(queryClient.isRestoring, isRestoring => {
20
20
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
21
21
  if (!isRestoring) {
22
- unsubscribe.value();
23
- unsubscribe.value = observer.subscribe(result => {
24
- updateState(state, result);
25
- });
22
+ unsubscribe.value(); // Nuxt2 memory leak fix - do not subscribe on server
23
+
24
+ if (!isServer) {
25
+ unsubscribe.value = observer.subscribe(result => {
26
+ updateState(state, result);
27
+ });
28
+ }
26
29
  }
27
30
  }, {
28
31
  immediate: true
@@ -39,8 +42,7 @@ function useBaseQuery(Observer, arg1, arg2 = {}, arg3 = {}) {
39
42
 
40
43
  const suspense = () => {
41
44
  return new Promise(resolve => {
42
- let stopWatch = () => {//noop
43
- };
45
+ let stopWatch = noop;
44
46
 
45
47
  const run = () => {
46
48
  if (defaultedOptions.value.enabled !== false) {
@@ -1 +1 @@
1
- {"version":3,"file":"useBaseQuery.mjs","sources":["../../src/useBaseQuery.ts"],"sourcesContent":["import {\n onScopeDispose,\n toRefs,\n readonly,\n reactive,\n watch,\n ref,\n computed,\n unref,\n} from 'vue-demi'\nimport type { ToRefs, UnwrapRef } from 'vue-demi'\nimport type {\n QueryObserver,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n QueryFunction,\n} from '@tanstack/query-core'\nimport { useQueryClient } from './useQueryClient'\nimport { updateState, isQueryKey, cloneDeepUnref } from './utils'\nimport type { MaybeRef, WithQueryClientKey } from './types'\nimport type { UseQueryOptions } from './useQuery'\nimport type { UseInfiniteQueryOptions } from './useInfiniteQuery'\n\nexport type UseQueryReturnType<\n TData,\n TError,\n Result = QueryObserverResult<TData, TError>,\n> = ToRefs<Readonly<Result>> & {\n suspense: () => Promise<Result>\n}\n\ntype UseQueryOptionsGeneric<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> =\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n Observer: typeof QueryObserver,\n arg1:\n | TQueryKey\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>,\n arg2:\n | QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n arg3: UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n): UseQueryReturnType<TData, TError> {\n const options = computed(() => parseQueryArgs(arg1, arg2, arg3))\n\n const queryClient =\n options.value.queryClient ?? useQueryClient(options.value.queryClientKey)\n\n const defaultedOptions = computed(() => {\n const defaulted = queryClient.defaultQueryOptions(options.value)\n defaulted._optimisticResults = queryClient.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n })\n\n const observer = new Observer(queryClient, defaultedOptions.value)\n const state = reactive(observer.getCurrentResult())\n\n const unsubscribe = ref(() => {\n // noop\n })\n\n watch(\n queryClient.isRestoring,\n (isRestoring) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isRestoring) {\n unsubscribe.value()\n unsubscribe.value = observer.subscribe((result) => {\n updateState(state, result)\n })\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedOptions,\n () => {\n observer.setOptions(defaultedOptions.value)\n updateState(state, observer.getCurrentResult())\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe.value()\n })\n\n const suspense = () => {\n return new Promise<QueryObserverResult<TData, TError>>((resolve) => {\n let stopWatch = () => {\n //noop\n }\n const run = () => {\n if (defaultedOptions.value.enabled !== false) {\n const optimisticResult = observer.getOptimisticResult(\n defaultedOptions.value,\n )\n if (optimisticResult.isStale) {\n stopWatch()\n resolve(observer.fetchOptimistic(defaultedOptions.value))\n } else {\n stopWatch()\n resolve(optimisticResult)\n }\n }\n }\n\n run()\n\n stopWatch = watch(defaultedOptions, run, { deep: true })\n })\n }\n\n return {\n ...(toRefs(readonly(state)) as UseQueryReturnType<TData, TError>),\n suspense,\n }\n}\n\nexport function parseQueryArgs<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1:\n | MaybeRef<TQueryKey>\n | MaybeRef<UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>>,\n arg2:\n | MaybeRef<QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>>\n | MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n arg3: MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n): WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n> {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n const plainArg3 = unref(arg3)\n\n let options = plainArg1\n\n if (!isQueryKey(plainArg1)) {\n options = plainArg1\n } else if (typeof plainArg2 === 'function') {\n options = { ...plainArg3, queryKey: plainArg1, queryFn: plainArg2 }\n } else {\n options = { ...plainArg2, queryKey: plainArg1 }\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >\n}\n"],"names":["useBaseQuery","Observer","arg1","arg2","arg3","options","computed","parseQueryArgs","queryClient","value","useQueryClient","queryClientKey","defaultedOptions","defaulted","defaultQueryOptions","_optimisticResults","isRestoring","observer","state","reactive","getCurrentResult","unsubscribe","ref","watch","subscribe","result","updateState","immediate","setOptions","deep","onScopeDispose","suspense","Promise","resolve","stopWatch","run","enabled","optimisticResult","getOptimisticResult","isStale","fetchOptimistic","toRefs","readonly","plainArg1","unref","plainArg2","plainArg3","isQueryKey","queryKey","queryFn","cloneDeepUnref"],"mappings":"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"}
1
+ {"version":3,"file":"useBaseQuery.mjs","sources":["../../src/useBaseQuery.ts"],"sourcesContent":["import {\n onScopeDispose,\n toRefs,\n readonly,\n reactive,\n watch,\n ref,\n computed,\n unref,\n} from 'vue-demi'\nimport type { ToRefs, UnwrapRef } from 'vue-demi'\nimport type {\n QueryObserver,\n QueryKey,\n QueryObserverOptions,\n QueryObserverResult,\n QueryFunction,\n} from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\nimport { useQueryClient } from './useQueryClient'\nimport { updateState, isQueryKey, cloneDeepUnref, noop } from './utils'\nimport type { MaybeRef, WithQueryClientKey } from './types'\nimport type { UseQueryOptions } from './useQuery'\nimport type { UseInfiniteQueryOptions } from './useInfiniteQuery'\n\nexport type UseQueryReturnType<\n TData,\n TError,\n Result = QueryObserverResult<TData, TError>,\n> = ToRefs<Readonly<Result>> & {\n suspense: () => Promise<Result>\n}\n\ntype UseQueryOptionsGeneric<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> =\n | UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n | UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function useBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n Observer: typeof QueryObserver,\n arg1:\n | TQueryKey\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>,\n arg2:\n | QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>\n | UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n arg3: UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey> = {},\n): UseQueryReturnType<TData, TError> {\n const options = computed(() => parseQueryArgs(arg1, arg2, arg3))\n\n const queryClient =\n options.value.queryClient ?? useQueryClient(options.value.queryClientKey)\n\n const defaultedOptions = computed(() => {\n const defaulted = queryClient.defaultQueryOptions(options.value)\n defaulted._optimisticResults = queryClient.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n })\n\n const observer = new Observer(queryClient, defaultedOptions.value)\n const state = reactive(observer.getCurrentResult())\n\n const unsubscribe = ref(noop)\n\n watch(\n queryClient.isRestoring,\n (isRestoring) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isRestoring) {\n unsubscribe.value()\n // Nuxt2 memory leak fix - do not subscribe on server\n if (!isServer) {\n unsubscribe.value = observer.subscribe((result) => {\n updateState(state, result)\n })\n }\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedOptions,\n () => {\n observer.setOptions(defaultedOptions.value)\n updateState(state, observer.getCurrentResult())\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe.value()\n })\n\n const suspense = () => {\n return new Promise<QueryObserverResult<TData, TError>>((resolve) => {\n let stopWatch = noop\n const run = () => {\n if (defaultedOptions.value.enabled !== false) {\n const optimisticResult = observer.getOptimisticResult(\n defaultedOptions.value,\n )\n if (optimisticResult.isStale) {\n stopWatch()\n resolve(observer.fetchOptimistic(defaultedOptions.value))\n } else {\n stopWatch()\n resolve(optimisticResult)\n }\n }\n }\n\n run()\n\n stopWatch = watch(defaultedOptions, run, { deep: true })\n })\n }\n\n return {\n ...(toRefs(readonly(state)) as UseQueryReturnType<TData, TError>),\n suspense,\n }\n}\n\nexport function parseQueryArgs<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1:\n | MaybeRef<TQueryKey>\n | MaybeRef<UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>>,\n arg2:\n | MaybeRef<QueryFunction<TQueryFnData, UnwrapRef<TQueryKey>>>\n | MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n arg3: MaybeRef<\n UseQueryOptionsGeneric<TQueryFnData, TError, TData, TQueryKey>\n > = {},\n): WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n> {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n const plainArg3 = unref(arg3)\n\n let options = plainArg1\n\n if (!isQueryKey(plainArg1)) {\n options = plainArg1\n } else if (typeof plainArg2 === 'function') {\n options = { ...plainArg3, queryKey: plainArg1, queryFn: plainArg2 }\n } else {\n options = { ...plainArg2, queryKey: plainArg1 }\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<\n QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >\n}\n"],"names":["useBaseQuery","Observer","arg1","arg2","arg3","options","computed","parseQueryArgs","queryClient","value","useQueryClient","queryClientKey","defaultedOptions","defaulted","defaultQueryOptions","_optimisticResults","isRestoring","observer","state","reactive","getCurrentResult","unsubscribe","ref","noop","watch","isServer","subscribe","result","updateState","immediate","setOptions","deep","onScopeDispose","suspense","Promise","resolve","stopWatch","run","enabled","optimisticResult","getOptimisticResult","isStale","fetchOptimistic","toRefs","readonly","plainArg1","unref","plainArg2","plainArg3","isQueryKey","queryKey","queryFn","cloneDeepUnref"],"mappings":"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"}
@@ -1,14 +1,16 @@
1
1
  import { computed, ref, watch, onScopeDispose, unref } from 'vue-demi';
2
+ import { isServer } from '@tanstack/query-core';
2
3
  import { useQueryClient } from './useQueryClient.esm.js';
3
- import { isQueryKey, cloneDeepUnref } from './utils.esm.js';
4
+ import { noop, isQueryKey, cloneDeepUnref } from './utils.esm.js';
4
5
 
5
6
  function useIsFetching(arg1, arg2) {
6
7
  var _filters$value$queryC;
7
8
 
8
9
  const filters = computed(() => parseFilterArgs(arg1, arg2));
9
10
  const queryClient = (_filters$value$queryC = filters.value.queryClient) != null ? _filters$value$queryC : useQueryClient(filters.value.queryClientKey);
10
- const isFetching = ref(queryClient.isFetching(filters));
11
- const unsubscribe = queryClient.getQueryCache().subscribe(() => {
11
+ const isFetching = ref(queryClient.isFetching(filters)); // Nuxt2 memory leak fix - do not subscribe on server
12
+
13
+ const unsubscribe = isServer ? noop : queryClient.getQueryCache().subscribe(() => {
12
14
  isFetching.value = queryClient.isFetching(filters);
13
15
  });
14
16
  watch(filters, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useIsFetching.esm.js","sources":["../../src/useIsFetching.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { QueryKey, QueryFilters as QF } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type QueryFilters = MaybeRefDeep<WithQueryClientKey<QF>>\n\nexport function useIsFetching(filters?: QueryFilters): Ref<number>\nexport function useIsFetching(\n queryKey?: MaybeRef<QueryKey>,\n filters?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number>\nexport function useIsFetching(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isFetching = ref(queryClient.isFetching(filters))\n\n const unsubscribe = queryClient.getQueryCache().subscribe(() => {\n isFetching.value = queryClient.isFetching(filters)\n })\n\n watch(\n filters,\n () => {\n isFetching.value = queryClient.isFetching(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isFetching\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2: QueryFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, queryKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<QF>\n}\n"],"names":["useIsFetching","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isFetching","ref","unsubscribe","getQueryCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","queryKey","cloneDeepUnref"],"mappings":";;;;AAeO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;EAGA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CAAA;EAEA,MAAMS,WAAW,GAAGN,WAAW,CAACO,aAAZ,EAA4BC,CAAAA,SAA5B,CAAsC,MAAM;IAC9DJ,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFmB,CAApB,CAAA;EAIAY,KAAK,CACHZ,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEa,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBL,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAkB,GAAG,EAFhB,EAGL;AACA,EAAA,MAAMgB,SAAS,GAAGC,KAAK,CAAClB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMmB,SAAS,GAAGD,KAAK,CAACjB,IAAD,CAAvB,CAAA;EAEA,IAAImB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,QAAQ,EAAEL,SAAAA;KAApC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}
1
+ {"version":3,"file":"useIsFetching.esm.js","sources":["../../src/useIsFetching.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { QueryKey, QueryFilters as QF } from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey, noop } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type QueryFilters = MaybeRefDeep<WithQueryClientKey<QF>>\n\nexport function useIsFetching(filters?: QueryFilters): Ref<number>\nexport function useIsFetching(\n queryKey?: MaybeRef<QueryKey>,\n filters?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number>\nexport function useIsFetching(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isFetching = ref(queryClient.isFetching(filters))\n\n // Nuxt2 memory leak fix - do not subscribe on server\n const unsubscribe = isServer\n ? noop\n : queryClient.getQueryCache().subscribe(() => {\n isFetching.value = queryClient.isFetching(filters)\n })\n\n watch(\n filters,\n () => {\n isFetching.value = queryClient.isFetching(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isFetching\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2: QueryFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, queryKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<QF>\n}\n"],"names":["useIsFetching","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isFetching","ref","unsubscribe","isServer","noop","getQueryCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","queryKey","cloneDeepUnref"],"mappings":";;;;;AAgBO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;AAGA,EAAA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CALa;;AAQb,EAAA,MAAMS,WAAW,GAAGC,QAAQ,GACxBC,IADwB,GAExBR,WAAW,CAACS,aAAZ,EAAA,CAA4BC,SAA5B,CAAsC,MAAM;IAC1CN,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFD,CAFJ,CAAA;EAMAc,KAAK,CACHd,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEe,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBP,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAkB,GAAG,EAFhB,EAGL;AACA,EAAA,MAAMkB,SAAS,GAAGC,KAAK,CAACpB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMqB,SAAS,GAAGD,KAAK,CAACnB,IAAD,CAAvB,CAAA;EAEA,IAAIqB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,QAAQ,EAAEL,SAAAA;KAApC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vueDemi = require('vue-demi');
6
+ var queryCore = require('@tanstack/query-core');
6
7
  var useQueryClient = require('./useQueryClient.js');
7
8
  var utils = require('./utils.js');
8
9
 
@@ -11,8 +12,9 @@ function useIsFetching(arg1, arg2) {
11
12
 
12
13
  const filters = vueDemi.computed(() => parseFilterArgs(arg1, arg2));
13
14
  const queryClient = (_filters$value$queryC = filters.value.queryClient) != null ? _filters$value$queryC : useQueryClient.useQueryClient(filters.value.queryClientKey);
14
- const isFetching = vueDemi.ref(queryClient.isFetching(filters));
15
- const unsubscribe = queryClient.getQueryCache().subscribe(() => {
15
+ const isFetching = vueDemi.ref(queryClient.isFetching(filters)); // Nuxt2 memory leak fix - do not subscribe on server
16
+
17
+ const unsubscribe = queryCore.isServer ? utils.noop : queryClient.getQueryCache().subscribe(() => {
16
18
  isFetching.value = queryClient.isFetching(filters);
17
19
  });
18
20
  vueDemi.watch(filters, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useIsFetching.js","sources":["../../src/useIsFetching.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { QueryKey, QueryFilters as QF } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type QueryFilters = MaybeRefDeep<WithQueryClientKey<QF>>\n\nexport function useIsFetching(filters?: QueryFilters): Ref<number>\nexport function useIsFetching(\n queryKey?: MaybeRef<QueryKey>,\n filters?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number>\nexport function useIsFetching(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isFetching = ref(queryClient.isFetching(filters))\n\n const unsubscribe = queryClient.getQueryCache().subscribe(() => {\n isFetching.value = queryClient.isFetching(filters)\n })\n\n watch(\n filters,\n () => {\n isFetching.value = queryClient.isFetching(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isFetching\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2: QueryFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, queryKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<QF>\n}\n"],"names":["useIsFetching","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isFetching","ref","unsubscribe","getQueryCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","queryKey","cloneDeepUnref"],"mappings":";;;;;;;;AAeO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,gBAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,6BAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;EAGA,MAAMC,UAAU,GAAGC,WAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CAAA;EAEA,MAAMS,WAAW,GAAGN,WAAW,CAACO,aAAZ,EAA4BC,CAAAA,SAA5B,CAAsC,MAAM;IAC9DJ,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFmB,CAApB,CAAA;EAIAY,aAAK,CACHZ,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEa,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,sBAAc,CAAC,MAAM;IACnBL,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAkB,GAAG,EAFhB,EAGL;AACA,EAAA,MAAMgB,SAAS,GAAGC,aAAK,CAAClB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMmB,SAAS,GAAGD,aAAK,CAACjB,IAAD,CAAvB,CAAA;EAEA,IAAImB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,gBAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,QAAQ,EAAEL,SAAAA;KAApC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,oBAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;;"}
1
+ {"version":3,"file":"useIsFetching.js","sources":["../../src/useIsFetching.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { QueryKey, QueryFilters as QF } from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey, noop } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type QueryFilters = MaybeRefDeep<WithQueryClientKey<QF>>\n\nexport function useIsFetching(filters?: QueryFilters): Ref<number>\nexport function useIsFetching(\n queryKey?: MaybeRef<QueryKey>,\n filters?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number>\nexport function useIsFetching(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isFetching = ref(queryClient.isFetching(filters))\n\n // Nuxt2 memory leak fix - do not subscribe on server\n const unsubscribe = isServer\n ? noop\n : queryClient.getQueryCache().subscribe(() => {\n isFetching.value = queryClient.isFetching(filters)\n })\n\n watch(\n filters,\n () => {\n isFetching.value = queryClient.isFetching(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isFetching\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2: QueryFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, queryKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<QF>\n}\n"],"names":["useIsFetching","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isFetching","ref","unsubscribe","isServer","noop","getQueryCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","queryKey","cloneDeepUnref"],"mappings":";;;;;;;;;AAgBO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,gBAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,6BAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;AAGA,EAAA,MAAMC,UAAU,GAAGC,WAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CALa;;AAQb,EAAA,MAAMS,WAAW,GAAGC,kBAAQ,GACxBC,UADwB,GAExBR,WAAW,CAACS,aAAZ,EAAA,CAA4BC,SAA5B,CAAsC,MAAM;IAC1CN,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFD,CAFJ,CAAA;EAMAc,aAAK,CACHd,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEe,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,sBAAc,CAAC,MAAM;IACnBP,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAkB,GAAG,EAFhB,EAGL;AACA,EAAA,MAAMkB,SAAS,GAAGC,aAAK,CAACpB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMqB,SAAS,GAAGD,aAAK,CAACnB,IAAD,CAAvB,CAAA;EAEA,IAAIqB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,gBAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,QAAQ,EAAEL,SAAAA;KAApC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,oBAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;;"}
@@ -1,14 +1,16 @@
1
1
  import { computed, ref, watch, onScopeDispose, unref } from 'vue-demi';
2
+ import { isServer } from '@tanstack/query-core';
2
3
  import { useQueryClient } from './useQueryClient.mjs';
3
- import { isQueryKey, cloneDeepUnref } from './utils.mjs';
4
+ import { noop, isQueryKey, cloneDeepUnref } from './utils.mjs';
4
5
 
5
6
  function useIsFetching(arg1, arg2) {
6
7
  var _filters$value$queryC;
7
8
 
8
9
  const filters = computed(() => parseFilterArgs(arg1, arg2));
9
10
  const queryClient = (_filters$value$queryC = filters.value.queryClient) != null ? _filters$value$queryC : useQueryClient(filters.value.queryClientKey);
10
- const isFetching = ref(queryClient.isFetching(filters));
11
- const unsubscribe = queryClient.getQueryCache().subscribe(() => {
11
+ const isFetching = ref(queryClient.isFetching(filters)); // Nuxt2 memory leak fix - do not subscribe on server
12
+
13
+ const unsubscribe = isServer ? noop : queryClient.getQueryCache().subscribe(() => {
12
14
  isFetching.value = queryClient.isFetching(filters);
13
15
  });
14
16
  watch(filters, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useIsFetching.mjs","sources":["../../src/useIsFetching.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { QueryKey, QueryFilters as QF } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type QueryFilters = MaybeRefDeep<WithQueryClientKey<QF>>\n\nexport function useIsFetching(filters?: QueryFilters): Ref<number>\nexport function useIsFetching(\n queryKey?: MaybeRef<QueryKey>,\n filters?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number>\nexport function useIsFetching(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isFetching = ref(queryClient.isFetching(filters))\n\n const unsubscribe = queryClient.getQueryCache().subscribe(() => {\n isFetching.value = queryClient.isFetching(filters)\n })\n\n watch(\n filters,\n () => {\n isFetching.value = queryClient.isFetching(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isFetching\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2: QueryFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, queryKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<QF>\n}\n"],"names":["useIsFetching","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isFetching","ref","unsubscribe","getQueryCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","queryKey","cloneDeepUnref"],"mappings":";;;;AAeO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;EAGA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CAAA;EAEA,MAAMS,WAAW,GAAGN,WAAW,CAACO,aAAZ,EAA4BC,CAAAA,SAA5B,CAAsC,MAAM;IAC9DJ,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFmB,CAApB,CAAA;EAIAY,KAAK,CACHZ,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEa,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBL,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAkB,GAAG,EAFhB,EAGL;AACA,EAAA,MAAMgB,SAAS,GAAGC,KAAK,CAAClB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMmB,SAAS,GAAGD,KAAK,CAACjB,IAAD,CAAvB,CAAA;EAEA,IAAImB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,QAAQ,EAAEL,SAAAA;KAApC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}
1
+ {"version":3,"file":"useIsFetching.mjs","sources":["../../src/useIsFetching.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { QueryKey, QueryFilters as QF } from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey, noop } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type QueryFilters = MaybeRefDeep<WithQueryClientKey<QF>>\n\nexport function useIsFetching(filters?: QueryFilters): Ref<number>\nexport function useIsFetching(\n queryKey?: MaybeRef<QueryKey>,\n filters?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number>\nexport function useIsFetching(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2?: Omit<QueryFilters, 'queryKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isFetching = ref(queryClient.isFetching(filters))\n\n // Nuxt2 memory leak fix - do not subscribe on server\n const unsubscribe = isServer\n ? noop\n : queryClient.getQueryCache().subscribe(() => {\n isFetching.value = queryClient.isFetching(filters)\n })\n\n watch(\n filters,\n () => {\n isFetching.value = queryClient.isFetching(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isFetching\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<QueryKey> | QueryFilters,\n arg2: QueryFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, queryKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<QF>\n}\n"],"names":["useIsFetching","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isFetching","ref","unsubscribe","isServer","noop","getQueryCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","queryKey","cloneDeepUnref"],"mappings":";;;;;AAgBO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;AAGA,EAAA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CALa;;AAQb,EAAA,MAAMS,WAAW,GAAGC,QAAQ,GACxBC,IADwB,GAExBR,WAAW,CAACS,aAAZ,EAAA,CAA4BC,SAA5B,CAAsC,MAAM;IAC1CN,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFD,CAFJ,CAAA;EAMAc,KAAK,CACHd,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEe,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBP,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAkB,GAAG,EAFhB,EAGL;AACA,EAAA,MAAMkB,SAAS,GAAGC,KAAK,CAACpB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMqB,SAAS,GAAGD,KAAK,CAACnB,IAAD,CAAvB,CAAA;EAEA,IAAIqB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,QAAQ,EAAEL,SAAAA;KAApC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}
@@ -1,14 +1,16 @@
1
1
  import { computed, ref, watch, onScopeDispose, unref } from 'vue-demi';
2
+ import { isServer } from '@tanstack/query-core';
2
3
  import { useQueryClient } from './useQueryClient.esm.js';
3
- import { isQueryKey, cloneDeepUnref } from './utils.esm.js';
4
+ import { noop, isQueryKey, cloneDeepUnref } from './utils.esm.js';
4
5
 
5
6
  function useIsMutating(arg1, arg2) {
6
7
  var _filters$value$queryC;
7
8
 
8
9
  const filters = computed(() => parseFilterArgs(arg1, arg2));
9
10
  const queryClient = (_filters$value$queryC = filters.value.queryClient) != null ? _filters$value$queryC : useQueryClient(filters.value.queryClientKey);
10
- const isMutating = ref(queryClient.isMutating(filters));
11
- const unsubscribe = queryClient.getMutationCache().subscribe(() => {
11
+ const isMutating = ref(queryClient.isMutating(filters)); // Nuxt2 memory leak fix - do not subscribe on server
12
+
13
+ const unsubscribe = isServer ? noop : queryClient.getMutationCache().subscribe(() => {
12
14
  isMutating.value = queryClient.isMutating(filters);
13
15
  });
14
16
  watch(filters, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMutating.esm.js","sources":["../../src/useIsMutating.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { MutationKey, MutationFilters as MF } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type MutationFilters = MaybeRefDeep<WithQueryClientKey<MF>>\n\nexport function useIsMutating(filters?: MutationFilters): Ref<number>\nexport function useIsMutating(\n mutationKey?: MaybeRef<MutationKey>,\n filters?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number>\nexport function useIsMutating(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isMutating = ref(queryClient.isMutating(filters))\n\n const unsubscribe = queryClient.getMutationCache().subscribe(() => {\n isMutating.value = queryClient.isMutating(filters)\n })\n\n watch(\n filters,\n () => {\n isMutating.value = queryClient.isMutating(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isMutating\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2: MutationFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, mutationKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<MF>\n}\n"],"names":["useIsMutating","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isMutating","ref","unsubscribe","getMutationCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","mutationKey","cloneDeepUnref"],"mappings":";;;;AAeO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;EAGA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CAAA;EAEA,MAAMS,WAAW,GAAGN,WAAW,CAACO,gBAAZ,EAA+BC,CAAAA,SAA/B,CAAyC,MAAM;IACjEJ,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFmB,CAApB,CAAA;EAIAY,KAAK,CACHZ,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEa,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBL,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAqB,GAAG,EAFnB,EAGL;AACA,EAAA,MAAMgB,SAAS,GAAGC,KAAK,CAAClB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMmB,SAAS,GAAGD,KAAK,CAACjB,IAAD,CAAvB,CAAA;EAEA,IAAImB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,WAAW,EAAEL,SAAAA;KAAvC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}
1
+ {"version":3,"file":"useIsMutating.esm.js","sources":["../../src/useIsMutating.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { MutationKey, MutationFilters as MF } from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey, noop } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type MutationFilters = MaybeRefDeep<WithQueryClientKey<MF>>\n\nexport function useIsMutating(filters?: MutationFilters): Ref<number>\nexport function useIsMutating(\n mutationKey?: MaybeRef<MutationKey>,\n filters?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number>\nexport function useIsMutating(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isMutating = ref(queryClient.isMutating(filters))\n\n // Nuxt2 memory leak fix - do not subscribe on server\n const unsubscribe = isServer\n ? noop\n : queryClient.getMutationCache().subscribe(() => {\n isMutating.value = queryClient.isMutating(filters)\n })\n\n watch(\n filters,\n () => {\n isMutating.value = queryClient.isMutating(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isMutating\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2: MutationFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, mutationKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<MF>\n}\n"],"names":["useIsMutating","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isMutating","ref","unsubscribe","isServer","noop","getMutationCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","mutationKey","cloneDeepUnref"],"mappings":";;;;;AAgBO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;AAGA,EAAA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CALa;;AAQb,EAAA,MAAMS,WAAW,GAAGC,QAAQ,GACxBC,IADwB,GAExBR,WAAW,CAACS,gBAAZ,EAAA,CAA+BC,SAA/B,CAAyC,MAAM;IAC7CN,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFD,CAFJ,CAAA;EAMAc,KAAK,CACHd,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEe,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBP,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAqB,GAAG,EAFnB,EAGL;AACA,EAAA,MAAMkB,SAAS,GAAGC,KAAK,CAACpB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMqB,SAAS,GAAGD,KAAK,CAACnB,IAAD,CAAvB,CAAA;EAEA,IAAIqB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,WAAW,EAAEL,SAAAA;KAAvC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vueDemi = require('vue-demi');
6
+ var queryCore = require('@tanstack/query-core');
6
7
  var useQueryClient = require('./useQueryClient.js');
7
8
  var utils = require('./utils.js');
8
9
 
@@ -11,8 +12,9 @@ function useIsMutating(arg1, arg2) {
11
12
 
12
13
  const filters = vueDemi.computed(() => parseFilterArgs(arg1, arg2));
13
14
  const queryClient = (_filters$value$queryC = filters.value.queryClient) != null ? _filters$value$queryC : useQueryClient.useQueryClient(filters.value.queryClientKey);
14
- const isMutating = vueDemi.ref(queryClient.isMutating(filters));
15
- const unsubscribe = queryClient.getMutationCache().subscribe(() => {
15
+ const isMutating = vueDemi.ref(queryClient.isMutating(filters)); // Nuxt2 memory leak fix - do not subscribe on server
16
+
17
+ const unsubscribe = queryCore.isServer ? utils.noop : queryClient.getMutationCache().subscribe(() => {
16
18
  isMutating.value = queryClient.isMutating(filters);
17
19
  });
18
20
  vueDemi.watch(filters, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMutating.js","sources":["../../src/useIsMutating.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { MutationKey, MutationFilters as MF } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type MutationFilters = MaybeRefDeep<WithQueryClientKey<MF>>\n\nexport function useIsMutating(filters?: MutationFilters): Ref<number>\nexport function useIsMutating(\n mutationKey?: MaybeRef<MutationKey>,\n filters?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number>\nexport function useIsMutating(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isMutating = ref(queryClient.isMutating(filters))\n\n const unsubscribe = queryClient.getMutationCache().subscribe(() => {\n isMutating.value = queryClient.isMutating(filters)\n })\n\n watch(\n filters,\n () => {\n isMutating.value = queryClient.isMutating(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isMutating\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2: MutationFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, mutationKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<MF>\n}\n"],"names":["useIsMutating","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isMutating","ref","unsubscribe","getMutationCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","mutationKey","cloneDeepUnref"],"mappings":";;;;;;;;AAeO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,gBAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,6BAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;EAGA,MAAMC,UAAU,GAAGC,WAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CAAA;EAEA,MAAMS,WAAW,GAAGN,WAAW,CAACO,gBAAZ,EAA+BC,CAAAA,SAA/B,CAAyC,MAAM;IACjEJ,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFmB,CAApB,CAAA;EAIAY,aAAK,CACHZ,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEa,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,sBAAc,CAAC,MAAM;IACnBL,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAqB,GAAG,EAFnB,EAGL;AACA,EAAA,MAAMgB,SAAS,GAAGC,aAAK,CAAClB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMmB,SAAS,GAAGD,aAAK,CAACjB,IAAD,CAAvB,CAAA;EAEA,IAAImB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,gBAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,WAAW,EAAEL,SAAAA;KAAvC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,oBAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;;"}
1
+ {"version":3,"file":"useIsMutating.js","sources":["../../src/useIsMutating.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { MutationKey, MutationFilters as MF } from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey, noop } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type MutationFilters = MaybeRefDeep<WithQueryClientKey<MF>>\n\nexport function useIsMutating(filters?: MutationFilters): Ref<number>\nexport function useIsMutating(\n mutationKey?: MaybeRef<MutationKey>,\n filters?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number>\nexport function useIsMutating(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isMutating = ref(queryClient.isMutating(filters))\n\n // Nuxt2 memory leak fix - do not subscribe on server\n const unsubscribe = isServer\n ? noop\n : queryClient.getMutationCache().subscribe(() => {\n isMutating.value = queryClient.isMutating(filters)\n })\n\n watch(\n filters,\n () => {\n isMutating.value = queryClient.isMutating(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isMutating\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2: MutationFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, mutationKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<MF>\n}\n"],"names":["useIsMutating","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isMutating","ref","unsubscribe","isServer","noop","getMutationCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","mutationKey","cloneDeepUnref"],"mappings":";;;;;;;;;AAgBO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,gBAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,6BAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;AAGA,EAAA,MAAMC,UAAU,GAAGC,WAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CALa;;AAQb,EAAA,MAAMS,WAAW,GAAGC,kBAAQ,GACxBC,UADwB,GAExBR,WAAW,CAACS,gBAAZ,EAAA,CAA+BC,SAA/B,CAAyC,MAAM;IAC7CN,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFD,CAFJ,CAAA;EAMAc,aAAK,CACHd,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEe,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,sBAAc,CAAC,MAAM;IACnBP,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAqB,GAAG,EAFnB,EAGL;AACA,EAAA,MAAMkB,SAAS,GAAGC,aAAK,CAACpB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMqB,SAAS,GAAGD,aAAK,CAACnB,IAAD,CAAvB,CAAA;EAEA,IAAIqB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,gBAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,WAAW,EAAEL,SAAAA;KAAvC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,oBAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;;"}
@@ -1,14 +1,16 @@
1
1
  import { computed, ref, watch, onScopeDispose, unref } from 'vue-demi';
2
+ import { isServer } from '@tanstack/query-core';
2
3
  import { useQueryClient } from './useQueryClient.mjs';
3
- import { isQueryKey, cloneDeepUnref } from './utils.mjs';
4
+ import { noop, isQueryKey, cloneDeepUnref } from './utils.mjs';
4
5
 
5
6
  function useIsMutating(arg1, arg2) {
6
7
  var _filters$value$queryC;
7
8
 
8
9
  const filters = computed(() => parseFilterArgs(arg1, arg2));
9
10
  const queryClient = (_filters$value$queryC = filters.value.queryClient) != null ? _filters$value$queryC : useQueryClient(filters.value.queryClientKey);
10
- const isMutating = ref(queryClient.isMutating(filters));
11
- const unsubscribe = queryClient.getMutationCache().subscribe(() => {
11
+ const isMutating = ref(queryClient.isMutating(filters)); // Nuxt2 memory leak fix - do not subscribe on server
12
+
13
+ const unsubscribe = isServer ? noop : queryClient.getMutationCache().subscribe(() => {
12
14
  isMutating.value = queryClient.isMutating(filters);
13
15
  });
14
16
  watch(filters, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMutating.mjs","sources":["../../src/useIsMutating.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { MutationKey, MutationFilters as MF } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type MutationFilters = MaybeRefDeep<WithQueryClientKey<MF>>\n\nexport function useIsMutating(filters?: MutationFilters): Ref<number>\nexport function useIsMutating(\n mutationKey?: MaybeRef<MutationKey>,\n filters?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number>\nexport function useIsMutating(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isMutating = ref(queryClient.isMutating(filters))\n\n const unsubscribe = queryClient.getMutationCache().subscribe(() => {\n isMutating.value = queryClient.isMutating(filters)\n })\n\n watch(\n filters,\n () => {\n isMutating.value = queryClient.isMutating(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isMutating\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2: MutationFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, mutationKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<MF>\n}\n"],"names":["useIsMutating","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isMutating","ref","unsubscribe","getMutationCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","mutationKey","cloneDeepUnref"],"mappings":";;;;AAeO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;EAGA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CAAA;EAEA,MAAMS,WAAW,GAAGN,WAAW,CAACO,gBAAZ,EAA+BC,CAAAA,SAA/B,CAAyC,MAAM;IACjEJ,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFmB,CAApB,CAAA;EAIAY,KAAK,CACHZ,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEa,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBL,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAqB,GAAG,EAFnB,EAGL;AACA,EAAA,MAAMgB,SAAS,GAAGC,KAAK,CAAClB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMmB,SAAS,GAAGD,KAAK,CAACjB,IAAD,CAAvB,CAAA;EAEA,IAAImB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,WAAW,EAAEL,SAAAA;KAAvC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}
1
+ {"version":3,"file":"useIsMutating.mjs","sources":["../../src/useIsMutating.ts"],"sourcesContent":["import { computed, unref, onScopeDispose, ref, watch } from 'vue-demi'\nimport type { Ref } from 'vue-demi'\nimport type { MutationKey, MutationFilters as MF } from '@tanstack/query-core'\nimport { isServer } from '@tanstack/query-core'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref, isQueryKey, noop } from './utils'\nimport type { MaybeRef, MaybeRefDeep, WithQueryClientKey } from './types'\n\nexport type MutationFilters = MaybeRefDeep<WithQueryClientKey<MF>>\n\nexport function useIsMutating(filters?: MutationFilters): Ref<number>\nexport function useIsMutating(\n mutationKey?: MaybeRef<MutationKey>,\n filters?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number>\nexport function useIsMutating(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2?: Omit<MutationFilters, 'mutationKey'>,\n): Ref<number> {\n const filters = computed(() => parseFilterArgs(arg1, arg2))\n const queryClient =\n filters.value.queryClient ?? useQueryClient(filters.value.queryClientKey)\n\n const isMutating = ref(queryClient.isMutating(filters))\n\n // Nuxt2 memory leak fix - do not subscribe on server\n const unsubscribe = isServer\n ? noop\n : queryClient.getMutationCache().subscribe(() => {\n isMutating.value = queryClient.isMutating(filters)\n })\n\n watch(\n filters,\n () => {\n isMutating.value = queryClient.isMutating(filters)\n },\n { deep: true },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return isMutating\n}\n\nexport function parseFilterArgs(\n arg1?: MaybeRef<MutationKey> | MutationFilters,\n arg2: MutationFilters = {},\n) {\n const plainArg1 = unref(arg1)\n const plainArg2 = unref(arg2)\n\n let options = plainArg1\n\n if (isQueryKey(plainArg1)) {\n options = { ...plainArg2, mutationKey: plainArg1 }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n options = plainArg1 || {}\n }\n\n return cloneDeepUnref(options) as WithQueryClientKey<MF>\n}\n"],"names":["useIsMutating","arg1","arg2","filters","computed","parseFilterArgs","queryClient","value","useQueryClient","queryClientKey","isMutating","ref","unsubscribe","isServer","noop","getMutationCache","subscribe","watch","deep","onScopeDispose","plainArg1","unref","plainArg2","options","isQueryKey","mutationKey","cloneDeepUnref"],"mappings":";;;;;AAgBO,SAASA,aAAT,CACLC,IADK,EAELC,IAFK,EAGQ;AAAA,EAAA,IAAA,qBAAA,CAAA;;EACb,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAMC,eAAe,CAACJ,IAAD,EAAOC,IAAP,CAAtB,CAAxB,CAAA;AACA,EAAA,MAAMI,WAAW,GAAA,CAAA,qBAAA,GACfH,OAAO,CAACI,KAAR,CAAcD,WADC,KACcE,IAAAA,GAAAA,qBAAAA,GAAAA,cAAc,CAACL,OAAO,CAACI,KAAR,CAAcE,cAAf,CAD7C,CAAA;AAGA,EAAA,MAAMC,UAAU,GAAGC,GAAG,CAACL,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAD,CAAtB,CALa;;AAQb,EAAA,MAAMS,WAAW,GAAGC,QAAQ,GACxBC,IADwB,GAExBR,WAAW,CAACS,gBAAZ,EAAA,CAA+BC,SAA/B,CAAyC,MAAM;IAC7CN,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAFD,CAFJ,CAAA;EAMAc,KAAK,CACHd,OADG,EAEH,MAAM;IACJO,UAAU,CAACH,KAAX,GAAmBD,WAAW,CAACI,UAAZ,CAAuBP,OAAvB,CAAnB,CAAA;AACD,GAJE,EAKH;AAAEe,IAAAA,IAAI,EAAE,IAAA;AAAR,GALG,CAAL,CAAA;AAQAC,EAAAA,cAAc,CAAC,MAAM;IACnBP,WAAW,EAAA,CAAA;AACZ,GAFa,CAAd,CAAA;AAIA,EAAA,OAAOF,UAAP,CAAA;AACD,CAAA;AAEM,SAASL,eAAT,CACLJ,IADK,EAELC,IAAqB,GAAG,EAFnB,EAGL;AACA,EAAA,MAAMkB,SAAS,GAAGC,KAAK,CAACpB,IAAD,CAAvB,CAAA;AACA,EAAA,MAAMqB,SAAS,GAAGD,KAAK,CAACnB,IAAD,CAAvB,CAAA;EAEA,IAAIqB,OAAO,GAAGH,SAAd,CAAA;;AAEA,EAAA,IAAII,UAAU,CAACJ,SAAD,CAAd,EAA2B;IACzBG,OAAO,GAAG,EAAE,GAAGD,SAAL;AAAgBG,MAAAA,WAAW,EAAEL,SAAAA;KAAvC,CAAA;AACD,GAFD,MAEO;AACL;IACAG,OAAO,GAAGH,SAAS,IAAI,EAAvB,CAAA;AACD,GAAA;;EAED,OAAOM,cAAc,CAACH,OAAD,CAArB,CAAA;AACD;;;;"}