@tanstack/solid-query 5.24.1 → 5.24.2
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.
- package/build/dev.cjs +51 -42
- package/build/dev.js +52 -43
- package/build/index.cjs +51 -42
- package/build/index.js +52 -43
- package/package.json +4 -3
- package/src/createBaseQuery.ts +54 -50
- package/src/createMutation.ts +1 -3
- package/src/utils.ts +2 -0
package/build/dev.cjs
CHANGED
|
@@ -45,6 +45,8 @@ function shouldThrowError(throwError, params) {
|
|
|
45
45
|
}
|
|
46
46
|
return !!throwError;
|
|
47
47
|
}
|
|
48
|
+
function noop() {
|
|
49
|
+
}
|
|
48
50
|
var IsRestoringContext = solidJs.createContext(() => false);
|
|
49
51
|
exports.useIsRestoring = () => solidJs.useContext(IsRestoringContext);
|
|
50
52
|
exports.IsRestoringProvider = IsRestoringContext.Provider;
|
|
@@ -86,22 +88,18 @@ var hydratableObserverResult = (query, result) => {
|
|
|
86
88
|
function createBaseQuery(options, Observer, queryClient) {
|
|
87
89
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
88
90
|
const isRestoring = exports.useIsRestoring();
|
|
89
|
-
const defaultedOptions = solidJs.createMemo(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
91
|
+
const defaultedOptions = solidJs.createMemo(() => {
|
|
92
|
+
const defaultOptions = client().defaultQueryOptions(options());
|
|
93
|
+
defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
|
|
94
|
+
defaultOptions.structuralSharing = false;
|
|
95
|
+
if (web.isServer) {
|
|
96
|
+
defaultOptions.retry = false;
|
|
97
|
+
defaultOptions.throwOnError = true;
|
|
98
|
+
}
|
|
99
|
+
return defaultOptions;
|
|
100
|
+
});
|
|
98
101
|
const [observer, setObserver] = solidJs.createSignal(
|
|
99
|
-
new Observer(client(),
|
|
100
|
-
);
|
|
101
|
-
solidJs.createComputed(
|
|
102
|
-
solidJs.on(client, (c) => setObserver(new Observer(c, defaultedOptions())), {
|
|
103
|
-
defer: true
|
|
104
|
-
})
|
|
102
|
+
new Observer(client(), defaultedOptions())
|
|
105
103
|
);
|
|
106
104
|
const [state, setState] = store.createStore(
|
|
107
105
|
observer().getOptimisticResult(defaultedOptions())
|
|
@@ -124,17 +122,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
124
122
|
return obs.subscribe((result) => {
|
|
125
123
|
queryCore.notifyManager.batchCalls(() => {
|
|
126
124
|
const reconcileOptions = obs.options.reconcile;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
125
|
+
if (queryResource()?.data && result.data && !queryResource.loading) {
|
|
126
|
+
setState((store) => {
|
|
127
|
+
return reconcileFn(
|
|
128
|
+
store,
|
|
129
|
+
result,
|
|
130
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
131
|
+
);
|
|
132
|
+
});
|
|
135
133
|
mutate(state);
|
|
136
|
-
else
|
|
134
|
+
} else {
|
|
135
|
+
setState((store) => {
|
|
136
|
+
return reconcileFn(
|
|
137
|
+
store,
|
|
138
|
+
result,
|
|
139
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
140
|
+
);
|
|
141
|
+
});
|
|
137
142
|
refetch();
|
|
143
|
+
}
|
|
138
144
|
})();
|
|
139
145
|
});
|
|
140
146
|
};
|
|
@@ -143,12 +149,13 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
143
149
|
() => {
|
|
144
150
|
const obs = observer();
|
|
145
151
|
return new Promise((resolve, reject) => {
|
|
146
|
-
if (web.isServer)
|
|
152
|
+
if (web.isServer) {
|
|
147
153
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
148
|
-
else if (!unsubscribe && !isRestoring())
|
|
154
|
+
} else if (!unsubscribe && !isRestoring()) {
|
|
149
155
|
unsubscribe = createClientSubscriber();
|
|
156
|
+
}
|
|
150
157
|
obs.updateResult();
|
|
151
|
-
if (!state.isLoading
|
|
158
|
+
if (!state.isLoading) {
|
|
152
159
|
const query = obs.getCurrentQuery();
|
|
153
160
|
resolve(hydratableObserverResult(query, state));
|
|
154
161
|
}
|
|
@@ -198,17 +205,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
198
205
|
);
|
|
199
206
|
solidJs.createComputed(
|
|
200
207
|
solidJs.on(
|
|
201
|
-
|
|
202
|
-
(
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
+
client,
|
|
209
|
+
(c) => {
|
|
210
|
+
if (unsubscribe) {
|
|
211
|
+
unsubscribe();
|
|
212
|
+
}
|
|
213
|
+
const newObserver = new Observer(c, defaultedOptions());
|
|
214
|
+
unsubscribe = createClientSubscriber();
|
|
215
|
+
setObserver(newObserver);
|
|
208
216
|
},
|
|
209
|
-
{
|
|
217
|
+
{
|
|
218
|
+
defer: true
|
|
219
|
+
}
|
|
210
220
|
)
|
|
211
221
|
);
|
|
222
|
+
solidJs.createComputed(() => {
|
|
223
|
+
if (!isRestoring()) {
|
|
224
|
+
refetch();
|
|
225
|
+
}
|
|
226
|
+
});
|
|
212
227
|
solidJs.onCleanup(() => {
|
|
213
228
|
if (unsubscribe) {
|
|
214
229
|
unsubscribe();
|
|
@@ -222,11 +237,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
222
237
|
obs.setOptions(opts);
|
|
223
238
|
setState(obs.getOptimisticResult(opts));
|
|
224
239
|
},
|
|
225
|
-
{
|
|
226
|
-
// Defer because we don't need to trigger on first render
|
|
227
|
-
// This only cares about changes to options after the observer is created
|
|
228
|
-
defer: true
|
|
229
|
-
}
|
|
240
|
+
{ defer: true }
|
|
230
241
|
)
|
|
231
242
|
);
|
|
232
243
|
solidJs.createComputed(
|
|
@@ -317,8 +328,6 @@ function createMutation(options, queryClient) {
|
|
|
317
328
|
solidJs.onCleanup(unsubscribe);
|
|
318
329
|
return state;
|
|
319
330
|
}
|
|
320
|
-
function noop() {
|
|
321
|
-
}
|
|
322
331
|
function useIsMutating(filters, queryClient) {
|
|
323
332
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
324
333
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
package/build/dev.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { notifyManager, QueryClient as QueryClient$1, MutationObserver, replaceEqualDeep, QueriesObserver, hydrate, QueryObserver, InfiniteQueryObserver } from '@tanstack/query-core';
|
|
2
2
|
export * from '@tanstack/query-core';
|
|
3
|
-
import { batch, createContext, useContext, createRenderEffect, onCleanup, createMemo, createSignal, createComputed, on, createEffect, mergeProps, createResource, onMount
|
|
3
|
+
import { batch, createContext, useContext, createRenderEffect, onCleanup, createMemo, createSignal, createComputed, on, createEffect, mergeProps, createResource, onMount } from 'solid-js';
|
|
4
4
|
import { createComponent, isServer } from 'solid-js/web';
|
|
5
5
|
import { createStore, unwrap, reconcile } from 'solid-js/store';
|
|
6
6
|
|
|
@@ -44,6 +44,8 @@ function shouldThrowError(throwError, params) {
|
|
|
44
44
|
}
|
|
45
45
|
return !!throwError;
|
|
46
46
|
}
|
|
47
|
+
function noop() {
|
|
48
|
+
}
|
|
47
49
|
var IsRestoringContext = createContext(() => false);
|
|
48
50
|
var useIsRestoring = () => useContext(IsRestoringContext);
|
|
49
51
|
var IsRestoringProvider = IsRestoringContext.Provider;
|
|
@@ -85,22 +87,18 @@ var hydratableObserverResult = (query, result) => {
|
|
|
85
87
|
function createBaseQuery(options, Observer, queryClient) {
|
|
86
88
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
87
89
|
const isRestoring = useIsRestoring();
|
|
88
|
-
const defaultedOptions = createMemo(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
90
|
+
const defaultedOptions = createMemo(() => {
|
|
91
|
+
const defaultOptions = client().defaultQueryOptions(options());
|
|
92
|
+
defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
|
|
93
|
+
defaultOptions.structuralSharing = false;
|
|
94
|
+
if (isServer) {
|
|
95
|
+
defaultOptions.retry = false;
|
|
96
|
+
defaultOptions.throwOnError = true;
|
|
97
|
+
}
|
|
98
|
+
return defaultOptions;
|
|
99
|
+
});
|
|
97
100
|
const [observer, setObserver] = createSignal(
|
|
98
|
-
new Observer(client(),
|
|
99
|
-
);
|
|
100
|
-
createComputed(
|
|
101
|
-
on(client, (c) => setObserver(new Observer(c, defaultedOptions())), {
|
|
102
|
-
defer: true
|
|
103
|
-
})
|
|
101
|
+
new Observer(client(), defaultedOptions())
|
|
104
102
|
);
|
|
105
103
|
const [state, setState] = createStore(
|
|
106
104
|
observer().getOptimisticResult(defaultedOptions())
|
|
@@ -123,17 +121,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
123
121
|
return obs.subscribe((result) => {
|
|
124
122
|
notifyManager.batchCalls(() => {
|
|
125
123
|
const reconcileOptions = obs.options.reconcile;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
124
|
+
if (queryResource()?.data && result.data && !queryResource.loading) {
|
|
125
|
+
setState((store) => {
|
|
126
|
+
return reconcileFn(
|
|
127
|
+
store,
|
|
128
|
+
result,
|
|
129
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
130
|
+
);
|
|
131
|
+
});
|
|
134
132
|
mutate(state);
|
|
135
|
-
else
|
|
133
|
+
} else {
|
|
134
|
+
setState((store) => {
|
|
135
|
+
return reconcileFn(
|
|
136
|
+
store,
|
|
137
|
+
result,
|
|
138
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
139
|
+
);
|
|
140
|
+
});
|
|
136
141
|
refetch();
|
|
142
|
+
}
|
|
137
143
|
})();
|
|
138
144
|
});
|
|
139
145
|
};
|
|
@@ -142,12 +148,13 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
142
148
|
() => {
|
|
143
149
|
const obs = observer();
|
|
144
150
|
return new Promise((resolve, reject) => {
|
|
145
|
-
if (isServer)
|
|
151
|
+
if (isServer) {
|
|
146
152
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
147
|
-
else if (!unsubscribe && !isRestoring())
|
|
153
|
+
} else if (!unsubscribe && !isRestoring()) {
|
|
148
154
|
unsubscribe = createClientSubscriber();
|
|
155
|
+
}
|
|
149
156
|
obs.updateResult();
|
|
150
|
-
if (!state.isLoading
|
|
157
|
+
if (!state.isLoading) {
|
|
151
158
|
const query = obs.getCurrentQuery();
|
|
152
159
|
resolve(hydratableObserverResult(query, state));
|
|
153
160
|
}
|
|
@@ -197,17 +204,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
197
204
|
);
|
|
198
205
|
createComputed(
|
|
199
206
|
on(
|
|
200
|
-
|
|
201
|
-
(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
+
client,
|
|
208
|
+
(c) => {
|
|
209
|
+
if (unsubscribe) {
|
|
210
|
+
unsubscribe();
|
|
211
|
+
}
|
|
212
|
+
const newObserver = new Observer(c, defaultedOptions());
|
|
213
|
+
unsubscribe = createClientSubscriber();
|
|
214
|
+
setObserver(newObserver);
|
|
207
215
|
},
|
|
208
|
-
{
|
|
216
|
+
{
|
|
217
|
+
defer: true
|
|
218
|
+
}
|
|
209
219
|
)
|
|
210
220
|
);
|
|
221
|
+
createComputed(() => {
|
|
222
|
+
if (!isRestoring()) {
|
|
223
|
+
refetch();
|
|
224
|
+
}
|
|
225
|
+
});
|
|
211
226
|
onCleanup(() => {
|
|
212
227
|
if (unsubscribe) {
|
|
213
228
|
unsubscribe();
|
|
@@ -221,11 +236,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
221
236
|
obs.setOptions(opts);
|
|
222
237
|
setState(obs.getOptimisticResult(opts));
|
|
223
238
|
},
|
|
224
|
-
{
|
|
225
|
-
// Defer because we don't need to trigger on first render
|
|
226
|
-
// This only cares about changes to options after the observer is created
|
|
227
|
-
defer: true
|
|
228
|
-
}
|
|
239
|
+
{ defer: true }
|
|
229
240
|
)
|
|
230
241
|
);
|
|
231
242
|
createComputed(
|
|
@@ -316,8 +327,6 @@ function createMutation(options, queryClient) {
|
|
|
316
327
|
onCleanup(unsubscribe);
|
|
317
328
|
return state;
|
|
318
329
|
}
|
|
319
|
-
function noop() {
|
|
320
|
-
}
|
|
321
330
|
function useIsMutating(filters, queryClient) {
|
|
322
331
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
323
332
|
const mutationCache = createMemo(() => client().getMutationCache());
|
package/build/index.cjs
CHANGED
|
@@ -45,6 +45,8 @@ function shouldThrowError(throwError, params) {
|
|
|
45
45
|
}
|
|
46
46
|
return !!throwError;
|
|
47
47
|
}
|
|
48
|
+
function noop() {
|
|
49
|
+
}
|
|
48
50
|
var IsRestoringContext = solidJs.createContext(() => false);
|
|
49
51
|
exports.useIsRestoring = () => solidJs.useContext(IsRestoringContext);
|
|
50
52
|
exports.IsRestoringProvider = IsRestoringContext.Provider;
|
|
@@ -86,22 +88,18 @@ var hydratableObserverResult = (query, result) => {
|
|
|
86
88
|
function createBaseQuery(options, Observer, queryClient) {
|
|
87
89
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
88
90
|
const isRestoring = exports.useIsRestoring();
|
|
89
|
-
const defaultedOptions = solidJs.createMemo(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
91
|
+
const defaultedOptions = solidJs.createMemo(() => {
|
|
92
|
+
const defaultOptions = client().defaultQueryOptions(options());
|
|
93
|
+
defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
|
|
94
|
+
defaultOptions.structuralSharing = false;
|
|
95
|
+
if (web.isServer) {
|
|
96
|
+
defaultOptions.retry = false;
|
|
97
|
+
defaultOptions.throwOnError = true;
|
|
98
|
+
}
|
|
99
|
+
return defaultOptions;
|
|
100
|
+
});
|
|
98
101
|
const [observer, setObserver] = solidJs.createSignal(
|
|
99
|
-
new Observer(client(),
|
|
100
|
-
);
|
|
101
|
-
solidJs.createComputed(
|
|
102
|
-
solidJs.on(client, (c) => setObserver(new Observer(c, defaultedOptions())), {
|
|
103
|
-
defer: true
|
|
104
|
-
})
|
|
102
|
+
new Observer(client(), defaultedOptions())
|
|
105
103
|
);
|
|
106
104
|
const [state, setState] = store.createStore(
|
|
107
105
|
observer().getOptimisticResult(defaultedOptions())
|
|
@@ -124,17 +122,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
124
122
|
return obs.subscribe((result) => {
|
|
125
123
|
queryCore.notifyManager.batchCalls(() => {
|
|
126
124
|
const reconcileOptions = obs.options.reconcile;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
125
|
+
if (queryResource()?.data && result.data && !queryResource.loading) {
|
|
126
|
+
setState((store) => {
|
|
127
|
+
return reconcileFn(
|
|
128
|
+
store,
|
|
129
|
+
result,
|
|
130
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
131
|
+
);
|
|
132
|
+
});
|
|
135
133
|
mutate(state);
|
|
136
|
-
else
|
|
134
|
+
} else {
|
|
135
|
+
setState((store) => {
|
|
136
|
+
return reconcileFn(
|
|
137
|
+
store,
|
|
138
|
+
result,
|
|
139
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
140
|
+
);
|
|
141
|
+
});
|
|
137
142
|
refetch();
|
|
143
|
+
}
|
|
138
144
|
})();
|
|
139
145
|
});
|
|
140
146
|
};
|
|
@@ -143,12 +149,13 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
143
149
|
() => {
|
|
144
150
|
const obs = observer();
|
|
145
151
|
return new Promise((resolve, reject) => {
|
|
146
|
-
if (web.isServer)
|
|
152
|
+
if (web.isServer) {
|
|
147
153
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
148
|
-
else if (!unsubscribe && !isRestoring())
|
|
154
|
+
} else if (!unsubscribe && !isRestoring()) {
|
|
149
155
|
unsubscribe = createClientSubscriber();
|
|
156
|
+
}
|
|
150
157
|
obs.updateResult();
|
|
151
|
-
if (!state.isLoading
|
|
158
|
+
if (!state.isLoading) {
|
|
152
159
|
const query = obs.getCurrentQuery();
|
|
153
160
|
resolve(hydratableObserverResult(query, state));
|
|
154
161
|
}
|
|
@@ -198,17 +205,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
198
205
|
);
|
|
199
206
|
solidJs.createComputed(
|
|
200
207
|
solidJs.on(
|
|
201
|
-
|
|
202
|
-
(
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
+
client,
|
|
209
|
+
(c) => {
|
|
210
|
+
if (unsubscribe) {
|
|
211
|
+
unsubscribe();
|
|
212
|
+
}
|
|
213
|
+
const newObserver = new Observer(c, defaultedOptions());
|
|
214
|
+
unsubscribe = createClientSubscriber();
|
|
215
|
+
setObserver(newObserver);
|
|
208
216
|
},
|
|
209
|
-
{
|
|
217
|
+
{
|
|
218
|
+
defer: true
|
|
219
|
+
}
|
|
210
220
|
)
|
|
211
221
|
);
|
|
222
|
+
solidJs.createComputed(() => {
|
|
223
|
+
if (!isRestoring()) {
|
|
224
|
+
refetch();
|
|
225
|
+
}
|
|
226
|
+
});
|
|
212
227
|
solidJs.onCleanup(() => {
|
|
213
228
|
if (unsubscribe) {
|
|
214
229
|
unsubscribe();
|
|
@@ -222,11 +237,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
222
237
|
obs.setOptions(opts);
|
|
223
238
|
setState(obs.getOptimisticResult(opts));
|
|
224
239
|
},
|
|
225
|
-
{
|
|
226
|
-
// Defer because we don't need to trigger on first render
|
|
227
|
-
// This only cares about changes to options after the observer is created
|
|
228
|
-
defer: true
|
|
229
|
-
}
|
|
240
|
+
{ defer: true }
|
|
230
241
|
)
|
|
231
242
|
);
|
|
232
243
|
solidJs.createComputed(
|
|
@@ -317,8 +328,6 @@ function createMutation(options, queryClient) {
|
|
|
317
328
|
solidJs.onCleanup(unsubscribe);
|
|
318
329
|
return state;
|
|
319
330
|
}
|
|
320
|
-
function noop() {
|
|
321
|
-
}
|
|
322
331
|
function useIsMutating(filters, queryClient) {
|
|
323
332
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
324
333
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { notifyManager, QueryClient as QueryClient$1, MutationObserver, replaceEqualDeep, QueriesObserver, hydrate, QueryObserver, InfiniteQueryObserver } from '@tanstack/query-core';
|
|
2
2
|
export * from '@tanstack/query-core';
|
|
3
|
-
import { batch, createContext, useContext, createRenderEffect, onCleanup, createMemo, createSignal, createComputed, on, createEffect, mergeProps, createResource, onMount
|
|
3
|
+
import { batch, createContext, useContext, createRenderEffect, onCleanup, createMemo, createSignal, createComputed, on, createEffect, mergeProps, createResource, onMount } from 'solid-js';
|
|
4
4
|
import { createComponent, isServer } from 'solid-js/web';
|
|
5
5
|
import { createStore, unwrap, reconcile } from 'solid-js/store';
|
|
6
6
|
|
|
@@ -44,6 +44,8 @@ function shouldThrowError(throwError, params) {
|
|
|
44
44
|
}
|
|
45
45
|
return !!throwError;
|
|
46
46
|
}
|
|
47
|
+
function noop() {
|
|
48
|
+
}
|
|
47
49
|
var IsRestoringContext = createContext(() => false);
|
|
48
50
|
var useIsRestoring = () => useContext(IsRestoringContext);
|
|
49
51
|
var IsRestoringProvider = IsRestoringContext.Provider;
|
|
@@ -85,22 +87,18 @@ var hydratableObserverResult = (query, result) => {
|
|
|
85
87
|
function createBaseQuery(options, Observer, queryClient) {
|
|
86
88
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
87
89
|
const isRestoring = useIsRestoring();
|
|
88
|
-
const defaultedOptions = createMemo(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
90
|
+
const defaultedOptions = createMemo(() => {
|
|
91
|
+
const defaultOptions = client().defaultQueryOptions(options());
|
|
92
|
+
defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
|
|
93
|
+
defaultOptions.structuralSharing = false;
|
|
94
|
+
if (isServer) {
|
|
95
|
+
defaultOptions.retry = false;
|
|
96
|
+
defaultOptions.throwOnError = true;
|
|
97
|
+
}
|
|
98
|
+
return defaultOptions;
|
|
99
|
+
});
|
|
97
100
|
const [observer, setObserver] = createSignal(
|
|
98
|
-
new Observer(client(),
|
|
99
|
-
);
|
|
100
|
-
createComputed(
|
|
101
|
-
on(client, (c) => setObserver(new Observer(c, defaultedOptions())), {
|
|
102
|
-
defer: true
|
|
103
|
-
})
|
|
101
|
+
new Observer(client(), defaultedOptions())
|
|
104
102
|
);
|
|
105
103
|
const [state, setState] = createStore(
|
|
106
104
|
observer().getOptimisticResult(defaultedOptions())
|
|
@@ -123,17 +121,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
123
121
|
return obs.subscribe((result) => {
|
|
124
122
|
notifyManager.batchCalls(() => {
|
|
125
123
|
const reconcileOptions = obs.options.reconcile;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
124
|
+
if (queryResource()?.data && result.data && !queryResource.loading) {
|
|
125
|
+
setState((store) => {
|
|
126
|
+
return reconcileFn(
|
|
127
|
+
store,
|
|
128
|
+
result,
|
|
129
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
130
|
+
);
|
|
131
|
+
});
|
|
134
132
|
mutate(state);
|
|
135
|
-
else
|
|
133
|
+
} else {
|
|
134
|
+
setState((store) => {
|
|
135
|
+
return reconcileFn(
|
|
136
|
+
store,
|
|
137
|
+
result,
|
|
138
|
+
reconcileOptions === void 0 ? false : reconcileOptions
|
|
139
|
+
);
|
|
140
|
+
});
|
|
136
141
|
refetch();
|
|
142
|
+
}
|
|
137
143
|
})();
|
|
138
144
|
});
|
|
139
145
|
};
|
|
@@ -142,12 +148,13 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
142
148
|
() => {
|
|
143
149
|
const obs = observer();
|
|
144
150
|
return new Promise((resolve, reject) => {
|
|
145
|
-
if (isServer)
|
|
151
|
+
if (isServer) {
|
|
146
152
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
147
|
-
else if (!unsubscribe && !isRestoring())
|
|
153
|
+
} else if (!unsubscribe && !isRestoring()) {
|
|
148
154
|
unsubscribe = createClientSubscriber();
|
|
155
|
+
}
|
|
149
156
|
obs.updateResult();
|
|
150
|
-
if (!state.isLoading
|
|
157
|
+
if (!state.isLoading) {
|
|
151
158
|
const query = obs.getCurrentQuery();
|
|
152
159
|
resolve(hydratableObserverResult(query, state));
|
|
153
160
|
}
|
|
@@ -197,17 +204,25 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
197
204
|
);
|
|
198
205
|
createComputed(
|
|
199
206
|
on(
|
|
200
|
-
|
|
201
|
-
(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
+
client,
|
|
208
|
+
(c) => {
|
|
209
|
+
if (unsubscribe) {
|
|
210
|
+
unsubscribe();
|
|
211
|
+
}
|
|
212
|
+
const newObserver = new Observer(c, defaultedOptions());
|
|
213
|
+
unsubscribe = createClientSubscriber();
|
|
214
|
+
setObserver(newObserver);
|
|
207
215
|
},
|
|
208
|
-
{
|
|
216
|
+
{
|
|
217
|
+
defer: true
|
|
218
|
+
}
|
|
209
219
|
)
|
|
210
220
|
);
|
|
221
|
+
createComputed(() => {
|
|
222
|
+
if (!isRestoring()) {
|
|
223
|
+
refetch();
|
|
224
|
+
}
|
|
225
|
+
});
|
|
211
226
|
onCleanup(() => {
|
|
212
227
|
if (unsubscribe) {
|
|
213
228
|
unsubscribe();
|
|
@@ -221,11 +236,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
221
236
|
obs.setOptions(opts);
|
|
222
237
|
setState(obs.getOptimisticResult(opts));
|
|
223
238
|
},
|
|
224
|
-
{
|
|
225
|
-
// Defer because we don't need to trigger on first render
|
|
226
|
-
// This only cares about changes to options after the observer is created
|
|
227
|
-
defer: true
|
|
228
|
-
}
|
|
239
|
+
{ defer: true }
|
|
229
240
|
)
|
|
230
241
|
);
|
|
231
242
|
createComputed(
|
|
@@ -316,8 +327,6 @@ function createMutation(options, queryClient) {
|
|
|
316
327
|
onCleanup(unsubscribe);
|
|
317
328
|
return state;
|
|
318
329
|
}
|
|
319
|
-
function noop() {
|
|
320
|
-
}
|
|
321
330
|
function useIsMutating(filters, queryClient) {
|
|
322
331
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
323
332
|
const mutationCache = createMemo(() => client().getMutationCache());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/solid-query",
|
|
3
|
-
"version": "5.24.
|
|
3
|
+
"version": "5.24.2",
|
|
4
4
|
"description": "Primitives for managing, caching and syncing asynchronous and remote data in Solid",
|
|
5
5
|
"author": "tannerlinsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"solid-js": "^1.8.14",
|
|
51
|
-
"@tanstack/query-core": "5.24.
|
|
51
|
+
"@tanstack/query-core": "5.24.2"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"tsup-preset-solid": "^2.2.0",
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"test:lib": "vitest --retry=3",
|
|
65
65
|
"test:lib:dev": "pnpm run test:lib --watch",
|
|
66
66
|
"test:build": "publint --strict",
|
|
67
|
-
"build": "tsup"
|
|
67
|
+
"build": "tsup",
|
|
68
|
+
"build:watch": "tsup --watch"
|
|
68
69
|
}
|
|
69
70
|
}
|
package/src/createBaseQuery.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
2
1
|
// Had to disable the lint rule because isServer type is defined as false
|
|
3
2
|
// in solid-js/web package. I'll create a GitHub issue with them to see
|
|
4
3
|
// why that happens.
|
|
@@ -9,10 +8,8 @@ import {
|
|
|
9
8
|
createMemo,
|
|
10
9
|
createResource,
|
|
11
10
|
createSignal,
|
|
12
|
-
mergeProps,
|
|
13
11
|
on,
|
|
14
12
|
onCleanup,
|
|
15
|
-
untrack,
|
|
16
13
|
} from 'solid-js'
|
|
17
14
|
import { createStore, reconcile, unwrap } from 'solid-js/store'
|
|
18
15
|
import { useQueryClient } from './QueryClientProvider'
|
|
@@ -124,25 +121,21 @@ export function createBaseQuery<
|
|
|
124
121
|
const client = createMemo(() => useQueryClient(queryClient?.()))
|
|
125
122
|
const isRestoring = useIsRestoring()
|
|
126
123
|
|
|
127
|
-
const defaultedOptions = createMemo(() =>
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
124
|
+
const defaultedOptions = createMemo(() => {
|
|
125
|
+
const defaultOptions = client().defaultQueryOptions(options())
|
|
126
|
+
defaultOptions._optimisticResults = isRestoring()
|
|
127
|
+
? 'isRestoring'
|
|
128
|
+
: 'optimistic'
|
|
129
|
+
defaultOptions.structuralSharing = false
|
|
130
|
+
if (isServer) {
|
|
131
|
+
defaultOptions.retry = false
|
|
132
|
+
defaultOptions.throwOnError = true
|
|
133
|
+
}
|
|
134
|
+
return defaultOptions
|
|
135
|
+
})
|
|
136
136
|
|
|
137
137
|
const [observer, setObserver] = createSignal(
|
|
138
|
-
new Observer(client(),
|
|
139
|
-
)
|
|
140
|
-
// we set the value in a computed because `createMemo`
|
|
141
|
-
// returns undefined during transitions
|
|
142
|
-
createComputed(
|
|
143
|
-
on(client, (c) => setObserver(new Observer(c, defaultedOptions())), {
|
|
144
|
-
defer: true,
|
|
145
|
-
}),
|
|
138
|
+
new Observer(client(), defaultedOptions()),
|
|
146
139
|
)
|
|
147
140
|
|
|
148
141
|
const [state, setState] = createStore<QueryObserverResult<TData, TError>>(
|
|
@@ -177,23 +170,27 @@ export function createBaseQuery<
|
|
|
177
170
|
// exist on the query-core QueryObserverResult type
|
|
178
171
|
const reconcileOptions = obs.options.reconcile
|
|
179
172
|
|
|
180
|
-
setState((store) => {
|
|
181
|
-
return reconcileFn(
|
|
182
|
-
store,
|
|
183
|
-
result,
|
|
184
|
-
reconcileOptions === undefined ? false : reconcileOptions,
|
|
185
|
-
)
|
|
186
|
-
})
|
|
187
173
|
// If the query has data we don't suspend but instead mutate the resource
|
|
188
174
|
// This could happen when placeholderData/initialData is defined
|
|
189
|
-
if (
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
175
|
+
if (queryResource()?.data && result.data && !queryResource.loading) {
|
|
176
|
+
setState((store) => {
|
|
177
|
+
return reconcileFn(
|
|
178
|
+
store,
|
|
179
|
+
result,
|
|
180
|
+
reconcileOptions === undefined ? false : reconcileOptions,
|
|
181
|
+
)
|
|
182
|
+
})
|
|
195
183
|
mutate(state)
|
|
196
|
-
else
|
|
184
|
+
} else {
|
|
185
|
+
setState((store) => {
|
|
186
|
+
return reconcileFn(
|
|
187
|
+
store,
|
|
188
|
+
result,
|
|
189
|
+
reconcileOptions === undefined ? false : reconcileOptions,
|
|
190
|
+
)
|
|
191
|
+
})
|
|
192
|
+
refetch()
|
|
193
|
+
}
|
|
197
194
|
})()
|
|
198
195
|
})
|
|
199
196
|
}
|
|
@@ -209,13 +206,14 @@ export function createBaseQuery<
|
|
|
209
206
|
() => {
|
|
210
207
|
const obs = observer()
|
|
211
208
|
return new Promise((resolve, reject) => {
|
|
212
|
-
if (isServer)
|
|
213
|
-
|
|
209
|
+
if (isServer) {
|
|
210
|
+
unsubscribe = createServerSubscriber(resolve, reject)
|
|
211
|
+
} else if (!unsubscribe && !isRestoring()) {
|
|
214
212
|
unsubscribe = createClientSubscriber()
|
|
215
|
-
|
|
213
|
+
}
|
|
216
214
|
obs.updateResult()
|
|
217
215
|
|
|
218
|
-
if (!state.isLoading
|
|
216
|
+
if (!state.isLoading) {
|
|
219
217
|
const query = obs.getCurrentQuery()
|
|
220
218
|
resolve(hydratableObserverResult(query, state))
|
|
221
219
|
}
|
|
@@ -275,17 +273,27 @@ export function createBaseQuery<
|
|
|
275
273
|
|
|
276
274
|
createComputed(
|
|
277
275
|
on(
|
|
278
|
-
|
|
279
|
-
(
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
276
|
+
client,
|
|
277
|
+
(c) => {
|
|
278
|
+
if (unsubscribe) {
|
|
279
|
+
unsubscribe()
|
|
280
|
+
}
|
|
281
|
+
const newObserver = new Observer(c, defaultedOptions())
|
|
282
|
+
unsubscribe = createClientSubscriber()
|
|
283
|
+
setObserver(newObserver)
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
defer: true,
|
|
284
287
|
},
|
|
285
|
-
{ defer: true },
|
|
286
288
|
),
|
|
287
289
|
)
|
|
288
290
|
|
|
291
|
+
createComputed(() => {
|
|
292
|
+
if (!isRestoring()) {
|
|
293
|
+
refetch()
|
|
294
|
+
}
|
|
295
|
+
})
|
|
296
|
+
|
|
289
297
|
onCleanup(() => {
|
|
290
298
|
if (unsubscribe) {
|
|
291
299
|
unsubscribe()
|
|
@@ -300,11 +308,7 @@ export function createBaseQuery<
|
|
|
300
308
|
obs.setOptions(opts)
|
|
301
309
|
setState(obs.getOptimisticResult(opts))
|
|
302
310
|
},
|
|
303
|
-
{
|
|
304
|
-
// Defer because we don't need to trigger on first render
|
|
305
|
-
// This only cares about changes to options after the observer is created
|
|
306
|
-
defer: true,
|
|
307
|
-
},
|
|
311
|
+
{ defer: true },
|
|
308
312
|
),
|
|
309
313
|
)
|
|
310
314
|
|
package/src/createMutation.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { MutationObserver } from '@tanstack/query-core'
|
|
|
2
2
|
import { createComputed, createMemo, on, onCleanup } from 'solid-js'
|
|
3
3
|
import { createStore } from 'solid-js/store'
|
|
4
4
|
import { useQueryClient } from './QueryClientProvider'
|
|
5
|
-
import { shouldThrowError } from './utils'
|
|
5
|
+
import { noop, shouldThrowError } from './utils'
|
|
6
6
|
import type { DefaultError } from '@tanstack/query-core'
|
|
7
7
|
import type { QueryClient } from './QueryClient'
|
|
8
8
|
import type {
|
|
@@ -74,5 +74,3 @@ export function createMutation<
|
|
|
74
74
|
|
|
75
75
|
return state
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
function noop() {}
|