@tanstack/solid-query 5.0.0-alpha.2 → 5.0.0-alpha.20

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 (54) hide show
  1. package/build/cjs/index.js +73 -34
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/index.js +75 -37
  4. package/build/esm/index.js.map +1 -1
  5. package/build/source/QueryClient.js +6 -0
  6. package/build/source/__tests__/QueryClientProvider.test.jsx +2 -1
  7. package/build/source/__tests__/createInfiniteQuery.test.jsx +67 -20
  8. package/build/source/__tests__/createMutation.test.jsx +19 -18
  9. package/build/source/__tests__/createQueries.test.jsx +2 -18
  10. package/build/source/__tests__/createQuery.test.jsx +70 -28
  11. package/build/source/__tests__/suspense.test.jsx +6 -5
  12. package/build/source/__tests__/useIsFetching.test.jsx +2 -4
  13. package/build/source/__tests__/useIsMutating.test.jsx +25 -28
  14. package/build/source/__tests__/utils.jsx +4 -3
  15. package/build/source/createBaseQuery.js +45 -19
  16. package/build/source/createQueries.js +5 -5
  17. package/build/source/index.js +1 -0
  18. package/build/source/useIsFetching.js +5 -5
  19. package/build/source/useIsMutating.js +5 -5
  20. package/build/types/QueryClient.d.ts +29 -0
  21. package/build/types/QueryClientProvider.d.ts +1 -1
  22. package/build/types/__tests__/utils.d.ts +3 -4
  23. package/build/types/createBaseQuery.d.ts +3 -2
  24. package/build/types/createInfiniteQuery.d.ts +4 -2
  25. package/build/types/createMutation.d.ts +4 -2
  26. package/build/types/createQueries.d.ts +5 -4
  27. package/build/types/createQuery.d.ts +2 -1
  28. package/build/types/index.d.ts +2 -0
  29. package/build/types/types.d.ts +2 -1
  30. package/build/types/useIsFetching.d.ts +3 -7
  31. package/build/types/useIsMutating.d.ts +3 -7
  32. package/build/umd/index.js +1 -1
  33. package/build/umd/index.js.map +1 -1
  34. package/package.json +5 -5
  35. package/src/QueryClient.ts +84 -0
  36. package/src/QueryClientProvider.tsx +1 -1
  37. package/src/__tests__/QueryClientProvider.test.tsx +2 -1
  38. package/src/__tests__/createInfiniteQuery.test.tsx +95 -34
  39. package/src/__tests__/createMutation.test.tsx +19 -18
  40. package/src/__tests__/createQueries.test.tsx +2 -24
  41. package/src/__tests__/createQuery.test.tsx +86 -29
  42. package/src/__tests__/suspense.test.tsx +6 -5
  43. package/src/__tests__/useIsFetching.test.tsx +2 -4
  44. package/src/__tests__/useIsMutating.test.tsx +32 -40
  45. package/src/__tests__/utils.tsx +4 -3
  46. package/src/createBaseQuery.ts +70 -25
  47. package/src/createInfiniteQuery.ts +3 -2
  48. package/src/createMutation.ts +4 -2
  49. package/src/createQueries.ts +9 -8
  50. package/src/createQuery.ts +4 -2
  51. package/src/index.ts +7 -0
  52. package/src/types.ts +4 -2
  53. package/src/useIsFetching.ts +10 -13
  54. package/src/useIsMutating.ts +10 -11
@@ -1,10 +1,10 @@
1
1
  import type {
2
2
  QueryObserver,
3
3
  QueryKey,
4
- QueryClient,
5
4
  DefaultError,
6
5
  InfiniteData,
7
6
  } from '@tanstack/query-core'
7
+ import type { QueryClient } from './QueryClient'
8
8
  import { InfiniteQueryObserver } from '@tanstack/query-core'
9
9
  import type {
10
10
  CreateInfiniteQueryOptions,
@@ -12,6 +12,7 @@ import type {
12
12
  } from './types'
13
13
  import { createBaseQuery } from './createBaseQuery'
14
14
  import { createMemo } from 'solid-js'
15
+ import type { Accessor } from 'solid-js'
15
16
 
16
17
  export function createInfiniteQuery<
17
18
  TQueryFnData,
@@ -27,7 +28,7 @@ export function createInfiniteQuery<
27
28
  TQueryKey,
28
29
  TPageParam
29
30
  >,
30
- queryClient?: () => QueryClient,
31
+ queryClient?: Accessor<QueryClient>,
31
32
  ): CreateInfiniteQueryResult<TData, TError> {
32
33
  return createBaseQuery(
33
34
  createMemo(() => options()),
@@ -1,4 +1,5 @@
1
- import type { QueryClient, DefaultError } from '@tanstack/query-core'
1
+ import type { DefaultError } from '@tanstack/query-core'
2
+ import type { QueryClient } from './QueryClient'
2
3
  import { MutationObserver } from '@tanstack/query-core'
3
4
  import { useQueryClient } from './QueryClientProvider'
4
5
  import type {
@@ -6,6 +7,7 @@ import type {
6
7
  CreateMutationOptions,
7
8
  CreateMutationResult,
8
9
  } from './types'
10
+ import type { Accessor } from 'solid-js'
9
11
  import { createComputed, onCleanup, on } from 'solid-js'
10
12
  import { createStore } from 'solid-js/store'
11
13
  import { shouldThrowError } from './utils'
@@ -18,7 +20,7 @@ export function createMutation<
18
20
  TContext = unknown,
19
21
  >(
20
22
  options: CreateMutationOptions<TData, TError, TVariables, TContext>,
21
- queryClient?: () => QueryClient,
23
+ queryClient?: Accessor<QueryClient>,
22
24
  ): CreateMutationResult<TData, TError, TVariables, TContext> {
23
25
  const client = useQueryClient(queryClient?.())
24
26
 
@@ -1,11 +1,12 @@
1
1
  import type {
2
2
  QueriesPlaceholderDataFunction,
3
- QueryClient,
4
3
  QueryFunction,
5
4
  QueryKey,
6
5
  DefaultError,
7
6
  } from '@tanstack/query-core'
8
7
  import { notifyManager, QueriesObserver } from '@tanstack/query-core'
8
+ import type { QueryClient } from './QueryClient'
9
+ import type { Accessor } from 'solid-js'
9
10
  import { createComputed, onCleanup, onMount } from 'solid-js'
10
11
  import { createStore, unwrap } from 'solid-js/store'
11
12
  import { useQueryClient } from './QueryClientProvider'
@@ -148,20 +149,20 @@ export type QueriesResults<
148
149
  CreateQueryResult[]
149
150
 
150
151
  export function createQueries<T extends any[]>(
151
- queriesOptions: () => {
152
+ queriesOptions: Accessor<{
152
153
  queries: readonly [...QueriesOptions<T>]
153
- queryClient?: QueryClient
154
- },
154
+ }>,
155
+ queryClient?: Accessor<QueryClient>,
155
156
  ): QueriesResults<T> {
156
- const queryClient = useQueryClient(queriesOptions().queryClient)
157
+ const client = useQueryClient(queryClient?.())
157
158
 
158
159
  const defaultedQueries = queriesOptions().queries.map((options) => {
159
- const defaultedOptions = queryClient.defaultQueryOptions(options)
160
+ const defaultedOptions = client.defaultQueryOptions(options)
160
161
  defaultedOptions._optimisticResults = 'optimistic'
161
162
  return defaultedOptions
162
163
  })
163
164
 
164
- const observer = new QueriesObserver(queryClient, defaultedQueries)
165
+ const observer = new QueriesObserver(client, defaultedQueries)
165
166
 
166
167
  const [state, setState] = createStore(
167
168
  observer.getOptimisticResult(defaultedQueries),
@@ -181,7 +182,7 @@ export function createQueries<T extends any[]>(
181
182
 
182
183
  createComputed(() => {
183
184
  const updatedQueries = queriesOptions().queries.map((options) => {
184
- const defaultedOptions = queryClient.defaultQueryOptions(options)
185
+ const defaultedOptions = client.defaultQueryOptions(options)
185
186
  defaultedOptions._optimisticResults = 'optimistic'
186
187
  return defaultedOptions
187
188
  })
@@ -1,5 +1,7 @@
1
- import type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core'
1
+ import type { QueryKey, DefaultError } from '@tanstack/query-core'
2
2
  import { QueryObserver } from '@tanstack/query-core'
3
+ import type { QueryClient } from './QueryClient'
4
+ import type { Accessor } from 'solid-js'
3
5
  import { createMemo } from 'solid-js'
4
6
  import { createBaseQuery } from './createBaseQuery'
5
7
  import type {
@@ -58,7 +60,7 @@ export function createQuery<
58
60
  TQueryKey extends QueryKey = QueryKey,
59
61
  >(
60
62
  options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
61
- queryClient?: () => QueryClient,
63
+ queryClient?: Accessor<QueryClient>,
62
64
  ) {
63
65
  return createBaseQuery(
64
66
  createMemo(() => options()),
package/src/index.ts CHANGED
@@ -8,6 +8,13 @@ export * from '@tanstack/query-core'
8
8
 
9
9
  // Solid Query
10
10
  export * from './types'
11
+ export { QueryClient } from './QueryClient'
12
+ export type {
13
+ QueryObserverOptions,
14
+ DefaultOptions,
15
+ QueryClientConfig,
16
+ InfiniteQueryObserverOptions,
17
+ } from './QueryClient'
11
18
  export { createQuery } from './createQuery'
12
19
  export {
13
20
  QueryClientContext,
package/src/types.ts CHANGED
@@ -2,17 +2,19 @@
2
2
 
3
3
  import type {
4
4
  QueryKey,
5
- QueryObserverOptions,
6
5
  QueryObserverResult,
7
6
  MutateFunction,
8
7
  MutationObserverOptions,
9
8
  MutationObserverResult,
10
9
  DefinedQueryObserverResult,
11
- InfiniteQueryObserverOptions,
12
10
  InfiniteQueryObserverResult,
13
11
  WithRequired,
14
12
  DefaultError,
15
13
  } from '@tanstack/query-core'
14
+ import type {
15
+ QueryObserverOptions,
16
+ InfiniteQueryObserverOptions,
17
+ } from './QueryClient'
16
18
 
17
19
  export type FunctionedParams<T> = () => T
18
20
 
@@ -1,23 +1,20 @@
1
- import type { QueryClient, QueryFilters } from '@tanstack/query-core'
1
+ import type { QueryFilters } from '@tanstack/query-core'
2
+ import type { QueryClient } from './QueryClient'
2
3
  import type { Accessor } from 'solid-js'
3
4
  import { createMemo, createSignal, onCleanup } from 'solid-js'
4
5
  import { useQueryClient } from './QueryClientProvider'
5
6
 
6
- type Options = () => {
7
- filters?: QueryFilters
8
- queryClient?: QueryClient
9
- }
10
-
11
- export function useIsFetching(options: Options = () => ({})): Accessor<number> {
12
- const queryClient = createMemo(() => useQueryClient(options().queryClient))
13
- const queryCache = createMemo(() => queryClient().getQueryCache())
7
+ export function useIsFetching(
8
+ filters?: Accessor<QueryFilters>,
9
+ queryClient?: Accessor<QueryClient>,
10
+ ): Accessor<number> {
11
+ const client = createMemo(() => useQueryClient(queryClient?.()))
12
+ const queryCache = createMemo(() => client().getQueryCache())
14
13
 
15
- const [fetches, setFetches] = createSignal(
16
- queryClient().isFetching(options().filters),
17
- )
14
+ const [fetches, setFetches] = createSignal(client().isFetching(filters?.()))
18
15
 
19
16
  const unsubscribe = queryCache().subscribe(() => {
20
- setFetches(queryClient().isFetching(options().filters))
17
+ setFetches(client().isFetching(filters?.()))
21
18
  })
22
19
 
23
20
  onCleanup(unsubscribe)
@@ -1,23 +1,22 @@
1
- import type { MutationFilters, QueryClient } from '@tanstack/query-core'
1
+ import type { MutationFilters } from '@tanstack/query-core'
2
+ import type { QueryClient } from './QueryClient'
2
3
  import { useQueryClient } from './QueryClientProvider'
3
4
  import type { Accessor } from 'solid-js'
4
5
  import { createSignal, onCleanup, createMemo } from 'solid-js'
5
6
 
6
- type Options = () => {
7
- filters?: MutationFilters
8
- queryClient?: QueryClient
9
- }
10
-
11
- export function useIsMutating(options: Options = () => ({})): Accessor<number> {
12
- const queryClient = createMemo(() => useQueryClient(options().queryClient))
13
- const mutationCache = createMemo(() => queryClient().getMutationCache())
7
+ export function useIsMutating(
8
+ filters?: Accessor<MutationFilters>,
9
+ queryClient?: Accessor<QueryClient>,
10
+ ): Accessor<number> {
11
+ const client = createMemo(() => useQueryClient(queryClient?.()))
12
+ const mutationCache = createMemo(() => client().getMutationCache())
14
13
 
15
14
  const [mutations, setMutations] = createSignal(
16
- queryClient().isMutating(options().filters),
15
+ client().isMutating(filters?.()),
17
16
  )
18
17
 
19
18
  const unsubscribe = mutationCache().subscribe((_result) => {
20
- setMutations(queryClient().isMutating(options().filters))
19
+ setMutations(client().isMutating(filters?.()))
21
20
  })
22
21
 
23
22
  onCleanup(unsubscribe)