@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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/solid-query",
3
- "version": "5.30.2",
3
+ "version": "5.30.3",
4
4
  "description": "Primitives for managing, caching and syncing asynchronous and remote data in Solid",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -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(