@tanstack/solid-query 5.24.2 → 5.24.4

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
@@ -88,6 +88,7 @@ var hydratableObserverResult = (query, result) => {
88
88
  function createBaseQuery(options, Observer, queryClient) {
89
89
  const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
90
90
  const isRestoring = exports.useIsRestoring();
91
+ let unsubscribeQueued = false;
91
92
  const defaultedOptions = solidJs.createMemo(() => {
92
93
  const defaultOptions = client().defaultQueryOptions(options());
93
94
  defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
@@ -111,12 +112,20 @@ function createBaseQuery(options, Observer, queryClient) {
111
112
  const unwrappedResult = hydratableObserverResult(query, result);
112
113
  if (unwrappedResult.isError) {
113
114
  reject(unwrappedResult.error);
115
+ unsubscribeIfQueued();
114
116
  } else {
115
117
  resolve(unwrappedResult);
118
+ unsubscribeIfQueued();
116
119
  }
117
120
  })();
118
121
  });
119
122
  };
123
+ const unsubscribeIfQueued = () => {
124
+ if (unsubscribeQueued) {
125
+ unsubscribe?.();
126
+ unsubscribeQueued = false;
127
+ }
128
+ };
120
129
  const createClientSubscriber = () => {
121
130
  const obs = observer();
122
131
  return obs.subscribe((result) => {
@@ -220,11 +229,15 @@ function createBaseQuery(options, Observer, queryClient) {
220
229
  )
221
230
  );
222
231
  solidJs.createComputed(() => {
223
- if (!isRestoring()) {
232
+ if (!isRestoring() && !web.isServer) {
224
233
  refetch();
225
234
  }
226
235
  });
227
236
  solidJs.onCleanup(() => {
237
+ if (web.isServer && queryResource.loading) {
238
+ unsubscribeQueued = true;
239
+ return;
240
+ }
228
241
  if (unsubscribe) {
229
242
  unsubscribe();
230
243
  unsubscribe = null;
package/build/dev.js CHANGED
@@ -87,6 +87,7 @@ var hydratableObserverResult = (query, result) => {
87
87
  function createBaseQuery(options, Observer, queryClient) {
88
88
  const client = createMemo(() => useQueryClient(queryClient?.()));
89
89
  const isRestoring = useIsRestoring();
90
+ let unsubscribeQueued = false;
90
91
  const defaultedOptions = createMemo(() => {
91
92
  const defaultOptions = client().defaultQueryOptions(options());
92
93
  defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
@@ -110,12 +111,20 @@ function createBaseQuery(options, Observer, queryClient) {
110
111
  const unwrappedResult = hydratableObserverResult(query, result);
111
112
  if (unwrappedResult.isError) {
112
113
  reject(unwrappedResult.error);
114
+ unsubscribeIfQueued();
113
115
  } else {
114
116
  resolve(unwrappedResult);
117
+ unsubscribeIfQueued();
115
118
  }
116
119
  })();
117
120
  });
118
121
  };
122
+ const unsubscribeIfQueued = () => {
123
+ if (unsubscribeQueued) {
124
+ unsubscribe?.();
125
+ unsubscribeQueued = false;
126
+ }
127
+ };
119
128
  const createClientSubscriber = () => {
120
129
  const obs = observer();
121
130
  return obs.subscribe((result) => {
@@ -219,11 +228,15 @@ function createBaseQuery(options, Observer, queryClient) {
219
228
  )
220
229
  );
221
230
  createComputed(() => {
222
- if (!isRestoring()) {
231
+ if (!isRestoring() && !isServer) {
223
232
  refetch();
224
233
  }
225
234
  });
226
235
  onCleanup(() => {
236
+ if (isServer && queryResource.loading) {
237
+ unsubscribeQueued = true;
238
+ return;
239
+ }
227
240
  if (unsubscribe) {
228
241
  unsubscribe();
229
242
  unsubscribe = null;
package/build/index.cjs CHANGED
@@ -88,6 +88,7 @@ var hydratableObserverResult = (query, result) => {
88
88
  function createBaseQuery(options, Observer, queryClient) {
89
89
  const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
90
90
  const isRestoring = exports.useIsRestoring();
91
+ let unsubscribeQueued = false;
91
92
  const defaultedOptions = solidJs.createMemo(() => {
92
93
  const defaultOptions = client().defaultQueryOptions(options());
93
94
  defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
@@ -111,12 +112,20 @@ function createBaseQuery(options, Observer, queryClient) {
111
112
  const unwrappedResult = hydratableObserverResult(query, result);
112
113
  if (unwrappedResult.isError) {
113
114
  reject(unwrappedResult.error);
115
+ unsubscribeIfQueued();
114
116
  } else {
115
117
  resolve(unwrappedResult);
118
+ unsubscribeIfQueued();
116
119
  }
117
120
  })();
118
121
  });
119
122
  };
123
+ const unsubscribeIfQueued = () => {
124
+ if (unsubscribeQueued) {
125
+ unsubscribe?.();
126
+ unsubscribeQueued = false;
127
+ }
128
+ };
120
129
  const createClientSubscriber = () => {
121
130
  const obs = observer();
122
131
  return obs.subscribe((result) => {
@@ -220,11 +229,15 @@ function createBaseQuery(options, Observer, queryClient) {
220
229
  )
221
230
  );
222
231
  solidJs.createComputed(() => {
223
- if (!isRestoring()) {
232
+ if (!isRestoring() && !web.isServer) {
224
233
  refetch();
225
234
  }
226
235
  });
227
236
  solidJs.onCleanup(() => {
237
+ if (web.isServer && queryResource.loading) {
238
+ unsubscribeQueued = true;
239
+ return;
240
+ }
228
241
  if (unsubscribe) {
229
242
  unsubscribe();
230
243
  unsubscribe = null;
package/build/index.js CHANGED
@@ -87,6 +87,7 @@ var hydratableObserverResult = (query, result) => {
87
87
  function createBaseQuery(options, Observer, queryClient) {
88
88
  const client = createMemo(() => useQueryClient(queryClient?.()));
89
89
  const isRestoring = useIsRestoring();
90
+ let unsubscribeQueued = false;
90
91
  const defaultedOptions = createMemo(() => {
91
92
  const defaultOptions = client().defaultQueryOptions(options());
92
93
  defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
@@ -110,12 +111,20 @@ function createBaseQuery(options, Observer, queryClient) {
110
111
  const unwrappedResult = hydratableObserverResult(query, result);
111
112
  if (unwrappedResult.isError) {
112
113
  reject(unwrappedResult.error);
114
+ unsubscribeIfQueued();
113
115
  } else {
114
116
  resolve(unwrappedResult);
117
+ unsubscribeIfQueued();
115
118
  }
116
119
  })();
117
120
  });
118
121
  };
122
+ const unsubscribeIfQueued = () => {
123
+ if (unsubscribeQueued) {
124
+ unsubscribe?.();
125
+ unsubscribeQueued = false;
126
+ }
127
+ };
119
128
  const createClientSubscriber = () => {
120
129
  const obs = observer();
121
130
  return obs.subscribe((result) => {
@@ -219,11 +228,15 @@ function createBaseQuery(options, Observer, queryClient) {
219
228
  )
220
229
  );
221
230
  createComputed(() => {
222
- if (!isRestoring()) {
231
+ if (!isRestoring() && !isServer) {
223
232
  refetch();
224
233
  }
225
234
  });
226
235
  onCleanup(() => {
236
+ if (isServer && queryResource.loading) {
237
+ unsubscribeQueued = true;
238
+ return;
239
+ }
227
240
  if (unsubscribe) {
228
241
  unsubscribe();
229
242
  unsubscribe = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/solid-query",
3
- "version": "5.24.2",
3
+ "version": "5.24.4",
4
4
  "description": "Primitives for managing, caching and syncing asynchronous and remote data in Solid",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -120,6 +120,11 @@ export function createBaseQuery<
120
120
 
121
121
  const client = createMemo(() => useQueryClient(queryClient?.()))
122
122
  const isRestoring = useIsRestoring()
123
+ // There are times when we run a query on the server but the resource is never read
124
+ // This could lead to times when the queryObserver is unsubscribed before the resource has loaded
125
+ // Causing a time out error. To prevent this we will queue the unsubscribe if the cleanup is called
126
+ // before the resource has loaded
127
+ let unsubscribeQueued = false
123
128
 
124
129
  const defaultedOptions = createMemo(() => {
125
130
  const defaultOptions = client().defaultQueryOptions(options())
@@ -155,13 +160,22 @@ export function createBaseQuery<
155
160
 
156
161
  if (unwrappedResult.isError) {
157
162
  reject(unwrappedResult.error)
163
+ unsubscribeIfQueued()
158
164
  } else {
159
165
  resolve(unwrappedResult)
166
+ unsubscribeIfQueued()
160
167
  }
161
168
  })()
162
169
  })
163
170
  }
164
171
 
172
+ const unsubscribeIfQueued = () => {
173
+ if (unsubscribeQueued) {
174
+ unsubscribe?.()
175
+ unsubscribeQueued = false
176
+ }
177
+ }
178
+
165
179
  const createClientSubscriber = () => {
166
180
  const obs = observer()
167
181
  return obs.subscribe((result) => {
@@ -289,12 +303,16 @@ export function createBaseQuery<
289
303
  )
290
304
 
291
305
  createComputed(() => {
292
- if (!isRestoring()) {
306
+ if (!isRestoring() && !isServer) {
293
307
  refetch()
294
308
  }
295
309
  })
296
310
 
297
311
  onCleanup(() => {
312
+ if (isServer && queryResource.loading) {
313
+ unsubscribeQueued = true
314
+ return
315
+ }
298
316
  if (unsubscribe) {
299
317
  unsubscribe()
300
318
  unsubscribe = null