@tanstack/solid-query 5.30.2 → 5.30.3
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 +7 -0
- package/build/dev.js +7 -0
- package/build/index.cjs +7 -0
- package/build/index.js +7 -0
- package/package.json +1 -1
- package/src/createBaseQuery.ts +14 -0
package/build/dev.cjs
CHANGED
|
@@ -173,10 +173,12 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
173
173
|
];
|
|
174
174
|
}
|
|
175
175
|
let unsubscribe = null;
|
|
176
|
+
let resolver = null;
|
|
176
177
|
const [queryResource, { refetch }] = solidJs.createResource(
|
|
177
178
|
() => {
|
|
178
179
|
const obs = observer();
|
|
179
180
|
return new Promise((resolve, reject) => {
|
|
181
|
+
resolver = resolve;
|
|
180
182
|
if (web.isServer) {
|
|
181
183
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
182
184
|
} else if (!unsubscribe && !isRestoring()) {
|
|
@@ -192,6 +194,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
192
194
|
}
|
|
193
195
|
if (!observerResult.isLoading) {
|
|
194
196
|
const query = obs.getCurrentQuery();
|
|
197
|
+
resolver = null;
|
|
195
198
|
return resolve(hydratableObserverResult(query, observerResult));
|
|
196
199
|
}
|
|
197
200
|
setStateWithReconciliation(observerResult);
|
|
@@ -270,6 +273,10 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
270
273
|
unsubscribe();
|
|
271
274
|
unsubscribe = null;
|
|
272
275
|
}
|
|
276
|
+
if (resolver && !web.isServer) {
|
|
277
|
+
resolver(observerResult);
|
|
278
|
+
resolver = null;
|
|
279
|
+
}
|
|
273
280
|
});
|
|
274
281
|
solidJs.createComputed(
|
|
275
282
|
solidJs.on(
|
package/build/dev.js
CHANGED
|
@@ -172,10 +172,12 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
172
172
|
];
|
|
173
173
|
}
|
|
174
174
|
let unsubscribe = null;
|
|
175
|
+
let resolver = null;
|
|
175
176
|
const [queryResource, { refetch }] = createResource(
|
|
176
177
|
() => {
|
|
177
178
|
const obs = observer();
|
|
178
179
|
return new Promise((resolve, reject) => {
|
|
180
|
+
resolver = resolve;
|
|
179
181
|
if (isServer) {
|
|
180
182
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
181
183
|
} else if (!unsubscribe && !isRestoring()) {
|
|
@@ -191,6 +193,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
191
193
|
}
|
|
192
194
|
if (!observerResult.isLoading) {
|
|
193
195
|
const query = obs.getCurrentQuery();
|
|
196
|
+
resolver = null;
|
|
194
197
|
return resolve(hydratableObserverResult(query, observerResult));
|
|
195
198
|
}
|
|
196
199
|
setStateWithReconciliation(observerResult);
|
|
@@ -269,6 +272,10 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
269
272
|
unsubscribe();
|
|
270
273
|
unsubscribe = null;
|
|
271
274
|
}
|
|
275
|
+
if (resolver && !isServer) {
|
|
276
|
+
resolver(observerResult);
|
|
277
|
+
resolver = null;
|
|
278
|
+
}
|
|
272
279
|
});
|
|
273
280
|
createComputed(
|
|
274
281
|
on(
|
package/build/index.cjs
CHANGED
|
@@ -164,10 +164,12 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
164
164
|
];
|
|
165
165
|
}
|
|
166
166
|
let unsubscribe = null;
|
|
167
|
+
let resolver = null;
|
|
167
168
|
const [queryResource, { refetch }] = solidJs.createResource(
|
|
168
169
|
() => {
|
|
169
170
|
const obs = observer();
|
|
170
171
|
return new Promise((resolve, reject) => {
|
|
172
|
+
resolver = resolve;
|
|
171
173
|
if (web.isServer) {
|
|
172
174
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
173
175
|
} else if (!unsubscribe && !isRestoring()) {
|
|
@@ -183,6 +185,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
183
185
|
}
|
|
184
186
|
if (!observerResult.isLoading) {
|
|
185
187
|
const query = obs.getCurrentQuery();
|
|
188
|
+
resolver = null;
|
|
186
189
|
return resolve(hydratableObserverResult(query, observerResult));
|
|
187
190
|
}
|
|
188
191
|
setStateWithReconciliation(observerResult);
|
|
@@ -261,6 +264,10 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
261
264
|
unsubscribe();
|
|
262
265
|
unsubscribe = null;
|
|
263
266
|
}
|
|
267
|
+
if (resolver && !web.isServer) {
|
|
268
|
+
resolver(observerResult);
|
|
269
|
+
resolver = null;
|
|
270
|
+
}
|
|
264
271
|
});
|
|
265
272
|
solidJs.createComputed(
|
|
266
273
|
solidJs.on(
|
package/build/index.js
CHANGED
|
@@ -163,10 +163,12 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
163
163
|
];
|
|
164
164
|
}
|
|
165
165
|
let unsubscribe = null;
|
|
166
|
+
let resolver = null;
|
|
166
167
|
const [queryResource, { refetch }] = createResource(
|
|
167
168
|
() => {
|
|
168
169
|
const obs = observer();
|
|
169
170
|
return new Promise((resolve, reject) => {
|
|
171
|
+
resolver = resolve;
|
|
170
172
|
if (isServer) {
|
|
171
173
|
unsubscribe = createServerSubscriber(resolve, reject);
|
|
172
174
|
} else if (!unsubscribe && !isRestoring()) {
|
|
@@ -182,6 +184,7 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
182
184
|
}
|
|
183
185
|
if (!observerResult.isLoading) {
|
|
184
186
|
const query = obs.getCurrentQuery();
|
|
187
|
+
resolver = null;
|
|
185
188
|
return resolve(hydratableObserverResult(query, observerResult));
|
|
186
189
|
}
|
|
187
190
|
setStateWithReconciliation(observerResult);
|
|
@@ -260,6 +263,10 @@ function createBaseQuery(options, Observer, queryClient) {
|
|
|
260
263
|
unsubscribe();
|
|
261
264
|
unsubscribe = null;
|
|
262
265
|
}
|
|
266
|
+
if (resolver && !isServer) {
|
|
267
|
+
resolver(observerResult);
|
|
268
|
+
resolver = null;
|
|
269
|
+
}
|
|
263
270
|
});
|
|
264
271
|
createComputed(
|
|
265
272
|
on(
|
package/package.json
CHANGED
package/src/createBaseQuery.ts
CHANGED
|
@@ -236,10 +236,19 @@ export function createBaseQuery<
|
|
|
236
236
|
*/
|
|
237
237
|
let unsubscribe: (() => void) | null = null
|
|
238
238
|
|
|
239
|
+
/*
|
|
240
|
+
Fixes #7275
|
|
241
|
+
In a few cases, the observer could unmount before the resource is loaded.
|
|
242
|
+
This leads to Suspense boundaries to be suspended indefinitely.
|
|
243
|
+
This resolver will be called when the observer is unmounting
|
|
244
|
+
but the resource is still in a loading state
|
|
245
|
+
*/
|
|
246
|
+
let resolver: ((value: ResourceData) => void) | null = null
|
|
239
247
|
const [queryResource, { refetch }] = createResource<ResourceData | undefined>(
|
|
240
248
|
() => {
|
|
241
249
|
const obs = observer()
|
|
242
250
|
return new Promise((resolve, reject) => {
|
|
251
|
+
resolver = resolve
|
|
243
252
|
if (isServer) {
|
|
244
253
|
unsubscribe = createServerSubscriber(resolve, reject)
|
|
245
254
|
} else if (!unsubscribe && !isRestoring()) {
|
|
@@ -261,6 +270,7 @@ export function createBaseQuery<
|
|
|
261
270
|
}
|
|
262
271
|
if (!observerResult.isLoading) {
|
|
263
272
|
const query = obs.getCurrentQuery()
|
|
273
|
+
resolver = null
|
|
264
274
|
return resolve(hydratableObserverResult(query, observerResult))
|
|
265
275
|
}
|
|
266
276
|
|
|
@@ -354,6 +364,10 @@ export function createBaseQuery<
|
|
|
354
364
|
unsubscribe()
|
|
355
365
|
unsubscribe = null
|
|
356
366
|
}
|
|
367
|
+
if (resolver && !isServer) {
|
|
368
|
+
resolver(observerResult)
|
|
369
|
+
resolver = null
|
|
370
|
+
}
|
|
357
371
|
})
|
|
358
372
|
|
|
359
373
|
createComputed(
|