@tanstack/solid-query 5.0.0-alpha.3 → 5.0.0-alpha.32

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 (94) hide show
  1. package/build/cjs/index.js +81 -37
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/index.js +82 -40
  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 +23 -22
  9. package/build/source/__tests__/createQueries.test.jsx +4 -91
  10. package/build/source/__tests__/createQuery.test.jsx +68 -277
  11. package/build/source/__tests__/createQuery.types.test.jsx +19 -1
  12. package/build/source/__tests__/suspense.test.jsx +9 -70
  13. package/build/source/__tests__/useIsFetching.test.jsx +2 -4
  14. package/build/source/__tests__/useIsMutating.test.jsx +25 -28
  15. package/build/source/__tests__/utils.jsx +4 -3
  16. package/build/source/createBaseQuery.js +48 -21
  17. package/build/source/createMutation.js +1 -1
  18. package/build/source/createQueries.js +5 -5
  19. package/build/source/createQuery.js +3 -0
  20. package/build/source/index.js +2 -1
  21. package/build/source/useIsFetching.js +5 -5
  22. package/build/source/useIsMutating.js +5 -5
  23. package/build/types/QueryClient.d.ts +30 -0
  24. package/build/types/QueryClient.d.ts.map +1 -0
  25. package/build/types/QueryClientProvider.d.ts +2 -1
  26. package/build/types/QueryClientProvider.d.ts.map +1 -0
  27. package/build/types/__tests__/QueryClientProvider.test.d.ts +1 -0
  28. package/build/types/__tests__/QueryClientProvider.test.d.ts.map +1 -0
  29. package/build/types/__tests__/createInfiniteQuery.test.d.ts +1 -0
  30. package/build/types/__tests__/createInfiniteQuery.test.d.ts.map +1 -0
  31. package/build/types/__tests__/createMutation.test.d.ts +1 -0
  32. package/build/types/__tests__/createMutation.test.d.ts.map +1 -0
  33. package/build/types/__tests__/createQueries.test.d.ts +1 -0
  34. package/build/types/__tests__/createQueries.test.d.ts.map +1 -0
  35. package/build/types/__tests__/createQuery.test.d.ts +1 -0
  36. package/build/types/__tests__/createQuery.test.d.ts.map +1 -0
  37. package/build/types/__tests__/createQuery.types.test.d.ts +1 -0
  38. package/build/types/__tests__/createQuery.types.test.d.ts.map +1 -0
  39. package/build/types/__tests__/suspense.test.d.ts +1 -0
  40. package/build/types/__tests__/suspense.test.d.ts.map +1 -0
  41. package/build/types/__tests__/transition.test.d.ts +1 -0
  42. package/build/types/__tests__/transition.test.d.ts.map +1 -0
  43. package/build/types/__tests__/useIsFetching.test.d.ts +1 -0
  44. package/build/types/__tests__/useIsFetching.test.d.ts.map +1 -0
  45. package/build/types/__tests__/useIsMutating.test.d.ts +1 -0
  46. package/build/types/__tests__/useIsMutating.test.d.ts.map +1 -0
  47. package/build/types/__tests__/utils.d.ts +4 -4
  48. package/build/types/__tests__/utils.d.ts.map +1 -0
  49. package/build/types/createBaseQuery.d.ts +4 -2
  50. package/build/types/createBaseQuery.d.ts.map +1 -0
  51. package/build/types/createInfiniteQuery.d.ts +5 -2
  52. package/build/types/createInfiniteQuery.d.ts.map +1 -0
  53. package/build/types/createMutation.d.ts +5 -2
  54. package/build/types/createMutation.d.ts.map +1 -0
  55. package/build/types/createQueries.d.ts +6 -4
  56. package/build/types/createQueries.d.ts.map +1 -0
  57. package/build/types/createQuery.d.ts +5 -1
  58. package/build/types/createQuery.d.ts.map +1 -0
  59. package/build/types/index.d.ts +4 -1
  60. package/build/types/index.d.ts.map +1 -0
  61. package/build/types/setBatchUpdatesFn.d.ts +1 -0
  62. package/build/types/setBatchUpdatesFn.d.ts.map +1 -0
  63. package/build/types/types.d.ts +3 -1
  64. package/build/types/types.d.ts.map +1 -0
  65. package/build/types/useIsFetching.d.ts +4 -7
  66. package/build/types/useIsFetching.d.ts.map +1 -0
  67. package/build/types/useIsMutating.d.ts +4 -7
  68. package/build/types/useIsMutating.d.ts.map +1 -0
  69. package/build/types/utils.d.ts +1 -0
  70. package/build/types/utils.d.ts.map +1 -0
  71. package/build/umd/index.js +1 -1
  72. package/build/umd/index.js.map +1 -1
  73. package/package.json +5 -5
  74. package/src/QueryClient.ts +84 -0
  75. package/src/QueryClientProvider.tsx +1 -1
  76. package/src/__tests__/QueryClientProvider.test.tsx +2 -1
  77. package/src/__tests__/createInfiniteQuery.test.tsx +95 -34
  78. package/src/__tests__/createMutation.test.tsx +23 -22
  79. package/src/__tests__/createQueries.test.tsx +4 -97
  80. package/src/__tests__/createQuery.test.tsx +84 -350
  81. package/src/__tests__/createQuery.types.test.tsx +21 -1
  82. package/src/__tests__/suspense.test.tsx +9 -91
  83. package/src/__tests__/useIsFetching.test.tsx +2 -4
  84. package/src/__tests__/useIsMutating.test.tsx +32 -40
  85. package/src/__tests__/utils.tsx +4 -3
  86. package/src/createBaseQuery.ts +73 -27
  87. package/src/createInfiniteQuery.ts +3 -2
  88. package/src/createMutation.ts +5 -3
  89. package/src/createQueries.ts +9 -8
  90. package/src/createQuery.ts +26 -2
  91. package/src/index.ts +8 -1
  92. package/src/types.ts +4 -2
  93. package/src/useIsFetching.ts +10 -13
  94. package/src/useIsMutating.ts +10 -11
@@ -7,6 +7,12 @@ var store = require('solid-js/store');
7
7
 
8
8
  queryCore.notifyManager.setBatchNotifyFunction(solidJs.batch);
9
9
 
10
+ class QueryClient extends queryCore.QueryClient {
11
+ constructor(config = {}) {
12
+ super(config);
13
+ }
14
+ }
15
+
10
16
  const QueryClientContext = solidJs.createContext(undefined);
11
17
  const useQueryClient = queryClient => {
12
18
  const client = solidJs.useContext(QueryClientContext);
@@ -42,23 +48,55 @@ function shouldThrowError(throwError, params) {
42
48
  }
43
49
 
44
50
  /* eslint-disable @typescript-eslint/no-unnecessary-condition */
51
+ function reconcileFn(store$1, result, reconcileOption) {
52
+ if (reconcileOption === false) return result;
53
+ if (typeof reconcileOption === 'function') {
54
+ const newData = reconcileOption(store$1.data, result.data);
55
+ return {
56
+ ...result,
57
+ data: newData
58
+ };
59
+ }
60
+ const newData = store.reconcile(result.data, {
61
+ key: reconcileOption
62
+ })(store$1.data);
63
+ return {
64
+ ...result,
65
+ data: newData
66
+ };
67
+ }
45
68
 
46
69
  // Base Query Function that is used to create the query.
47
70
  function createBaseQuery(options, Observer, queryClient) {
48
71
  const client = solidJs.createMemo(() => useQueryClient(queryClient?.()));
49
72
  const defaultedOptions = client().defaultQueryOptions(options());
50
73
  defaultedOptions._optimisticResults = 'optimistic';
74
+ defaultedOptions.structuralSharing = false;
51
75
  if (web.isServer) {
52
76
  defaultedOptions.retry = false;
53
- defaultedOptions.throwErrors = true;
77
+ defaultedOptions.throwOnError = true;
54
78
  }
55
79
  const observer = new Observer(client(), defaultedOptions);
56
80
  const [state, setState] = store.createStore(observer.getOptimisticResult(defaultedOptions));
57
81
  const createServerSubscriber = (resolve, reject) => {
58
82
  return observer.subscribe(result => {
59
83
  queryCore.notifyManager.batchCalls(() => {
84
+ const query = observer.getCurrentQuery();
85
+ const {
86
+ refetch,
87
+ ...rest
88
+ } = store.unwrap(result);
60
89
  const unwrappedResult = {
61
- ...store.unwrap(result)
90
+ ...rest,
91
+ // hydrate() expects a QueryState object, which is similar but not
92
+ // quite the same as a QueryObserverResult object. Thus, for now, we're
93
+ // copying over the missing properties from state in order to support hydration
94
+ dataUpdateCount: query.state.dataUpdateCount,
95
+ fetchFailureCount: query.state.fetchFailureCount,
96
+ // Removing these properties since they might not be serializable
97
+ // fetchFailureReason: query.state.fetchFailureReason,
98
+ // fetchMeta: query.state.fetchMeta,
99
+ isInvalidated: query.state.isInvalidated
62
100
  };
63
101
  if (unwrappedResult.isError) {
64
102
  if (process.env['NODE_ENV'] === 'development') {
@@ -67,6 +105,8 @@ function createBaseQuery(options, Observer, queryClient) {
67
105
  reject(unwrappedResult.error);
68
106
  }
69
107
  if (unwrappedResult.isSuccess) {
108
+ // Use of any here is fine
109
+ // We cannot include refetch since it is not serializable
70
110
  resolve(unwrappedResult);
71
111
  }
72
112
  })();
@@ -75,16 +115,20 @@ function createBaseQuery(options, Observer, queryClient) {
75
115
  const createClientSubscriber = () => {
76
116
  return observer.subscribe(result => {
77
117
  queryCore.notifyManager.batchCalls(() => {
78
- const unwrappedResult = {
79
- ...store.unwrap(result)
80
- };
118
+ // @ts-expect-error - This will error because the reconcile option does not
119
+ // exist on the query-core QueryObserverResult type
120
+ const reconcileOptions = observer.options.reconcile;
81
121
  // If the query has data we dont suspend but instead mutate the resource
82
122
  // This could happen when placeholderData/initialData is defined
83
- if (queryResource()?.data && unwrappedResult.data && !queryResource.loading) {
84
- setState(unwrappedResult);
123
+ if (queryResource()?.data && result.data && !queryResource.loading) {
124
+ setState(store => {
125
+ return reconcileFn(store, result, reconcileOptions === undefined ? 'id' : reconcileOptions);
126
+ });
85
127
  mutate(state);
86
128
  } else {
87
- setState(unwrappedResult);
129
+ setState(store => {
130
+ return reconcileFn(store, result, reconcileOptions === undefined ? 'id' : reconcileOptions);
131
+ });
88
132
  refetch();
89
133
  }
90
134
  })();
@@ -161,40 +205,38 @@ function createBaseQuery(options, Observer, queryClient) {
161
205
  unsubscribe = null;
162
206
  }
163
207
  });
164
- solidJs.onMount(() => {
165
- observer.setOptions(defaultedOptions, {
166
- listeners: false
167
- });
168
- });
169
- solidJs.createComputed(() => {
170
- observer.setOptions(client().defaultQueryOptions(options()));
171
- });
208
+ solidJs.createComputed(solidJs.on(() => client().defaultQueryOptions(options()), () => observer.setOptions(client().defaultQueryOptions(options())), {
209
+ // Defer because we don't need to trigger on first render
210
+ // This only cares about changes to options after the observer is created
211
+ defer: true
212
+ }));
172
213
  solidJs.createComputed(solidJs.on(() => state.status, () => {
173
- if (state.isError && !state.isFetching && shouldThrowError(observer.options.throwErrors, [state.error, observer.getCurrentQuery()])) {
214
+ if (state.isError && !state.isFetching && shouldThrowError(observer.options.throwOnError, [state.error, observer.getCurrentQuery()])) {
174
215
  throw state.error;
175
216
  }
176
217
  }));
177
218
  const handler = {
178
219
  get(target, prop) {
179
- if (prop === 'data') {
180
- return queryResource()?.data;
181
- }
182
- return Reflect.get(target, prop);
220
+ const val = queryResource()?.[prop];
221
+ return val !== undefined ? val : Reflect.get(target, prop);
183
222
  }
184
223
  };
185
224
  return new Proxy(state, handler);
186
225
  }
187
226
 
227
+ function queryOptions(options) {
228
+ return options;
229
+ }
188
230
  function createQuery(options, queryClient) {
189
231
  return createBaseQuery(solidJs.createMemo(() => options()), queryCore.QueryObserver, queryClient);
190
232
  }
191
233
 
192
- function useIsFetching(options = () => ({})) {
193
- const queryClient = solidJs.createMemo(() => useQueryClient(options().queryClient));
194
- const queryCache = solidJs.createMemo(() => queryClient().getQueryCache());
195
- const [fetches, setFetches] = solidJs.createSignal(queryClient().isFetching(options().filters));
234
+ function useIsFetching(filters, queryClient) {
235
+ const client = solidJs.createMemo(() => useQueryClient(queryClient?.()));
236
+ const queryCache = solidJs.createMemo(() => client().getQueryCache());
237
+ const [fetches, setFetches] = solidJs.createSignal(client().isFetching(filters?.()));
196
238
  const unsubscribe = queryCache().subscribe(() => {
197
- setFetches(queryClient().isFetching(options().filters));
239
+ setFetches(client().isFetching(filters?.()));
198
240
  });
199
241
  solidJs.onCleanup(unsubscribe);
200
242
  return fetches;
@@ -222,7 +264,7 @@ function createMutation(options, queryClient) {
222
264
  observer.setOptions(options());
223
265
  });
224
266
  solidJs.createComputed(solidJs.on(() => state.status, () => {
225
- if (state.isError && shouldThrowError(observer.options.throwErrors, [state.error])) {
267
+ if (state.isError && shouldThrowError(observer.options.throwOnError, [state.error])) {
226
268
  throw state.error;
227
269
  }
228
270
  }));
@@ -240,25 +282,25 @@ function createMutation(options, queryClient) {
240
282
  // eslint-disable-next-line @typescript-eslint/no-empty-function
241
283
  function noop() {}
242
284
 
243
- function useIsMutating(options = () => ({})) {
244
- const queryClient = solidJs.createMemo(() => useQueryClient(options().queryClient));
245
- const mutationCache = solidJs.createMemo(() => queryClient().getMutationCache());
246
- const [mutations, setMutations] = solidJs.createSignal(queryClient().isMutating(options().filters));
285
+ function useIsMutating(filters, queryClient) {
286
+ const client = solidJs.createMemo(() => useQueryClient(queryClient?.()));
287
+ const mutationCache = solidJs.createMemo(() => client().getMutationCache());
288
+ const [mutations, setMutations] = solidJs.createSignal(client().isMutating(filters?.()));
247
289
  const unsubscribe = mutationCache().subscribe(_result => {
248
- setMutations(queryClient().isMutating(options().filters));
290
+ setMutations(client().isMutating(filters?.()));
249
291
  });
250
292
  solidJs.onCleanup(unsubscribe);
251
293
  return mutations;
252
294
  }
253
295
 
254
- function createQueries(queriesOptions) {
255
- const queryClient = useQueryClient(queriesOptions().queryClient);
296
+ function createQueries(queriesOptions, queryClient) {
297
+ const client = useQueryClient(queryClient?.());
256
298
  const defaultedQueries = queriesOptions().queries.map(options => {
257
- const defaultedOptions = queryClient.defaultQueryOptions(options);
299
+ const defaultedOptions = client.defaultQueryOptions(options);
258
300
  defaultedOptions._optimisticResults = 'optimistic';
259
301
  return defaultedOptions;
260
302
  });
261
- const observer = new queryCore.QueriesObserver(queryClient, defaultedQueries);
303
+ const observer = new queryCore.QueriesObserver(client, defaultedQueries);
262
304
  const [state, setState] = store.createStore(observer.getOptimisticResult(defaultedQueries));
263
305
  const unsubscribe = observer.subscribe(result => {
264
306
  queryCore.notifyManager.batchCalls(() => {
@@ -273,7 +315,7 @@ function createQueries(queriesOptions) {
273
315
  });
274
316
  solidJs.createComputed(() => {
275
317
  const updatedQueries = queriesOptions().queries.map(options => {
276
- const defaultedOptions = queryClient.defaultQueryOptions(options);
318
+ const defaultedOptions = client.defaultQueryOptions(options);
277
319
  defaultedOptions._optimisticResults = 'optimistic';
278
320
  return defaultedOptions;
279
321
  });
@@ -282,12 +324,14 @@ function createQueries(queriesOptions) {
282
324
  return state;
283
325
  }
284
326
 
327
+ exports.QueryClient = QueryClient;
285
328
  exports.QueryClientContext = QueryClientContext;
286
329
  exports.QueryClientProvider = QueryClientProvider;
287
330
  exports.createInfiniteQuery = createInfiniteQuery;
288
331
  exports.createMutation = createMutation;
289
332
  exports.createQueries = createQueries;
290
333
  exports.createQuery = createQuery;
334
+ exports.queryOptions = queryOptions;
291
335
  exports.useIsFetching = useIsFetching;
292
336
  exports.useIsMutating = useIsMutating;
293
337
  exports.useQueryClient = useQueryClient;
@@ -1 +1 @@
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?: () => 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 { 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?: () => 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\ntype Options = () => {\n filters?: QueryFilters\n queryClient?: QueryClient\n}\n\nexport function useIsFetching(options: Options = () => ({})): Accessor<number> {\n const queryClient = createMemo(() => useQueryClient(options().queryClient))\n const queryCache = createMemo(() => queryClient().getQueryCache())\n\n const [fetches, setFetches] = createSignal(\n queryClient().isFetching(options().filters),\n )\n\n const unsubscribe = queryCache().subscribe(() => {\n setFetches(queryClient().isFetching(options().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'\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?: () => 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 { 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?: () => 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\ntype Options = () => {\n filters?: MutationFilters\n queryClient?: QueryClient\n}\n\nexport function useIsMutating(options: Options = () => ({})): Accessor<number> {\n const queryClient = createMemo(() => useQueryClient(options().queryClient))\n const mutationCache = createMemo(() => queryClient().getMutationCache())\n\n const [mutations, setMutations] = createSignal(\n queryClient().isMutating(options().filters),\n )\n\n const unsubscribe = mutationCache().subscribe((_result) => {\n setMutations(queryClient().isMutating(options().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 { 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: () => {\n queries: readonly [...QueriesOptions<T>]\n queryClient?: QueryClient\n },\n): QueriesResults<T> {\n const queryClient = useQueryClient(queriesOptions().queryClient)\n\n const defaultedQueries = queriesOptions().queries.map((options) => {\n const defaultedOptions = queryClient.defaultQueryOptions(options)\n defaultedOptions._optimisticResults = 'optimistic'\n return defaultedOptions\n })\n\n const observer = new QueriesObserver(queryClient, 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 = queryClient.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","queryCache","getQueryCache","fetches","setFetches","createSignal","filters","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
+ {"version":3,"file":"index.js","sources":["../../src/setBatchUpdatesFn.ts","../../src/QueryClient.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 {\n QueryClientConfig as QueryCoreClientConfig,\n DefaultOptions as CoreDefaultOptions,\n QueryObserverOptions as QueryCoreObserverOptions,\n InfiniteQueryObserverOptions as QueryCoreInfiniteQueryObserverOptions,\n DefaultError,\n QueryKey,\n} from '@tanstack/query-core'\nimport { QueryClient as QueryCoreClient } from '@tanstack/query-core'\n\nexport interface QueryObserverOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = never,\n> extends Omit<\n QueryCoreObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'structuralSharing'\n > {\n /**\n * Set this to a reconciliation key to enable reconciliation between query results.\n * Set this to `false` to disable reconciliation between query results.\n * Set this to a function which accepts the old and new data and returns resolved data of the same type to implement custom reconciliation logic.\n * Defaults reconciliation key to `id`.\n */\n reconcile?:\n | string\n | false\n | ((oldData: TData | undefined, newData: TData) => TData)\n}\n\nexport interface InfiniteQueryObserverOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n> extends Omit<\n QueryCoreInfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey,\n TPageParam\n >,\n 'structuralSharing'\n > {\n /**\n * Set this to a reconciliation key to enable reconciliation between query results.\n * Set this to `false` to disable reconciliation between query results.\n * Set this to a function which accepts the old and new data and returns resolved data of the same type to implement custom reconciliation logic.\n * Defaults reconciliation key to `id`.\n */\n reconcile?:\n | string\n | false\n | ((oldData: TData | undefined, newData: TData) => TData)\n}\n\nexport interface DefaultOptions<TError = DefaultError>\n extends CoreDefaultOptions<TError> {\n queries?: QueryObserverOptions<unknown, TError>\n}\n\nexport interface QueryClientConfig extends QueryCoreClientConfig {\n defaultOptions?: DefaultOptions\n}\n\nexport class QueryClient extends QueryCoreClient {\n constructor(config: QueryClientConfig = {}) {\n super(config)\n }\n}\n","import type { QueryClient } from './QueryClient'\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 QueryKey,\n QueryObserver,\n QueryObserverResult,\n} from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\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} from 'solid-js'\nimport { createStore, reconcile, unwrap } from 'solid-js/store'\nimport { useQueryClient } from './QueryClientProvider'\nimport type { CreateBaseQueryOptions } from './types'\nimport { shouldThrowError } from './utils'\n\nfunction reconcileFn<TData, TError>(\n store: QueryObserverResult<TData, TError>,\n result: QueryObserverResult<TData, TError>,\n reconcileOption:\n | string\n | false\n | ((oldData: TData | undefined, newData: TData) => TData),\n): QueryObserverResult<TData, TError> {\n if (reconcileOption === false) return result\n if (typeof reconcileOption === 'function') {\n const newData = reconcileOption(store.data, result.data as TData)\n return { ...result, data: newData } as typeof result\n }\n const newData = reconcile(result.data, { key: reconcileOption })(store.data)\n return { ...result, data: newData } as typeof result\n}\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 defaultedOptions.structuralSharing = false\n if (isServer) {\n defaultedOptions.retry = false\n defaultedOptions.throwOnError = 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 query = observer.getCurrentQuery()\n const { refetch, ...rest } = unwrap(result)\n const unwrappedResult = {\n ...rest,\n\n // hydrate() expects a QueryState object, which is similar but not\n // quite the same as a QueryObserverResult object. Thus, for now, we're\n // copying over the missing properties from state in order to support hydration\n dataUpdateCount: query.state.dataUpdateCount,\n fetchFailureCount: query.state.fetchFailureCount,\n // Removing these properties since they might not be serializable\n // fetchFailureReason: query.state.fetchFailureReason,\n // fetchMeta: query.state.fetchMeta,\n isInvalidated: query.state.isInvalidated,\n }\n\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 // Use of any here is fine\n // We cannot include refetch since it is not serializable\n resolve(unwrappedResult as any)\n }\n })()\n })\n }\n\n const createClientSubscriber = () => {\n return observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n // @ts-expect-error - This will error because the reconcile option does not\n // exist on the query-core QueryObserverResult type\n const reconcileOptions = observer.options.reconcile\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 (queryResource()?.data && result.data && !queryResource.loading) {\n setState((store) => {\n return reconcileFn(\n store,\n result,\n reconcileOptions === undefined ? 'id' : reconcileOptions,\n )\n })\n mutate(state)\n } else {\n setState((store) => {\n return reconcileFn(\n store,\n result,\n reconcileOptions === undefined ? 'id' : reconcileOptions,\n )\n })\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 createComputed(\n on(\n () => client().defaultQueryOptions(options()),\n () => observer.setOptions(client().defaultQueryOptions(options())),\n {\n // Defer because we don't need to trigger on first render\n // This only cares about changes to options after the observer is created\n defer: true,\n },\n ),\n )\n\n createComputed(\n on(\n () => state.status,\n () => {\n if (\n state.isError &&\n !state.isFetching &&\n shouldThrowError(observer.options.throwOnError, [\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 const val = queryResource()?.[prop]\n return val !== undefined ? val : Reflect.get(target, prop)\n },\n }\n\n return new Proxy(state, handler)\n}\n","import type { QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\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 queryOptions<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>\n\nexport function queryOptions(options: unknown) {\n return options\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 { QueryFilters } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\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 DefaultError,\n InfiniteData,\n} from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\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 { DefaultError } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\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.throwOnError, [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 } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\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 QueryFunction,\n QueryKey,\n DefaultError,\n} from '@tanstack/query-core'\nimport { notifyManager, QueriesObserver } from '@tanstack/query-core'\nimport type { QueryClient } from './QueryClient'\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","QueryClient","QueryCoreClient","constructor","config","QueryClientContext","createContext","undefined","useQueryClient","queryClient","client","useContext","Error","QueryClientProvider","props","onMount","mount","onCleanup","unmount","_$createComponent","children","shouldThrowError","throwError","params","reconcileFn","store","result","reconcileOption","newData","data","reconcile","key","createBaseQuery","options","Observer","createMemo","defaultedOptions","defaultQueryOptions","_optimisticResults","structuralSharing","isServer","retry","throwOnError","observer","state","setState","createStore","getOptimisticResult","createServerSubscriber","resolve","reject","subscribe","batchCalls","query","getCurrentQuery","refetch","rest","unwrap","unwrappedResult","dataUpdateCount","fetchFailureCount","isInvalidated","isError","process","env","console","error","isSuccess","createClientSubscriber","reconcileOptions","queryResource","loading","mutate","unsubscribe","createResource","Promise","isLoading","initialValue","ssrLoadFrom","initialData","deferStream","onHydrated","_k","info","value","hydrate","queries","queryKey","queryHash","newOptions","staleTime","refetchOnMount","setOptions","createComputed","on","defer","status","isFetching","handler","get","target","prop","val","Reflect","Proxy","queryOptions","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","listeners","updatedQueries"],"mappings":"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"}
@@ -1,11 +1,17 @@
1
- import { notifyManager, hydrate, QueryObserver, InfiniteQueryObserver, MutationObserver, QueriesObserver } from '@tanstack/query-core';
1
+ import { notifyManager, QueryClient as QueryClient$1, hydrate, QueryObserver, InfiniteQueryObserver, MutationObserver, QueriesObserver } from '@tanstack/query-core';
2
2
  export * from '@tanstack/query-core';
3
3
  import { batch, createContext, useContext, onMount, onCleanup, createMemo, createResource, createComputed, on, createSignal } from 'solid-js';
4
4
  import { createComponent, isServer } from 'solid-js/web';
5
- import { createStore, unwrap } from 'solid-js/store';
5
+ import { createStore, unwrap, reconcile } from 'solid-js/store';
6
6
 
7
7
  notifyManager.setBatchNotifyFunction(batch);
8
8
 
9
+ class QueryClient extends QueryClient$1 {
10
+ constructor(config = {}) {
11
+ super(config);
12
+ }
13
+ }
14
+
9
15
  const QueryClientContext = createContext(undefined);
10
16
  const useQueryClient = queryClient => {
11
17
  const client = useContext(QueryClientContext);
@@ -41,23 +47,55 @@ function shouldThrowError(throwError, params) {
41
47
  }
42
48
 
43
49
  /* eslint-disable @typescript-eslint/no-unnecessary-condition */
50
+ function reconcileFn(store, result, reconcileOption) {
51
+ if (reconcileOption === false) return result;
52
+ if (typeof reconcileOption === 'function') {
53
+ const newData = reconcileOption(store.data, result.data);
54
+ return {
55
+ ...result,
56
+ data: newData
57
+ };
58
+ }
59
+ const newData = reconcile(result.data, {
60
+ key: reconcileOption
61
+ })(store.data);
62
+ return {
63
+ ...result,
64
+ data: newData
65
+ };
66
+ }
44
67
 
45
68
  // Base Query Function that is used to create the query.
46
69
  function createBaseQuery(options, Observer, queryClient) {
47
70
  const client = createMemo(() => useQueryClient(queryClient?.()));
48
71
  const defaultedOptions = client().defaultQueryOptions(options());
49
72
  defaultedOptions._optimisticResults = 'optimistic';
73
+ defaultedOptions.structuralSharing = false;
50
74
  if (isServer) {
51
75
  defaultedOptions.retry = false;
52
- defaultedOptions.throwErrors = true;
76
+ defaultedOptions.throwOnError = true;
53
77
  }
54
78
  const observer = new Observer(client(), defaultedOptions);
55
79
  const [state, setState] = createStore(observer.getOptimisticResult(defaultedOptions));
56
80
  const createServerSubscriber = (resolve, reject) => {
57
81
  return observer.subscribe(result => {
58
82
  notifyManager.batchCalls(() => {
83
+ const query = observer.getCurrentQuery();
84
+ const {
85
+ refetch,
86
+ ...rest
87
+ } = unwrap(result);
59
88
  const unwrappedResult = {
60
- ...unwrap(result)
89
+ ...rest,
90
+ // hydrate() expects a QueryState object, which is similar but not
91
+ // quite the same as a QueryObserverResult object. Thus, for now, we're
92
+ // copying over the missing properties from state in order to support hydration
93
+ dataUpdateCount: query.state.dataUpdateCount,
94
+ fetchFailureCount: query.state.fetchFailureCount,
95
+ // Removing these properties since they might not be serializable
96
+ // fetchFailureReason: query.state.fetchFailureReason,
97
+ // fetchMeta: query.state.fetchMeta,
98
+ isInvalidated: query.state.isInvalidated
61
99
  };
62
100
  if (unwrappedResult.isError) {
63
101
  if (process.env['NODE_ENV'] === 'development') {
@@ -66,6 +104,8 @@ function createBaseQuery(options, Observer, queryClient) {
66
104
  reject(unwrappedResult.error);
67
105
  }
68
106
  if (unwrappedResult.isSuccess) {
107
+ // Use of any here is fine
108
+ // We cannot include refetch since it is not serializable
69
109
  resolve(unwrappedResult);
70
110
  }
71
111
  })();
@@ -74,16 +114,20 @@ function createBaseQuery(options, Observer, queryClient) {
74
114
  const createClientSubscriber = () => {
75
115
  return observer.subscribe(result => {
76
116
  notifyManager.batchCalls(() => {
77
- const unwrappedResult = {
78
- ...unwrap(result)
79
- };
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;
80
120
  // If the query has data we dont suspend but instead mutate the resource
81
121
  // This could happen when placeholderData/initialData is defined
82
- if (queryResource()?.data && unwrappedResult.data && !queryResource.loading) {
83
- setState(unwrappedResult);
122
+ if (queryResource()?.data && result.data && !queryResource.loading) {
123
+ setState(store => {
124
+ return reconcileFn(store, result, reconcileOptions === undefined ? 'id' : reconcileOptions);
125
+ });
84
126
  mutate(state);
85
127
  } else {
86
- setState(unwrappedResult);
128
+ setState(store => {
129
+ return reconcileFn(store, result, reconcileOptions === undefined ? 'id' : reconcileOptions);
130
+ });
87
131
  refetch();
88
132
  }
89
133
  })();
@@ -160,40 +204,38 @@ function createBaseQuery(options, Observer, queryClient) {
160
204
  unsubscribe = null;
161
205
  }
162
206
  });
163
- onMount(() => {
164
- observer.setOptions(defaultedOptions, {
165
- listeners: false
166
- });
167
- });
168
- createComputed(() => {
169
- observer.setOptions(client().defaultQueryOptions(options()));
170
- });
207
+ createComputed(on(() => client().defaultQueryOptions(options()), () => observer.setOptions(client().defaultQueryOptions(options())), {
208
+ // Defer because we don't need to trigger on first render
209
+ // This only cares about changes to options after the observer is created
210
+ defer: true
211
+ }));
171
212
  createComputed(on(() => state.status, () => {
172
- if (state.isError && !state.isFetching && shouldThrowError(observer.options.throwErrors, [state.error, observer.getCurrentQuery()])) {
213
+ if (state.isError && !state.isFetching && shouldThrowError(observer.options.throwOnError, [state.error, observer.getCurrentQuery()])) {
173
214
  throw state.error;
174
215
  }
175
216
  }));
176
217
  const handler = {
177
218
  get(target, prop) {
178
- if (prop === 'data') {
179
- return queryResource()?.data;
180
- }
181
- return Reflect.get(target, prop);
219
+ const val = queryResource()?.[prop];
220
+ return val !== undefined ? val : Reflect.get(target, prop);
182
221
  }
183
222
  };
184
223
  return new Proxy(state, handler);
185
224
  }
186
225
 
226
+ function queryOptions(options) {
227
+ return options;
228
+ }
187
229
  function createQuery(options, queryClient) {
188
230
  return createBaseQuery(createMemo(() => options()), QueryObserver, queryClient);
189
231
  }
190
232
 
191
- function useIsFetching(options = () => ({})) {
192
- const queryClient = createMemo(() => useQueryClient(options().queryClient));
193
- const queryCache = createMemo(() => queryClient().getQueryCache());
194
- const [fetches, setFetches] = createSignal(queryClient().isFetching(options().filters));
233
+ function useIsFetching(filters, queryClient) {
234
+ const client = createMemo(() => useQueryClient(queryClient?.()));
235
+ const queryCache = createMemo(() => client().getQueryCache());
236
+ const [fetches, setFetches] = createSignal(client().isFetching(filters?.()));
195
237
  const unsubscribe = queryCache().subscribe(() => {
196
- setFetches(queryClient().isFetching(options().filters));
238
+ setFetches(client().isFetching(filters?.()));
197
239
  });
198
240
  onCleanup(unsubscribe);
199
241
  return fetches;
@@ -221,7 +263,7 @@ function createMutation(options, queryClient) {
221
263
  observer.setOptions(options());
222
264
  });
223
265
  createComputed(on(() => state.status, () => {
224
- if (state.isError && shouldThrowError(observer.options.throwErrors, [state.error])) {
266
+ if (state.isError && shouldThrowError(observer.options.throwOnError, [state.error])) {
225
267
  throw state.error;
226
268
  }
227
269
  }));
@@ -239,25 +281,25 @@ function createMutation(options, queryClient) {
239
281
  // eslint-disable-next-line @typescript-eslint/no-empty-function
240
282
  function noop() {}
241
283
 
242
- function useIsMutating(options = () => ({})) {
243
- const queryClient = createMemo(() => useQueryClient(options().queryClient));
244
- const mutationCache = createMemo(() => queryClient().getMutationCache());
245
- const [mutations, setMutations] = createSignal(queryClient().isMutating(options().filters));
284
+ function useIsMutating(filters, queryClient) {
285
+ const client = createMemo(() => useQueryClient(queryClient?.()));
286
+ const mutationCache = createMemo(() => client().getMutationCache());
287
+ const [mutations, setMutations] = createSignal(client().isMutating(filters?.()));
246
288
  const unsubscribe = mutationCache().subscribe(_result => {
247
- setMutations(queryClient().isMutating(options().filters));
289
+ setMutations(client().isMutating(filters?.()));
248
290
  });
249
291
  onCleanup(unsubscribe);
250
292
  return mutations;
251
293
  }
252
294
 
253
- function createQueries(queriesOptions) {
254
- const queryClient = useQueryClient(queriesOptions().queryClient);
295
+ function createQueries(queriesOptions, queryClient) {
296
+ const client = useQueryClient(queryClient?.());
255
297
  const defaultedQueries = queriesOptions().queries.map(options => {
256
- const defaultedOptions = queryClient.defaultQueryOptions(options);
298
+ const defaultedOptions = client.defaultQueryOptions(options);
257
299
  defaultedOptions._optimisticResults = 'optimistic';
258
300
  return defaultedOptions;
259
301
  });
260
- const observer = new QueriesObserver(queryClient, defaultedQueries);
302
+ const observer = new QueriesObserver(client, defaultedQueries);
261
303
  const [state, setState] = createStore(observer.getOptimisticResult(defaultedQueries));
262
304
  const unsubscribe = observer.subscribe(result => {
263
305
  notifyManager.batchCalls(() => {
@@ -272,7 +314,7 @@ function createQueries(queriesOptions) {
272
314
  });
273
315
  createComputed(() => {
274
316
  const updatedQueries = queriesOptions().queries.map(options => {
275
- const defaultedOptions = queryClient.defaultQueryOptions(options);
317
+ const defaultedOptions = client.defaultQueryOptions(options);
276
318
  defaultedOptions._optimisticResults = 'optimistic';
277
319
  return defaultedOptions;
278
320
  });
@@ -281,5 +323,5 @@ function createQueries(queriesOptions) {
281
323
  return state;
282
324
  }
283
325
 
284
- export { QueryClientContext, QueryClientProvider, createInfiniteQuery, createMutation, createQueries, createQuery, useIsFetching, useIsMutating, useQueryClient };
326
+ export { QueryClient, QueryClientContext, QueryClientProvider, createInfiniteQuery, createMutation, createQueries, createQuery, queryOptions, useIsFetching, useIsMutating, useQueryClient };
285
327
  //# sourceMappingURL=index.js.map