@tanstack/svelte-query 4.21.0

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 (50) hide show
  1. package/LICENSE +21 -0
  2. package/build/lib/.gitignore +9 -0
  3. package/build/lib/Hydrate.svelte +7 -0
  4. package/build/lib/Hydrate.svelte.d.ts +20 -0
  5. package/build/lib/QueryClientProvider.svelte +14 -0
  6. package/build/lib/QueryClientProvider.svelte.d.ts +19 -0
  7. package/build/lib/context.d.ts +5 -0
  8. package/build/lib/context.js +14 -0
  9. package/build/lib/createBaseQuery.d.ts +5 -0
  10. package/build/lib/createBaseQuery.js +35 -0
  11. package/build/lib/createInfiniteQuery.d.ts +5 -0
  12. package/build/lib/createInfiniteQuery.js +6 -0
  13. package/build/lib/createMutation.d.ts +6 -0
  14. package/build/lib/createMutation.js +27 -0
  15. package/build/lib/createQueries.d.ts +48 -0
  16. package/build/lib/createQueries.js +27 -0
  17. package/build/lib/createQuery.d.ts +23 -0
  18. package/build/lib/createQuery.js +7 -0
  19. package/build/lib/index.d.ts +12 -0
  20. package/build/lib/index.js +15 -0
  21. package/build/lib/types.d.ts +40 -0
  22. package/build/lib/types.js +1 -0
  23. package/build/lib/useHydrate.d.ts +2 -0
  24. package/build/lib/useHydrate.js +8 -0
  25. package/build/lib/useIsFetching.d.ts +4 -0
  26. package/build/lib/useIsFetching.js +21 -0
  27. package/build/lib/useIsMutating.d.ts +4 -0
  28. package/build/lib/useIsMutating.js +21 -0
  29. package/build/lib/useQueryClient.d.ts +2 -0
  30. package/build/lib/useQueryClient.js +5 -0
  31. package/package.json +54 -0
  32. package/src/__tests__/CreateMutation.svelte +13 -0
  33. package/src/__tests__/CreateQuery.svelte +23 -0
  34. package/src/__tests__/createMutation.test.ts +22 -0
  35. package/src/__tests__/createQuery.test.ts +28 -0
  36. package/src/__tests__/utils.ts +72 -0
  37. package/src/lib/Hydrate.svelte +11 -0
  38. package/src/lib/QueryClientProvider.svelte +19 -0
  39. package/src/lib/context.ts +21 -0
  40. package/src/lib/createBaseQuery.ts +76 -0
  41. package/src/lib/createInfiniteQuery.ts +103 -0
  42. package/src/lib/createMutation.ts +110 -0
  43. package/src/lib/createQueries.ts +178 -0
  44. package/src/lib/createQuery.ts +143 -0
  45. package/src/lib/index.ts +17 -0
  46. package/src/lib/types.ts +146 -0
  47. package/src/lib/useHydrate.ts +14 -0
  48. package/src/lib/useIsFetching.ts +41 -0
  49. package/src/lib/useIsMutating.ts +41 -0
  50. package/src/lib/useQueryClient.ts +7 -0
@@ -0,0 +1,143 @@
1
+ import { QueryObserver, parseQueryArgs } from '@tanstack/query-core'
2
+ import type { QueryFunction, QueryKey } from '@tanstack/query-core'
3
+ import { createBaseQuery } from './createBaseQuery'
4
+ import type {
5
+ DefinedCreateQueryResult,
6
+ CreateQueryOptions,
7
+ CreateQueryStoreResult,
8
+ } from './types'
9
+
10
+ export function createQuery<
11
+ TQueryFnData = unknown,
12
+ TError = unknown,
13
+ TData = TQueryFnData,
14
+ TQueryKey extends QueryKey = QueryKey,
15
+ >(
16
+ options: Omit<
17
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
18
+ 'initialData'
19
+ > & {
20
+ initialData?: () => undefined
21
+ },
22
+ ): CreateQueryStoreResult<TData, TError>
23
+
24
+ export function createQuery<
25
+ TQueryFnData = unknown,
26
+ TError = unknown,
27
+ TData = TQueryFnData,
28
+ TQueryKey extends QueryKey = QueryKey,
29
+ >(
30
+ options: Omit<
31
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
32
+ 'initialData'
33
+ > & {
34
+ initialData: TQueryFnData | (() => TQueryFnData)
35
+ },
36
+ ): DefinedCreateQueryResult<TData, TError>
37
+
38
+ export function createQuery<
39
+ TQueryFnData = unknown,
40
+ TError = unknown,
41
+ TData = TQueryFnData,
42
+ TQueryKey extends QueryKey = QueryKey,
43
+ >(
44
+ options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
45
+ ): CreateQueryStoreResult<TData, TError>
46
+
47
+ export function createQuery<
48
+ TQueryFnData = unknown,
49
+ TError = unknown,
50
+ TData = TQueryFnData,
51
+ TQueryKey extends QueryKey = QueryKey,
52
+ >(
53
+ queryKey: TQueryKey,
54
+ options?: Omit<
55
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
56
+ 'queryKey' | 'initialData'
57
+ > & { initialData?: () => undefined },
58
+ ): CreateQueryStoreResult<TData, TError>
59
+
60
+ export function createQuery<
61
+ TQueryFnData = unknown,
62
+ TError = unknown,
63
+ TData = TQueryFnData,
64
+ TQueryKey extends QueryKey = QueryKey,
65
+ >(
66
+ queryKey: TQueryKey,
67
+ options?: Omit<
68
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
69
+ 'queryKey' | 'initialData'
70
+ > & { initialData: TQueryFnData | (() => TQueryFnData) },
71
+ ): DefinedCreateQueryResult<TData, TError>
72
+
73
+ export function createQuery<
74
+ TQueryFnData = unknown,
75
+ TError = unknown,
76
+ TData = TQueryFnData,
77
+ TQueryKey extends QueryKey = QueryKey,
78
+ >(
79
+ queryKey: TQueryKey,
80
+ options?: Omit<
81
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
82
+ 'queryKey'
83
+ >,
84
+ ): CreateQueryStoreResult<TData, TError>
85
+
86
+ export function createQuery<
87
+ TQueryFnData = unknown,
88
+ TError = unknown,
89
+ TData = TQueryFnData,
90
+ TQueryKey extends QueryKey = QueryKey,
91
+ >(
92
+ queryKey: TQueryKey,
93
+ queryFn: QueryFunction<TQueryFnData, TQueryKey>,
94
+ options?: Omit<
95
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
96
+ 'queryKey' | 'queryFn' | 'initialData'
97
+ > & { initialData?: () => undefined },
98
+ ): CreateQueryStoreResult<TData, TError>
99
+
100
+ export function createQuery<
101
+ TQueryFnData = unknown,
102
+ TError = unknown,
103
+ TData = TQueryFnData,
104
+ TQueryKey extends QueryKey = QueryKey,
105
+ >(
106
+ queryKey: TQueryKey,
107
+ queryFn: QueryFunction<TQueryFnData, TQueryKey>,
108
+ options?: Omit<
109
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
110
+ 'queryKey' | 'queryFn' | 'initialData'
111
+ > & { initialData: TQueryFnData | (() => TQueryFnData) },
112
+ ): DefinedCreateQueryResult<TData, TError>
113
+
114
+ export function createQuery<
115
+ TQueryFnData = unknown,
116
+ TError = unknown,
117
+ TData = TQueryFnData,
118
+ TQueryKey extends QueryKey = QueryKey,
119
+ >(
120
+ queryKey: TQueryKey,
121
+ queryFn: QueryFunction<TQueryFnData, TQueryKey>,
122
+ options?: Omit<
123
+ CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
124
+ 'queryKey' | 'queryFn'
125
+ >,
126
+ ): CreateQueryStoreResult<TData, TError>
127
+
128
+ export function createQuery<
129
+ TQueryFnData,
130
+ TError,
131
+ TData = TQueryFnData,
132
+ TQueryKey extends QueryKey = QueryKey,
133
+ >(
134
+ arg1: TQueryKey | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
135
+ arg2?:
136
+ | QueryFunction<TQueryFnData, TQueryKey>
137
+ | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
138
+ arg3?: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
139
+ ): CreateQueryStoreResult<TData, TError> {
140
+ const parsedOptions = parseQueryArgs(arg1, arg2, arg3)
141
+ const result = createBaseQuery(parsedOptions, QueryObserver)
142
+ return result
143
+ }
@@ -0,0 +1,17 @@
1
+ /* istanbul ignore file */
2
+
3
+ // Re-export core
4
+ export * from '@tanstack/query-core'
5
+
6
+ // Svelte Query
7
+ export * from './types'
8
+ export { createQuery } from './createQuery'
9
+ export { createQueries } from './createQueries'
10
+ export { createInfiniteQuery } from './createInfiniteQuery'
11
+ export { createMutation } from './createMutation'
12
+ export { useQueryClient } from './useQueryClient'
13
+ export { useIsFetching } from './useIsFetching'
14
+ export { useIsMutating } from './useIsMutating'
15
+ export { useHydrate } from './useHydrate'
16
+ export { default as Hydrate } from './Hydrate.svelte'
17
+ export { default as QueryClientProvider } from './QueryClientProvider.svelte'
@@ -0,0 +1,146 @@
1
+ import type {
2
+ InfiniteQueryObserverOptions,
3
+ InfiniteQueryObserverResult,
4
+ MutationObserverResult,
5
+ QueryObserverOptions,
6
+ QueryObserverResult,
7
+ QueryKey,
8
+ MutationObserverOptions,
9
+ MutateFunction,
10
+ DefinedQueryObserverResult,
11
+ } from '@tanstack/query-core'
12
+ import type { QueryClient } from '@tanstack/query-core'
13
+ import type { Readable } from 'svelte/store'
14
+
15
+ export interface ContextOptions {
16
+ /**
17
+ * Use this to pass your Svelte Query context. Otherwise, `defaultContext` will be used.
18
+ */
19
+ context?: QueryClient | undefined
20
+ }
21
+
22
+ export interface CreateBaseQueryOptions<
23
+ TQueryFnData = unknown,
24
+ TError = unknown,
25
+ TData = TQueryFnData,
26
+ TQueryData = TQueryFnData,
27
+ TQueryKey extends QueryKey = QueryKey,
28
+ > extends ContextOptions,
29
+ QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {}
30
+
31
+ export interface CreateQueryOptions<
32
+ TQueryFnData = unknown,
33
+ TError = unknown,
34
+ TData = TQueryFnData,
35
+ TQueryKey extends QueryKey = QueryKey,
36
+ > extends CreateBaseQueryOptions<
37
+ TQueryFnData,
38
+ TError,
39
+ TData,
40
+ TQueryFnData,
41
+ TQueryKey
42
+ > {}
43
+
44
+ export interface CreateInfiniteQueryOptions<
45
+ TQueryFnData = unknown,
46
+ TError = unknown,
47
+ TData = TQueryFnData,
48
+ TQueryData = TQueryFnData,
49
+ TQueryKey extends QueryKey = QueryKey,
50
+ > extends InfiniteQueryObserverOptions<
51
+ TQueryFnData,
52
+ TError,
53
+ TData,
54
+ TQueryData,
55
+ TQueryKey
56
+ > {}
57
+
58
+ export type CreateInfiniteQueryResult<
59
+ TData = unknown,
60
+ TError = unknown,
61
+ > = Readable<InfiniteQueryObserverResult<TData, TError>>
62
+
63
+ export interface CreateInfiniteQueryStoreResult<
64
+ TQueryFnData = unknown,
65
+ TError = unknown,
66
+ TData = TQueryFnData,
67
+ > extends Readable<CreateInfiniteQueryResult<TData, TError>> {}
68
+
69
+ export type CreateBaseQueryResult<
70
+ TData = unknown,
71
+ TError = unknown,
72
+ > = QueryObserverResult<TData, TError>
73
+
74
+ export type CreateQueryResult<
75
+ TData = unknown,
76
+ TError = unknown,
77
+ > = CreateBaseQueryResult<TData, TError>
78
+
79
+ export interface CreateQueryStoreResult<
80
+ TQueryFnData = unknown,
81
+ TError = unknown,
82
+ TData = TQueryFnData,
83
+ > extends Readable<CreateQueryResult<TData, TError>> {}
84
+
85
+ export type DefinedCreateBaseQueryResult<
86
+ TData = unknown,
87
+ TError = unknown,
88
+ > = Readable<DefinedQueryObserverResult<TData, TError>>
89
+
90
+ export type DefinedCreateQueryResult<
91
+ TData = unknown,
92
+ TError = unknown,
93
+ > = DefinedCreateBaseQueryResult<TData, TError>
94
+
95
+ export interface CreateMutationOptions<
96
+ TData = unknown,
97
+ TError = unknown,
98
+ TVariables = void,
99
+ TContext = unknown,
100
+ > extends ContextOptions,
101
+ Omit<
102
+ MutationObserverOptions<TData, TError, TVariables, TContext>,
103
+ '_defaulted' | 'variables'
104
+ > {}
105
+
106
+ export type UseMutateFunction<
107
+ TData = unknown,
108
+ TError = unknown,
109
+ TVariables = void,
110
+ TContext = unknown,
111
+ > = (
112
+ ...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>
113
+ ) => void
114
+
115
+ export type UseMutateAsyncFunction<
116
+ TData = unknown,
117
+ TError = unknown,
118
+ TVariables = void,
119
+ TContext = unknown,
120
+ > = MutateFunction<TData, TError, TVariables, TContext>
121
+
122
+ export type UseBaseMutationResult<
123
+ TData = unknown,
124
+ TError = unknown,
125
+ TVariables = unknown,
126
+ TContext = unknown,
127
+ > = Override<
128
+ MutationObserverResult<TData, TError, TVariables, TContext>,
129
+ { mutate: UseMutateFunction<TData, TError, TVariables, TContext> }
130
+ > & { mutateAsync: UseMutateAsyncFunction<TData, TError, TVariables, TContext> }
131
+
132
+ export type CreateMutationResult<
133
+ TData = unknown,
134
+ TError = unknown,
135
+ TVariables = unknown,
136
+ TContext = unknown,
137
+ > = UseBaseMutationResult<TData, TError, TVariables, TContext>
138
+
139
+ export interface MutationStoreResult<
140
+ TData = unknown,
141
+ TError = unknown,
142
+ TVariables = unknown,
143
+ TContext = unknown,
144
+ > extends Readable<CreateMutationResult<TData, TError, TVariables, TContext>> {}
145
+
146
+ type Override<A, B> = { [K in keyof A]: K extends keyof B ? B[K] : A[K] }
@@ -0,0 +1,14 @@
1
+ import {
2
+ type HydrateOptions,
3
+ type QueryClient,
4
+ hydrate,
5
+ } from '@tanstack/query-core'
6
+ import { useQueryClient } from './useQueryClient'
7
+
8
+ export function useHydrate(state?: unknown, options?: HydrateOptions) {
9
+ const client: QueryClient = useQueryClient()
10
+
11
+ if (state) {
12
+ hydrate(client, state, options)
13
+ }
14
+ }
@@ -0,0 +1,41 @@
1
+ import {
2
+ type QueryFilters,
3
+ type QueryKey,
4
+ type QueryClient,
5
+ parseFilterArgs,
6
+ notifyManager,
7
+ } from '@tanstack/query-core'
8
+ import { type Readable, readable } from 'svelte/store'
9
+ import { useQueryClient } from './useQueryClient'
10
+
11
+ export function useIsFetching(filters?: QueryFilters): Readable<number>
12
+ export function useIsFetching(
13
+ queryKey?: QueryKey,
14
+ filters?: QueryFilters,
15
+ ): Readable<number>
16
+
17
+ export function useIsFetching(
18
+ arg1?: QueryKey | QueryFilters,
19
+ arg2?: QueryFilters,
20
+ ): Readable<number> {
21
+ const [filters] = parseFilterArgs(arg1, arg2)
22
+ const client: QueryClient = useQueryClient()
23
+ const cache = client.getQueryCache()
24
+ // isFetching is the prev value initialized on mount *
25
+ let isFetching = client.isFetching(filters)
26
+
27
+ const { subscribe } = readable(isFetching, (set) => {
28
+ return cache.subscribe(
29
+ notifyManager.batchCalls(() => {
30
+ const newIsFetching = client.isFetching(filters)
31
+ if (isFetching !== newIsFetching) {
32
+ // * and update with each change
33
+ isFetching = newIsFetching
34
+ set(isFetching)
35
+ }
36
+ }),
37
+ )
38
+ })
39
+
40
+ return { subscribe }
41
+ }
@@ -0,0 +1,41 @@
1
+ import {
2
+ type MutationFilters,
3
+ type MutationKey,
4
+ type QueryClient,
5
+ notifyManager,
6
+ parseMutationFilterArgs,
7
+ } from '@tanstack/query-core'
8
+ import { type Readable, readable } from 'svelte/store'
9
+ import { useQueryClient } from './useQueryClient'
10
+
11
+ export function useIsMutating(filters?: MutationFilters): Readable<number>
12
+ export function useIsMutating(
13
+ mutationKey?: MutationKey,
14
+ filters?: Omit<MutationFilters, 'mutationKey'>,
15
+ ): Readable<number>
16
+
17
+ export function useIsMutating(
18
+ arg1?: MutationKey | MutationFilters,
19
+ arg2?: Omit<MutationFilters, 'mutationKey'>,
20
+ ): Readable<number> {
21
+ const [filters] = parseMutationFilterArgs(arg1, arg2)
22
+ const client: QueryClient = useQueryClient()
23
+ const cache = client.getMutationCache()
24
+ // isMutating is the prev value initialized on mount *
25
+ let isMutating = client.isMutating(filters)
26
+
27
+ const { subscribe } = readable(isMutating, (set) => {
28
+ return cache.subscribe(
29
+ notifyManager.batchCalls(() => {
30
+ const newIisMutating = client.isMutating(filters)
31
+ if (isMutating !== newIisMutating) {
32
+ // * and update with each change
33
+ isMutating = newIisMutating
34
+ set(isMutating)
35
+ }
36
+ }),
37
+ )
38
+ })
39
+
40
+ return { subscribe }
41
+ }
@@ -0,0 +1,7 @@
1
+ import type { QueryClient } from '@tanstack/query-core'
2
+ import { getQueryClientContext } from './context'
3
+
4
+ export function useQueryClient(): QueryClient {
5
+ const queryClient = getQueryClientContext()
6
+ return queryClient
7
+ }