@tanstack/svelte-query 5.90.2 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/HydrationBoundary.svelte +15 -4
  2. package/dist/HydrationBoundary.svelte.d.ts +9 -19
  3. package/dist/HydrationBoundary.svelte.d.ts.map +1 -1
  4. package/dist/QueryClientProvider.svelte +4 -2
  5. package/dist/QueryClientProvider.svelte.d.ts +4 -19
  6. package/dist/QueryClientProvider.svelte.d.ts.map +1 -1
  7. package/dist/containers.svelte.d.ts +19 -0
  8. package/dist/containers.svelte.d.ts.map +1 -0
  9. package/dist/containers.svelte.js +118 -0
  10. package/dist/context.d.ts +3 -3
  11. package/dist/context.d.ts.map +1 -1
  12. package/dist/context.js +4 -5
  13. package/dist/createBaseQuery.svelte.d.ts +10 -0
  14. package/dist/createBaseQuery.svelte.d.ts.map +1 -0
  15. package/dist/createBaseQuery.svelte.js +58 -0
  16. package/dist/createInfiniteQuery.d.ts +2 -2
  17. package/dist/createInfiniteQuery.d.ts.map +1 -1
  18. package/dist/createInfiniteQuery.js +1 -1
  19. package/dist/createMutation.svelte.d.ts +8 -0
  20. package/dist/createMutation.svelte.d.ts.map +1 -0
  21. package/dist/createMutation.svelte.js +50 -0
  22. package/dist/createQueries.svelte.d.ts +76 -0
  23. package/dist/createQueries.svelte.d.ts.map +1 -0
  24. package/dist/createQueries.svelte.js +39 -0
  25. package/dist/createQuery.d.ts +4 -4
  26. package/dist/createQuery.d.ts.map +1 -1
  27. package/dist/createQuery.js +1 -1
  28. package/dist/index.d.ts +6 -6
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +5 -5
  31. package/dist/types.d.ts +11 -8
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/useIsFetching.svelte.d.ts +4 -0
  34. package/dist/useIsFetching.svelte.d.ts.map +1 -0
  35. package/dist/useIsFetching.svelte.js +7 -0
  36. package/dist/useIsMutating.svelte.d.ts +4 -0
  37. package/dist/useIsMutating.svelte.d.ts.map +1 -0
  38. package/dist/useIsMutating.svelte.js +7 -0
  39. package/dist/useIsRestoring.d.ts +2 -2
  40. package/dist/useIsRestoring.d.ts.map +1 -1
  41. package/dist/{useMutationState.d.ts → useMutationState.svelte.d.ts} +2 -3
  42. package/dist/useMutationState.svelte.d.ts.map +1 -0
  43. package/dist/useMutationState.svelte.js +33 -0
  44. package/dist/utils.svelte.d.ts +4 -0
  45. package/dist/utils.svelte.d.ts.map +1 -0
  46. package/dist/utils.svelte.js +31 -0
  47. package/package.json +9 -3
  48. package/src/HydrationBoundary.svelte +15 -4
  49. package/src/QueryClientProvider.svelte +4 -2
  50. package/src/containers.svelte.ts +123 -0
  51. package/src/context.ts +10 -11
  52. package/src/createBaseQuery.svelte.ts +107 -0
  53. package/src/createInfiniteQuery.ts +4 -4
  54. package/src/createMutation.svelte.ts +91 -0
  55. package/src/{createQueries.ts → createQueries.svelte.ts} +86 -96
  56. package/src/createQuery.ts +15 -17
  57. package/src/index.ts +6 -6
  58. package/src/types.ts +12 -9
  59. package/src/useIsFetching.svelte.ts +16 -0
  60. package/src/useIsMutating.svelte.ts +16 -0
  61. package/src/useIsRestoring.ts +2 -2
  62. package/src/useMutationState.svelte.ts +56 -0
  63. package/src/utils.svelte.ts +44 -0
  64. package/dist/createBaseQuery.d.ts +0 -4
  65. package/dist/createBaseQuery.d.ts.map +0 -1
  66. package/dist/createBaseQuery.js +0 -40
  67. package/dist/createMutation.d.ts +0 -4
  68. package/dist/createMutation.d.ts.map +0 -1
  69. package/dist/createMutation.js +0 -25
  70. package/dist/createQueries.d.ts +0 -77
  71. package/dist/createQueries.d.ts.map +0 -1
  72. package/dist/createQueries.js +0 -40
  73. package/dist/useIsFetching.d.ts +0 -4
  74. package/dist/useIsFetching.d.ts.map +0 -1
  75. package/dist/useIsFetching.js +0 -20
  76. package/dist/useIsMutating.d.ts +0 -4
  77. package/dist/useIsMutating.d.ts.map +0 -1
  78. package/dist/useIsMutating.js +0 -20
  79. package/dist/useMutationState.d.ts.map +0 -1
  80. package/dist/useMutationState.js +0 -23
  81. package/dist/utils.d.ts +0 -4
  82. package/dist/utils.d.ts.map +0 -1
  83. package/dist/utils.js +0 -3
  84. package/src/createBaseQuery.ts +0 -85
  85. package/src/createMutation.ts +0 -54
  86. package/src/useIsFetching.ts +0 -30
  87. package/src/useIsMutating.ts +0 -30
  88. package/src/useMutationState.ts +0 -49
  89. package/src/utils.ts +0 -8
package/src/types.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Snippet } from 'svelte'
1
2
  import type {
2
3
  DefaultError,
3
4
  DefinedQueryObserverResult,
@@ -11,14 +12,13 @@ import type {
11
12
  MutationState,
12
13
  OmitKeyof,
13
14
  Override,
15
+ QueryClient,
14
16
  QueryKey,
15
17
  QueryObserverOptions,
16
18
  QueryObserverResult,
17
19
  } from '@tanstack/query-core'
18
- import type { Readable } from 'svelte/store'
19
20
 
20
- /** Allows a type to be either the base object or a store of that object */
21
- export type StoreOrVal<T> = T | Readable<T>
21
+ export type Accessor<T> = () => T
22
22
 
23
23
  /** Options for createBaseQuery */
24
24
  export type CreateBaseQueryOptions<
@@ -33,7 +33,7 @@ export type CreateBaseQueryOptions<
33
33
  export type CreateBaseQueryResult<
34
34
  TData = unknown,
35
35
  TError = DefaultError,
36
- > = Readable<QueryObserverResult<TData, TError>>
36
+ > = QueryObserverResult<TData, TError>
37
37
 
38
38
  /** Options for createQuery */
39
39
  export type CreateQueryOptions<
@@ -68,13 +68,13 @@ export type CreateInfiniteQueryOptions<
68
68
  export type CreateInfiniteQueryResult<
69
69
  TData = unknown,
70
70
  TError = DefaultError,
71
- > = Readable<InfiniteQueryObserverResult<TData, TError>>
71
+ > = InfiniteQueryObserverResult<TData, TError>
72
72
 
73
73
  /** Options for createBaseQuery with initialData */
74
74
  export type DefinedCreateBaseQueryResult<
75
75
  TData = unknown,
76
76
  TError = DefaultError,
77
- > = Readable<DefinedQueryObserverResult<TData, TError>>
77
+ > = DefinedQueryObserverResult<TData, TError>
78
78
 
79
79
  /** Options for createQuery with initialData */
80
80
  export type DefinedCreateQueryResult<
@@ -134,9 +134,7 @@ export type CreateMutationResult<
134
134
  TError = DefaultError,
135
135
  TVariables = unknown,
136
136
  TOnMutateResult = unknown,
137
- > = Readable<
138
- CreateBaseMutationResult<TData, TError, TVariables, TOnMutateResult>
139
- >
137
+ > = CreateBaseMutationResult<TData, TError, TVariables, TOnMutateResult>
140
138
 
141
139
  /** Options for useMutationState */
142
140
  export type MutationStateOptions<TResult = MutationState> = {
@@ -145,3 +143,8 @@ export type MutationStateOptions<TResult = MutationState> = {
145
143
  mutation: Mutation<unknown, DefaultError, unknown, unknown>,
146
144
  ) => TResult
147
145
  }
146
+
147
+ export type QueryClientProviderProps = {
148
+ client: QueryClient
149
+ children: Snippet
150
+ }
@@ -0,0 +1,16 @@
1
+ import { ReactiveValue } from './containers.svelte.js'
2
+ import { useQueryClient } from './useQueryClient.js'
3
+ import type { QueryClient, QueryFilters } from '@tanstack/query-core'
4
+
5
+ export function useIsFetching(
6
+ filters?: QueryFilters,
7
+ queryClient?: QueryClient,
8
+ ): ReactiveValue<number> {
9
+ const client = useQueryClient(queryClient)
10
+ const queryCache = client.getQueryCache()
11
+
12
+ return new ReactiveValue(
13
+ () => client.isFetching(filters),
14
+ (update) => queryCache.subscribe(update),
15
+ )
16
+ }
@@ -0,0 +1,16 @@
1
+ import { useQueryClient } from './useQueryClient.js'
2
+ import { ReactiveValue } from './containers.svelte.js'
3
+ import type { MutationFilters, QueryClient } from '@tanstack/query-core'
4
+
5
+ export function useIsMutating(
6
+ filters?: MutationFilters,
7
+ queryClient?: QueryClient,
8
+ ): ReactiveValue<number> {
9
+ const client = useQueryClient(queryClient)
10
+ const cache = client.getMutationCache()
11
+
12
+ return new ReactiveValue(
13
+ () => client.isMutating(filters),
14
+ (update) => cache.subscribe(update),
15
+ )
16
+ }
@@ -1,6 +1,6 @@
1
1
  import { getIsRestoringContext } from './context.js'
2
- import type { Readable } from 'svelte/store'
2
+ import type { Box } from './containers.svelte.js'
3
3
 
4
- export function useIsRestoring(): Readable<boolean> {
4
+ export function useIsRestoring(): Box<boolean> {
5
5
  return getIsRestoringContext()
6
6
  }
@@ -0,0 +1,56 @@
1
+ import { replaceEqualDeep } from '@tanstack/query-core'
2
+ import { useQueryClient } from './useQueryClient.js'
3
+ import type {
4
+ MutationCache,
5
+ MutationState,
6
+ QueryClient,
7
+ } from '@tanstack/query-core'
8
+ import type { MutationStateOptions } from './types.js'
9
+
10
+ function getResult<TResult = MutationState>(
11
+ mutationCache: MutationCache,
12
+ options: MutationStateOptions<TResult>,
13
+ ): Array<TResult> {
14
+ return mutationCache
15
+ .findAll(options.filters)
16
+ .map(
17
+ (mutation): TResult =>
18
+ (options.select ? options.select(mutation) : mutation.state) as TResult,
19
+ )
20
+ }
21
+
22
+ export function useMutationState<TResult = MutationState>(
23
+ options: MutationStateOptions<TResult> = {},
24
+ queryClient?: QueryClient,
25
+ ): Array<TResult> {
26
+ const mutationCache = useQueryClient(queryClient).getMutationCache()
27
+ const result = $state(getResult(mutationCache, options))
28
+
29
+ $effect(() => {
30
+ const unsubscribe = mutationCache.subscribe(() => {
31
+ const nextResult = replaceEqualDeep(
32
+ result,
33
+ getResult(mutationCache, options),
34
+ )
35
+ if (result !== nextResult) {
36
+ Object.assign(result, nextResult)
37
+ }
38
+ })
39
+
40
+ return unsubscribe
41
+ })
42
+
43
+ /* $effect(() => {
44
+ mutationCache.subscribe(() => {
45
+ const nextResult = replaceEqualDeep(
46
+ result.current,
47
+ getResult(mutationCache, optionsRef),
48
+ )
49
+ if (result.current !== nextResult) {
50
+ result = nextResult
51
+ //notifyManager.schedule(onStoreChange)
52
+ }
53
+ })
54
+ }) */
55
+ return result
56
+ }
@@ -0,0 +1,44 @@
1
+ import { untrack } from 'svelte'
2
+ // modified from the great https://github.com/svecosystem/runed
3
+ function runEffect(
4
+ flush: 'post' | 'pre',
5
+ effect: () => void | VoidFunction,
6
+ ): void {
7
+ switch (flush) {
8
+ case 'post':
9
+ $effect(effect)
10
+ break
11
+ case 'pre':
12
+ $effect.pre(effect)
13
+ break
14
+ }
15
+ }
16
+ type Getter<T> = () => T
17
+ export const watchChanges = <T>(
18
+ sources: Getter<T> | Array<Getter<T>>,
19
+ flush: 'post' | 'pre',
20
+ effect: (
21
+ values: T | Array<T>,
22
+ previousValues: T | undefined | Array<T | undefined>,
23
+ ) => void,
24
+ ) => {
25
+ let active = false
26
+ let previousValues: T | undefined | Array<T | undefined> = Array.isArray(
27
+ sources,
28
+ )
29
+ ? []
30
+ : undefined
31
+ runEffect(flush, () => {
32
+ const values = Array.isArray(sources)
33
+ ? sources.map((source) => source())
34
+ : sources()
35
+ if (!active) {
36
+ active = true
37
+ previousValues = values
38
+ return
39
+ }
40
+ const cleanup = untrack(() => effect(values, previousValues))
41
+ previousValues = values
42
+ return cleanup
43
+ })
44
+ }
@@ -1,4 +0,0 @@
1
- import type { QueryClient, QueryKey, QueryObserver } from '@tanstack/query-core';
2
- import type { CreateBaseQueryOptions, CreateBaseQueryResult, StoreOrVal } from './types.js';
3
- export declare function createBaseQuery<TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey>(options: StoreOrVal<CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, Observer: typeof QueryObserver, queryClient?: QueryClient): CreateBaseQueryResult<TData, TError>;
4
- //# sourceMappingURL=createBaseQuery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createBaseQuery.d.ts","sourceRoot":"","sources":["../src/createBaseQuery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EAEd,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACX,MAAM,YAAY,CAAA;AAEnB,wBAAgB,eAAe,CAC7B,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,SAAS,QAAQ,EAE1B,OAAO,EAAE,UAAU,CACjB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAC3E,EACD,QAAQ,EAAE,OAAO,aAAa,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAuDtC"}
@@ -1,40 +0,0 @@
1
- import { derived, get, readable } from 'svelte/store';
2
- import { noop, notifyManager } from '@tanstack/query-core';
3
- import { useIsRestoring } from './useIsRestoring.js';
4
- import { useQueryClient } from './useQueryClient.js';
5
- import { isSvelteStore } from './utils.js';
6
- export function createBaseQuery(options, Observer, queryClient) {
7
- /** Load query client */
8
- const client = useQueryClient(queryClient);
9
- const isRestoring = useIsRestoring();
10
- /** Converts options to a svelte store if not already a store object */
11
- const optionsStore = isSvelteStore(options) ? options : readable(options);
12
- /** Creates a store that has the default options applied */
13
- const defaultedOptionsStore = derived([optionsStore, isRestoring], ([$optionsStore, $isRestoring]) => {
14
- const defaultedOptions = client.defaultQueryOptions($optionsStore);
15
- defaultedOptions._optimisticResults = $isRestoring
16
- ? 'isRestoring'
17
- : 'optimistic';
18
- return defaultedOptions;
19
- });
20
- /** Creates the observer */
21
- const observer = new Observer(client, get(defaultedOptionsStore));
22
- defaultedOptionsStore.subscribe(($defaultedOptions) => {
23
- observer.setOptions($defaultedOptions);
24
- });
25
- const result = derived(isRestoring, ($isRestoring, set) => {
26
- const unsubscribe = $isRestoring
27
- ? noop
28
- : observer.subscribe(notifyManager.batchCalls(set));
29
- observer.updateResult();
30
- return unsubscribe;
31
- });
32
- /** Subscribe to changes in result and defaultedOptionsStore */
33
- const { subscribe } = derived([result, defaultedOptionsStore], ([$result, $defaultedOptionsStore]) => {
34
- $result = observer.getOptimisticResult($defaultedOptionsStore);
35
- return !$defaultedOptionsStore.notifyOnChangeProps
36
- ? observer.trackResult($result)
37
- : $result;
38
- });
39
- return { subscribe };
40
- }
@@ -1,4 +0,0 @@
1
- import type { CreateMutationOptions, CreateMutationResult, StoreOrVal } from './types.js';
2
- import type { DefaultError, QueryClient } from '@tanstack/query-core';
3
- export declare function createMutation<TData = unknown, TError = DefaultError, TVariables = void, TOnMutateResult = unknown>(options: StoreOrVal<CreateMutationOptions<TData, TError, TVariables, TOnMutateResult>>, queryClient?: QueryClient): CreateMutationResult<TData, TError, TVariables, TOnMutateResult>;
4
- //# sourceMappingURL=createMutation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMutation.d.ts","sourceRoot":"","sources":["../src/createMutation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EACX,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAErE,wBAAgB,cAAc,CAC5B,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,eAAe,GAAG,OAAO,EAEzB,OAAO,EAAE,UAAU,CACjB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,CAClE,EACD,WAAW,CAAC,EAAE,WAAW,GACxB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,CA+BlE"}
@@ -1,25 +0,0 @@
1
- import { derived, get, readable } from 'svelte/store';
2
- import { MutationObserver, noop, notifyManager } from '@tanstack/query-core';
3
- import { useQueryClient } from './useQueryClient.js';
4
- import { isSvelteStore } from './utils.js';
5
- export function createMutation(options, queryClient) {
6
- const client = useQueryClient(queryClient);
7
- const optionsStore = isSvelteStore(options) ? options : readable(options);
8
- const observer = new MutationObserver(client, get(optionsStore));
9
- let mutate;
10
- optionsStore.subscribe(($options) => {
11
- mutate = (variables, mutateOptions) => {
12
- observer.mutate(variables, mutateOptions).catch(noop);
13
- };
14
- observer.setOptions($options);
15
- });
16
- const result = readable(observer.getCurrentResult(), (set) => {
17
- return observer.subscribe(notifyManager.batchCalls((val) => set(val)));
18
- });
19
- const { subscribe } = derived(result, ($result) => ({
20
- ...$result,
21
- mutate,
22
- mutateAsync: $result.mutate,
23
- }));
24
- return { subscribe };
25
- }
@@ -1,77 +0,0 @@
1
- import type { Readable } from 'svelte/store';
2
- import type { StoreOrVal } from './types.js';
3
- import type { DefaultError, DefinedQueryObserverResult, OmitKeyof, QueriesPlaceholderDataFunction, QueryClient, QueryFunction, QueryKey, QueryObserverOptions, QueryObserverResult, ThrowOnError } from '@tanstack/query-core';
4
- type QueryObserverOptionsForCreateQueries<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = OmitKeyof<QueryObserverOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>, 'placeholderData'> & {
5
- placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
6
- };
7
- type MAXIMUM_DEPTH = 20;
8
- type SkipTokenForUseQueries = symbol;
9
- type GetQueryObserverOptionsForCreateQueries<T> = T extends {
10
- queryFnData: infer TQueryFnData;
11
- error?: infer TError;
12
- data: infer TData;
13
- } ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends {
14
- queryFnData: infer TQueryFnData;
15
- error?: infer TError;
16
- } ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError> : T extends {
17
- data: infer TData;
18
- error?: infer TError;
19
- } ? QueryObserverOptionsForCreateQueries<unknown, TError, TData> : T extends [infer TQueryFnData, infer TError, infer TData] ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends [infer TQueryFnData, infer TError] ? QueryObserverOptionsForCreateQueries<TQueryFnData, TError> : T extends [infer TQueryFnData] ? QueryObserverOptionsForCreateQueries<TQueryFnData> : T extends {
20
- queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
21
- select?: (data: any) => infer TData;
22
- throwOnError?: ThrowOnError<any, infer TError, any, any>;
23
- } ? QueryObserverOptionsForCreateQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : QueryObserverOptionsForCreateQueries;
24
- type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
25
- initialData?: infer TInitialData;
26
- } ? unknown extends TInitialData ? QueryObserverResult<TData, TError> : TInitialData extends TData ? DefinedQueryObserverResult<TData, TError> : TInitialData extends () => infer TInitialDataResult ? unknown extends TInitialDataResult ? QueryObserverResult<TData, TError> : TInitialDataResult extends TData ? DefinedQueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError>;
27
- type GetCreateQueryResult<T> = T extends {
28
- queryFnData: any;
29
- error?: infer TError;
30
- data: infer TData;
31
- } ? GetDefinedOrUndefinedQueryResult<T, TData, TError> : T extends {
32
- queryFnData: infer TQueryFnData;
33
- error?: infer TError;
34
- } ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError> : T extends {
35
- data: infer TData;
36
- error?: infer TError;
37
- } ? GetDefinedOrUndefinedQueryResult<T, TData, TError> : T extends [any, infer TError, infer TData] ? GetDefinedOrUndefinedQueryResult<T, TData, TError> : T extends [infer TQueryFnData, infer TError] ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError> : T extends [infer TQueryFnData] ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData> : T extends {
38
- queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
39
- select?: (data: any) => infer TData;
40
- throwOnError?: ThrowOnError<any, infer TError, any, any>;
41
- } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
42
- /**
43
- * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
44
- */
45
- export type QueriesOptions<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverOptionsForCreateQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetQueryObserverOptionsForCreateQueries<Head>] : T extends [infer Head, ...infer Tails] ? QueriesOptions<[
46
- ...Tails
47
- ], [
48
- ...TResults,
49
- GetQueryObserverOptionsForCreateQueries<Head>
50
- ], [
51
- ...TDepth,
52
- 1
53
- ]> : ReadonlyArray<unknown> extends T ? T : T extends Array<QueryObserverOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>> ? Array<QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>> : Array<QueryObserverOptionsForCreateQueries>;
54
- /**
55
- * QueriesResults reducer recursively maps type param to results
56
- */
57
- export type QueriesResults<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetCreateQueryResult<Head>] : T extends [infer Head, ...infer Tails] ? QueriesResults<[
58
- ...Tails
59
- ], [
60
- ...TResults,
61
- GetCreateQueryResult<Head>
62
- ], [
63
- ...TDepth,
64
- 1
65
- ]> : {
66
- [K in keyof T]: GetCreateQueryResult<T[K]>;
67
- };
68
- export declare function createQueries<T extends Array<any>, TCombinedResult = QueriesResults<T>>({ queries, ...options }: {
69
- queries: StoreOrVal<[...QueriesOptions<T>]> | StoreOrVal<[
70
- ...{
71
- [K in keyof T]: GetQueryObserverOptionsForCreateQueries<T[K]>;
72
- }
73
- ]>;
74
- combine?: (result: QueriesResults<T>) => TCombinedResult;
75
- }, queryClient?: QueryClient): Readable<TCombinedResult>;
76
- export {};
77
- //# sourceMappingURL=createQueries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createQueries.d.ts","sourceRoot":"","sources":["../src/createQueries.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- import { QueriesObserver, noop, notifyManager } from '@tanstack/query-core';
2
- import { derived, get, readable } from 'svelte/store';
3
- import { useIsRestoring } from './useIsRestoring.js';
4
- import { useQueryClient } from './useQueryClient.js';
5
- import { isSvelteStore } from './utils.js';
6
- export function createQueries({ queries, ...options }, queryClient) {
7
- const client = useQueryClient(queryClient);
8
- const isRestoring = useIsRestoring();
9
- const queriesStore = isSvelteStore(queries) ? queries : readable(queries);
10
- const defaultedQueriesStore = derived([queriesStore, isRestoring], ([$queries, $isRestoring]) => {
11
- return $queries.map((opts) => {
12
- const defaultedOptions = client.defaultQueryOptions(opts);
13
- // Make sure the results are already in fetching state before subscribing or updating options
14
- defaultedOptions._optimisticResults = $isRestoring
15
- ? 'isRestoring'
16
- : 'optimistic';
17
- return defaultedOptions;
18
- });
19
- });
20
- const observer = new QueriesObserver(client, get(defaultedQueriesStore), options);
21
- defaultedQueriesStore.subscribe(($defaultedQueries) => {
22
- // Do not notify on updates because of changes in the options because
23
- // these changes should already be reflected in the optimistic result.
24
- observer.setQueries($defaultedQueries, options);
25
- });
26
- const result = derived([isRestoring], ([$isRestoring], set) => {
27
- const unsubscribe = $isRestoring
28
- ? noop
29
- : observer.subscribe(notifyManager.batchCalls(set));
30
- return () => unsubscribe();
31
- });
32
- const { subscribe } = derived([result, defaultedQueriesStore],
33
- // @ts-expect-error svelte-check thinks this is unused
34
- ([$result, $defaultedQueriesStore]) => {
35
- const [rawResult, combineResult, trackResult] = observer.getOptimisticResult($defaultedQueriesStore, options.combine);
36
- $result = rawResult;
37
- return combineResult(trackResult());
38
- });
39
- return { subscribe };
40
- }
@@ -1,4 +0,0 @@
1
- import type { Readable } from 'svelte/store';
2
- import type { QueryClient, QueryFilters } from '@tanstack/query-core';
3
- export declare function useIsFetching(filters?: QueryFilters, queryClient?: QueryClient): Readable<number>;
4
- //# sourceMappingURL=useIsFetching.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsFetching.d.ts","sourceRoot":"","sources":["../src/useIsFetching.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAErE,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,YAAY,EACtB,WAAW,CAAC,EAAE,WAAW,GACxB,QAAQ,CAAC,MAAM,CAAC,CAoBlB"}
@@ -1,20 +0,0 @@
1
- import { notifyManager } from '@tanstack/query-core';
2
- import { readable } from 'svelte/store';
3
- import { useQueryClient } from './useQueryClient.js';
4
- export function useIsFetching(filters, queryClient) {
5
- const client = useQueryClient(queryClient);
6
- const cache = client.getQueryCache();
7
- // isFetching is the prev value initialized on mount *
8
- let isFetching = client.isFetching(filters);
9
- const { subscribe } = readable(isFetching, (set) => {
10
- return cache.subscribe(notifyManager.batchCalls(() => {
11
- const newIsFetching = client.isFetching(filters);
12
- if (isFetching !== newIsFetching) {
13
- // * and update with each change
14
- isFetching = newIsFetching;
15
- set(isFetching);
16
- }
17
- }));
18
- });
19
- return { subscribe };
20
- }
@@ -1,4 +0,0 @@
1
- import type { Readable } from 'svelte/store';
2
- import type { MutationFilters, QueryClient } from '@tanstack/query-core';
3
- export declare function useIsMutating(filters?: MutationFilters, queryClient?: QueryClient): Readable<number>;
4
- //# sourceMappingURL=useIsMutating.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsMutating.d.ts","sourceRoot":"","sources":["../src/useIsMutating.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAExE,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,eAAe,EACzB,WAAW,CAAC,EAAE,WAAW,GACxB,QAAQ,CAAC,MAAM,CAAC,CAoBlB"}
@@ -1,20 +0,0 @@
1
- import { notifyManager } from '@tanstack/query-core';
2
- import { readable } from 'svelte/store';
3
- import { useQueryClient } from './useQueryClient.js';
4
- export function useIsMutating(filters, queryClient) {
5
- const client = useQueryClient(queryClient);
6
- const cache = client.getMutationCache();
7
- // isMutating is the prev value initialized on mount *
8
- let isMutating = client.isMutating(filters);
9
- const { subscribe } = readable(isMutating, (set) => {
10
- return cache.subscribe(notifyManager.batchCalls(() => {
11
- const newIisMutating = client.isMutating(filters);
12
- if (isMutating !== newIisMutating) {
13
- // * and update with each change
14
- isMutating = newIisMutating;
15
- set(isMutating);
16
- }
17
- }));
18
- });
19
- return { subscribe };
20
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMutationState.d.ts","sourceRoot":"","sources":["../src/useMutationState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EACZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AActD,wBAAgB,gBAAgB,CAAC,OAAO,GAAG,aAAa,EACtD,OAAO,GAAE,oBAAoB,CAAC,OAAO,CAAM,EAC3C,WAAW,CAAC,EAAE,WAAW,GACxB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAsB1B"}
@@ -1,23 +0,0 @@
1
- import { readable } from 'svelte/store';
2
- import { notifyManager, replaceEqualDeep } from '@tanstack/query-core';
3
- import { useQueryClient } from './useQueryClient.js';
4
- function getResult(mutationCache, options) {
5
- return mutationCache
6
- .findAll(options.filters)
7
- .map((mutation) => (options.select ? options.select(mutation) : mutation.state));
8
- }
9
- export function useMutationState(options = {}, queryClient) {
10
- const client = useQueryClient(queryClient);
11
- const mutationCache = client.getMutationCache();
12
- let result = getResult(mutationCache, options);
13
- const { subscribe } = readable(result, (set) => {
14
- return mutationCache.subscribe(notifyManager.batchCalls(() => {
15
- const nextResult = replaceEqualDeep(result, getResult(mutationCache, options));
16
- if (result !== nextResult) {
17
- result = nextResult;
18
- set(result);
19
- }
20
- }));
21
- });
22
- return { subscribe };
23
- }
package/dist/utils.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { Readable } from 'svelte/store';
2
- import type { StoreOrVal } from './types.js';
3
- export declare function isSvelteStore<T extends object>(obj: StoreOrVal<T>): obj is Readable<T>;
4
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GACjB,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAEpB"}
package/dist/utils.js DELETED
@@ -1,3 +0,0 @@
1
- export function isSvelteStore(obj) {
2
- return 'subscribe' in obj && typeof obj.subscribe === 'function';
3
- }
@@ -1,85 +0,0 @@
1
- import { derived, get, readable } from 'svelte/store'
2
- import { noop, notifyManager } from '@tanstack/query-core'
3
- import { useIsRestoring } from './useIsRestoring.js'
4
- import { useQueryClient } from './useQueryClient.js'
5
- import { isSvelteStore } from './utils.js'
6
- import type {
7
- QueryClient,
8
- QueryKey,
9
- QueryObserver,
10
- QueryObserverResult,
11
- } from '@tanstack/query-core'
12
- import type {
13
- CreateBaseQueryOptions,
14
- CreateBaseQueryResult,
15
- StoreOrVal,
16
- } from './types.js'
17
-
18
- export function createBaseQuery<
19
- TQueryFnData,
20
- TError,
21
- TData,
22
- TQueryData,
23
- TQueryKey extends QueryKey,
24
- >(
25
- options: StoreOrVal<
26
- CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
27
- >,
28
- Observer: typeof QueryObserver,
29
- queryClient?: QueryClient,
30
- ): CreateBaseQueryResult<TData, TError> {
31
- /** Load query client */
32
- const client = useQueryClient(queryClient)
33
- const isRestoring = useIsRestoring()
34
- /** Converts options to a svelte store if not already a store object */
35
- const optionsStore = isSvelteStore(options) ? options : readable(options)
36
-
37
- /** Creates a store that has the default options applied */
38
- const defaultedOptionsStore = derived(
39
- [optionsStore, isRestoring],
40
- ([$optionsStore, $isRestoring]) => {
41
- const defaultedOptions = client.defaultQueryOptions($optionsStore)
42
- defaultedOptions._optimisticResults = $isRestoring
43
- ? 'isRestoring'
44
- : 'optimistic'
45
- return defaultedOptions
46
- },
47
- )
48
-
49
- /** Creates the observer */
50
- const observer = new Observer<
51
- TQueryFnData,
52
- TError,
53
- TData,
54
- TQueryData,
55
- TQueryKey
56
- >(client, get(defaultedOptionsStore))
57
-
58
- defaultedOptionsStore.subscribe(($defaultedOptions) => {
59
- observer.setOptions($defaultedOptions)
60
- })
61
-
62
- const result = derived<
63
- typeof isRestoring,
64
- QueryObserverResult<TData, TError>
65
- >(isRestoring, ($isRestoring, set) => {
66
- const unsubscribe = $isRestoring
67
- ? noop
68
- : observer.subscribe(notifyManager.batchCalls(set))
69
- observer.updateResult()
70
- return unsubscribe
71
- })
72
-
73
- /** Subscribe to changes in result and defaultedOptionsStore */
74
- const { subscribe } = derived(
75
- [result, defaultedOptionsStore],
76
- ([$result, $defaultedOptionsStore]) => {
77
- $result = observer.getOptimisticResult($defaultedOptionsStore)
78
- return !$defaultedOptionsStore.notifyOnChangeProps
79
- ? observer.trackResult($result)
80
- : $result
81
- },
82
- )
83
-
84
- return { subscribe }
85
- }