@tanstack/solid-query 5.0.0-alpha.7 → 5.0.0-alpha.70

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 (81) hide show
  1. package/{build/cjs/index.js → dist/cjs/index.cjs} +91 -31
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/{build → dist}/esm/index.js +91 -33
  4. package/dist/esm/index.js.map +1 -0
  5. package/dist/source/QueryClient.js +6 -0
  6. package/{build → dist}/source/createBaseQuery.js +49 -23
  7. package/{build → dist}/source/createMutation.js +1 -1
  8. package/{build → dist}/source/createQueries.js +13 -7
  9. package/{build → dist}/source/createQuery.js +3 -0
  10. package/{build → dist}/source/index.js +2 -1
  11. package/dist/types/QueryClient.d.ts +29 -0
  12. package/{build → dist}/types/QueryClientProvider.d.ts +3 -3
  13. package/{build → dist}/types/createBaseQuery.d.ts +2 -1
  14. package/{build → dist}/types/createInfiniteQuery.d.ts +2 -1
  15. package/{build → dist}/types/createMutation.d.ts +2 -1
  16. package/{build → dist}/types/createQueries.d.ts +11 -9
  17. package/dist/types/createQuery.d.ts +14 -0
  18. package/{build → dist}/types/index.d.ts +3 -1
  19. package/dist/types/types.d.ts +34 -0
  20. package/{build → dist}/types/useIsFetching.d.ts +2 -1
  21. package/{build → dist}/types/useIsMutating.d.ts +2 -1
  22. package/package.json +22 -26
  23. package/src/QueryClient.ts +84 -0
  24. package/src/QueryClientProvider.tsx +1 -1
  25. package/src/__tests__/QueryClientProvider.test.tsx +2 -3
  26. package/src/__tests__/createInfiniteQuery.test.tsx +83 -19
  27. package/src/__tests__/createMutation.test.tsx +5 -5
  28. package/src/__tests__/createQueries.test.tsx +6 -78
  29. package/src/__tests__/createQuery.test.tsx +66 -334
  30. package/src/__tests__/createQuery.types.test.tsx +21 -1
  31. package/src/__tests__/suspense.test.tsx +7 -90
  32. package/src/__tests__/transition.test.tsx +1 -1
  33. package/src/__tests__/useIsFetching.test.tsx +1 -1
  34. package/src/__tests__/useIsMutating.test.tsx +5 -7
  35. package/src/__tests__/utils.tsx +1 -1
  36. package/src/createBaseQuery.ts +73 -28
  37. package/src/createInfiniteQuery.ts +1 -1
  38. package/src/createMutation.ts +3 -2
  39. package/src/createQueries.ts +32 -14
  40. package/src/createQuery.ts +24 -1
  41. package/src/index.ts +8 -1
  42. package/src/types.ts +4 -2
  43. package/src/useIsFetching.ts +2 -1
  44. package/src/useIsMutating.ts +2 -1
  45. package/build/cjs/index.js.map +0 -1
  46. package/build/esm/index.js.map +0 -1
  47. package/build/source/__tests__/QueryClientProvider.test.jsx +0 -121
  48. package/build/source/__tests__/createInfiniteQuery.test.jsx +0 -1315
  49. package/build/source/__tests__/createMutation.test.jsx +0 -867
  50. package/build/source/__tests__/createQueries.test.jsx +0 -661
  51. package/build/source/__tests__/createQuery.test.jsx +0 -4608
  52. package/build/source/__tests__/createQuery.types.test.jsx +0 -135
  53. package/build/source/__tests__/suspense.test.jsx +0 -721
  54. package/build/source/__tests__/transition.test.jsx +0 -42
  55. package/build/source/__tests__/useIsFetching.test.jsx +0 -190
  56. package/build/source/__tests__/useIsMutating.test.jsx +0 -198
  57. package/build/source/__tests__/utils.jsx +0 -50
  58. package/build/types/__tests__/QueryClientProvider.test.d.ts +0 -1
  59. package/build/types/__tests__/createInfiniteQuery.test.d.ts +0 -1
  60. package/build/types/__tests__/createMutation.test.d.ts +0 -1
  61. package/build/types/__tests__/createQueries.test.d.ts +0 -1
  62. package/build/types/__tests__/createQuery.test.d.ts +0 -1
  63. package/build/types/__tests__/createQuery.types.test.d.ts +0 -2
  64. package/build/types/__tests__/suspense.test.d.ts +0 -1
  65. package/build/types/__tests__/transition.test.d.ts +0 -1
  66. package/build/types/__tests__/useIsFetching.test.d.ts +0 -1
  67. package/build/types/__tests__/useIsMutating.test.d.ts +0 -1
  68. package/build/types/__tests__/utils.d.ts +0 -21
  69. package/build/types/createQuery.d.ts +0 -11
  70. package/build/types/types.d.ts +0 -33
  71. package/build/umd/index.js +0 -2
  72. package/build/umd/index.js.map +0 -1
  73. /package/{build → dist}/source/QueryClientProvider.jsx +0 -0
  74. /package/{build → dist}/source/createInfiniteQuery.js +0 -0
  75. /package/{build → dist}/source/setBatchUpdatesFn.js +0 -0
  76. /package/{build → dist}/source/types.js +0 -0
  77. /package/{build → dist}/source/useIsFetching.js +0 -0
  78. /package/{build → dist}/source/useIsMutating.js +0 -0
  79. /package/{build → dist}/source/utils.js +0 -0
  80. /package/{build → dist}/types/setBatchUpdatesFn.d.ts +0 -0
  81. /package/{build → dist}/types/utils.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { fireEvent, render, screen, waitFor } from 'solid-testing-library'
1
+ import { fireEvent, render, screen, waitFor } from '@solidjs/testing-library'
2
2
 
3
3
  import { createEffect, createRenderEffect, createSignal, Show } from 'solid-js'
4
4
  import { createQuery, QueryCache, QueryClientProvider, useIsFetching } from '..'
@@ -1,11 +1,9 @@
1
- import { fireEvent, screen, waitFor } from 'solid-testing-library'
1
+ import { fireEvent, render, screen, waitFor } from '@solidjs/testing-library'
2
2
  import { createMutation, QueryClientProvider, useIsMutating } from '..'
3
- import { createQueryClient, sleep } from './utils'
3
+ import { createQueryClient, sleep, setActTimeout } from './utils'
4
4
 
5
5
  import { createEffect, createRenderEffect, createSignal, Show } from 'solid-js'
6
- import { render } from 'solid-testing-library'
7
- import * as MutationCacheModule from '../../../query-core/src/mutationCache'
8
- import { setActTimeout } from './utils'
6
+ import * as QueryCore from '@tanstack/query-core'
9
7
  import { vi } from 'vitest'
10
8
 
11
9
  describe('useIsMutating', () => {
@@ -188,7 +186,7 @@ describe('useIsMutating', () => {
188
186
  it('should not change state if unmounted', async () => {
189
187
  // We have to mock the MutationCache to not unsubscribe
190
188
  // the listener when the component is unmounted
191
- class MutationCacheMock extends MutationCacheModule.MutationCache {
189
+ class MutationCacheMock extends QueryCore.MutationCache {
192
190
  subscribe(listener: any) {
193
191
  super.subscribe(listener)
194
192
  return () => void 0
@@ -196,7 +194,7 @@ describe('useIsMutating', () => {
196
194
  }
197
195
 
198
196
  const MutationCacheSpy = vi
199
- .spyOn(MutationCacheModule, 'MutationCache')
197
+ .spyOn(QueryCore, 'MutationCache')
200
198
  .mockImplementation((fn) => {
201
199
  return new MutationCacheMock(fn)
202
200
  })
@@ -1,5 +1,5 @@
1
1
  import type { QueryClientConfig } from '@tanstack/query-core'
2
- import { QueryClient } from '@tanstack/query-core'
2
+ import { QueryClient } from '../QueryClient'
3
3
  import type { ParentProps } from 'solid-js'
4
4
  import { createEffect, createSignal, onCleanup, Show } from 'solid-js'
5
5
  import { vi } from 'vitest'
@@ -3,13 +3,12 @@
3
3
  // in solid-js/web package. I'll create a GitHub issue with them to see
4
4
  // why that happens.
5
5
  import type {
6
- QueryClient,
7
6
  QueryKey,
8
7
  QueryObserver,
9
8
  QueryObserverResult,
10
9
  } from '@tanstack/query-core'
11
- import { hydrate } from '@tanstack/query-core'
12
- import { notifyManager } from '@tanstack/query-core'
10
+ import type { QueryClient } from './QueryClient'
11
+ import { hydrate, notifyManager } from '@tanstack/query-core'
13
12
  import type { Accessor } from 'solid-js'
14
13
  import { isServer } from 'solid-js/web'
15
14
  import {
@@ -18,13 +17,29 @@ import {
18
17
  createResource,
19
18
  on,
20
19
  onCleanup,
21
- onMount,
22
20
  } from 'solid-js'
23
- import { createStore, unwrap } from 'solid-js/store'
21
+ import { createStore, reconcile, unwrap } from 'solid-js/store'
24
22
  import { useQueryClient } from './QueryClientProvider'
25
23
  import type { CreateBaseQueryOptions } from './types'
26
24
  import { shouldThrowError } from './utils'
27
25
 
26
+ function reconcileFn<TData, TError>(
27
+ store: QueryObserverResult<TData, TError>,
28
+ result: QueryObserverResult<TData, TError>,
29
+ reconcileOption:
30
+ | string
31
+ | false
32
+ | ((oldData: TData | undefined, newData: TData) => TData),
33
+ ): QueryObserverResult<TData, TError> {
34
+ if (reconcileOption === false) return result
35
+ if (typeof reconcileOption === 'function') {
36
+ const newData = reconcileOption(store.data, result.data as TData)
37
+ return { ...result, data: newData } as typeof result
38
+ }
39
+ const newData = reconcile(result.data, { key: reconcileOption })(store.data)
40
+ return { ...result, data: newData } as typeof result
41
+ }
42
+
28
43
  // Base Query Function that is used to create the query.
29
44
  export function createBaseQuery<
30
45
  TQueryFnData,
@@ -43,9 +58,10 @@ export function createBaseQuery<
43
58
 
44
59
  const defaultedOptions = client().defaultQueryOptions(options())
45
60
  defaultedOptions._optimisticResults = 'optimistic'
61
+ defaultedOptions.structuralSharing = false
46
62
  if (isServer) {
47
63
  defaultedOptions.retry = false
48
- defaultedOptions.throwErrors = true
64
+ defaultedOptions.throwOnError = true
49
65
  }
50
66
  const observer = new Observer(client(), defaultedOptions)
51
67
 
@@ -64,7 +80,22 @@ export function createBaseQuery<
64
80
  ) => {
65
81
  return observer.subscribe((result) => {
66
82
  notifyManager.batchCalls(() => {
67
- const unwrappedResult = { ...unwrap(result) }
83
+ const query = observer.getCurrentQuery()
84
+ const { refetch, ...rest } = unwrap(result)
85
+ const unwrappedResult = {
86
+ ...rest,
87
+
88
+ // hydrate() expects a QueryState object, which is similar but not
89
+ // quite the same as a QueryObserverResult object. Thus, for now, we're
90
+ // copying over the missing properties from state in order to support hydration
91
+ dataUpdateCount: query.state.dataUpdateCount,
92
+ fetchFailureCount: query.state.fetchFailureCount,
93
+ // Removing these properties since they might not be serializable
94
+ // fetchFailureReason: query.state.fetchFailureReason,
95
+ // fetchMeta: query.state.fetchMeta,
96
+ isInvalidated: query.state.isInvalidated,
97
+ }
98
+
68
99
  if (unwrappedResult.isError) {
69
100
  if (process.env['NODE_ENV'] === 'development') {
70
101
  console.error(unwrappedResult.error)
@@ -72,7 +103,9 @@ export function createBaseQuery<
72
103
  reject(unwrappedResult.error)
73
104
  }
74
105
  if (unwrappedResult.isSuccess) {
75
- resolve(unwrappedResult)
106
+ // Use of any here is fine
107
+ // We cannot include refetch since it is not serializable
108
+ resolve(unwrappedResult as any)
76
109
  }
77
110
  })()
78
111
  })
@@ -81,18 +114,28 @@ export function createBaseQuery<
81
114
  const createClientSubscriber = () => {
82
115
  return observer.subscribe((result) => {
83
116
  notifyManager.batchCalls(() => {
84
- const unwrappedResult = { ...unwrap(result) }
117
+ // @ts-expect-error - This will error because the reconcile option does not
118
+ // exist on the query-core QueryObserverResult type
119
+ const reconcileOptions = observer.options.reconcile
85
120
  // If the query has data we dont suspend but instead mutate the resource
86
121
  // This could happen when placeholderData/initialData is defined
87
- if (
88
- queryResource()?.data &&
89
- unwrappedResult.data &&
90
- !queryResource.loading
91
- ) {
92
- setState(unwrappedResult)
122
+ if (queryResource()?.data && result.data && !queryResource.loading) {
123
+ setState((store) => {
124
+ return reconcileFn(
125
+ store,
126
+ result,
127
+ reconcileOptions === undefined ? 'id' : reconcileOptions,
128
+ )
129
+ })
93
130
  mutate(state)
94
131
  } else {
95
- setState(unwrappedResult)
132
+ setState((store) => {
133
+ return reconcileFn(
134
+ store,
135
+ result,
136
+ reconcileOptions === undefined ? 'id' : reconcileOptions,
137
+ )
138
+ })
96
139
  refetch()
97
140
  }
98
141
  })()
@@ -178,13 +221,17 @@ export function createBaseQuery<
178
221
  }
179
222
  })
180
223
 
181
- onMount(() => {
182
- observer.setOptions(defaultedOptions, { listeners: false })
183
- })
184
-
185
- createComputed(() => {
186
- observer.setOptions(client().defaultQueryOptions(options()))
187
- })
224
+ createComputed(
225
+ on(
226
+ () => client().defaultQueryOptions(options()),
227
+ () => observer.setOptions(client().defaultQueryOptions(options())),
228
+ {
229
+ // Defer because we don't need to trigger on first render
230
+ // This only cares about changes to options after the observer is created
231
+ defer: true,
232
+ },
233
+ ),
234
+ )
188
235
 
189
236
  createComputed(
190
237
  on(
@@ -193,7 +240,7 @@ export function createBaseQuery<
193
240
  if (
194
241
  state.isError &&
195
242
  !state.isFetching &&
196
- shouldThrowError(observer.options.throwErrors, [
243
+ shouldThrowError(observer.options.throwOnError, [
197
244
  state.error,
198
245
  observer.getCurrentQuery(),
199
246
  ])
@@ -209,10 +256,8 @@ export function createBaseQuery<
209
256
  target: QueryObserverResult<TData, TError>,
210
257
  prop: keyof QueryObserverResult<TData, TError>,
211
258
  ): any {
212
- if (prop === 'data') {
213
- return queryResource()?.data
214
- }
215
- return Reflect.get(target, prop)
259
+ const val = queryResource()?.[prop]
260
+ return val !== undefined ? val : Reflect.get(target, prop)
216
261
  },
217
262
  }
218
263
 
@@ -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,
@@ -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 {
@@ -53,7 +54,7 @@ export function createMutation<
53
54
  () => {
54
55
  if (
55
56
  state.isError &&
56
- shouldThrowError(observer.options.throwErrors, [state.error])
57
+ shouldThrowError(observer.options.throwOnError, [state.error])
57
58
  ) {
58
59
  throw state.error
59
60
  }
@@ -1,13 +1,14 @@
1
1
  import type {
2
2
  QueriesPlaceholderDataFunction,
3
- QueryClient,
4
3
  QueryFunction,
5
4
  QueryKey,
6
5
  DefaultError,
6
+ QueriesObserverOptions,
7
7
  } from '@tanstack/query-core'
8
8
  import { notifyManager, QueriesObserver } from '@tanstack/query-core'
9
+ import type { QueryClient } from './QueryClient'
9
10
  import type { Accessor } from 'solid-js'
10
- import { createComputed, onCleanup, onMount } from 'solid-js'
11
+ import { createComputed, onCleanup } from 'solid-js'
11
12
  import { createStore, unwrap } from 'solid-js/store'
12
13
  import { useQueryClient } from './QueryClientProvider'
13
14
  import type { CreateQueryResult, SolidQueryOptions } from './types'
@@ -148,12 +149,16 @@ export type QueriesResults<
148
149
  : // Fallback
149
150
  CreateQueryResult[]
150
151
 
151
- export function createQueries<T extends any[]>(
152
+ export function createQueries<
153
+ T extends any[],
154
+ TCombinedResult = QueriesResults<T>,
155
+ >(
152
156
  queriesOptions: Accessor<{
153
157
  queries: readonly [...QueriesOptions<T>]
158
+ combine?: (result: QueriesResults<T>) => TCombinedResult
154
159
  }>,
155
160
  queryClient?: Accessor<QueryClient>,
156
- ): QueriesResults<T> {
161
+ ): TCombinedResult {
157
162
  const client = useQueryClient(queryClient?.())
158
163
 
159
164
  const defaultedQueries = queriesOptions().queries.map((options) => {
@@ -162,32 +167,45 @@ export function createQueries<T extends any[]>(
162
167
  return defaultedOptions
163
168
  })
164
169
 
165
- const observer = new QueriesObserver(client, defaultedQueries)
170
+ const observer = new QueriesObserver(
171
+ client,
172
+ defaultedQueries,
173
+ queriesOptions().combine
174
+ ? ({
175
+ combine: queriesOptions().combine,
176
+ } as QueriesObserverOptions<TCombinedResult>)
177
+ : undefined,
178
+ )
166
179
 
167
- const [state, setState] = createStore(
168
- observer.getOptimisticResult(defaultedQueries),
180
+ // @ts-expect-error - Types issue with solid-js createStore
181
+ const [state, setState] = createStore<TCombinedResult>(
182
+ observer.getOptimisticResult(defaultedQueries)[1](),
169
183
  )
170
184
 
171
185
  const unsubscribe = observer.subscribe((result) => {
172
186
  notifyManager.batchCalls(() => {
173
- setState(unwrap(result))
187
+ setState(unwrap(result) as unknown as TCombinedResult)
174
188
  })()
175
189
  })
176
190
 
177
191
  onCleanup(unsubscribe)
178
192
 
179
- onMount(() => {
180
- observer.setQueries(defaultedQueries, { listeners: false })
181
- })
182
-
183
193
  createComputed(() => {
184
194
  const updatedQueries = queriesOptions().queries.map((options) => {
185
195
  const defaultedOptions = client.defaultQueryOptions(options)
186
196
  defaultedOptions._optimisticResults = 'optimistic'
187
197
  return defaultedOptions
188
198
  })
189
- observer.setQueries(updatedQueries)
199
+ observer.setQueries(
200
+ updatedQueries,
201
+ queriesOptions().combine
202
+ ? ({
203
+ combine: queriesOptions().combine,
204
+ } as QueriesObserverOptions<TCombinedResult>)
205
+ : undefined,
206
+ { listeners: false },
207
+ )
190
208
  })
191
209
 
192
- return state as QueriesResults<T>
210
+ return state
193
211
  }
@@ -1,5 +1,6 @@
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'
3
4
  import type { Accessor } from 'solid-js'
4
5
  import { createMemo } from 'solid-js'
5
6
  import { createBaseQuery } from './createBaseQuery'
@@ -33,6 +34,28 @@ type DefinedInitialDataOptions<
33
34
  }
34
35
  >
35
36
 
37
+ export function queryOptions<
38
+ TQueryFnData = unknown,
39
+ TError = unknown,
40
+ TData = TQueryFnData,
41
+ TQueryKey extends QueryKey = QueryKey,
42
+ >(
43
+ options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
44
+ ): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>
45
+
46
+ export function queryOptions<
47
+ TQueryFnData = unknown,
48
+ TError = unknown,
49
+ TData = TQueryFnData,
50
+ TQueryKey extends QueryKey = QueryKey,
51
+ >(
52
+ options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
53
+ ): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>
54
+
55
+ export function queryOptions(options: unknown) {
56
+ return options
57
+ }
58
+
36
59
  export function createQuery<
37
60
  TQueryFnData = unknown,
38
61
  TError = DefaultError,
package/src/index.ts CHANGED
@@ -8,7 +8,14 @@ export * from '@tanstack/query-core'
8
8
 
9
9
  // Solid Query
10
10
  export * from './types'
11
- export { createQuery } from './createQuery'
11
+ export { QueryClient } from './QueryClient'
12
+ export type {
13
+ QueryObserverOptions,
14
+ DefaultOptions,
15
+ QueryClientConfig,
16
+ InfiniteQueryObserverOptions,
17
+ } from './QueryClient'
18
+ export { createQuery, queryOptions } from './createQuery'
12
19
  export {
13
20
  QueryClientContext,
14
21
  QueryClientProvider,
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,4 +1,5 @@
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'
@@ -1,4 +1,5 @@
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'
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/setBatchUpdatesFn.ts","../../src/QueryClientProvider.tsx","../../src/utils.ts","../../src/createBaseQuery.ts","../../src/createQuery.ts","../../src/useIsFetching.ts","../../src/createInfiniteQuery.ts","../../src/createMutation.ts","../../src/useIsMutating.ts","../../src/createQueries.ts"],"sourcesContent":["import { notifyManager } from '@tanstack/query-core'\nimport { batch } from 'solid-js'\n\nnotifyManager.setBatchNotifyFunction(batch)\n","import type { QueryClient } from '@tanstack/query-core'\nimport type { JSX } from 'solid-js'\nimport { createContext, useContext, onMount, onCleanup } from 'solid-js'\n\nexport const QueryClientContext = createContext<QueryClient | undefined>(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: JSX.Element\n}\n\nexport const QueryClientProvider = (\n props: QueryClientProviderProps,\n): JSX.Element => {\n onMount(() => {\n props.client.mount()\n })\n onCleanup(() => props.client.unmount())\n\n return (\n <QueryClientContext.Provider value={props.client}>\n {props.children}\n </QueryClientContext.Provider>\n )\n}\n","export function shouldThrowError<T extends (...args: any[]) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n// Had to disable the lint rule because isServer type is defined as false\n// in solid-js/web package. I'll create a GitHub issue with them to see\n// why that happens.\nimport type {\n QueryClient,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { hydrate } from '@tanstack/query-core'\nimport { notifyManager } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport {\n createComputed,\n createMemo,\n createResource,\n on,\n onCleanup,\n onMount,\n} from 'solid-js'\nimport { createStore, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateBaseQueryOptions } from './types'\nimport { shouldThrowError } from './utils'\n\n// Base Query Function that is used to create the query.\nexport function createBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: Accessor<\n CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >,\n Observer: typeof QueryObserver,\n queryClient?: Accessor<QueryClient>,\n) {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n\n const defaultedOptions = client().defaultQueryOptions(options())\n defaultedOptions._optimisticResults = 'optimistic'\n if (isServer) {\n defaultedOptions.retry = false\n defaultedOptions.throwErrors = true\n }\n const observer = new Observer(client(), defaultedOptions)\n\n const [state, setState] = createStore<QueryObserverResult<TData, TError>>(\n observer.getOptimisticResult(defaultedOptions),\n )\n\n const createServerSubscriber = (\n resolve: (\n data:\n | QueryObserverResult<TData, TError>\n | PromiseLike<QueryObserverResult<TData, TError> | undefined>\n | undefined,\n ) => void,\n reject: (reason?: any) => void,\n ) => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n const unwrappedResult = { ...unwrap(result) }\n if (unwrappedResult.isError) {\n if (process.env['NODE_ENV'] === 'development') {\n console.error(unwrappedResult.error)\n }\n reject(unwrappedResult.error)\n }\n if (unwrappedResult.isSuccess) {\n resolve(unwrappedResult)\n }\n })()\n })\n }\n\n const createClientSubscriber = () => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n const unwrappedResult = { ...unwrap(result) }\n // If the query has data we dont suspend but instead mutate the resource\n // This could happen when placeholderData/initialData is defined\n if (\n queryResource()?.data &&\n unwrappedResult.data &&\n !queryResource.loading\n ) {\n setState(unwrappedResult)\n mutate(state)\n } else {\n setState(unwrappedResult)\n refetch()\n }\n })()\n })\n }\n\n /**\n * Unsubscribe is set lazily, so that we can subscribe after hydration when needed.\n */\n let unsubscribe: (() => void) | null = null\n\n const [queryResource, { refetch, mutate }] = createResource<\n QueryObserverResult<TData, TError> | undefined\n >(\n () => {\n return new Promise((resolve, reject) => {\n if (isServer) {\n unsubscribe = createServerSubscriber(resolve, reject)\n } else {\n if (!unsubscribe) {\n unsubscribe = createClientSubscriber()\n }\n }\n if (!state.isLoading) {\n resolve(state)\n }\n })\n },\n {\n initialValue: state,\n\n // If initialData is provided, we resolve the resource immediately\n ssrLoadFrom: options().initialData ? 'initial' : 'server',\n\n get deferStream() {\n return options().deferStream\n },\n\n /**\n * If this resource was populated on the server (either sync render, or streamed in over time), onHydrated\n * will be called. This is the point at which we can hydrate the query cache state, and setup the query subscriber.\n *\n * Leveraging onHydrated allows us to plug into the async and streaming support that solidjs resources already support.\n *\n * Note that this is only invoked on the client, for queries that were originally run on the server.\n */\n onHydrated(_k, info) {\n if (info.value) {\n hydrate(client(), {\n queries: [\n {\n queryKey: defaultedOptions.queryKey,\n queryHash: defaultedOptions.queryHash,\n state: info.value,\n },\n ],\n })\n }\n\n if (!unsubscribe) {\n /**\n * Do not refetch query on mount if query was fetched on server,\n * even if `staleTime` is not set.\n */\n const newOptions = { ...defaultedOptions }\n if (defaultedOptions.staleTime || !defaultedOptions.initialData) {\n newOptions.refetchOnMount = false\n }\n // Setting the options as an immutable object to prevent\n // wonky behavior with observer subscriptions\n observer.setOptions(newOptions)\n setState(observer.getOptimisticResult(newOptions))\n unsubscribe = createClientSubscriber()\n }\n },\n },\n )\n\n onCleanup(() => {\n if (unsubscribe) {\n unsubscribe()\n unsubscribe = null\n }\n })\n\n onMount(() => {\n observer.setOptions(defaultedOptions, { listeners: false })\n })\n\n createComputed(() => {\n observer.setOptions(client().defaultQueryOptions(options()))\n })\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n !state.isFetching &&\n shouldThrowError(observer.options.throwErrors, [\n state.error,\n observer.getCurrentQuery(),\n ])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const handler = {\n get(\n target: QueryObserverResult<TData, TError>,\n prop: keyof QueryObserverResult<TData, TError>,\n ): any {\n if (prop === 'data') {\n return queryResource()?.data\n }\n return Reflect.get(target, prop)\n },\n }\n\n return new Proxy(state, handler)\n}\n","import type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createMemo } from 'solid-js'\nimport { createBaseQuery } from './createBaseQuery'\nimport type {\n CreateQueryOptions,\n CreateQueryResult,\n DefinedCreateQueryResult,\n FunctionedParams,\n SolidQueryOptions,\n} from './types'\n\ntype UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined\n }\n>\n\ntype DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData: TQueryFnData | (() => TQueryFnData)\n }\n>\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): CreateQueryResult<TData, TError>\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): DefinedCreateQueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: Accessor<QueryClient>,\n) {\n return createBaseQuery(\n createMemo(() => options()),\n QueryObserver,\n queryClient,\n )\n}\n","import type { QueryClient, QueryFilters } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createMemo, createSignal, onCleanup } from 'solid-js'\nimport { useQueryClient } from './QueryClientProvider'\n\nexport function useIsFetching(\n filters?: Accessor<QueryFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const queryCache = createMemo(() => client().getQueryCache())\n\n const [fetches, setFetches] = createSignal(client().isFetching(filters?.()))\n\n const unsubscribe = queryCache().subscribe(() => {\n setFetches(client().isFetching(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return fetches\n}\n","import type {\n QueryObserver,\n QueryKey,\n QueryClient,\n DefaultError,\n InfiniteData,\n} from '@tanstack/query-core'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n CreateInfiniteQueryOptions,\n CreateInfiniteQueryResult,\n} from './types'\nimport { createBaseQuery } from './createBaseQuery'\nimport { createMemo } from 'solid-js'\nimport type { Accessor } from 'solid-js'\n\nexport function createInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: Accessor<QueryClient>,\n): CreateInfiniteQueryResult<TData, TError> {\n return createBaseQuery(\n createMemo(() => options()),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as CreateInfiniteQueryResult<TData, TError>\n}\n","import type { QueryClient, DefaultError } from '@tanstack/query-core'\nimport { MutationObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type {\n CreateMutateFunction,\n CreateMutationOptions,\n CreateMutationResult,\n} from './types'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup, on } from 'solid-js'\nimport { createStore } from 'solid-js/store'\nimport { shouldThrowError } from './utils'\n\n// HOOK\nexport function createMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: CreateMutationOptions<TData, TError, TVariables, TContext>,\n queryClient?: Accessor<QueryClient>,\n): CreateMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient(queryClient?.())\n\n const observer = new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options(),\n )\n\n const mutate: CreateMutateFunction<TData, TError, TVariables, TContext> = (\n variables,\n mutateOptions,\n ) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n }\n\n const [state, setState] = createStore<\n CreateMutationResult<TData, TError, TVariables, TContext>\n >({\n ...observer.getCurrentResult(),\n mutate,\n mutateAsync: observer.getCurrentResult().mutate,\n })\n\n createComputed(() => {\n observer.setOptions(options())\n })\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n shouldThrowError(observer.options.throwErrors, [state.error])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n setState({\n ...result,\n mutate,\n mutateAsync: result.mutate,\n })\n })\n\n onCleanup(unsubscribe)\n\n return state\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n","import type { MutationFilters, QueryClient } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { Accessor } from 'solid-js'\nimport { createSignal, onCleanup, createMemo } from 'solid-js'\n\nexport function useIsMutating(\n filters?: Accessor<MutationFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const mutationCache = createMemo(() => client().getMutationCache())\n\n const [mutations, setMutations] = createSignal(\n client().isMutating(filters?.()),\n )\n\n const unsubscribe = mutationCache().subscribe((_result) => {\n setMutations(client().isMutating(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return mutations\n}\n","import type {\n QueriesPlaceholderDataFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n DefaultError,\n} from '@tanstack/query-core'\nimport { notifyManager, QueriesObserver } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup, onMount } from 'solid-js'\nimport { createStore, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateQueryResult, SolidQueryOptions } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype CreateQueryOptionsForCreateQueries<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = Omit<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\ntype GetOptions<T> =\n // Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<unknown, TError, TData>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData>\n : // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>\n select: (data: any) => infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }\n ? CreateQueryOptionsForCreateQueries<\n TQueryFnData,\n Error,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n CreateQueryOptionsForCreateQueries\n\ntype GetResults<T> =\n // Part 1: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? CreateQueryResult<TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryResult<TData, TError>\n : // Part 2: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? CreateQueryResult<TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryResult<TQueryFnData>\n : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<unknown, any>\n select: (data: any) => infer TData\n }\n ? CreateQueryResult<TData>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, any> }\n ? CreateQueryResult<TQueryFnData>\n : // Fallback\n CreateQueryResult\n\n/**\n * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type QueriesOptions<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryOptionsForCreateQueries[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]>\n : unknown[] extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >[]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[]\n : // Fallback\n CreateQueryOptionsForCreateQueries[]\n\n/**\n * QueriesResults reducer recursively maps type param to results\n */\nexport type QueriesResults<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryResult[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>\n : T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >[]\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n CreateQueryResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >[]\n : // Fallback\n CreateQueryResult[]\n\nexport function createQueries<T extends any[]>(\n queriesOptions: Accessor<{\n queries: readonly [...QueriesOptions<T>]\n }>,\n queryClient?: Accessor<QueryClient>,\n): QueriesResults<T> {\n const client = useQueryClient(queryClient?.())\n\n const defaultedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n\n const observer = new QueriesObserver(client, defaultedQueries)\n\n const [state, setState] = createStore(\n observer.getOptimisticResult(defaultedQueries),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n setState(unwrap(result))\n })()\n })\n\n onCleanup(unsubscribe)\n\n onMount(() => {\n observer.setQueries(defaultedQueries, { listeners: false })\n })\n\n createComputed(() => {\n const updatedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n observer.setQueries(updatedQueries)\n })\n\n return state as QueriesResults<T>\n}\n"],"names":["notifyManager","setBatchNotifyFunction","batch","QueryClientContext","createContext","undefined","useQueryClient","queryClient","client","useContext","Error","QueryClientProvider","props","onMount","mount","onCleanup","unmount","_$createComponent","children","shouldThrowError","throwError","params","createBaseQuery","options","Observer","createMemo","defaultedOptions","defaultQueryOptions","_optimisticResults","isServer","retry","throwErrors","observer","state","setState","createStore","getOptimisticResult","createServerSubscriber","resolve","reject","subscribe","result","batchCalls","unwrappedResult","unwrap","isError","process","env","console","error","isSuccess","createClientSubscriber","queryResource","data","loading","mutate","refetch","unsubscribe","createResource","Promise","isLoading","initialValue","ssrLoadFrom","initialData","deferStream","onHydrated","_k","info","value","hydrate","queries","queryKey","queryHash","newOptions","staleTime","refetchOnMount","setOptions","listeners","createComputed","on","status","isFetching","getCurrentQuery","handler","get","target","prop","Reflect","Proxy","createQuery","QueryObserver","useIsFetching","filters","queryCache","getQueryCache","fetches","setFetches","createSignal","createInfiniteQuery","InfiniteQueryObserver","createMutation","MutationObserver","variables","mutateOptions","catch","noop","getCurrentResult","mutateAsync","useIsMutating","mutationCache","getMutationCache","mutations","setMutations","isMutating","_result","createQueries","queriesOptions","defaultedQueries","map","QueriesObserver","setQueries","updatedQueries"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/setBatchUpdatesFn.ts","../../src/QueryClientProvider.tsx","../../src/utils.ts","../../src/createBaseQuery.ts","../../src/createQuery.ts","../../src/useIsFetching.ts","../../src/createInfiniteQuery.ts","../../src/createMutation.ts","../../src/useIsMutating.ts","../../src/createQueries.ts"],"sourcesContent":["import { notifyManager } from '@tanstack/query-core'\nimport { batch } from 'solid-js'\n\nnotifyManager.setBatchNotifyFunction(batch)\n","import type { QueryClient } from '@tanstack/query-core'\nimport type { JSX } from 'solid-js'\nimport { createContext, useContext, onMount, onCleanup } from 'solid-js'\n\nexport const QueryClientContext = createContext<QueryClient | undefined>(\n undefined,\n)\n\nexport const useQueryClient = (queryClient?: QueryClient) => {\n const client = useContext(QueryClientContext)\n\n if (queryClient) {\n return queryClient\n }\n\n if (!client) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one')\n }\n\n return client\n}\n\nexport type QueryClientProviderProps = {\n client: QueryClient\n children?: JSX.Element\n}\n\nexport const QueryClientProvider = (\n props: QueryClientProviderProps,\n): JSX.Element => {\n onMount(() => {\n props.client.mount()\n })\n onCleanup(() => props.client.unmount())\n\n return (\n <QueryClientContext.Provider value={props.client}>\n {props.children}\n </QueryClientContext.Provider>\n )\n}\n","export function shouldThrowError<T extends (...args: any[]) => boolean>(\n throwError: boolean | T | undefined,\n params: Parameters<T>,\n): boolean {\n // Allow throwError function to override throwing behavior on a per-error basis\n if (typeof throwError === 'function') {\n return throwError(...params)\n }\n\n return !!throwError\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n// Had to disable the lint rule because isServer type is defined as false\n// in solid-js/web package. I'll create a GitHub issue with them to see\n// why that happens.\nimport type {\n QueryClient,\n QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport { hydrate } from '@tanstack/query-core'\nimport { notifyManager } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { isServer } from 'solid-js/web'\nimport {\n createComputed,\n createMemo,\n createResource,\n on,\n onCleanup,\n onMount,\n} from 'solid-js'\nimport { createStore, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateBaseQueryOptions } from './types'\nimport { shouldThrowError } from './utils'\n\n// Base Query Function that is used to create the query.\nexport function createBaseQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n options: Accessor<\n CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >,\n Observer: typeof QueryObserver,\n queryClient?: Accessor<QueryClient>,\n) {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n\n const defaultedOptions = client().defaultQueryOptions(options())\n defaultedOptions._optimisticResults = 'optimistic'\n if (isServer) {\n defaultedOptions.retry = false\n defaultedOptions.throwErrors = true\n }\n const observer = new Observer(client(), defaultedOptions)\n\n const [state, setState] = createStore<QueryObserverResult<TData, TError>>(\n observer.getOptimisticResult(defaultedOptions),\n )\n\n const createServerSubscriber = (\n resolve: (\n data:\n | QueryObserverResult<TData, TError>\n | PromiseLike<QueryObserverResult<TData, TError> | undefined>\n | undefined,\n ) => void,\n reject: (reason?: any) => void,\n ) => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n const unwrappedResult = { ...unwrap(result) }\n if (unwrappedResult.isError) {\n if (process.env['NODE_ENV'] === 'development') {\n console.error(unwrappedResult.error)\n }\n reject(unwrappedResult.error)\n }\n if (unwrappedResult.isSuccess) {\n resolve(unwrappedResult)\n }\n })()\n })\n }\n\n const createClientSubscriber = () => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n const unwrappedResult = { ...unwrap(result) }\n // If the query has data we dont suspend but instead mutate the resource\n // This could happen when placeholderData/initialData is defined\n if (\n queryResource()?.data &&\n unwrappedResult.data &&\n !queryResource.loading\n ) {\n setState(unwrappedResult)\n mutate(state)\n } else {\n setState(unwrappedResult)\n refetch()\n }\n })()\n })\n }\n\n /**\n * Unsubscribe is set lazily, so that we can subscribe after hydration when needed.\n */\n let unsubscribe: (() => void) | null = null\n\n const [queryResource, { refetch, mutate }] = createResource<\n QueryObserverResult<TData, TError> | undefined\n >(\n () => {\n return new Promise((resolve, reject) => {\n if (isServer) {\n unsubscribe = createServerSubscriber(resolve, reject)\n } else {\n if (!unsubscribe) {\n unsubscribe = createClientSubscriber()\n }\n }\n if (!state.isLoading) {\n resolve(state)\n }\n })\n },\n {\n initialValue: state,\n\n // If initialData is provided, we resolve the resource immediately\n ssrLoadFrom: options().initialData ? 'initial' : 'server',\n\n get deferStream() {\n return options().deferStream\n },\n\n /**\n * If this resource was populated on the server (either sync render, or streamed in over time), onHydrated\n * will be called. This is the point at which we can hydrate the query cache state, and setup the query subscriber.\n *\n * Leveraging onHydrated allows us to plug into the async and streaming support that solidjs resources already support.\n *\n * Note that this is only invoked on the client, for queries that were originally run on the server.\n */\n onHydrated(_k, info) {\n if (info.value) {\n hydrate(client(), {\n queries: [\n {\n queryKey: defaultedOptions.queryKey,\n queryHash: defaultedOptions.queryHash,\n state: info.value,\n },\n ],\n })\n }\n\n if (!unsubscribe) {\n /**\n * Do not refetch query on mount if query was fetched on server,\n * even if `staleTime` is not set.\n */\n const newOptions = { ...defaultedOptions }\n if (defaultedOptions.staleTime || !defaultedOptions.initialData) {\n newOptions.refetchOnMount = false\n }\n // Setting the options as an immutable object to prevent\n // wonky behavior with observer subscriptions\n observer.setOptions(newOptions)\n setState(observer.getOptimisticResult(newOptions))\n unsubscribe = createClientSubscriber()\n }\n },\n },\n )\n\n onCleanup(() => {\n if (unsubscribe) {\n unsubscribe()\n unsubscribe = null\n }\n })\n\n onMount(() => {\n observer.setOptions(defaultedOptions, { listeners: false })\n })\n\n createComputed(() => {\n observer.setOptions(client().defaultQueryOptions(options()))\n })\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n !state.isFetching &&\n shouldThrowError(observer.options.throwErrors, [\n state.error,\n observer.getCurrentQuery(),\n ])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const handler = {\n get(\n target: QueryObserverResult<TData, TError>,\n prop: keyof QueryObserverResult<TData, TError>,\n ): any {\n if (prop === 'data') {\n return queryResource()?.data\n }\n return Reflect.get(target, prop)\n },\n }\n\n return new Proxy(state, handler)\n}\n","import type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createMemo } from 'solid-js'\nimport { createBaseQuery } from './createBaseQuery'\nimport type {\n CreateQueryOptions,\n CreateQueryResult,\n DefinedCreateQueryResult,\n FunctionedParams,\n SolidQueryOptions,\n} from './types'\n\ntype UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined\n }\n>\n\ntype DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = FunctionedParams<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData: TQueryFnData | (() => TQueryFnData)\n }\n>\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): CreateQueryResult<TData, TError>\n\nexport function createQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: () => QueryClient,\n): DefinedCreateQueryResult<TData, TError>\nexport function createQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: Accessor<QueryClient>,\n) {\n return createBaseQuery(\n createMemo(() => options()),\n QueryObserver,\n queryClient,\n )\n}\n","import type { QueryClient, QueryFilters } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createMemo, createSignal, onCleanup } from 'solid-js'\nimport { useQueryClient } from './QueryClientProvider'\n\nexport function useIsFetching(\n filters?: Accessor<QueryFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const queryCache = createMemo(() => client().getQueryCache())\n\n const [fetches, setFetches] = createSignal(client().isFetching(filters?.()))\n\n const unsubscribe = queryCache().subscribe(() => {\n setFetches(client().isFetching(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return fetches\n}\n","import type {\n QueryObserver,\n QueryKey,\n QueryClient,\n DefaultError,\n InfiniteData,\n} from '@tanstack/query-core'\nimport { InfiniteQueryObserver } from '@tanstack/query-core'\nimport type {\n CreateInfiniteQueryOptions,\n CreateInfiniteQueryResult,\n} from './types'\nimport { createBaseQuery } from './createBaseQuery'\nimport { createMemo } from 'solid-js'\nimport type { Accessor } from 'solid-js'\n\nexport function createInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n options: CreateInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n queryClient?: Accessor<QueryClient>,\n): CreateInfiniteQueryResult<TData, TError> {\n return createBaseQuery(\n createMemo(() => options()),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n InfiniteQueryObserver as typeof QueryObserver,\n queryClient,\n ) as CreateInfiniteQueryResult<TData, TError>\n}\n","import type { QueryClient, DefaultError } from '@tanstack/query-core'\nimport { MutationObserver } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type {\n CreateMutateFunction,\n CreateMutationOptions,\n CreateMutationResult,\n} from './types'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup, on } from 'solid-js'\nimport { createStore } from 'solid-js/store'\nimport { shouldThrowError } from './utils'\n\n// HOOK\nexport function createMutation<\n TData = unknown,\n TError = DefaultError,\n TVariables = void,\n TContext = unknown,\n>(\n options: CreateMutationOptions<TData, TError, TVariables, TContext>,\n queryClient?: Accessor<QueryClient>,\n): CreateMutationResult<TData, TError, TVariables, TContext> {\n const client = useQueryClient(queryClient?.())\n\n const observer = new MutationObserver<TData, TError, TVariables, TContext>(\n client,\n options(),\n )\n\n const mutate: CreateMutateFunction<TData, TError, TVariables, TContext> = (\n variables,\n mutateOptions,\n ) => {\n observer.mutate(variables, mutateOptions).catch(noop)\n }\n\n const [state, setState] = createStore<\n CreateMutationResult<TData, TError, TVariables, TContext>\n >({\n ...observer.getCurrentResult(),\n mutate,\n mutateAsync: observer.getCurrentResult().mutate,\n })\n\n createComputed(() => {\n observer.setOptions(options())\n })\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n shouldThrowError(observer.options.throwErrors, [state.error])\n ) {\n throw state.error\n }\n },\n ),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n setState({\n ...result,\n mutate,\n mutateAsync: result.mutate,\n })\n })\n\n onCleanup(unsubscribe)\n\n return state\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n","import type { MutationFilters, QueryClient } from '@tanstack/query-core'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { Accessor } from 'solid-js'\nimport { createSignal, onCleanup, createMemo } from 'solid-js'\n\nexport function useIsMutating(\n filters?: Accessor<MutationFilters>,\n queryClient?: Accessor<QueryClient>,\n): Accessor<number> {\n const client = createMemo(() => useQueryClient(queryClient?.()))\n const mutationCache = createMemo(() => client().getMutationCache())\n\n const [mutations, setMutations] = createSignal(\n client().isMutating(filters?.()),\n )\n\n const unsubscribe = mutationCache().subscribe((_result) => {\n setMutations(client().isMutating(filters?.()))\n })\n\n onCleanup(unsubscribe)\n\n return mutations\n}\n","import type {\n QueriesPlaceholderDataFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n DefaultError,\n} from '@tanstack/query-core'\nimport { notifyManager, QueriesObserver } from '@tanstack/query-core'\nimport type { Accessor } from 'solid-js'\nimport { createComputed, onCleanup, onMount } from 'solid-js'\nimport { createStore, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateQueryResult, SolidQueryOptions } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype CreateQueryOptionsForCreateQueries<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = Omit<\n SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\ntype GetOptions<T> =\n // Part 1: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryOptionsForCreateQueries<unknown, TError, TData>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData>\n : // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>\n select: (data: any) => infer TData\n }\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }\n ? CreateQueryOptionsForCreateQueries<\n TQueryFnData,\n Error,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n CreateQueryOptionsForCreateQueries\n\ntype GetResults<T> =\n // Part 1: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? CreateQueryResult<TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? CreateQueryResult<TData, TError>\n : // Part 2: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? CreateQueryResult<TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? CreateQueryResult<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? CreateQueryResult<TQueryFnData>\n : // Part 3: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?: QueryFunction<unknown, any>\n select: (data: any) => infer TData\n }\n ? CreateQueryResult<TData>\n : T extends { queryFn?: QueryFunction<infer TQueryFnData, any> }\n ? CreateQueryResult<TQueryFnData>\n : // Fallback\n CreateQueryResult\n\n/**\n * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type QueriesOptions<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryOptionsForCreateQueries[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]>\n : unknown[] extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >[]\n ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[]\n : // Fallback\n CreateQueryOptionsForCreateQueries[]\n\n/**\n * QueriesResults reducer recursively maps type param to results\n */\nexport type QueriesResults<\n T extends any[],\n Result extends any[] = [],\n Depth extends ReadonlyArray<number> = [],\n> = Depth['length'] extends MAXIMUM_DEPTH\n ? CreateQueryResult[]\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...Result, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>\n : T extends CreateQueryOptionsForCreateQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >[]\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n CreateQueryResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >[]\n : // Fallback\n CreateQueryResult[]\n\nexport function createQueries<T extends any[]>(\n queriesOptions: Accessor<{\n queries: readonly [...QueriesOptions<T>]\n }>,\n queryClient?: Accessor<QueryClient>,\n): QueriesResults<T> {\n const client = useQueryClient(queryClient?.())\n\n const defaultedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n\n const observer = new QueriesObserver(client, defaultedQueries)\n\n const [state, setState] = createStore(\n observer.getOptimisticResult(defaultedQueries),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n setState(unwrap(result))\n })()\n })\n\n onCleanup(unsubscribe)\n\n onMount(() => {\n observer.setQueries(defaultedQueries, { listeners: false })\n })\n\n createComputed(() => {\n const updatedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = client.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n observer.setQueries(updatedQueries)\n })\n\n return state as QueriesResults<T>\n}\n"],"names":["notifyManager","setBatchNotifyFunction","batch","QueryClientContext","createContext","undefined","useQueryClient","queryClient","client","useContext","Error","QueryClientProvider","props","onMount","mount","onCleanup","unmount","_$createComponent","children","shouldThrowError","throwError","params","createBaseQuery","options","Observer","createMemo","defaultedOptions","defaultQueryOptions","_optimisticResults","isServer","retry","throwErrors","observer","state","setState","createStore","getOptimisticResult","createServerSubscriber","resolve","reject","subscribe","result","batchCalls","unwrappedResult","unwrap","isError","process","env","console","error","isSuccess","createClientSubscriber","queryResource","data","loading","mutate","refetch","unsubscribe","createResource","Promise","isLoading","initialValue","ssrLoadFrom","initialData","deferStream","onHydrated","_k","info","value","hydrate","queries","queryKey","queryHash","newOptions","staleTime","refetchOnMount","setOptions","listeners","createComputed","on","status","isFetching","getCurrentQuery","handler","get","target","prop","Reflect","Proxy","createQuery","QueryObserver","useIsFetching","filters","queryCache","getQueryCache","fetches","setFetches","createSignal","createInfiniteQuery","InfiniteQueryObserver","createMutation","MutationObserver","variables","mutateOptions","catch","noop","getCurrentResult","mutateAsync","useIsMutating","mutationCache","getMutationCache","mutations","setMutations","isMutating","_result","createQueries","queriesOptions","defaultedQueries","map","QueriesObserver","setQueries","updatedQueries"],"mappings":"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"}