@tanstack/query-core 5.0.0-alpha.1 → 5.0.0-alpha.18

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 (143) hide show
  1. package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js +13 -0
  2. package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js.map +1 -0
  3. package/build/lib/_virtual/_rollupPluginBabelHelpers.js +16 -0
  4. package/build/lib/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  5. package/build/lib/focusManager.esm.js +31 -15
  6. package/build/lib/focusManager.esm.js.map +1 -1
  7. package/build/lib/focusManager.js +31 -15
  8. package/build/lib/focusManager.js.map +1 -1
  9. package/build/lib/hydration.d.ts +2 -6
  10. package/build/lib/hydration.esm.js +9 -20
  11. package/build/lib/hydration.esm.js.map +1 -1
  12. package/build/lib/hydration.js +9 -20
  13. package/build/lib/hydration.js.map +1 -1
  14. package/build/lib/hydration.mjs +4 -18
  15. package/build/lib/hydration.mjs.map +1 -1
  16. package/build/lib/index.d.ts +4 -4
  17. package/build/lib/index.esm.js +1 -1
  18. package/build/lib/index.js +1 -0
  19. package/build/lib/index.js.map +1 -1
  20. package/build/lib/index.mjs +1 -1
  21. package/build/lib/infiniteQueryBehavior.d.ts +2 -2
  22. package/build/lib/infiniteQueryBehavior.esm.js +52 -48
  23. package/build/lib/infiniteQueryBehavior.esm.js.map +1 -1
  24. package/build/lib/infiniteQueryBehavior.js +52 -48
  25. package/build/lib/infiniteQueryBehavior.js.map +1 -1
  26. package/build/lib/infiniteQueryBehavior.mjs +48 -45
  27. package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
  28. package/build/lib/infiniteQueryObserver.d.ts +7 -7
  29. package/build/lib/infiniteQueryObserver.esm.js +7 -8
  30. package/build/lib/infiniteQueryObserver.esm.js.map +1 -1
  31. package/build/lib/infiniteQueryObserver.js +7 -8
  32. package/build/lib/infiniteQueryObserver.js.map +1 -1
  33. package/build/lib/infiniteQueryObserver.mjs +4 -6
  34. package/build/lib/infiniteQueryObserver.mjs.map +1 -1
  35. package/build/lib/mutation.d.ts +5 -4
  36. package/build/lib/mutation.esm.js +138 -99
  37. package/build/lib/mutation.esm.js.map +1 -1
  38. package/build/lib/mutation.js +138 -99
  39. package/build/lib/mutation.js.map +1 -1
  40. package/build/lib/mutation.mjs +16 -2
  41. package/build/lib/mutation.mjs.map +1 -1
  42. package/build/lib/mutationCache.d.ts +5 -4
  43. package/build/lib/mutationCache.esm.js +34 -20
  44. package/build/lib/mutationCache.esm.js.map +1 -1
  45. package/build/lib/mutationCache.js +34 -20
  46. package/build/lib/mutationCache.js.map +1 -1
  47. package/build/lib/mutationCache.mjs +5 -4
  48. package/build/lib/mutationCache.mjs.map +1 -1
  49. package/build/lib/mutationObserver.d.ts +2 -2
  50. package/build/lib/mutationObserver.esm.js +81 -50
  51. package/build/lib/mutationObserver.esm.js.map +1 -1
  52. package/build/lib/mutationObserver.js +81 -50
  53. package/build/lib/mutationObserver.js.map +1 -1
  54. package/build/lib/mutationObserver.mjs +1 -0
  55. package/build/lib/mutationObserver.mjs.map +1 -1
  56. package/build/lib/onlineManager.esm.js +29 -14
  57. package/build/lib/onlineManager.esm.js.map +1 -1
  58. package/build/lib/onlineManager.js +29 -14
  59. package/build/lib/onlineManager.js.map +1 -1
  60. package/build/lib/queriesObserver.esm.js +94 -69
  61. package/build/lib/queriesObserver.esm.js.map +1 -1
  62. package/build/lib/queriesObserver.js +94 -69
  63. package/build/lib/queriesObserver.js.map +1 -1
  64. package/build/lib/queriesObserver.mjs +1 -5
  65. package/build/lib/queriesObserver.mjs.map +1 -1
  66. package/build/lib/query.d.ts +8 -7
  67. package/build/lib/query.esm.js +210 -159
  68. package/build/lib/query.esm.js.map +1 -1
  69. package/build/lib/query.js +210 -159
  70. package/build/lib/query.js.map +1 -1
  71. package/build/lib/query.mjs +2 -0
  72. package/build/lib/query.mjs.map +1 -1
  73. package/build/lib/queryCache.d.ts +5 -4
  74. package/build/lib/queryCache.esm.js +21 -13
  75. package/build/lib/queryCache.esm.js.map +1 -1
  76. package/build/lib/queryCache.js +21 -13
  77. package/build/lib/queryCache.js.map +1 -1
  78. package/build/lib/queryCache.mjs +5 -4
  79. package/build/lib/queryCache.mjs.map +1 -1
  80. package/build/lib/queryClient.d.ts +7 -7
  81. package/build/lib/queryClient.esm.js +107 -66
  82. package/build/lib/queryClient.esm.js.map +1 -1
  83. package/build/lib/queryClient.js +107 -66
  84. package/build/lib/queryClient.js.map +1 -1
  85. package/build/lib/queryClient.mjs +5 -4
  86. package/build/lib/queryClient.mjs.map +1 -1
  87. package/build/lib/queryObserver.d.ts +2 -2
  88. package/build/lib/queryObserver.esm.js +308 -207
  89. package/build/lib/queryObserver.esm.js.map +1 -1
  90. package/build/lib/queryObserver.js +307 -206
  91. package/build/lib/queryObserver.js.map +1 -1
  92. package/build/lib/queryObserver.mjs.map +1 -1
  93. package/build/lib/removable.esm.js +13 -6
  94. package/build/lib/removable.esm.js.map +1 -1
  95. package/build/lib/removable.js +13 -6
  96. package/build/lib/removable.js.map +1 -1
  97. package/build/lib/retryer.d.ts +5 -5
  98. package/build/lib/retryer.esm.js +15 -14
  99. package/build/lib/retryer.esm.js.map +1 -1
  100. package/build/lib/retryer.js +15 -14
  101. package/build/lib/retryer.js.map +1 -1
  102. package/build/lib/retryer.mjs.map +1 -1
  103. package/build/lib/tests/utils.d.ts +4 -5
  104. package/build/lib/types.d.ts +42 -40
  105. package/build/lib/utils.esm.js +1 -1
  106. package/build/lib/utils.esm.js.map +1 -1
  107. package/build/lib/utils.js +1 -1
  108. package/build/lib/utils.js.map +1 -1
  109. package/build/umd/index.development.js +92 -88
  110. package/build/umd/index.development.js.map +1 -1
  111. package/build/umd/index.production.js +1 -1
  112. package/build/umd/index.production.js.map +1 -1
  113. package/package.json +2 -2
  114. package/src/hydration.ts +18 -37
  115. package/src/index.ts +9 -5
  116. package/src/infiniteQueryBehavior.ts +52 -60
  117. package/src/infiniteQueryObserver.ts +17 -12
  118. package/src/mutation.ts +34 -7
  119. package/src/mutationCache.ts +15 -8
  120. package/src/mutationObserver.ts +3 -2
  121. package/src/queriesObserver.ts +3 -7
  122. package/src/query.ts +24 -9
  123. package/src/queryCache.ts +16 -10
  124. package/src/queryClient.ts +9 -11
  125. package/src/queryObserver.ts +2 -2
  126. package/src/retryer.ts +5 -5
  127. package/src/tests/focusManager.test.tsx +12 -14
  128. package/src/tests/hydration.test.tsx +22 -17
  129. package/src/tests/infiniteQueryBehavior.test.tsx +16 -9
  130. package/src/tests/infiniteQueryObserver.test.tsx +62 -1
  131. package/src/tests/mutationCache.test.tsx +61 -16
  132. package/src/tests/mutationObserver.test.tsx +3 -2
  133. package/src/tests/mutations.test.tsx +41 -9
  134. package/src/tests/notifyManager.test.tsx +7 -6
  135. package/src/tests/onlineManager.test.tsx +12 -17
  136. package/src/tests/queriesObserver.test.tsx +18 -17
  137. package/src/tests/query.test.tsx +18 -17
  138. package/src/tests/queryCache.test.tsx +28 -15
  139. package/src/tests/queryClient.test.tsx +49 -48
  140. package/src/tests/queryObserver.test.tsx +10 -9
  141. package/src/tests/utils.test.tsx +2 -1
  142. package/src/tests/utils.ts +5 -4
  143. package/src/types.ts +53 -37
@@ -4,9 +4,10 @@ import type { RetryValue, RetryDelayValue } from './retryer';
4
4
  import type { QueryFilters, QueryTypeFilter } from './utils';
5
5
  import type { QueryCache } from './queryCache';
6
6
  import type { MutationCache } from './mutationCache';
7
+ import type { FetchDirection } from './query';
7
8
  export interface Register {
8
9
  }
9
- export declare type RegisteredError = Register extends {
10
+ export declare type DefaultError = Register extends {
10
11
  defaultError: infer TError;
11
12
  } ? TError : Error;
12
13
  export declare type QueryKey = readonly unknown[];
@@ -19,6 +20,7 @@ export declare type QueryFunctionContext<TQueryKey extends QueryKey = QueryKey,
19
20
  queryKey: TQueryKey;
20
21
  signal: AbortSignal;
21
22
  pageParam: TPageParam;
23
+ direction: FetchDirection;
22
24
  meta: QueryMeta | undefined;
23
25
  };
24
26
  export declare type InitialDataFunction<T> = () => T | undefined;
@@ -26,17 +28,17 @@ declare type NonFunctionGuard<T> = T extends Function ? never : T;
26
28
  export declare type PlaceholderDataFunction<TQueryData> = (previousData: TQueryData | undefined) => TQueryData | undefined;
27
29
  export declare type QueriesPlaceholderDataFunction<TQueryData> = () => TQueryData | undefined;
28
30
  export declare type QueryKeyHashFunction<TQueryKey extends QueryKey> = (queryKey: TQueryKey) => string;
29
- export declare type GetPreviousPageParamFunction<TPageParam, TQueryFnData = unknown> = (firstPage: TQueryFnData, allPages: TQueryFnData[]) => TPageParam | undefined;
30
- export declare type GetNextPageParamFunction<TPageParam, TQueryFnData = unknown> = (lastPage: TQueryFnData, allPages: TQueryFnData[]) => TPageParam | undefined;
31
+ export declare type GetPreviousPageParamFunction<TPageParam, TQueryFnData = unknown> = (firstPage: TQueryFnData, allPages: TQueryFnData[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined;
32
+ export declare type GetNextPageParamFunction<TPageParam, TQueryFnData = unknown> = (lastPage: TQueryFnData, allPages: TQueryFnData[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined;
31
33
  export interface InfiniteData<TData> {
32
34
  pages: TData[];
33
35
  pageParams: unknown[];
34
36
  }
35
- export interface QueryMeta {
36
- [index: string]: unknown;
37
- }
37
+ export declare type QueryMeta = Register extends {
38
+ queryMeta: infer TQueryMeta;
39
+ } ? TQueryMeta extends Record<string, unknown> ? TQueryMeta : Record<string, unknown> : Record<string, unknown>;
38
40
  export declare type NetworkMode = 'online' | 'always' | 'offlineFirst';
39
- export interface QueryOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never> {
41
+ export interface QueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never> {
40
42
  /**
41
43
  * If `false`, failed queries will not retry by default.
42
44
  * If `true`, failed queries will retry infinitely., failureCount: num
@@ -87,7 +89,7 @@ export interface InfiniteQueryPageParamsOptions<TQueryFnData = unknown, TPagePar
87
89
  getNextPageParam: GetNextPageParamFunction<TPageParam, TQueryFnData>;
88
90
  }
89
91
  export declare type ThrowErrors<TQueryFnData, TError, TQueryData, TQueryKey extends QueryKey> = boolean | ((error: TError, query: Query<TQueryFnData, TError, TQueryData, TQueryKey>) => boolean);
90
- export interface QueryObserverOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never> extends QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey, TPageParam> {
92
+ export interface QueryObserverOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never> extends QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey, TPageParam> {
91
93
  /**
92
94
  * Set this to `false` to disable automatic refetching when the query mounts or changes query keys.
93
95
  * To refetch the query, use the `refetch` method returned from the `useQuery` instance.
@@ -183,18 +185,18 @@ export interface QueryObserverOptions<TQueryFnData = unknown, TError = Registere
183
185
  _optimisticResults?: 'optimistic' | 'isRestoring';
184
186
  }
185
187
  export declare type WithRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
186
- export declare type DefaultedQueryObserverOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = WithRequired<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, 'throwErrors' | 'refetchOnReconnect'>;
187
- export interface InfiniteQueryObserverOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends QueryObserverOptions<TQueryFnData, TError, TData, InfiniteData<TQueryData>, TQueryKey, TPageParam>, InfiniteQueryPageParamsOptions<TQueryFnData, TPageParam> {
188
+ export declare type DefaultedQueryObserverOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = WithRequired<QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, 'throwErrors' | 'refetchOnReconnect'>;
189
+ export interface InfiniteQueryObserverOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends QueryObserverOptions<TQueryFnData, TError, TData, InfiniteData<TQueryData>, TQueryKey, TPageParam>, InfiniteQueryPageParamsOptions<TQueryFnData, TPageParam> {
188
190
  }
189
- export declare type DefaultedInfiniteQueryObserverOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = WithRequired<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, 'throwErrors' | 'refetchOnReconnect'>;
190
- export interface FetchQueryOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never> extends WithRequired<QueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, 'queryKey'> {
191
+ export declare type DefaultedInfiniteQueryObserverOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = WithRequired<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam>, 'throwErrors' | 'refetchOnReconnect'>;
192
+ export interface FetchQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = never> extends WithRequired<QueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, 'queryKey'> {
191
193
  /**
192
194
  * The time in milliseconds after data is considered stale.
193
195
  * If the data is fresh it will be returned from the cache.
194
196
  */
195
197
  staleTime?: number;
196
198
  }
197
- export interface FetchInfiniteQueryOptions<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends FetchQueryOptions<TQueryFnData, TError, InfiniteData<TData>, TQueryKey, TPageParam>, DefaultPageParam<TPageParam> {
199
+ export interface FetchInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends FetchQueryOptions<TQueryFnData, TError, InfiniteData<TData>, TQueryKey, TPageParam>, DefaultPageParam<TPageParam> {
198
200
  }
199
201
  export interface ResultOptions {
200
202
  throwOnError?: boolean;
@@ -219,7 +221,7 @@ export interface FetchPreviousPageOptions extends ResultOptions {
219
221
  }
220
222
  export declare type QueryStatus = 'pending' | 'error' | 'success';
221
223
  export declare type FetchStatus = 'fetching' | 'paused' | 'idle';
222
- export interface QueryObserverBaseResult<TData = unknown, TError = RegisteredError> {
224
+ export interface QueryObserverBaseResult<TData = unknown, TError = DefaultError> {
223
225
  data: TData | undefined;
224
226
  dataUpdatedAt: number;
225
227
  error: TError | null;
@@ -249,7 +251,7 @@ export interface QueryObserverBaseResult<TData = unknown, TError = RegisteredErr
249
251
  status: QueryStatus;
250
252
  fetchStatus: FetchStatus;
251
253
  }
252
- export interface QueryObserverLoadingResult<TData = unknown, TError = RegisteredError> extends QueryObserverBaseResult<TData, TError> {
254
+ export interface QueryObserverLoadingResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
253
255
  data: undefined;
254
256
  error: null;
255
257
  isError: false;
@@ -259,7 +261,7 @@ export interface QueryObserverLoadingResult<TData = unknown, TError = Registered
259
261
  isSuccess: false;
260
262
  status: 'pending';
261
263
  }
262
- export interface QueryObserverLoadingErrorResult<TData = unknown, TError = RegisteredError> extends QueryObserverBaseResult<TData, TError> {
264
+ export interface QueryObserverLoadingErrorResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
263
265
  data: undefined;
264
266
  error: TError;
265
267
  isError: true;
@@ -269,7 +271,7 @@ export interface QueryObserverLoadingErrorResult<TData = unknown, TError = Regis
269
271
  isSuccess: false;
270
272
  status: 'error';
271
273
  }
272
- export interface QueryObserverRefetchErrorResult<TData = unknown, TError = RegisteredError> extends QueryObserverBaseResult<TData, TError> {
274
+ export interface QueryObserverRefetchErrorResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
273
275
  data: TData;
274
276
  error: TError;
275
277
  isError: true;
@@ -279,7 +281,7 @@ export interface QueryObserverRefetchErrorResult<TData = unknown, TError = Regis
279
281
  isSuccess: false;
280
282
  status: 'error';
281
283
  }
282
- export interface QueryObserverSuccessResult<TData = unknown, TError = RegisteredError> extends QueryObserverBaseResult<TData, TError> {
284
+ export interface QueryObserverSuccessResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
283
285
  data: TData;
284
286
  error: null;
285
287
  isError: false;
@@ -289,9 +291,9 @@ export interface QueryObserverSuccessResult<TData = unknown, TError = Registered
289
291
  isSuccess: true;
290
292
  status: 'success';
291
293
  }
292
- export declare type DefinedQueryObserverResult<TData = unknown, TError = RegisteredError> = QueryObserverRefetchErrorResult<TData, TError> | QueryObserverSuccessResult<TData, TError>;
293
- export declare type QueryObserverResult<TData = unknown, TError = RegisteredError> = DefinedQueryObserverResult<TData, TError> | QueryObserverLoadingErrorResult<TData, TError> | QueryObserverLoadingResult<TData, TError>;
294
- export interface InfiniteQueryObserverBaseResult<TData = unknown, TError = RegisteredError> extends QueryObserverBaseResult<TData, TError> {
294
+ export declare type DefinedQueryObserverResult<TData = unknown, TError = DefaultError> = QueryObserverRefetchErrorResult<TData, TError> | QueryObserverSuccessResult<TData, TError>;
295
+ export declare type QueryObserverResult<TData = unknown, TError = DefaultError> = DefinedQueryObserverResult<TData, TError> | QueryObserverLoadingErrorResult<TData, TError> | QueryObserverLoadingResult<TData, TError>;
296
+ export interface InfiniteQueryObserverBaseResult<TData = unknown, TError = DefaultError> extends QueryObserverBaseResult<TData, TError> {
295
297
  fetchNextPage: (options?: FetchNextPageOptions) => Promise<InfiniteQueryObserverResult<TData, TError>>;
296
298
  fetchPreviousPage: (options?: FetchPreviousPageOptions) => Promise<InfiniteQueryObserverResult<TData, TError>>;
297
299
  hasNextPage: boolean;
@@ -299,7 +301,7 @@ export interface InfiniteQueryObserverBaseResult<TData = unknown, TError = Regis
299
301
  isFetchingNextPage: boolean;
300
302
  isFetchingPreviousPage: boolean;
301
303
  }
302
- export interface InfiniteQueryObserverLoadingResult<TData = unknown, TError = RegisteredError> extends InfiniteQueryObserverBaseResult<TData, TError> {
304
+ export interface InfiniteQueryObserverLoadingResult<TData = unknown, TError = DefaultError> extends InfiniteQueryObserverBaseResult<TData, TError> {
303
305
  data: undefined;
304
306
  error: null;
305
307
  isError: false;
@@ -309,7 +311,7 @@ export interface InfiniteQueryObserverLoadingResult<TData = unknown, TError = Re
309
311
  isSuccess: false;
310
312
  status: 'pending';
311
313
  }
312
- export interface InfiniteQueryObserverLoadingErrorResult<TData = unknown, TError = RegisteredError> extends InfiniteQueryObserverBaseResult<TData, TError> {
314
+ export interface InfiniteQueryObserverLoadingErrorResult<TData = unknown, TError = DefaultError> extends InfiniteQueryObserverBaseResult<TData, TError> {
313
315
  data: undefined;
314
316
  error: TError;
315
317
  isError: true;
@@ -319,7 +321,7 @@ export interface InfiniteQueryObserverLoadingErrorResult<TData = unknown, TError
319
321
  isSuccess: false;
320
322
  status: 'error';
321
323
  }
322
- export interface InfiniteQueryObserverRefetchErrorResult<TData = unknown, TError = RegisteredError> extends InfiniteQueryObserverBaseResult<TData, TError> {
324
+ export interface InfiniteQueryObserverRefetchErrorResult<TData = unknown, TError = DefaultError> extends InfiniteQueryObserverBaseResult<TData, TError> {
323
325
  data: TData;
324
326
  error: TError;
325
327
  isError: true;
@@ -329,7 +331,7 @@ export interface InfiniteQueryObserverRefetchErrorResult<TData = unknown, TError
329
331
  isSuccess: false;
330
332
  status: 'error';
331
333
  }
332
- export interface InfiniteQueryObserverSuccessResult<TData = unknown, TError = RegisteredError> extends InfiniteQueryObserverBaseResult<TData, TError> {
334
+ export interface InfiniteQueryObserverSuccessResult<TData = unknown, TError = DefaultError> extends InfiniteQueryObserverBaseResult<TData, TError> {
333
335
  data: TData;
334
336
  error: null;
335
337
  isError: false;
@@ -339,14 +341,14 @@ export interface InfiniteQueryObserverSuccessResult<TData = unknown, TError = Re
339
341
  isSuccess: true;
340
342
  status: 'success';
341
343
  }
342
- export declare type InfiniteQueryObserverResult<TData = unknown, TError = RegisteredError> = InfiniteQueryObserverLoadingErrorResult<TData, TError> | InfiniteQueryObserverLoadingResult<TData, TError> | InfiniteQueryObserverRefetchErrorResult<TData, TError> | InfiniteQueryObserverSuccessResult<TData, TError>;
344
+ export declare type InfiniteQueryObserverResult<TData = unknown, TError = DefaultError> = InfiniteQueryObserverLoadingErrorResult<TData, TError> | InfiniteQueryObserverLoadingResult<TData, TError> | InfiniteQueryObserverRefetchErrorResult<TData, TError> | InfiniteQueryObserverSuccessResult<TData, TError>;
343
345
  export declare type MutationKey = readonly unknown[];
344
346
  export declare type MutationStatus = 'idle' | 'pending' | 'success' | 'error';
345
- export interface MutationMeta {
346
- [index: string]: unknown;
347
- }
347
+ export declare type MutationMeta = Register extends {
348
+ mutationMeta: infer TMutationMeta;
349
+ } ? TMutationMeta : Record<string, unknown>;
348
350
  export declare type MutationFunction<TData = unknown, TVariables = unknown> = (variables: TVariables) => Promise<TData>;
349
- export interface MutationOptions<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> {
351
+ export interface MutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> {
350
352
  mutationFn?: MutationFunction<TData, TVariables>;
351
353
  mutationKey?: MutationKey;
352
354
  onMutate?: (variables: TVariables) => Promise<TContext | undefined> | TContext | undefined;
@@ -360,16 +362,16 @@ export interface MutationOptions<TData = unknown, TError = RegisteredError, TVar
360
362
  _defaulted?: boolean;
361
363
  meta?: MutationMeta;
362
364
  }
363
- export interface MutationObserverOptions<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> extends MutationOptions<TData, TError, TVariables, TContext> {
365
+ export interface MutationObserverOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends MutationOptions<TData, TError, TVariables, TContext> {
364
366
  throwErrors?: boolean | ((error: TError) => boolean);
365
367
  }
366
- export interface MutateOptions<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> {
368
+ export interface MutateOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> {
367
369
  onSuccess?: (data: TData, variables: TVariables, context: TContext) => void;
368
370
  onError?: (error: TError, variables: TVariables, context: TContext | undefined) => void;
369
371
  onSettled?: (data: TData | undefined, error: TError | null, variables: TVariables, context: TContext | undefined) => void;
370
372
  }
371
- export declare type MutateFunction<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> = (variables: TVariables, options?: MutateOptions<TData, TError, TVariables, TContext>) => Promise<TData>;
372
- export interface MutationObserverBaseResult<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> extends MutationState<TData, TError, TVariables, TContext> {
373
+ export declare type MutateFunction<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = (variables: TVariables, options?: MutateOptions<TData, TError, TVariables, TContext>) => Promise<TData>;
374
+ export interface MutationObserverBaseResult<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends MutationState<TData, TError, TVariables, TContext> {
373
375
  isError: boolean;
374
376
  isIdle: boolean;
375
377
  isPending: boolean;
@@ -377,7 +379,7 @@ export interface MutationObserverBaseResult<TData = unknown, TError = Registered
377
379
  mutate: MutateFunction<TData, TError, TVariables, TContext>;
378
380
  reset: () => void;
379
381
  }
380
- export interface MutationObserverIdleResult<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
382
+ export interface MutationObserverIdleResult<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
381
383
  data: undefined;
382
384
  variables: undefined;
383
385
  error: null;
@@ -387,7 +389,7 @@ export interface MutationObserverIdleResult<TData = unknown, TError = Registered
387
389
  isSuccess: false;
388
390
  status: 'idle';
389
391
  }
390
- export interface MutationObserverLoadingResult<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
392
+ export interface MutationObserverLoadingResult<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
391
393
  data: undefined;
392
394
  variables: TVariables;
393
395
  error: null;
@@ -397,7 +399,7 @@ export interface MutationObserverLoadingResult<TData = unknown, TError = Registe
397
399
  isSuccess: false;
398
400
  status: 'pending';
399
401
  }
400
- export interface MutationObserverErrorResult<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
402
+ export interface MutationObserverErrorResult<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
401
403
  data: undefined;
402
404
  error: TError;
403
405
  variables: TVariables;
@@ -407,7 +409,7 @@ export interface MutationObserverErrorResult<TData = unknown, TError = Registere
407
409
  isSuccess: false;
408
410
  status: 'error';
409
411
  }
410
- export interface MutationObserverSuccessResult<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
412
+ export interface MutationObserverSuccessResult<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends MutationObserverBaseResult<TData, TError, TVariables, TContext> {
411
413
  data: TData;
412
414
  error: null;
413
415
  variables: TVariables;
@@ -417,13 +419,13 @@ export interface MutationObserverSuccessResult<TData = unknown, TError = Registe
417
419
  isSuccess: true;
418
420
  status: 'success';
419
421
  }
420
- export declare type MutationObserverResult<TData = unknown, TError = RegisteredError, TVariables = void, TContext = unknown> = MutationObserverIdleResult<TData, TError, TVariables, TContext> | MutationObserverLoadingResult<TData, TError, TVariables, TContext> | MutationObserverErrorResult<TData, TError, TVariables, TContext> | MutationObserverSuccessResult<TData, TError, TVariables, TContext>;
422
+ export declare type MutationObserverResult<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = MutationObserverIdleResult<TData, TError, TVariables, TContext> | MutationObserverLoadingResult<TData, TError, TVariables, TContext> | MutationObserverErrorResult<TData, TError, TVariables, TContext> | MutationObserverSuccessResult<TData, TError, TVariables, TContext>;
421
423
  export interface QueryClientConfig {
422
424
  queryCache?: QueryCache;
423
425
  mutationCache?: MutationCache;
424
426
  defaultOptions?: DefaultOptions;
425
427
  }
426
- export interface DefaultOptions<TError = RegisteredError> {
428
+ export interface DefaultOptions<TError = DefaultError> {
427
429
  queries?: QueryObserverOptions<unknown, TError>;
428
430
  mutations?: MutationObserverOptions<unknown, TError, unknown, unknown>;
429
431
  }
@@ -81,7 +81,7 @@ function matchMutation(filters, mutation) {
81
81
  return true;
82
82
  }
83
83
  function hashQueryKeyByOptions(queryKey, options) {
84
- const hashFn = options?.queryKeyHashFn || hashKey;
84
+ const hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashKey;
85
85
  return hashFn(queryKey);
86
86
  }
87
87
 
@@ -1 +1 @@
1
- {"version":3,"file":"utils.esm.js","sources":["../../src/utils.ts"],"sourcesContent":["import type { Mutation } from './mutation'\nimport type { Query } from './query'\nimport type {\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryKey,\n QueryOptions,\n} from './types'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation<any, any, any>) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in window\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (\n typeof fetchStatus !== 'undefined' &&\n fetchStatus !== query.state.fetchStatus\n ) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: QueryOptions<any, any, any, TQueryKey>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aSize = array ? a.length : Object.keys(a).length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key]) {\n equalItems++\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\nexport function shallowEqualObjects<T>(a: T, b: T): boolean {\n if ((a && !b) || (b && !a)) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nexport function scheduleMicrotask(callback: () => void) {\n sleep(0).then(callback)\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data)\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData<T>(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n"],"names":["isServer","window","noop","undefined","functionalUpdate","updater","input","isValidTimeout","value","Infinity","timeUntilStale","updatedAt","staleTime","Math","max","Date","now","matchQuery","filters","query","type","exact","fetchStatus","predicate","queryKey","stale","queryHash","hashQueryKeyByOptions","options","partialMatchKey","isActive","isStale","state","matchMutation","mutation","status","mutationKey","hashKey","hashFn","queryKeyHashFn","JSON","stringify","_","val","isPlainObject","Object","keys","sort","reduce","result","key","a","b","some","replaceEqualDeep","array","isPlainArray","aSize","length","bItems","bSize","copy","equalItems","i","shallowEqualObjects","Array","isArray","o","hasObjectPrototype","ctor","constructor","prot","prototype","hasOwnProperty","toString","call","sleep","timeout","Promise","resolve","setTimeout","scheduleMicrotask","callback","then","replaceData","prevData","data","structuralSharing","keepPreviousData","previousData","addToEnd","items","item","newItems","slice","addToStart"],"mappings":"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"}
1
+ {"version":3,"file":"utils.esm.js","sources":["../../src/utils.ts"],"sourcesContent":["import type { Mutation } from './mutation'\nimport type { Query } from './query'\nimport type {\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryKey,\n QueryOptions,\n} from './types'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation<any, any, any>) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in window\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (\n typeof fetchStatus !== 'undefined' &&\n fetchStatus !== query.state.fetchStatus\n ) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: QueryOptions<any, any, any, TQueryKey>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aSize = array ? a.length : Object.keys(a).length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key]) {\n equalItems++\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\nexport function shallowEqualObjects<T>(a: T, b: T): boolean {\n if ((a && !b) || (b && !a)) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nexport function scheduleMicrotask(callback: () => void) {\n sleep(0).then(callback)\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data)\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData<T>(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n"],"names":["isServer","window","noop","undefined","functionalUpdate","updater","input","isValidTimeout","value","Infinity","timeUntilStale","updatedAt","staleTime","Math","max","Date","now","matchQuery","filters","query","type","exact","fetchStatus","predicate","queryKey","stale","queryHash","hashQueryKeyByOptions","options","partialMatchKey","isActive","isStale","state","matchMutation","mutation","status","mutationKey","hashKey","hashFn","queryKeyHashFn","JSON","stringify","_","val","isPlainObject","Object","keys","sort","reduce","result","key","a","b","some","replaceEqualDeep","array","isPlainArray","aSize","length","bItems","bSize","copy","equalItems","i","shallowEqualObjects","Array","isArray","o","hasObjectPrototype","ctor","constructor","prot","prototype","hasOwnProperty","toString","call","sleep","timeout","Promise","resolve","setTimeout","scheduleMicrotask","callback","then","replaceData","prevData","data","structuralSharing","keepPreviousData","previousData","addToEnd","items","item","newItems","slice","addToStart"],"mappings":"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"}
@@ -83,7 +83,7 @@ function matchMutation(filters, mutation) {
83
83
  return true;
84
84
  }
85
85
  function hashQueryKeyByOptions(queryKey, options) {
86
- const hashFn = options?.queryKeyHashFn || hashKey;
86
+ const hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashKey;
87
87
  return hashFn(queryKey);
88
88
  }
89
89
 
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import type { Mutation } from './mutation'\nimport type { Query } from './query'\nimport type {\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryKey,\n QueryOptions,\n} from './types'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation<any, any, any>) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in window\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (\n typeof fetchStatus !== 'undefined' &&\n fetchStatus !== query.state.fetchStatus\n ) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: QueryOptions<any, any, any, TQueryKey>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aSize = array ? a.length : Object.keys(a).length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key]) {\n equalItems++\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\nexport function shallowEqualObjects<T>(a: T, b: T): boolean {\n if ((a && !b) || (b && !a)) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nexport function scheduleMicrotask(callback: () => void) {\n sleep(0).then(callback)\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data)\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData<T>(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n"],"names":["isServer","window","noop","undefined","functionalUpdate","updater","input","isValidTimeout","value","Infinity","timeUntilStale","updatedAt","staleTime","Math","max","Date","now","matchQuery","filters","query","type","exact","fetchStatus","predicate","queryKey","stale","queryHash","hashQueryKeyByOptions","options","partialMatchKey","isActive","isStale","state","matchMutation","mutation","status","mutationKey","hashKey","hashFn","queryKeyHashFn","JSON","stringify","_","val","isPlainObject","Object","keys","sort","reduce","result","key","a","b","some","replaceEqualDeep","array","isPlainArray","aSize","length","bItems","bSize","copy","equalItems","i","shallowEqualObjects","Array","isArray","o","hasObjectPrototype","ctor","constructor","prot","prototype","hasOwnProperty","toString","call","sleep","timeout","Promise","resolve","setTimeout","scheduleMicrotask","callback","then","replaceData","prevData","data","structuralSharing","keepPreviousData","previousData","addToEnd","items","item","newItems","slice","addToStart"],"mappings":";;AAUA;;AAwDA;;AAEO,MAAMA,QAAQ,GAAG,OAAOC,MAAM,KAAK,WAAW,IAAI,MAAM,IAAIA,OAAM;AAElE,SAASC,IAAI,GAAc;AAChC,EAAA,OAAOC,SAAS,CAAA;AAClB,CAAA;AAEO,SAASC,gBAAgB,CAC9BC,OAAiC,EACjCC,KAAa,EACJ;EACT,OAAO,OAAOD,OAAO,KAAK,UAAU,GAC/BA,OAAO,CAAyCC,KAAK,CAAC,GACvDD,OAAO,CAAA;AACb,CAAA;AAEO,SAASE,cAAc,CAACC,KAAc,EAAmB;EAC9D,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,KAAKC,QAAQ,CAAA;AACtE,CAAA;AAEO,SAASC,cAAc,CAACC,SAAiB,EAAEC,SAAkB,EAAU;AAC5E,EAAA,OAAOC,IAAI,CAACC,GAAG,CAACH,SAAS,IAAIC,SAAS,IAAI,CAAC,CAAC,GAAGG,IAAI,CAACC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;AAC/D,CAAA;AAEO,SAASC,UAAU,CACxBC,OAAqB,EACrBC,KAAgC,EACvB;EACT,MAAM;AACJC,IAAAA,IAAI,GAAG,KAAK;IACZC,KAAK;IACLC,WAAW;IACXC,SAAS;IACTC,QAAQ;AACRC,IAAAA,KAAAA;AACF,GAAC,GAAGP,OAAO,CAAA;AAEX,EAAA,IAAIM,QAAQ,EAAE;AACZ,IAAA,IAAIH,KAAK,EAAE;AACT,MAAA,IAAIF,KAAK,CAACO,SAAS,KAAKC,qBAAqB,CAACH,QAAQ,EAAEL,KAAK,CAACS,OAAO,CAAC,EAAE;AACtE,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;KACD,MAAM,IAAI,CAACC,eAAe,CAACV,KAAK,CAACK,QAAQ,EAAEA,QAAQ,CAAC,EAAE;AACrD,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;EAEA,IAAIJ,IAAI,KAAK,KAAK,EAAE;AAClB,IAAA,MAAMU,QAAQ,GAAGX,KAAK,CAACW,QAAQ,EAAE,CAAA;AACjC,IAAA,IAAIV,IAAI,KAAK,QAAQ,IAAI,CAACU,QAAQ,EAAE;AAClC,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACA,IAAA,IAAIV,IAAI,KAAK,UAAU,IAAIU,QAAQ,EAAE;AACnC,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;EAEA,IAAI,OAAOL,KAAK,KAAK,SAAS,IAAIN,KAAK,CAACY,OAAO,EAAE,KAAKN,KAAK,EAAE;AAC3D,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,IACE,OAAOH,WAAW,KAAK,WAAW,IAClCA,WAAW,KAAKH,KAAK,CAACa,KAAK,CAACV,WAAW,EACvC;AACA,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,IAAIC,SAAS,IAAI,CAACA,SAAS,CAACJ,KAAK,CAAC,EAAE;AAClC,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AAEO,SAASc,aAAa,CAC3Bf,OAAwB,EACxBgB,QAA4B,EACnB;EACT,MAAM;IAAEb,KAAK;IAAEc,MAAM;IAAEZ,SAAS;AAAEa,IAAAA,WAAAA;AAAY,GAAC,GAAGlB,OAAO,CAAA;AACzD,EAAA,IAAIkB,WAAW,EAAE;AACf,IAAA,IAAI,CAACF,QAAQ,CAACN,OAAO,CAACQ,WAAW,EAAE;AACjC,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACA,IAAA,IAAIf,KAAK,EAAE;AACT,MAAA,IAAIgB,OAAO,CAACH,QAAQ,CAACN,OAAO,CAACQ,WAAW,CAAC,KAAKC,OAAO,CAACD,WAAW,CAAC,EAAE;AAClE,QAAA,OAAO,KAAK,CAAA;AACd,OAAA;AACF,KAAC,MAAM,IAAI,CAACP,eAAe,CAACK,QAAQ,CAACN,OAAO,CAACQ,WAAW,EAAEA,WAAW,CAAC,EAAE;AACtE,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;EAEA,IAAID,MAAM,IAAID,QAAQ,CAACF,KAAK,CAACG,MAAM,KAAKA,MAAM,EAAE;AAC9C,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,IAAIZ,SAAS,IAAI,CAACA,SAAS,CAACW,QAAQ,CAAC,EAAE;AACrC,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AAEO,SAASP,qBAAqB,CACnCH,QAAmB,EACnBI,OAAgD,EACxC;AACR,EAAA,MAAMU,MAAM,GAAGV,OAAO,EAAEW,cAAc,IAAIF,OAAO,CAAA;EACjD,OAAOC,MAAM,CAACd,QAAQ,CAAC,CAAA;AACzB,CAAA;;AAEA;AACA;AACA;AACA;AACO,SAASa,OAAO,CAACb,QAAgC,EAAU;AAChE,EAAA,OAAOgB,IAAI,CAACC,SAAS,CAACjB,QAAQ,EAAE,CAACkB,CAAC,EAAEC,GAAG,KACrCC,aAAa,CAACD,GAAG,CAAC,GACdE,MAAM,CAACC,IAAI,CAACH,GAAG,CAAC,CACbI,IAAI,EAAE,CACNC,MAAM,CAAC,CAACC,MAAM,EAAEC,GAAG,KAAK;AACvBD,IAAAA,MAAM,CAACC,GAAG,CAAC,GAAGP,GAAG,CAACO,GAAG,CAAC,CAAA;AACtB,IAAA,OAAOD,MAAM,CAAA;AACf,GAAC,EAAE,EAAE,CAAQ,GACfN,GAAG,CACR,CAAA;AACH,CAAA;;AAEA;AACA;AACA;;AAEO,SAASd,eAAe,CAACsB,CAAM,EAAEC,CAAM,EAAW;EACvD,IAAID,CAAC,KAAKC,CAAC,EAAE;AACX,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,IAAI,OAAOD,CAAC,KAAK,OAAOC,CAAC,EAAE;AACzB,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,IAAID,CAAC,IAAIC,CAAC,IAAI,OAAOD,CAAC,KAAK,QAAQ,IAAI,OAAOC,CAAC,KAAK,QAAQ,EAAE;IAC5D,OAAO,CAACP,MAAM,CAACC,IAAI,CAACM,CAAC,CAAC,CAACC,IAAI,CAAEH,GAAG,IAAK,CAACrB,eAAe,CAACsB,CAAC,CAACD,GAAG,CAAC,EAAEE,CAAC,CAACF,GAAG,CAAC,CAAC,CAAC,CAAA;AACxE,GAAA;AAEA,EAAA,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEO,SAASI,gBAAgB,CAACH,CAAM,EAAEC,CAAM,EAAO;EACpD,IAAID,CAAC,KAAKC,CAAC,EAAE;AACX,IAAA,OAAOD,CAAC,CAAA;AACV,GAAA;EAEA,MAAMI,KAAK,GAAGC,YAAY,CAACL,CAAC,CAAC,IAAIK,YAAY,CAACJ,CAAC,CAAC,CAAA;EAEhD,IAAIG,KAAK,IAAKX,aAAa,CAACO,CAAC,CAAC,IAAIP,aAAa,CAACQ,CAAC,CAAE,EAAE;AACnD,IAAA,MAAMK,KAAK,GAAGF,KAAK,GAAGJ,CAAC,CAACO,MAAM,GAAGb,MAAM,CAACC,IAAI,CAACK,CAAC,CAAC,CAACO,MAAM,CAAA;IACtD,MAAMC,MAAM,GAAGJ,KAAK,GAAGH,CAAC,GAAGP,MAAM,CAACC,IAAI,CAACM,CAAC,CAAC,CAAA;AACzC,IAAA,MAAMQ,KAAK,GAAGD,MAAM,CAACD,MAAM,CAAA;AAC3B,IAAA,MAAMG,IAAS,GAAGN,KAAK,GAAG,EAAE,GAAG,EAAE,CAAA;IAEjC,IAAIO,UAAU,GAAG,CAAC,CAAA;IAElB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,EAAEG,CAAC,EAAE,EAAE;MAC9B,MAAMb,GAAG,GAAGK,KAAK,GAAGQ,CAAC,GAAGJ,MAAM,CAACI,CAAC,CAAC,CAAA;AACjCF,MAAAA,IAAI,CAACX,GAAG,CAAC,GAAGI,gBAAgB,CAACH,CAAC,CAACD,GAAG,CAAC,EAAEE,CAAC,CAACF,GAAG,CAAC,CAAC,CAAA;MAC5C,IAAIW,IAAI,CAACX,GAAG,CAAC,KAAKC,CAAC,CAACD,GAAG,CAAC,EAAE;AACxBY,QAAAA,UAAU,EAAE,CAAA;AACd,OAAA;AACF,KAAA;IAEA,OAAOL,KAAK,KAAKG,KAAK,IAAIE,UAAU,KAAKL,KAAK,GAAGN,CAAC,GAAGU,IAAI,CAAA;AAC3D,GAAA;AAEA,EAAA,OAAOT,CAAC,CAAA;AACV,CAAA;;AAEA;AACA;AACA;AACO,SAASY,mBAAmB,CAAIb,CAAI,EAAEC,CAAI,EAAW;EAC1D,IAAKD,CAAC,IAAI,CAACC,CAAC,IAAMA,CAAC,IAAI,CAACD,CAAE,EAAE;AAC1B,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,KAAK,MAAMD,GAAG,IAAIC,CAAC,EAAE;IACnB,IAAIA,CAAC,CAACD,GAAG,CAAC,KAAKE,CAAC,CAACF,GAAG,CAAC,EAAE;AACrB,MAAA,OAAO,KAAK,CAAA;AACd,KAAA;AACF,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AAEO,SAASM,YAAY,CAAChD,KAAc,EAAE;AAC3C,EAAA,OAAOyD,KAAK,CAACC,OAAO,CAAC1D,KAAK,CAAC,IAAIA,KAAK,CAACkD,MAAM,KAAKb,MAAM,CAACC,IAAI,CAACtC,KAAK,CAAC,CAACkD,MAAM,CAAA;AAC3E,CAAA;;AAEA;AACO,SAASd,aAAa,CAACuB,CAAM,EAAe;AACjD,EAAA,IAAI,CAACC,kBAAkB,CAACD,CAAC,CAAC,EAAE;AAC1B,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;;AAEA;AACA,EAAA,MAAME,IAAI,GAAGF,CAAC,CAACG,WAAW,CAAA;AAC1B,EAAA,IAAI,OAAOD,IAAI,KAAK,WAAW,EAAE;AAC/B,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;;AAEA;AACA,EAAA,MAAME,IAAI,GAAGF,IAAI,CAACG,SAAS,CAAA;AAC3B,EAAA,IAAI,CAACJ,kBAAkB,CAACG,IAAI,CAAC,EAAE;AAC7B,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;;AAEA;AACA,EAAA,IAAI,CAACA,IAAI,CAACE,cAAc,CAAC,eAAe,CAAC,EAAE;AACzC,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;;AAEA;AACA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AAEA,SAASL,kBAAkB,CAACD,CAAM,EAAW;EAC3C,OAAOtB,MAAM,CAAC2B,SAAS,CAACE,QAAQ,CAACC,IAAI,CAACR,CAAC,CAAC,KAAK,iBAAiB,CAAA;AAChE,CAAA;AAEO,SAASS,KAAK,CAACC,OAAe,EAAiB;AACpD,EAAA,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;AAC9BC,IAAAA,UAAU,CAACD,OAAO,EAAEF,OAAO,CAAC,CAAA;AAC9B,GAAC,CAAC,CAAA;AACJ,CAAA;;AAEA;AACA;AACA;AACA;AACO,SAASI,iBAAiB,CAACC,QAAoB,EAAE;AACtDN,EAAAA,KAAK,CAAC,CAAC,CAAC,CAACO,IAAI,CAACD,QAAQ,CAAC,CAAA;AACzB,CAAA;AAEO,SAASE,WAAW,CAGzBC,QAA2B,EAAEC,IAAW,EAAE1D,OAAiB,EAAS;AACpE,EAAA,IAAI,OAAOA,OAAO,CAAC2D,iBAAiB,KAAK,UAAU,EAAE;AACnD,IAAA,OAAO3D,OAAO,CAAC2D,iBAAiB,CAACF,QAAQ,EAAEC,IAAI,CAAC,CAAA;AAClD,GAAC,MAAM,IAAI1D,OAAO,CAAC2D,iBAAiB,KAAK,KAAK,EAAE;AAC9C;AACA,IAAA,OAAOjC,gBAAgB,CAAC+B,QAAQ,EAAEC,IAAI,CAAC,CAAA;AACzC,GAAA;AACA,EAAA,OAAOA,IAAI,CAAA;AACb,CAAA;AAEO,SAASE,gBAAgB,CAC9BC,YAA2B,EACZ;AACf,EAAA,OAAOA,YAAY,CAAA;AACrB,CAAA;AAEO,SAASC,QAAQ,CAAIC,KAAU,EAAEC,IAAO,EAAE9E,GAAG,GAAG,CAAC,EAAO;AAC7D,EAAA,MAAM+E,QAAQ,GAAG,CAAC,GAAGF,KAAK,EAAEC,IAAI,CAAC,CAAA;AACjC,EAAA,OAAO9E,GAAG,IAAI+E,QAAQ,CAACnC,MAAM,GAAG5C,GAAG,GAAG+E,QAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAA;AACpE,CAAA;AAEO,SAASE,UAAU,CAAIJ,KAAU,EAAEC,IAAO,EAAE9E,GAAG,GAAG,CAAC,EAAO;AAC/D,EAAA,MAAM+E,QAAQ,GAAG,CAACD,IAAI,EAAE,GAAGD,KAAK,CAAC,CAAA;AACjC,EAAA,OAAO7E,GAAG,IAAI+E,QAAQ,CAACnC,MAAM,GAAG5C,GAAG,GAAG+E,QAAQ,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGD,QAAQ,CAAA;AACxE;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import type { Mutation } from './mutation'\nimport type { Query } from './query'\nimport type {\n FetchStatus,\n MutationKey,\n MutationStatus,\n QueryKey,\n QueryOptions,\n} from './types'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation<any, any, any>) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Filter by mutation status\n */\n status?: MutationStatus\n}\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined' || 'Deno' in window\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (\n typeof fetchStatus !== 'undefined' &&\n fetchStatus !== query.state.fetchStatus\n ) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, status, predicate, mutationKey } = filters\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (status && mutation.state.status !== status) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: QueryOptions<any, any, any, TQueryKey>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query & mutation keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashKey(queryKey: QueryKey | MutationKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean\nexport function partialMatchKey(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialMatchKey(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aSize = array ? a.length : Object.keys(a).length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key]) {\n equalItems++\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\nexport function shallowEqualObjects<T>(a: T, b: T): boolean {\n if ((a && !b) || (b && !a)) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nexport function scheduleMicrotask(callback: () => void) {\n sleep(0).then(callback)\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data)\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n\nexport function keepPreviousData<T>(\n previousData: T | undefined,\n): T | undefined {\n return previousData\n}\n\nexport function addToEnd<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [...items, item]\n return max && newItems.length > max ? newItems.slice(1) : newItems\n}\n\nexport function addToStart<T>(items: T[], item: T, max = 0): T[] {\n const newItems = [item, ...items]\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems\n}\n"],"names":["isServer","window","noop","undefined","functionalUpdate","updater","input","isValidTimeout","value","Infinity","timeUntilStale","updatedAt","staleTime","Math","max","Date","now","matchQuery","filters","query","type","exact","fetchStatus","predicate","queryKey","stale","queryHash","hashQueryKeyByOptions","options","partialMatchKey","isActive","isStale","state","matchMutation","mutation","status","mutationKey","hashKey","hashFn","queryKeyHashFn","JSON","stringify","_","val","isPlainObject","Object","keys","sort","reduce","result","key","a","b","some","replaceEqualDeep","array","isPlainArray","aSize","length","bItems","bSize","copy","equalItems","i","shallowEqualObjects","Array","isArray","o","hasObjectPrototype","ctor","constructor","prot","prototype","hasOwnProperty","toString","call","sleep","timeout","Promise","resolve","setTimeout","scheduleMicrotask","callback","then","replaceData","prevData","data","structuralSharing","keepPreviousData","previousData","addToEnd","items","item","newItems","slice","addToStart"],"mappings":"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"}