@tanstack/solid-query 5.0.0-alpha.6 → 5.0.0-alpha.61

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 (161) hide show
  1. package/build/lib/QueryClient.cjs +12 -0
  2. package/build/lib/QueryClient.cjs.map +1 -0
  3. package/build/lib/QueryClient.d.ts +30 -0
  4. package/build/lib/QueryClient.d.ts.map +1 -0
  5. package/build/lib/QueryClient.js +10 -0
  6. package/build/lib/QueryClient.js.map +1 -0
  7. package/build/lib/QueryClientProvider.cjs +35 -0
  8. package/build/lib/QueryClientProvider.cjs.map +1 -0
  9. package/build/{types → lib}/QueryClientProvider.d.ts +3 -2
  10. package/build/lib/QueryClientProvider.d.ts.map +1 -0
  11. package/build/lib/QueryClientProvider.js +31 -0
  12. package/build/lib/QueryClientProvider.js.map +1 -0
  13. package/build/lib/__tests__/QueryClientProvider.test.d.ts +2 -0
  14. package/build/lib/__tests__/QueryClientProvider.test.d.ts.map +1 -0
  15. package/build/lib/__tests__/createInfiniteQuery.test.d.ts +2 -0
  16. package/build/lib/__tests__/createInfiniteQuery.test.d.ts.map +1 -0
  17. package/build/lib/__tests__/createMutation.test.d.ts +2 -0
  18. package/build/lib/__tests__/createMutation.test.d.ts.map +1 -0
  19. package/build/lib/__tests__/createQueries.test.d.ts +2 -0
  20. package/build/lib/__tests__/createQueries.test.d.ts.map +1 -0
  21. package/build/lib/__tests__/createQuery.test.d.ts +2 -0
  22. package/build/lib/__tests__/createQuery.test.d.ts.map +1 -0
  23. package/build/lib/__tests__/createQuery.types.test.d.ts +3 -0
  24. package/build/lib/__tests__/createQuery.types.test.d.ts.map +1 -0
  25. package/build/lib/__tests__/suspense.test.d.ts +2 -0
  26. package/build/lib/__tests__/suspense.test.d.ts.map +1 -0
  27. package/build/lib/__tests__/transition.test.d.ts +2 -0
  28. package/build/lib/__tests__/transition.test.d.ts.map +1 -0
  29. package/build/lib/__tests__/useIsFetching.test.d.ts +2 -0
  30. package/build/lib/__tests__/useIsFetching.test.d.ts.map +1 -0
  31. package/build/lib/__tests__/useIsMutating.test.d.ts +2 -0
  32. package/build/lib/__tests__/useIsMutating.test.d.ts.map +1 -0
  33. package/build/{types → lib}/__tests__/utils.d.ts +4 -3
  34. package/build/lib/__tests__/utils.d.ts.map +1 -0
  35. package/build/lib/createBaseQuery.cjs +192 -0
  36. package/build/lib/createBaseQuery.cjs.map +1 -0
  37. package/build/{types → lib}/createBaseQuery.d.ts +3 -1
  38. package/build/lib/createBaseQuery.d.ts.map +1 -0
  39. package/build/lib/createBaseQuery.js +190 -0
  40. package/build/lib/createBaseQuery.js.map +1 -0
  41. package/build/lib/createInfiniteQuery.cjs +14 -0
  42. package/build/lib/createInfiniteQuery.cjs.map +1 -0
  43. package/build/{types → lib}/createInfiniteQuery.d.ts +3 -1
  44. package/build/lib/createInfiniteQuery.d.ts.map +1 -0
  45. package/build/lib/createInfiniteQuery.js +12 -0
  46. package/build/lib/createInfiniteQuery.js.map +1 -0
  47. package/build/lib/createMutation.cjs +44 -0
  48. package/build/lib/createMutation.cjs.map +1 -0
  49. package/build/{types → lib}/createMutation.d.ts +3 -1
  50. package/build/lib/createMutation.d.ts.map +1 -0
  51. package/build/lib/createMutation.js +42 -0
  52. package/build/lib/createMutation.js.map +1 -0
  53. package/build/lib/createQueries.cjs +52 -0
  54. package/build/lib/createQueries.cjs.map +1 -0
  55. package/build/{types → lib}/createQueries.d.ts +12 -9
  56. package/build/lib/createQueries.d.ts.map +1 -0
  57. package/build/lib/createQueries.js +50 -0
  58. package/build/lib/createQueries.js.map +1 -0
  59. package/build/lib/createQuery.cjs +16 -0
  60. package/build/lib/createQuery.cjs.map +1 -0
  61. package/build/lib/createQuery.d.ts +15 -0
  62. package/build/lib/createQuery.d.ts.map +1 -0
  63. package/build/lib/createQuery.js +13 -0
  64. package/build/lib/createQuery.js.map +1 -0
  65. package/build/lib/index.cjs +33 -0
  66. package/build/lib/index.cjs.map +1 -0
  67. package/build/{types → lib}/index.d.ts +4 -1
  68. package/build/lib/index.d.ts.map +1 -0
  69. package/build/lib/index.js +11 -0
  70. package/build/lib/index.js.map +1 -0
  71. package/build/lib/setBatchUpdatesFn.cjs +7 -0
  72. package/build/lib/setBatchUpdatesFn.cjs.map +1 -0
  73. package/build/lib/setBatchUpdatesFn.d.ts +2 -0
  74. package/build/lib/setBatchUpdatesFn.d.ts.map +1 -0
  75. package/build/{source → lib}/setBatchUpdatesFn.js +2 -0
  76. package/build/lib/setBatchUpdatesFn.js.map +1 -0
  77. package/build/lib/types.d.ts +35 -0
  78. package/build/lib/types.d.ts.map +1 -0
  79. package/build/lib/useIsFetching.cjs +18 -0
  80. package/build/lib/useIsFetching.cjs.map +1 -0
  81. package/build/{types → lib}/useIsFetching.d.ts +3 -1
  82. package/build/lib/useIsFetching.d.ts.map +1 -0
  83. package/build/lib/useIsFetching.js +16 -0
  84. package/build/lib/useIsFetching.js.map +1 -0
  85. package/build/lib/useIsMutating.cjs +18 -0
  86. package/build/lib/useIsMutating.cjs.map +1 -0
  87. package/build/{types → lib}/useIsMutating.d.ts +3 -1
  88. package/build/lib/useIsMutating.d.ts.map +1 -0
  89. package/build/lib/useIsMutating.js +16 -0
  90. package/build/lib/useIsMutating.js.map +1 -0
  91. package/build/lib/utils.cjs +12 -0
  92. package/build/lib/utils.cjs.map +1 -0
  93. package/build/{types → lib}/utils.d.ts +1 -0
  94. package/build/lib/utils.d.ts.map +1 -0
  95. package/build/lib/utils.js +10 -0
  96. package/build/lib/utils.js.map +1 -0
  97. package/build/stats.html +6177 -0
  98. package/package.json +22 -28
  99. package/src/QueryClient.ts +84 -0
  100. package/src/QueryClientProvider.tsx +1 -1
  101. package/src/__tests__/QueryClientProvider.test.tsx +2 -3
  102. package/src/__tests__/createInfiniteQuery.test.tsx +83 -19
  103. package/src/__tests__/createMutation.test.tsx +5 -5
  104. package/src/__tests__/createQueries.test.tsx +6 -78
  105. package/src/__tests__/createQuery.test.tsx +66 -334
  106. package/src/__tests__/createQuery.types.test.tsx +21 -1
  107. package/src/__tests__/suspense.test.tsx +7 -90
  108. package/src/__tests__/transition.test.tsx +1 -1
  109. package/src/__tests__/useIsFetching.test.tsx +1 -1
  110. package/src/__tests__/useIsMutating.test.tsx +5 -7
  111. package/src/__tests__/utils.tsx +1 -1
  112. package/src/createBaseQuery.ts +73 -28
  113. package/src/createInfiniteQuery.ts +1 -1
  114. package/src/createMutation.ts +3 -2
  115. package/src/createQueries.ts +32 -14
  116. package/src/createQuery.ts +24 -1
  117. package/src/index.ts +8 -1
  118. package/src/types.ts +4 -2
  119. package/src/useIsFetching.ts +2 -1
  120. package/src/useIsMutating.ts +2 -1
  121. package/build/cjs/index.js +0 -300
  122. package/build/cjs/index.js.map +0 -1
  123. package/build/esm/index.js +0 -285
  124. package/build/esm/index.js.map +0 -1
  125. package/build/source/QueryClientProvider.jsx +0 -21
  126. package/build/source/__tests__/QueryClientProvider.test.jsx +0 -121
  127. package/build/source/__tests__/createInfiniteQuery.test.jsx +0 -1315
  128. package/build/source/__tests__/createMutation.test.jsx +0 -867
  129. package/build/source/__tests__/createQueries.test.jsx +0 -661
  130. package/build/source/__tests__/createQuery.test.jsx +0 -4608
  131. package/build/source/__tests__/createQuery.types.test.jsx +0 -135
  132. package/build/source/__tests__/suspense.test.jsx +0 -721
  133. package/build/source/__tests__/transition.test.jsx +0 -42
  134. package/build/source/__tests__/useIsFetching.test.jsx +0 -190
  135. package/build/source/__tests__/useIsMutating.test.jsx +0 -198
  136. package/build/source/__tests__/utils.jsx +0 -50
  137. package/build/source/createBaseQuery.js +0 -147
  138. package/build/source/createInfiniteQuery.js +0 -8
  139. package/build/source/createMutation.js +0 -38
  140. package/build/source/createQueries.js +0 -32
  141. package/build/source/createQuery.js +0 -6
  142. package/build/source/index.js +0 -14
  143. package/build/source/types.js +0 -2
  144. package/build/source/useIsFetching.js +0 -12
  145. package/build/source/useIsMutating.js +0 -12
  146. package/build/source/utils.js +0 -7
  147. package/build/types/__tests__/QueryClientProvider.test.d.ts +0 -1
  148. package/build/types/__tests__/createInfiniteQuery.test.d.ts +0 -1
  149. package/build/types/__tests__/createMutation.test.d.ts +0 -1
  150. package/build/types/__tests__/createQueries.test.d.ts +0 -1
  151. package/build/types/__tests__/createQuery.test.d.ts +0 -1
  152. package/build/types/__tests__/createQuery.types.test.d.ts +0 -2
  153. package/build/types/__tests__/suspense.test.d.ts +0 -1
  154. package/build/types/__tests__/transition.test.d.ts +0 -1
  155. package/build/types/__tests__/useIsFetching.test.d.ts +0 -1
  156. package/build/types/__tests__/useIsMutating.test.d.ts +0 -1
  157. package/build/types/createQuery.d.ts +0 -11
  158. package/build/types/setBatchUpdatesFn.d.ts +0 -1
  159. package/build/types/types.d.ts +0 -33
  160. package/build/umd/index.js +0 -2
  161. package/build/umd/index.js.map +0 -1
@@ -0,0 +1,190 @@
1
+ import { hydrate, notifyManager } from '@tanstack/query-core';
2
+ import { isServer } from 'solid-js/web';
3
+ import { createMemo, createResource, onCleanup, createComputed, on } from 'solid-js';
4
+ import { createStore, unwrap, reconcile } from 'solid-js/store';
5
+ import { useQueryClient } from './QueryClientProvider.js';
6
+ import { shouldThrowError } from './utils.js';
7
+
8
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
9
+ // Had to disable the lint rule because isServer type is defined as false
10
+ // in solid-js/web package. I'll create a GitHub issue with them to see
11
+ // why that happens.
12
+
13
+ function reconcileFn(store, result, reconcileOption) {
14
+ if (reconcileOption === false) return result;
15
+ if (typeof reconcileOption === 'function') {
16
+ const newData = reconcileOption(store.data, result.data);
17
+ return {
18
+ ...result,
19
+ data: newData
20
+ };
21
+ }
22
+ const newData = reconcile(result.data, {
23
+ key: reconcileOption
24
+ })(store.data);
25
+ return {
26
+ ...result,
27
+ data: newData
28
+ };
29
+ }
30
+
31
+ // Base Query Function that is used to create the query.
32
+ function createBaseQuery(options, Observer, queryClient) {
33
+ const client = createMemo(() => useQueryClient(queryClient?.()));
34
+ const defaultedOptions = client().defaultQueryOptions(options());
35
+ defaultedOptions._optimisticResults = 'optimistic';
36
+ defaultedOptions.structuralSharing = false;
37
+ if (isServer) {
38
+ defaultedOptions.retry = false;
39
+ defaultedOptions.throwOnError = true;
40
+ }
41
+ const observer = new Observer(client(), defaultedOptions);
42
+ const [state, setState] = createStore(observer.getOptimisticResult(defaultedOptions));
43
+ const createServerSubscriber = (resolve, reject) => {
44
+ return observer.subscribe(result => {
45
+ notifyManager.batchCalls(() => {
46
+ const query = observer.getCurrentQuery();
47
+ const {
48
+ refetch,
49
+ ...rest
50
+ } = unwrap(result);
51
+ const unwrappedResult = {
52
+ ...rest,
53
+ // hydrate() expects a QueryState object, which is similar but not
54
+ // quite the same as a QueryObserverResult object. Thus, for now, we're
55
+ // copying over the missing properties from state in order to support hydration
56
+ dataUpdateCount: query.state.dataUpdateCount,
57
+ fetchFailureCount: query.state.fetchFailureCount,
58
+ // Removing these properties since they might not be serializable
59
+ // fetchFailureReason: query.state.fetchFailureReason,
60
+ // fetchMeta: query.state.fetchMeta,
61
+ isInvalidated: query.state.isInvalidated
62
+ };
63
+ if (unwrappedResult.isError) {
64
+ if (process.env['NODE_ENV'] === 'development') {
65
+ console.error(unwrappedResult.error);
66
+ }
67
+ reject(unwrappedResult.error);
68
+ }
69
+ if (unwrappedResult.isSuccess) {
70
+ // Use of any here is fine
71
+ // We cannot include refetch since it is not serializable
72
+ resolve(unwrappedResult);
73
+ }
74
+ })();
75
+ });
76
+ };
77
+ const createClientSubscriber = () => {
78
+ return observer.subscribe(result => {
79
+ notifyManager.batchCalls(() => {
80
+ // @ts-expect-error - This will error because the reconcile option does not
81
+ // exist on the query-core QueryObserverResult type
82
+ const reconcileOptions = observer.options.reconcile;
83
+ // If the query has data we dont suspend but instead mutate the resource
84
+ // This could happen when placeholderData/initialData is defined
85
+ if (queryResource()?.data && result.data && !queryResource.loading) {
86
+ setState(store => {
87
+ return reconcileFn(store, result, reconcileOptions === undefined ? 'id' : reconcileOptions);
88
+ });
89
+ mutate(state);
90
+ } else {
91
+ setState(store => {
92
+ return reconcileFn(store, result, reconcileOptions === undefined ? 'id' : reconcileOptions);
93
+ });
94
+ refetch();
95
+ }
96
+ })();
97
+ });
98
+ };
99
+
100
+ /**
101
+ * Unsubscribe is set lazily, so that we can subscribe after hydration when needed.
102
+ */
103
+ let unsubscribe = null;
104
+ const [queryResource, {
105
+ refetch,
106
+ mutate
107
+ }] = createResource(() => {
108
+ return new Promise((resolve, reject) => {
109
+ if (isServer) {
110
+ unsubscribe = createServerSubscriber(resolve, reject);
111
+ } else {
112
+ if (!unsubscribe) {
113
+ unsubscribe = createClientSubscriber();
114
+ }
115
+ }
116
+ if (!state.isLoading) {
117
+ resolve(state);
118
+ }
119
+ });
120
+ }, {
121
+ initialValue: state,
122
+ // If initialData is provided, we resolve the resource immediately
123
+ ssrLoadFrom: options().initialData ? 'initial' : 'server',
124
+ get deferStream() {
125
+ return options().deferStream;
126
+ },
127
+ /**
128
+ * If this resource was populated on the server (either sync render, or streamed in over time), onHydrated
129
+ * will be called. This is the point at which we can hydrate the query cache state, and setup the query subscriber.
130
+ *
131
+ * Leveraging onHydrated allows us to plug into the async and streaming support that solidjs resources already support.
132
+ *
133
+ * Note that this is only invoked on the client, for queries that were originally run on the server.
134
+ */
135
+ onHydrated(_k, info) {
136
+ if (info.value) {
137
+ hydrate(client(), {
138
+ queries: [{
139
+ queryKey: defaultedOptions.queryKey,
140
+ queryHash: defaultedOptions.queryHash,
141
+ state: info.value
142
+ }]
143
+ });
144
+ }
145
+ if (!unsubscribe) {
146
+ /**
147
+ * Do not refetch query on mount if query was fetched on server,
148
+ * even if `staleTime` is not set.
149
+ */
150
+ const newOptions = {
151
+ ...defaultedOptions
152
+ };
153
+ if (defaultedOptions.staleTime || !defaultedOptions.initialData) {
154
+ newOptions.refetchOnMount = false;
155
+ }
156
+ // Setting the options as an immutable object to prevent
157
+ // wonky behavior with observer subscriptions
158
+ observer.setOptions(newOptions);
159
+ setState(observer.getOptimisticResult(newOptions));
160
+ unsubscribe = createClientSubscriber();
161
+ }
162
+ }
163
+ });
164
+ onCleanup(() => {
165
+ if (unsubscribe) {
166
+ unsubscribe();
167
+ unsubscribe = null;
168
+ }
169
+ });
170
+ createComputed(on(() => client().defaultQueryOptions(options()), () => observer.setOptions(client().defaultQueryOptions(options())), {
171
+ // Defer because we don't need to trigger on first render
172
+ // This only cares about changes to options after the observer is created
173
+ defer: true
174
+ }));
175
+ createComputed(on(() => state.status, () => {
176
+ if (state.isError && !state.isFetching && shouldThrowError(observer.options.throwOnError, [state.error, observer.getCurrentQuery()])) {
177
+ throw state.error;
178
+ }
179
+ }));
180
+ const handler = {
181
+ get(target, prop) {
182
+ const val = queryResource()?.[prop];
183
+ return val !== undefined ? val : Reflect.get(target, prop);
184
+ }
185
+ };
186
+ return new Proxy(state, handler);
187
+ }
188
+
189
+ export { createBaseQuery };
190
+ //# sourceMappingURL=createBaseQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBaseQuery.js","sources":["../../src/createBaseQuery.ts"],"sourcesContent":["/* 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, 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"],"names":["reconcileFn","store","result","reconcileOption","newData","data","reconcile","key","createBaseQuery","options","Observer","queryClient","client","createMemo","useQueryClient","defaultedOptions","defaultQueryOptions","_optimisticResults","structuralSharing","isServer","retry","throwOnError","observer","state","setState","createStore","getOptimisticResult","createServerSubscriber","resolve","reject","subscribe","notifyManager","batchCalls","query","getCurrentQuery","refetch","rest","unwrap","unwrappedResult","dataUpdateCount","fetchFailureCount","isInvalidated","isError","process","env","console","error","isSuccess","createClientSubscriber","reconcileOptions","queryResource","loading","undefined","mutate","unsubscribe","createResource","Promise","isLoading","initialValue","ssrLoadFrom","initialData","deferStream","onHydrated","_k","info","value","hydrate","queries","queryKey","queryHash","newOptions","staleTime","refetchOnMount","setOptions","onCleanup","createComputed","on","defer","status","isFetching","shouldThrowError","handler","get","target","prop","val","Reflect","Proxy"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var queryCore = require('@tanstack/query-core');
4
+ var createBaseQuery = require('./createBaseQuery.cjs');
5
+ var solidJs = require('solid-js');
6
+
7
+ function createInfiniteQuery(options, queryClient) {
8
+ return createBaseQuery.createBaseQuery(solidJs.createMemo(() => options()),
9
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
10
+ queryCore.InfiniteQueryObserver, queryClient);
11
+ }
12
+
13
+ exports.createInfiniteQuery = createInfiniteQuery;
14
+ //# sourceMappingURL=createInfiniteQuery.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInfiniteQuery.cjs","sources":["../../src/createInfiniteQuery.ts"],"sourcesContent":["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"],"names":["createInfiniteQuery","options","queryClient","createBaseQuery","createMemo","InfiniteQueryObserver"],"mappings":";;;;;;AAgBO,SAASA,mBAAmBA,CAOjCC,OAMC,EACDC,WAAmC,EACO;EAC1C,OAAOC,+BAAe,CACpBC,kBAAU,CAAC,MAAMH,OAAO,EAAE,CAAC;AAC3B;EACAI,+BAAqB,EACrBH,WACF,CAAC,CAAA;AACH;;;;"}
@@ -1,4 +1,6 @@
1
- import type { QueryKey, QueryClient, DefaultError, InfiniteData } from '@tanstack/query-core';
1
+ import type { QueryKey, DefaultError, InfiniteData } from '@tanstack/query-core';
2
+ import type { QueryClient } from './QueryClient';
2
3
  import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult } from './types';
3
4
  import type { Accessor } from 'solid-js';
4
5
  export declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient?: Accessor<QueryClient>): CreateInfiniteQueryResult<TData, TError>;
6
+ //# sourceMappingURL=createInfiniteQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/createInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,wBAAgB,mBAAmB,CACjC,YAAY,EACZ,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,EAClC,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,UAAU,GAAG,OAAO,EAEpB,OAAO,EAAE,0BAA0B,CACjC,YAAY,EACZ,MAAM,EACN,KAAK,EACL,SAAS,EACT,UAAU,CACX,EACD,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAClC,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAO1C"}
@@ -0,0 +1,12 @@
1
+ import { InfiniteQueryObserver } from '@tanstack/query-core';
2
+ import { createBaseQuery } from './createBaseQuery.js';
3
+ import { createMemo } from 'solid-js';
4
+
5
+ function createInfiniteQuery(options, queryClient) {
6
+ return createBaseQuery(createMemo(() => options()),
7
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
8
+ InfiniteQueryObserver, queryClient);
9
+ }
10
+
11
+ export { createInfiniteQuery };
12
+ //# sourceMappingURL=createInfiniteQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createInfiniteQuery.js","sources":["../../src/createInfiniteQuery.ts"],"sourcesContent":["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"],"names":["createInfiniteQuery","options","queryClient","createBaseQuery","createMemo","InfiniteQueryObserver"],"mappings":";;;;AAgBO,SAASA,mBAAmBA,CAOjCC,OAMC,EACDC,WAAmC,EACO;EAC1C,OAAOC,eAAe,CACpBC,UAAU,CAAC,MAAMH,OAAO,EAAE,CAAC;AAC3B;EACAI,qBAAqB,EACrBH,WACF,CAAC,CAAA;AACH;;;;"}
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var queryCore = require('@tanstack/query-core');
4
+ var QueryClientProvider = require('./QueryClientProvider.cjs');
5
+ var solidJs = require('solid-js');
6
+ var store = require('solid-js/store');
7
+ var utils = require('./utils.cjs');
8
+
9
+ // HOOK
10
+ function createMutation(options, queryClient) {
11
+ const client = QueryClientProvider.useQueryClient(queryClient?.());
12
+ const observer = new queryCore.MutationObserver(client, options());
13
+ const mutate = (variables, mutateOptions) => {
14
+ observer.mutate(variables, mutateOptions).catch(noop);
15
+ };
16
+ const [state, setState] = store.createStore({
17
+ ...observer.getCurrentResult(),
18
+ mutate,
19
+ mutateAsync: observer.getCurrentResult().mutate
20
+ });
21
+ solidJs.createComputed(() => {
22
+ observer.setOptions(options());
23
+ });
24
+ solidJs.createComputed(solidJs.on(() => state.status, () => {
25
+ if (state.isError && utils.shouldThrowError(observer.options.throwOnError, [state.error])) {
26
+ throw state.error;
27
+ }
28
+ }));
29
+ const unsubscribe = observer.subscribe(result => {
30
+ setState({
31
+ ...result,
32
+ mutate,
33
+ mutateAsync: result.mutate
34
+ });
35
+ });
36
+ solidJs.onCleanup(unsubscribe);
37
+ return state;
38
+ }
39
+
40
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
41
+ function noop() {}
42
+
43
+ exports.createMutation = createMutation;
44
+ //# sourceMappingURL=createMutation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMutation.cjs","sources":["../../src/createMutation.ts"],"sourcesContent":["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"],"names":["createMutation","options","queryClient","client","useQueryClient","observer","MutationObserver","mutate","variables","mutateOptions","catch","noop","state","setState","createStore","getCurrentResult","mutateAsync","createComputed","setOptions","on","status","isError","shouldThrowError","throwOnError","error","unsubscribe","subscribe","result","onCleanup"],"mappings":";;;;;;;;AAcA;AACO,SAASA,cAAcA,CAM5BC,OAAmE,EACnEC,WAAmC,EACwB;AAC3D,EAAA,MAAMC,MAAM,GAAGC,kCAAc,CAACF,WAAW,IAAI,CAAC,CAAA;EAE9C,MAAMG,QAAQ,GAAG,IAAIC,0BAAgB,CACnCH,MAAM,EACNF,OAAO,EACT,CAAC,CAAA;AAED,EAAA,MAAMM,MAAiE,GAAGA,CACxEC,SAAS,EACTC,aAAa,KACV;IACHJ,QAAQ,CAACE,MAAM,CAACC,SAAS,EAAEC,aAAa,CAAC,CAACC,KAAK,CAACC,IAAI,CAAC,CAAA;GACtD,CAAA;AAED,EAAA,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,iBAAW,CAEnC;AACA,IAAA,GAAGT,QAAQ,CAACU,gBAAgB,EAAE;IAC9BR,MAAM;AACNS,IAAAA,WAAW,EAAEX,QAAQ,CAACU,gBAAgB,EAAE,CAACR,MAAAA;AAC3C,GAAC,CAAC,CAAA;AAEFU,EAAAA,sBAAc,CAAC,MAAM;AACnBZ,IAAAA,QAAQ,CAACa,UAAU,CAACjB,OAAO,EAAE,CAAC,CAAA;AAChC,GAAC,CAAC,CAAA;EAEFgB,sBAAc,CACZE,UAAE,CACA,MAAMP,KAAK,CAACQ,MAAM,EAClB,MAAM;AACJ,IAAA,IACER,KAAK,CAACS,OAAO,IACbC,sBAAgB,CAACjB,QAAQ,CAACJ,OAAO,CAACsB,YAAY,EAAE,CAACX,KAAK,CAACY,KAAK,CAAC,CAAC,EAC9D;MACA,MAAMZ,KAAK,CAACY,KAAK,CAAA;AACnB,KAAA;AACF,GACF,CACF,CAAC,CAAA;AAED,EAAA,MAAMC,WAAW,GAAGpB,QAAQ,CAACqB,SAAS,CAAEC,MAAM,IAAK;AACjDd,IAAAA,QAAQ,CAAC;AACP,MAAA,GAAGc,MAAM;MACTpB,MAAM;MACNS,WAAW,EAAEW,MAAM,CAACpB,MAAAA;AACtB,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;EAEFqB,iBAAS,CAACH,WAAW,CAAC,CAAA;AAEtB,EAAA,OAAOb,KAAK,CAAA;AACd,CAAA;;AAEA;AACA,SAASD,IAAIA,GAAG;;;;"}
@@ -1,4 +1,6 @@
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 type { CreateMutationOptions, CreateMutationResult } from './types';
3
4
  import type { Accessor } from 'solid-js';
4
5
  export declare function createMutation<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: CreateMutationOptions<TData, TError, TVariables, TContext>, queryClient?: Accessor<QueryClient>): CreateMutationResult<TData, TError, TVariables, TContext>;
6
+ //# sourceMappingURL=createMutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMutation.d.ts","sourceRoot":"","sources":["../../src/createMutation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EAEV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAMxC,wBAAgB,cAAc,CAC5B,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,OAAO,EAElB,OAAO,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EACnE,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAClC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAoD3D"}
@@ -0,0 +1,42 @@
1
+ import { MutationObserver } from '@tanstack/query-core';
2
+ import { useQueryClient } from './QueryClientProvider.js';
3
+ import { createComputed, on, onCleanup } from 'solid-js';
4
+ import { createStore } from 'solid-js/store';
5
+ import { shouldThrowError } from './utils.js';
6
+
7
+ // HOOK
8
+ function createMutation(options, queryClient) {
9
+ const client = useQueryClient(queryClient?.());
10
+ const observer = new MutationObserver(client, options());
11
+ const mutate = (variables, mutateOptions) => {
12
+ observer.mutate(variables, mutateOptions).catch(noop);
13
+ };
14
+ const [state, setState] = createStore({
15
+ ...observer.getCurrentResult(),
16
+ mutate,
17
+ mutateAsync: observer.getCurrentResult().mutate
18
+ });
19
+ createComputed(() => {
20
+ observer.setOptions(options());
21
+ });
22
+ createComputed(on(() => state.status, () => {
23
+ if (state.isError && shouldThrowError(observer.options.throwOnError, [state.error])) {
24
+ throw state.error;
25
+ }
26
+ }));
27
+ const unsubscribe = observer.subscribe(result => {
28
+ setState({
29
+ ...result,
30
+ mutate,
31
+ mutateAsync: result.mutate
32
+ });
33
+ });
34
+ onCleanup(unsubscribe);
35
+ return state;
36
+ }
37
+
38
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
39
+ function noop() {}
40
+
41
+ export { createMutation };
42
+ //# sourceMappingURL=createMutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMutation.js","sources":["../../src/createMutation.ts"],"sourcesContent":["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"],"names":["createMutation","options","queryClient","client","useQueryClient","observer","MutationObserver","mutate","variables","mutateOptions","catch","noop","state","setState","createStore","getCurrentResult","mutateAsync","createComputed","setOptions","on","status","isError","shouldThrowError","throwOnError","error","unsubscribe","subscribe","result","onCleanup"],"mappings":";;;;;;AAcA;AACO,SAASA,cAAcA,CAM5BC,OAAmE,EACnEC,WAAmC,EACwB;AAC3D,EAAA,MAAMC,MAAM,GAAGC,cAAc,CAACF,WAAW,IAAI,CAAC,CAAA;EAE9C,MAAMG,QAAQ,GAAG,IAAIC,gBAAgB,CACnCH,MAAM,EACNF,OAAO,EACT,CAAC,CAAA;AAED,EAAA,MAAMM,MAAiE,GAAGA,CACxEC,SAAS,EACTC,aAAa,KACV;IACHJ,QAAQ,CAACE,MAAM,CAACC,SAAS,EAAEC,aAAa,CAAC,CAACC,KAAK,CAACC,IAAI,CAAC,CAAA;GACtD,CAAA;AAED,EAAA,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,WAAW,CAEnC;AACA,IAAA,GAAGT,QAAQ,CAACU,gBAAgB,EAAE;IAC9BR,MAAM;AACNS,IAAAA,WAAW,EAAEX,QAAQ,CAACU,gBAAgB,EAAE,CAACR,MAAAA;AAC3C,GAAC,CAAC,CAAA;AAEFU,EAAAA,cAAc,CAAC,MAAM;AACnBZ,IAAAA,QAAQ,CAACa,UAAU,CAACjB,OAAO,EAAE,CAAC,CAAA;AAChC,GAAC,CAAC,CAAA;EAEFgB,cAAc,CACZE,EAAE,CACA,MAAMP,KAAK,CAACQ,MAAM,EAClB,MAAM;AACJ,IAAA,IACER,KAAK,CAACS,OAAO,IACbC,gBAAgB,CAACjB,QAAQ,CAACJ,OAAO,CAACsB,YAAY,EAAE,CAACX,KAAK,CAACY,KAAK,CAAC,CAAC,EAC9D;MACA,MAAMZ,KAAK,CAACY,KAAK,CAAA;AACnB,KAAA;AACF,GACF,CACF,CAAC,CAAA;AAED,EAAA,MAAMC,WAAW,GAAGpB,QAAQ,CAACqB,SAAS,CAAEC,MAAM,IAAK;AACjDd,IAAAA,QAAQ,CAAC;AACP,MAAA,GAAGc,MAAM;MACTpB,MAAM;MACNS,WAAW,EAAEW,MAAM,CAACpB,MAAAA;AACtB,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;EAEFqB,SAAS,CAACH,WAAW,CAAC,CAAA;AAEtB,EAAA,OAAOb,KAAK,CAAA;AACd,CAAA;;AAEA;AACA,SAASD,IAAIA,GAAG;;;;"}
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var queryCore = require('@tanstack/query-core');
4
+ var solidJs = require('solid-js');
5
+ var store = require('solid-js/store');
6
+ var QueryClientProvider = require('./QueryClientProvider.cjs');
7
+
8
+ // This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.
9
+ // `placeholderData` function does not have a parameter
10
+ // Avoid TS depth-limit error in case of large array literal
11
+ /**
12
+ * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
13
+ */
14
+ /**
15
+ * QueriesResults reducer recursively maps type param to results
16
+ */
17
+ function createQueries(queriesOptions, queryClient) {
18
+ const client = QueryClientProvider.useQueryClient(queryClient?.());
19
+ const defaultedQueries = queriesOptions().queries.map(options => {
20
+ const defaultedOptions = client.defaultQueryOptions(options);
21
+ defaultedOptions._optimisticResults = 'optimistic';
22
+ return defaultedOptions;
23
+ });
24
+ const observer = new queryCore.QueriesObserver(client, defaultedQueries, queriesOptions().combine ? {
25
+ combine: queriesOptions().combine
26
+ } : undefined);
27
+
28
+ // @ts-expect-error - Types issue with solid-js createStore
29
+ const [state, setState] = store.createStore(observer.getOptimisticResult(defaultedQueries)[1]());
30
+ const unsubscribe = observer.subscribe(result => {
31
+ queryCore.notifyManager.batchCalls(() => {
32
+ setState(store.unwrap(result));
33
+ })();
34
+ });
35
+ solidJs.onCleanup(unsubscribe);
36
+ solidJs.createComputed(() => {
37
+ const updatedQueries = queriesOptions().queries.map(options => {
38
+ const defaultedOptions = client.defaultQueryOptions(options);
39
+ defaultedOptions._optimisticResults = 'optimistic';
40
+ return defaultedOptions;
41
+ });
42
+ observer.setQueries(updatedQueries, queriesOptions().combine ? {
43
+ combine: queriesOptions().combine
44
+ } : undefined, {
45
+ listeners: false
46
+ });
47
+ });
48
+ return state;
49
+ }
50
+
51
+ exports.createQueries = createQueries;
52
+ //# sourceMappingURL=createQueries.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createQueries.cjs","sources":["../../src/createQueries.ts"],"sourcesContent":["import type {\n QueriesPlaceholderDataFunction,\n QueryFunction,\n QueryKey,\n DefaultError,\n QueriesObserverOptions,\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 } 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<\n T extends any[],\n TCombinedResult = QueriesResults<T>,\n>(\n queriesOptions: Accessor<{\n queries: readonly [...QueriesOptions<T>]\n combine?: (result: QueriesResults<T>) => TCombinedResult\n }>,\n queryClient?: Accessor<QueryClient>,\n): TCombinedResult {\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(\n client,\n defaultedQueries,\n queriesOptions().combine\n ? ({\n combine: queriesOptions().combine,\n } as QueriesObserverOptions<TCombinedResult>)\n : undefined,\n )\n\n // @ts-expect-error - Types issue with solid-js createStore\n const [state, setState] = createStore<TCombinedResult>(\n observer.getOptimisticResult(defaultedQueries)[1](),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n setState(unwrap(result) as unknown as TCombinedResult)\n })()\n })\n\n onCleanup(unsubscribe)\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(\n updatedQueries,\n queriesOptions().combine\n ? ({\n combine: queriesOptions().combine,\n } as QueriesObserverOptions<TCombinedResult>)\n : undefined,\n { listeners: false },\n )\n })\n\n return state\n}\n"],"names":["createQueries","queriesOptions","queryClient","client","useQueryClient","defaultedQueries","queries","map","options","defaultedOptions","defaultQueryOptions","_optimisticResults","observer","QueriesObserver","combine","undefined","state","setState","createStore","getOptimisticResult","unsubscribe","subscribe","result","notifyManager","batchCalls","unwrap","onCleanup","createComputed","updatedQueries","setQueries","listeners"],"mappings":";;;;;;;AAeA;AACA;AAaA;AAgEA;AACA;AACA;AA2BA;AACA;AACA;AA2BO,SAASA,aAAaA,CAI3BC,cAGE,EACFC,WAAmC,EAClB;AACjB,EAAA,MAAMC,MAAM,GAAGC,kCAAc,CAACF,WAAW,IAAI,CAAC,CAAA;EAE9C,MAAMG,gBAAgB,GAAGJ,cAAc,EAAE,CAACK,OAAO,CAACC,GAAG,CAAEC,OAAO,IAAK;AACjE,IAAA,MAAMC,gBAAgB,GAAGN,MAAM,CAACO,mBAAmB,CAACF,OAAO,CAAC,CAAA;IAC5DC,gBAAgB,CAACE,kBAAkB,GAAG,YAAY,CAAA;AAClD,IAAA,OAAOF,gBAAgB,CAAA;AACzB,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMG,QAAQ,GAAG,IAAIC,yBAAe,CAClCV,MAAM,EACNE,gBAAgB,EAChBJ,cAAc,EAAE,CAACa,OAAO,GACnB;AACCA,IAAAA,OAAO,EAAEb,cAAc,EAAE,CAACa,OAAAA;GAC3B,GACDC,SACN,CAAC,CAAA;;AAED;AACA,EAAA,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,iBAAW,CACnCN,QAAQ,CAACO,mBAAmB,CAACd,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC,CAAA;AAED,EAAA,MAAMe,WAAW,GAAGR,QAAQ,CAACS,SAAS,CAAEC,MAAM,IAAK;IACjDC,uBAAa,CAACC,UAAU,CAAC,MAAM;AAC7BP,MAAAA,QAAQ,CAACQ,YAAM,CAACH,MAAM,CAA+B,CAAC,CAAA;KACvD,CAAC,EAAE,CAAA;AACN,GAAC,CAAC,CAAA;EAEFI,iBAAS,CAACN,WAAW,CAAC,CAAA;AAEtBO,EAAAA,sBAAc,CAAC,MAAM;IACnB,MAAMC,cAAc,GAAG3B,cAAc,EAAE,CAACK,OAAO,CAACC,GAAG,CAAEC,OAAO,IAAK;AAC/D,MAAA,MAAMC,gBAAgB,GAAGN,MAAM,CAACO,mBAAmB,CAACF,OAAO,CAAC,CAAA;MAC5DC,gBAAgB,CAACE,kBAAkB,GAAG,YAAY,CAAA;AAClD,MAAA,OAAOF,gBAAgB,CAAA;AACzB,KAAC,CAAC,CAAA;IACFG,QAAQ,CAACiB,UAAU,CACjBD,cAAc,EACd3B,cAAc,EAAE,CAACa,OAAO,GACnB;AACCA,MAAAA,OAAO,EAAEb,cAAc,EAAE,CAACa,OAAAA;KAC3B,GACDC,SAAS,EACb;AAAEe,MAAAA,SAAS,EAAE,KAAA;AAAM,KACrB,CAAC,CAAA;AACH,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOd,KAAK,CAAA;AACd;;;;"}
@@ -1,11 +1,12 @@
1
- import type { QueriesPlaceholderDataFunction, QueryClient, QueryFunction, QueryKey, DefaultError } from '@tanstack/query-core';
1
+ import type { QueriesPlaceholderDataFunction, QueryFunction, QueryKey, DefaultError } from '@tanstack/query-core';
2
+ import type { QueryClient } from './QueryClient';
2
3
  import type { Accessor } from 'solid-js';
3
4
  import type { CreateQueryResult, SolidQueryOptions } from './types';
4
- declare type CreateQueryOptionsForCreateQueries<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = Omit<SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'placeholderData'> & {
5
+ type CreateQueryOptionsForCreateQueries<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = Omit<SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'placeholderData'> & {
5
6
  placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
6
7
  };
7
- declare type MAXIMUM_DEPTH = 20;
8
- declare type GetOptions<T> = T extends {
8
+ type MAXIMUM_DEPTH = 20;
9
+ type GetOptions<T> = T extends {
9
10
  queryFnData: infer TQueryFnData;
10
11
  error?: infer TError;
11
12
  data: infer TData;
@@ -21,7 +22,7 @@ declare type GetOptions<T> = T extends {
21
22
  } ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey> : T extends {
22
23
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
23
24
  } ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TQueryFnData, TQueryKey> : CreateQueryOptionsForCreateQueries;
24
- declare type GetResults<T> = T extends {
25
+ type GetResults<T> = T extends {
25
26
  queryFnData: any;
26
27
  error?: infer TError;
27
28
  data: infer TData;
@@ -40,12 +41,14 @@ declare type GetResults<T> = T extends {
40
41
  /**
41
42
  * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
42
43
  */
43
- export declare type QueriesOptions<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? CreateQueryOptionsForCreateQueries[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]> : unknown[] extends T ? T : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>[] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[] : CreateQueryOptionsForCreateQueries[];
44
+ export type QueriesOptions<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? CreateQueryOptionsForCreateQueries[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]> : unknown[] extends T ? T : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>[] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[] : CreateQueryOptionsForCreateQueries[];
44
45
  /**
45
46
  * QueriesResults reducer recursively maps type param to results
46
47
  */
47
- export declare type QueriesResults<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? CreateQueryResult[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]> : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, any>[] ? CreateQueryResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError>[] : CreateQueryResult[];
48
- export declare function createQueries<T extends any[]>(queriesOptions: Accessor<{
48
+ export type QueriesResults<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? CreateQueryResult[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]> : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, any>[] ? CreateQueryResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError>[] : CreateQueryResult[];
49
+ export declare function createQueries<T extends any[], TCombinedResult = QueriesResults<T>>(queriesOptions: Accessor<{
49
50
  queries: readonly [...QueriesOptions<T>];
50
- }>, queryClient?: Accessor<QueryClient>): QueriesResults<T>;
51
+ combine?: (result: QueriesResults<T>) => TCombinedResult;
52
+ }>, queryClient?: Accessor<QueryClient>): TCombinedResult;
51
53
  export {};
54
+ //# sourceMappingURL=createQueries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createQueries.d.ts","sourceRoot":"","sources":["../../src/createQueries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { QueriesObserver, notifyManager } from '@tanstack/query-core';
2
+ import { onCleanup, createComputed } from 'solid-js';
3
+ import { createStore, unwrap } from 'solid-js/store';
4
+ import { useQueryClient } from './QueryClientProvider.js';
5
+
6
+ // This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.
7
+ // `placeholderData` function does not have a parameter
8
+ // Avoid TS depth-limit error in case of large array literal
9
+ /**
10
+ * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
11
+ */
12
+ /**
13
+ * QueriesResults reducer recursively maps type param to results
14
+ */
15
+ function createQueries(queriesOptions, queryClient) {
16
+ const client = useQueryClient(queryClient?.());
17
+ const defaultedQueries = queriesOptions().queries.map(options => {
18
+ const defaultedOptions = client.defaultQueryOptions(options);
19
+ defaultedOptions._optimisticResults = 'optimistic';
20
+ return defaultedOptions;
21
+ });
22
+ const observer = new QueriesObserver(client, defaultedQueries, queriesOptions().combine ? {
23
+ combine: queriesOptions().combine
24
+ } : undefined);
25
+
26
+ // @ts-expect-error - Types issue with solid-js createStore
27
+ const [state, setState] = createStore(observer.getOptimisticResult(defaultedQueries)[1]());
28
+ const unsubscribe = observer.subscribe(result => {
29
+ notifyManager.batchCalls(() => {
30
+ setState(unwrap(result));
31
+ })();
32
+ });
33
+ onCleanup(unsubscribe);
34
+ createComputed(() => {
35
+ const updatedQueries = queriesOptions().queries.map(options => {
36
+ const defaultedOptions = client.defaultQueryOptions(options);
37
+ defaultedOptions._optimisticResults = 'optimistic';
38
+ return defaultedOptions;
39
+ });
40
+ observer.setQueries(updatedQueries, queriesOptions().combine ? {
41
+ combine: queriesOptions().combine
42
+ } : undefined, {
43
+ listeners: false
44
+ });
45
+ });
46
+ return state;
47
+ }
48
+
49
+ export { createQueries };
50
+ //# sourceMappingURL=createQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createQueries.js","sources":["../../src/createQueries.ts"],"sourcesContent":["import type {\n QueriesPlaceholderDataFunction,\n QueryFunction,\n QueryKey,\n DefaultError,\n QueriesObserverOptions,\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 } 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<\n T extends any[],\n TCombinedResult = QueriesResults<T>,\n>(\n queriesOptions: Accessor<{\n queries: readonly [...QueriesOptions<T>]\n combine?: (result: QueriesResults<T>) => TCombinedResult\n }>,\n queryClient?: Accessor<QueryClient>,\n): TCombinedResult {\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(\n client,\n defaultedQueries,\n queriesOptions().combine\n ? ({\n combine: queriesOptions().combine,\n } as QueriesObserverOptions<TCombinedResult>)\n : undefined,\n )\n\n // @ts-expect-error - Types issue with solid-js createStore\n const [state, setState] = createStore<TCombinedResult>(\n observer.getOptimisticResult(defaultedQueries)[1](),\n )\n\n const unsubscribe = observer.subscribe((result) => {\n notifyManager.batchCalls(() => {\n setState(unwrap(result) as unknown as TCombinedResult)\n })()\n })\n\n onCleanup(unsubscribe)\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(\n updatedQueries,\n queriesOptions().combine\n ? ({\n combine: queriesOptions().combine,\n } as QueriesObserverOptions<TCombinedResult>)\n : undefined,\n { listeners: false },\n )\n })\n\n return state\n}\n"],"names":["createQueries","queriesOptions","queryClient","client","useQueryClient","defaultedQueries","queries","map","options","defaultedOptions","defaultQueryOptions","_optimisticResults","observer","QueriesObserver","combine","undefined","state","setState","createStore","getOptimisticResult","unsubscribe","subscribe","result","notifyManager","batchCalls","unwrap","onCleanup","createComputed","updatedQueries","setQueries","listeners"],"mappings":";;;;;AAeA;AACA;AAaA;AAgEA;AACA;AACA;AA2BA;AACA;AACA;AA2BO,SAASA,aAAaA,CAI3BC,cAGE,EACFC,WAAmC,EAClB;AACjB,EAAA,MAAMC,MAAM,GAAGC,cAAc,CAACF,WAAW,IAAI,CAAC,CAAA;EAE9C,MAAMG,gBAAgB,GAAGJ,cAAc,EAAE,CAACK,OAAO,CAACC,GAAG,CAAEC,OAAO,IAAK;AACjE,IAAA,MAAMC,gBAAgB,GAAGN,MAAM,CAACO,mBAAmB,CAACF,OAAO,CAAC,CAAA;IAC5DC,gBAAgB,CAACE,kBAAkB,GAAG,YAAY,CAAA;AAClD,IAAA,OAAOF,gBAAgB,CAAA;AACzB,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMG,QAAQ,GAAG,IAAIC,eAAe,CAClCV,MAAM,EACNE,gBAAgB,EAChBJ,cAAc,EAAE,CAACa,OAAO,GACnB;AACCA,IAAAA,OAAO,EAAEb,cAAc,EAAE,CAACa,OAAAA;GAC3B,GACDC,SACN,CAAC,CAAA;;AAED;AACA,EAAA,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,WAAW,CACnCN,QAAQ,CAACO,mBAAmB,CAACd,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC,CAAA;AAED,EAAA,MAAMe,WAAW,GAAGR,QAAQ,CAACS,SAAS,CAAEC,MAAM,IAAK;IACjDC,aAAa,CAACC,UAAU,CAAC,MAAM;AAC7BP,MAAAA,QAAQ,CAACQ,MAAM,CAACH,MAAM,CAA+B,CAAC,CAAA;KACvD,CAAC,EAAE,CAAA;AACN,GAAC,CAAC,CAAA;EAEFI,SAAS,CAACN,WAAW,CAAC,CAAA;AAEtBO,EAAAA,cAAc,CAAC,MAAM;IACnB,MAAMC,cAAc,GAAG3B,cAAc,EAAE,CAACK,OAAO,CAACC,GAAG,CAAEC,OAAO,IAAK;AAC/D,MAAA,MAAMC,gBAAgB,GAAGN,MAAM,CAACO,mBAAmB,CAACF,OAAO,CAAC,CAAA;MAC5DC,gBAAgB,CAACE,kBAAkB,GAAG,YAAY,CAAA;AAClD,MAAA,OAAOF,gBAAgB,CAAA;AACzB,KAAC,CAAC,CAAA;IACFG,QAAQ,CAACiB,UAAU,CACjBD,cAAc,EACd3B,cAAc,EAAE,CAACa,OAAO,GACnB;AACCA,MAAAA,OAAO,EAAEb,cAAc,EAAE,CAACa,OAAAA;KAC3B,GACDC,SAAS,EACb;AAAEe,MAAAA,SAAS,EAAE,KAAA;AAAM,KACrB,CAAC,CAAA;AACH,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOd,KAAK,CAAA;AACd;;;;"}