@qiaopeng/tanstack-query-plus 0.5.8 → 0.5.10

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 (250) hide show
  1. package/README.md +155 -95
  2. package/dist/{types/base.d.ts → base-CHnwqfyz.d.cts} +12 -14
  3. package/dist/base-CHnwqfyz.d.ts +52 -0
  4. package/dist/chunk-52ZO6Y67.cjs +1121 -0
  5. package/dist/chunk-52ZO6Y67.cjs.map +1 -0
  6. package/dist/chunk-5J6OXSLW.cjs +36 -0
  7. package/dist/chunk-5J6OXSLW.cjs.map +1 -0
  8. package/dist/chunk-6MAYHLTE.cjs +310 -0
  9. package/dist/chunk-6MAYHLTE.cjs.map +1 -0
  10. package/dist/chunk-ADS2QTMP.js +144 -0
  11. package/dist/chunk-ADS2QTMP.js.map +1 -0
  12. package/dist/chunk-APXNNHBD.cjs +374 -0
  13. package/dist/chunk-APXNNHBD.cjs.map +1 -0
  14. package/dist/chunk-AXMWOGNX.js +134 -0
  15. package/dist/chunk-AXMWOGNX.js.map +1 -0
  16. package/dist/chunk-B4KO3K3E.cjs +521 -0
  17. package/dist/chunk-B4KO3K3E.cjs.map +1 -0
  18. package/dist/chunk-BK3OTIBD.cjs +15 -0
  19. package/dist/chunk-BK3OTIBD.cjs.map +1 -0
  20. package/dist/chunk-BYAOQALW.js +13 -0
  21. package/dist/chunk-BYAOQALW.js.map +1 -0
  22. package/dist/chunk-CRTVS7VI.cjs +162 -0
  23. package/dist/chunk-CRTVS7VI.cjs.map +1 -0
  24. package/dist/chunk-EXITP7QO.js +288 -0
  25. package/dist/chunk-EXITP7QO.js.map +1 -0
  26. package/dist/chunk-GMO3PRZZ.js +565 -0
  27. package/dist/chunk-GMO3PRZZ.js.map +1 -0
  28. package/dist/chunk-HRO2DWKZ.js +12 -0
  29. package/dist/chunk-HRO2DWKZ.js.map +1 -0
  30. package/dist/chunk-JHDKUQSB.js +1069 -0
  31. package/dist/chunk-JHDKUQSB.js.map +1 -0
  32. package/dist/chunk-JN2Y6RSY.js +23 -0
  33. package/dist/chunk-JN2Y6RSY.js.map +1 -0
  34. package/dist/chunk-JRJSKRZW.cjs +29 -0
  35. package/dist/chunk-JRJSKRZW.cjs.map +1 -0
  36. package/dist/chunk-KC62H4VJ.js +123 -0
  37. package/dist/chunk-KC62H4VJ.js.map +1 -0
  38. package/dist/chunk-LHEHSLD5.js +31 -0
  39. package/dist/chunk-LHEHSLD5.js.map +1 -0
  40. package/dist/chunk-N4264P7N.cjs +156 -0
  41. package/dist/chunk-N4264P7N.cjs.map +1 -0
  42. package/dist/chunk-NF5QYPYC.cjs +133 -0
  43. package/dist/chunk-NF5QYPYC.cjs.map +1 -0
  44. package/dist/chunk-OFLCHKKE.cjs +28 -0
  45. package/dist/chunk-OFLCHKKE.cjs.map +1 -0
  46. package/dist/chunk-PCNSWVA5.cjs +602 -0
  47. package/dist/chunk-PCNSWVA5.cjs.map +1 -0
  48. package/dist/chunk-STOMAA2X.js +85 -0
  49. package/dist/chunk-STOMAA2X.js.map +1 -0
  50. package/dist/chunk-UVF5S6LX.cjs +15 -0
  51. package/dist/chunk-UVF5S6LX.cjs.map +1 -0
  52. package/dist/chunk-WEIXCDCA.cjs +90 -0
  53. package/dist/chunk-WEIXCDCA.cjs.map +1 -0
  54. package/dist/chunk-X3ZTSLBQ.js +355 -0
  55. package/dist/chunk-X3ZTSLBQ.js.map +1 -0
  56. package/dist/chunk-YEV73J4J.js +504 -0
  57. package/dist/chunk-YEV73J4J.js.map +1 -0
  58. package/dist/chunk-YW5PNTRU.cjs +14 -0
  59. package/dist/chunk-YW5PNTRU.cjs.map +1 -0
  60. package/dist/chunk-ZNXSWUIS.js +12 -0
  61. package/dist/chunk-ZNXSWUIS.js.map +1 -0
  62. package/dist/chunk-ZUEMBY4W.js +21 -0
  63. package/dist/chunk-ZUEMBY4W.js.map +1 -0
  64. package/dist/components/index.cjs +60 -0
  65. package/dist/components/index.cjs.map +1 -0
  66. package/dist/components/index.d.cts +43 -0
  67. package/dist/components/index.d.ts +43 -4
  68. package/dist/components/index.js +3 -4
  69. package/dist/components/index.js.map +1 -0
  70. package/dist/core/devtools.cjs +25 -0
  71. package/dist/core/devtools.cjs.map +1 -0
  72. package/dist/core/devtools.d.cts +17 -0
  73. package/dist/core/devtools.d.ts +9 -7
  74. package/dist/core/devtools.js +4 -16
  75. package/dist/core/devtools.js.map +1 -0
  76. package/dist/core/index.cjs +220 -0
  77. package/dist/core/index.cjs.map +1 -0
  78. package/dist/core/index.d.cts +196 -0
  79. package/dist/core/index.d.ts +196 -9
  80. package/dist/core/index.js +7 -8
  81. package/dist/core/index.js.map +1 -0
  82. package/dist/features/index.cjs +76 -0
  83. package/dist/features/index.cjs.map +1 -0
  84. package/dist/features/index.d.cts +86 -0
  85. package/dist/features/index.d.ts +86 -4
  86. package/dist/features/index.js +7 -3
  87. package/dist/features/index.js.map +1 -0
  88. package/dist/hooks/index.cjs +209 -0
  89. package/dist/hooks/index.cjs.map +1 -0
  90. package/dist/hooks/index.d.cts +377 -0
  91. package/dist/hooks/index.d.ts +377 -10
  92. package/dist/hooks/index.js +8 -9
  93. package/dist/hooks/index.js.map +1 -0
  94. package/dist/hooks/useInViewPrefetch.cjs +33 -0
  95. package/dist/hooks/useInViewPrefetch.cjs.map +1 -0
  96. package/dist/hooks/useInViewPrefetch.d.cts +12 -0
  97. package/dist/hooks/useInViewPrefetch.d.ts +6 -4
  98. package/dist/hooks/useInViewPrefetch.js +30 -20
  99. package/dist/hooks/useInViewPrefetch.js.map +1 -0
  100. package/dist/index.cjs +811 -0
  101. package/dist/index.cjs.map +1 -0
  102. package/dist/index.d.cts +36 -0
  103. package/dist/index.d.ts +36 -8
  104. package/dist/index.js +89 -7
  105. package/dist/index.js.map +1 -0
  106. package/dist/{types/offline.d.ts → offline-DVPtgoAS.d.ts} +15 -13
  107. package/dist/offline-xxeA_-6V.d.cts +99 -0
  108. package/dist/persistence-MRtkmhqq.d.cts +216 -0
  109. package/dist/persistence-tIrEb0pR.d.ts +216 -0
  110. package/dist/react-query/index.cjs +52 -0
  111. package/dist/react-query/index.cjs.map +1 -0
  112. package/dist/react-query/index.d.cts +1 -0
  113. package/dist/react-query/index.d.ts +1 -3
  114. package/dist/react-query/index.js +3 -1
  115. package/dist/react-query/index.js.map +1 -0
  116. package/dist/types/index.cjs +43 -0
  117. package/dist/types/index.cjs.map +1 -0
  118. package/dist/types/index.d.cts +157 -0
  119. package/dist/types/index.d.ts +116 -12
  120. package/dist/types/index.js +6 -8
  121. package/dist/types/index.js.map +1 -0
  122. package/dist/utils/index.cjs +234 -0
  123. package/dist/utils/index.cjs.map +1 -0
  124. package/dist/utils/index.d.cts +272 -0
  125. package/dist/utils/index.d.ts +272 -10
  126. package/dist/utils/index.js +9 -9
  127. package/dist/utils/index.js.map +1 -0
  128. package/package.json +13 -3
  129. package/dist/PersistQueryClientProvider.d.ts +0 -22
  130. package/dist/PersistQueryClientProvider.d.ts.map +0 -1
  131. package/dist/PersistQueryClientProvider.js +0 -47
  132. package/dist/components/LoadingFallback.d.ts +0 -16
  133. package/dist/components/LoadingFallback.d.ts.map +0 -1
  134. package/dist/components/LoadingFallback.js +0 -27
  135. package/dist/components/QueryErrorBoundary.d.ts +0 -12
  136. package/dist/components/QueryErrorBoundary.d.ts.map +0 -1
  137. package/dist/components/QueryErrorBoundary.js +0 -9
  138. package/dist/components/SuspenseWrapper.d.ts +0 -14
  139. package/dist/components/SuspenseWrapper.d.ts.map +0 -1
  140. package/dist/components/SuspenseWrapper.js +0 -9
  141. package/dist/components/index.d.ts.map +0 -1
  142. package/dist/components/internal/ErrorBoundary.d.ts +0 -27
  143. package/dist/components/internal/ErrorBoundary.d.ts.map +0 -1
  144. package/dist/components/internal/ErrorBoundary.js +0 -37
  145. package/dist/core/config.d.ts +0 -80
  146. package/dist/core/config.d.ts.map +0 -1
  147. package/dist/core/config.js +0 -321
  148. package/dist/core/devtools.d.ts.map +0 -1
  149. package/dist/core/env.d.ts +0 -4
  150. package/dist/core/env.d.ts.map +0 -1
  151. package/dist/core/env.js +0 -26
  152. package/dist/core/focusManager.d.ts +0 -33
  153. package/dist/core/focusManager.d.ts.map +0 -1
  154. package/dist/core/focusManager.js +0 -122
  155. package/dist/core/index.d.ts.map +0 -1
  156. package/dist/core/keys.d.ts +0 -59
  157. package/dist/core/keys.d.ts.map +0 -1
  158. package/dist/core/keys.js +0 -107
  159. package/dist/core/queryOptions.d.ts +0 -19
  160. package/dist/core/queryOptions.d.ts.map +0 -1
  161. package/dist/core/queryOptions.js +0 -44
  162. package/dist/features/index.d.ts.map +0 -1
  163. package/dist/features/offline.d.ts +0 -48
  164. package/dist/features/offline.d.ts.map +0 -1
  165. package/dist/features/offline.js +0 -269
  166. package/dist/features/persistence.d.ts +0 -36
  167. package/dist/features/persistence.d.ts.map +0 -1
  168. package/dist/features/persistence.js +0 -186
  169. package/dist/hooks/batchQueries.d.ts +0 -129
  170. package/dist/hooks/batchQueries.d.ts.map +0 -1
  171. package/dist/hooks/batchQueries.js +0 -301
  172. package/dist/hooks/index.d.ts.map +0 -1
  173. package/dist/hooks/useDataGuardMutation.d.ts +0 -39
  174. package/dist/hooks/useDataGuardMutation.d.ts.map +0 -1
  175. package/dist/hooks/useDataGuardMutation.js +0 -151
  176. package/dist/hooks/useDataGuardQuery.d.ts +0 -28
  177. package/dist/hooks/useDataGuardQuery.d.ts.map +0 -1
  178. package/dist/hooks/useDataGuardQuery.js +0 -71
  179. package/dist/hooks/useFocusManager.d.ts +0 -41
  180. package/dist/hooks/useFocusManager.d.ts.map +0 -1
  181. package/dist/hooks/useFocusManager.js +0 -109
  182. package/dist/hooks/useInViewPrefetch.d.ts.map +0 -1
  183. package/dist/hooks/useInfiniteQuery.d.ts +0 -33
  184. package/dist/hooks/useInfiniteQuery.d.ts.map +0 -1
  185. package/dist/hooks/useInfiniteQuery.js +0 -61
  186. package/dist/hooks/useMutation.d.ts +0 -25
  187. package/dist/hooks/useMutation.d.ts.map +0 -1
  188. package/dist/hooks/useMutation.js +0 -180
  189. package/dist/hooks/usePrefetch.d.ts +0 -54
  190. package/dist/hooks/usePrefetch.d.ts.map +0 -1
  191. package/dist/hooks/usePrefetch.js +0 -229
  192. package/dist/hooks/useQuery.d.ts +0 -21
  193. package/dist/hooks/useQuery.d.ts.map +0 -1
  194. package/dist/hooks/useQuery.js +0 -46
  195. package/dist/hooks/useSuspenseQuery.d.ts +0 -11
  196. package/dist/hooks/useSuspenseQuery.d.ts.map +0 -1
  197. package/dist/hooks/useSuspenseQuery.js +0 -19
  198. package/dist/index.d.ts.map +0 -1
  199. package/dist/react-query/index.d.ts.map +0 -1
  200. package/dist/types/base.d.ts.map +0 -1
  201. package/dist/types/base.js +0 -26
  202. package/dist/types/dataGuard.d.ts +0 -69
  203. package/dist/types/dataGuard.d.ts.map +0 -1
  204. package/dist/types/dataGuard.js +0 -10
  205. package/dist/types/index.d.ts.map +0 -1
  206. package/dist/types/infinite.d.ts +0 -39
  207. package/dist/types/infinite.d.ts.map +0 -1
  208. package/dist/types/infinite.js +0 -1
  209. package/dist/types/offline.d.ts.map +0 -1
  210. package/dist/types/offline.js +0 -8
  211. package/dist/types/optimistic.d.ts +0 -126
  212. package/dist/types/optimistic.d.ts.map +0 -1
  213. package/dist/types/optimistic.js +0 -7
  214. package/dist/types/persistence.d.ts +0 -9
  215. package/dist/types/persistence.d.ts.map +0 -1
  216. package/dist/types/persistence.js +0 -1
  217. package/dist/types/selectors.d.ts +0 -11
  218. package/dist/types/selectors.d.ts.map +0 -1
  219. package/dist/types/selectors.js +0 -1
  220. package/dist/types/suspense.d.ts +0 -67
  221. package/dist/types/suspense.d.ts.map +0 -1
  222. package/dist/types/suspense.js +0 -1
  223. package/dist/utils/dataGuard.d.ts +0 -37
  224. package/dist/utils/dataGuard.d.ts.map +0 -1
  225. package/dist/utils/dataGuard.js +0 -257
  226. package/dist/utils/fieldMapper.d.ts +0 -9
  227. package/dist/utils/fieldMapper.d.ts.map +0 -1
  228. package/dist/utils/fieldMapper.js +0 -27
  229. package/dist/utils/index.d.ts.map +0 -1
  230. package/dist/utils/network.d.ts +0 -9
  231. package/dist/utils/network.d.ts.map +0 -1
  232. package/dist/utils/network.js +0 -43
  233. package/dist/utils/optimisticUtils.d.ts +0 -45
  234. package/dist/utils/optimisticUtils.d.ts.map +0 -1
  235. package/dist/utils/optimisticUtils.js +0 -116
  236. package/dist/utils/placeholderData.d.ts +0 -3
  237. package/dist/utils/placeholderData.d.ts.map +0 -1
  238. package/dist/utils/placeholderData.js +0 -28
  239. package/dist/utils/prefetchManager.d.ts +0 -111
  240. package/dist/utils/prefetchManager.d.ts.map +0 -1
  241. package/dist/utils/prefetchManager.js +0 -246
  242. package/dist/utils/queryKey.d.ts +0 -24
  243. package/dist/utils/queryKey.d.ts.map +0 -1
  244. package/dist/utils/queryKey.js +0 -77
  245. package/dist/utils/selectors.d.ts +0 -30
  246. package/dist/utils/selectors.d.ts.map +0 -1
  247. package/dist/utils/selectors.js +0 -18
  248. package/dist/utils/storage.d.ts +0 -7
  249. package/dist/utils/storage.d.ts.map +0 -1
  250. package/dist/utils/storage.js +0 -84
@@ -1,10 +1,377 @@
1
- export { batchQueryUtils, calculateBatchStats, createBatchQueryConfig, useAutoRefreshBatchQueries, useBatchQueryPerformance, useCombinedQueries, useConditionalBatchQueries, useDashboardQueries, useDependentBatchQueries, useDynamicBatchQueries, useEnhancedQueries, useEnhancedSuspenseQueries, usePaginatedBatchQueries, useRetryBatchQueries } from "./batchQueries.js";
2
- export { useConditionalFocusRefetch, useFocusCallback, useFocusRefetch, type UseFocusRefetchOptions, useFocusState, usePageVisibility, usePauseFocus, type UsePauseFocusOptions, useSmartFocusManager } from "./useFocusManager.js";
3
- export { createCursorPaginationOptions, createInfiniteQueryOptions, createOffsetPaginationOptions, createPageNumberPaginationOptions, useEnhancedInfiniteQuery } from "./useInfiniteQuery.js";
4
- export { cancelQueriesBatch, invalidateQueriesBatch, type MutationDefaultsConfig, type MutationKey, setQueryDataBatch, setupMutationDefaults, useListMutation, useMutation } from "./useMutation.js";
5
- export { type HoverPrefetchOptions, type InViewPrefetchOptions, type PrefetchOptions, useBatchPrefetch, useConditionalPrefetch, useHoverPrefetch, useIdlePrefetch, usePeriodicPrefetch, usePredictivePrefetch, usePriorityPrefetch, useRoutePrefetch, useSmartPrefetch } from "./usePrefetch.js";
6
- export { skipToken, useEnhancedQuery, type EnhancedQueryOptions, type EnhancedQueryResult } from "./useQuery.js";
7
- export { createSuspenseInfiniteQuery, createSuspenseQuery, useEnhancedSuspenseInfiniteQuery, useEnhancedSuspenseQuery } from "./useSuspenseQuery.js";
8
- export { useDataGuardQueryConfig } from "./useDataGuardQuery.js";
9
- export { useDataGuardMutation, type DataGuardMutationOptions } from "./useDataGuardMutation.js";
10
- //# sourceMappingURL=index.d.ts.map
1
+ import { UseQueryResult, UseSuspenseQueryResult, UseQueryOptions, QueryClient, DefaultError, UseSuspenseQueryOptions, QueryKey, UseInfiniteQueryOptions, QueryFunction, UseInfiniteQueryResult, UseMutationOptions, MutationFunction, UseMutationResult, QueryFunctionContext, UseSuspenseInfiniteQueryOptions, UseSuspenseInfiniteQueryResult, useMutationState as useMutationState$1, QueryFilters, MutationFilters } from '@tanstack/react-query';
2
+ export { MutationFilters, MutationKey, skipToken } from '@tanstack/react-query';
3
+ import { o as BatchErrorAggregate, n as BatchOperationReport, k as BatchQueryStats, l as BatchQueryConfig, p as BatchQueryOperations, s as EntityWithId, V as VersionedEntity, a as VersionedPaginatedResponse, c as DataGuardOptions } from '../persistence-tIrEb0pR.js';
4
+ import { CursorPaginatedResponse, OffsetPaginatedResponse, PageNumberPaginatedResponse, MutationOptions } from '../types/index.js';
5
+ import '../base-CHnwqfyz.js';
6
+ import '../offline-DVPtgoAS.js';
7
+ import 'react';
8
+ import '@tanstack/react-query-persist-client';
9
+
10
+ interface InternalBatchQueryOperations extends BatchQueryOperations {
11
+ _queryClient: QueryClient;
12
+ _queries: UseQueryOptions[];
13
+ _results: UseQueryResult[] | UseSuspenseQueryResult[];
14
+ }
15
+ declare function calculateBatchStats(results: UseQueryResult[] | UseSuspenseQueryResult[]): BatchQueryStats;
16
+ declare function useEnhancedQueries(queries: UseQueryOptions[], config?: BatchQueryConfig): {
17
+ data: UseQueryResult<unknown, Error>[];
18
+ stats: BatchQueryStats;
19
+ operations: InternalBatchQueryOperations;
20
+ config: BatchQueryConfig<unknown, Error>;
21
+ };
22
+ declare function useEnhancedSuspenseQueries(queries: UseSuspenseQueryOptions[], config?: BatchQueryConfig): {
23
+ data: UseSuspenseQueryResult<unknown, Error>[];
24
+ stats: BatchQueryStats;
25
+ operations: InternalBatchQueryOperations;
26
+ config: BatchQueryConfig<unknown, Error>;
27
+ };
28
+ declare function createBatchQueryConfig(config?: Partial<BatchQueryConfig>): BatchQueryConfig;
29
+ declare const batchQueryUtils: {
30
+ isAllLoading: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => boolean;
31
+ isAllSuccess: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => boolean;
32
+ hasError: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => boolean;
33
+ hasStale: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => boolean;
34
+ getAllErrors: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => Error[];
35
+ getAllData: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => unknown[];
36
+ isAllPending: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => boolean;
37
+ isAnyFetching: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => boolean;
38
+ getSuccessData: <T>(results: UseQueryResult<T>[]) => T[];
39
+ getFirstError: (results: UseQueryResult[] | UseSuspenseQueryResult[]) => Error | null;
40
+ createErrorAggregate: <TError = Error>(results: UseQueryResult[] | UseSuspenseQueryResult[], queries: UseQueryOptions[]) => BatchErrorAggregate<TError>;
41
+ createOperationReport: <TData = unknown, TError = Error>(results: UseQueryResult[] | UseSuspenseQueryResult[], queries: UseQueryOptions[], startTime: number, retryCount?: number) => BatchOperationReport<TData, TError>;
42
+ };
43
+ declare function useCombinedQueries<TCombinedResult = UseQueryResult[]>(options: {
44
+ queries: UseQueryOptions[];
45
+ combine?: (results: UseQueryResult[]) => TCombinedResult;
46
+ }): TCombinedResult;
47
+ declare function useDynamicBatchQueries<TItem, TData = unknown>(options: {
48
+ items: TItem[];
49
+ queryKeyPrefix: unknown[];
50
+ queryFn: (item: TItem) => Promise<TData>;
51
+ enabled?: boolean;
52
+ staleTime?: number;
53
+ gcTime?: number;
54
+ config?: BatchQueryConfig;
55
+ }): {
56
+ data: UseQueryResult<unknown, Error>[];
57
+ stats: BatchQueryStats;
58
+ operations: InternalBatchQueryOperations;
59
+ config: BatchQueryConfig<unknown, Error>;
60
+ };
61
+ declare function useDependentBatchQueries<TPrimaryData>(options: {
62
+ primaryQuery: UseQueryOptions<TPrimaryData>;
63
+ dependentQueries: (data: TPrimaryData) => UseQueryOptions[];
64
+ config?: BatchQueryConfig;
65
+ }): DependentBatchQueriesResult<TPrimaryData>;
66
+ interface DependentBatchQueriesResult<TPrimaryData> {
67
+ primaryResult: UseQueryResult<TPrimaryData, DefaultError>;
68
+ results: UseQueryResult[];
69
+ stats: BatchQueryStats;
70
+ operations: InternalBatchQueryOperations;
71
+ }
72
+ declare function useAutoRefreshBatchQueries(options: {
73
+ queries: UseQueryOptions[];
74
+ refreshInterval?: number;
75
+ enabled?: boolean;
76
+ config?: BatchQueryConfig;
77
+ }): {
78
+ data: UseQueryResult<unknown, Error>[];
79
+ stats: BatchQueryStats;
80
+ operations: InternalBatchQueryOperations;
81
+ config: BatchQueryConfig<unknown, Error>;
82
+ };
83
+ declare function useDashboardQueries<T extends Record<string, UseQueryOptions>>(queriesMap: T): {
84
+ data: { [K in keyof T]: T[K] extends UseQueryOptions<infer TData, Error, infer TData, readonly unknown[]> ? TData : unknown; };
85
+ results: UseQueryResult<unknown, Error>[];
86
+ stats: BatchQueryStats;
87
+ isLoading: boolean;
88
+ isError: boolean;
89
+ isSuccess: boolean;
90
+ };
91
+ declare function usePaginatedBatchQueries<TData = unknown>(options: {
92
+ pageNumbers: number[];
93
+ queryKeyPrefix: unknown[];
94
+ queryFn: (page: number) => Promise<TData>;
95
+ staleTime?: number;
96
+ config?: BatchQueryConfig;
97
+ }): {
98
+ data: UseQueryResult<unknown, Error>[];
99
+ stats: BatchQueryStats;
100
+ operations: InternalBatchQueryOperations;
101
+ config: BatchQueryConfig<unknown, Error>;
102
+ };
103
+ declare function useConditionalBatchQueries(queries: (UseQueryOptions & {
104
+ enabled?: boolean;
105
+ })[]): {
106
+ data: UseQueryResult<unknown, Error>[];
107
+ stats: BatchQueryStats;
108
+ operations: InternalBatchQueryOperations;
109
+ config: BatchQueryConfig<unknown, Error>;
110
+ };
111
+ declare function useRetryBatchQueries(options: {
112
+ queries: UseQueryOptions[];
113
+ retry?: number | ((failureCount: number, error: Error) => boolean);
114
+ retryDelay?: number | ((attemptIndex: number) => number);
115
+ config?: BatchQueryConfig;
116
+ }): {
117
+ data: UseQueryResult<unknown, Error>[];
118
+ stats: BatchQueryStats;
119
+ operations: InternalBatchQueryOperations;
120
+ config: BatchQueryConfig<unknown, Error>;
121
+ };
122
+ declare function useBatchQueryPerformance(results: UseQueryResult[] | UseSuspenseQueryResult[]): {
123
+ avgFetchTime: number;
124
+ totalQueries: number;
125
+ activeQueries: number;
126
+ cachedQueries: number;
127
+ total: number;
128
+ loading: number;
129
+ success: number;
130
+ error: number;
131
+ stale: number;
132
+ successRate: number;
133
+ errorRate: number;
134
+ };
135
+
136
+ interface UseFocusRefetchOptions {
137
+ enabled?: boolean;
138
+ minInterval?: number;
139
+ queryKeys?: QueryKey[];
140
+ }
141
+ interface UsePauseFocusOptions {
142
+ autoPause?: boolean;
143
+ pauseWhen?: boolean;
144
+ }
145
+ declare function useFocusState(): boolean;
146
+ declare function useFocusRefetch(options?: UseFocusRefetchOptions): void;
147
+ declare function usePauseFocus(options?: UsePauseFocusOptions): {
148
+ pause: () => void;
149
+ resume: () => void;
150
+ };
151
+ declare function useSmartFocusManager(): {
152
+ pause: () => void;
153
+ resume: () => void;
154
+ getStats: () => {
155
+ isPaused: boolean;
156
+ pauseCount: number;
157
+ isFocused: boolean;
158
+ };
159
+ stats: {
160
+ isPaused: boolean;
161
+ pauseCount: number;
162
+ isFocused: boolean;
163
+ };
164
+ };
165
+ declare function useConditionalFocusRefetch(queryKey: QueryKey, condition: () => boolean, options?: {
166
+ minInterval?: number;
167
+ enabled?: boolean;
168
+ }): void;
169
+ declare function useFocusCallback(callback: () => void, options?: {
170
+ minInterval?: number;
171
+ enabled?: boolean;
172
+ queryKey?: QueryKey;
173
+ }): void;
174
+ declare function usePageVisibility(): boolean;
175
+
176
+ declare function useEnhancedInfiniteQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): UseInfiniteQueryResult<TData, TError>;
177
+ declare function createInfiniteQueryOptions<TQueryFnData = unknown, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(config: {
178
+ queryKey: TQueryKey;
179
+ queryFn: QueryFunction<TQueryFnData, TQueryKey, TPageParam>;
180
+ initialPageParam: TPageParam;
181
+ getNextPageParam: (lastPage: TQueryFnData, allPages: TQueryFnData[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
182
+ getPreviousPageParam?: (firstPage: TQueryFnData, allPages: TQueryFnData[], firstPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
183
+ staleTime?: number;
184
+ gcTime?: number;
185
+ maxPages?: number;
186
+ }): UseInfiniteQueryOptions<TQueryFnData, DefaultError, TQueryFnData, TQueryKey, TPageParam>;
187
+ declare function createCursorPaginationOptions<T>(config: {
188
+ queryKey: QueryKey;
189
+ queryFn: (cursor: string | null) => Promise<CursorPaginatedResponse<T>>;
190
+ initialCursor?: string | null;
191
+ staleTime?: number;
192
+ gcTime?: number;
193
+ maxPages?: number;
194
+ }): UseInfiniteQueryOptions<CursorPaginatedResponse<T>, DefaultError, CursorPaginatedResponse<T>, QueryKey, string | null>;
195
+ declare function createOffsetPaginationOptions<T>(config: {
196
+ queryKey: QueryKey;
197
+ queryFn: (offset: number, limit: number) => Promise<OffsetPaginatedResponse<T>>;
198
+ limit?: number;
199
+ staleTime?: number;
200
+ gcTime?: number;
201
+ maxPages?: number;
202
+ }): UseInfiniteQueryOptions<OffsetPaginatedResponse<T>, DefaultError, OffsetPaginatedResponse<T>, QueryKey, number>;
203
+ declare function createPageNumberPaginationOptions<T>(config: {
204
+ queryKey: QueryKey;
205
+ queryFn: (page: number) => Promise<PageNumberPaginatedResponse<T>>;
206
+ staleTime?: number;
207
+ gcTime?: number;
208
+ maxPages?: number;
209
+ }): UseInfiniteQueryOptions<PageNumberPaginatedResponse<T>, DefaultError, PageNumberPaginatedResponse<T>, QueryKey, number>;
210
+
211
+ interface MutationDefaultsConfig {
212
+ [key: string]: UseMutationOptions<any, any, any, any>;
213
+ }
214
+ declare function useMutation<TData = unknown, TError = Error, TVariables = void, TContext = unknown>(options: MutationOptions<TData, TError, TVariables, TContext>): UseMutationResult<TData, TError, TVariables, TContext>;
215
+ declare function setupMutationDefaults(queryClient: QueryClient, config: MutationDefaultsConfig): void;
216
+ declare function useListMutation<T extends EntityWithId>(mutationFn: MutationFunction<T, {
217
+ operation: string;
218
+ data: Partial<T>;
219
+ }>, queryKey: QueryKey, options?: UseMutationOptions<T, Error, {
220
+ operation: string;
221
+ data: Partial<T>;
222
+ }> & {
223
+ mutationKey?: readonly unknown[];
224
+ }): UseMutationResult<T, Error, {
225
+ operation: string;
226
+ data: Partial<T>;
227
+ }, unknown>;
228
+
229
+ interface PrefetchOptions {
230
+ delay?: number;
231
+ enabled?: boolean;
232
+ staleTime?: number;
233
+ minInterval?: number;
234
+ }
235
+ interface HoverPrefetchOptions extends PrefetchOptions {
236
+ hoverDelay?: number;
237
+ }
238
+ interface InViewPrefetchOptions extends PrefetchOptions {
239
+ threshold?: number;
240
+ rootMargin?: string;
241
+ triggerOnce?: boolean;
242
+ }
243
+ declare function useHoverPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: HoverPrefetchOptions): {
244
+ onMouseEnter: () => void;
245
+ onMouseLeave: () => void;
246
+ onFocus: () => void;
247
+ };
248
+ declare function useRoutePrefetch(): <TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions) => void;
249
+ declare function useBatchPrefetch(): <TData = unknown>(queries: Array<{
250
+ queryKey: QueryKey;
251
+ queryFn: QueryFunction<TData>;
252
+ staleTime?: number;
253
+ }>) => void;
254
+ declare function useSmartPrefetch(): {
255
+ prefetch: <TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions) => void;
256
+ shouldPrefetch: boolean;
257
+ clearPrefetchHistory: () => void;
258
+ };
259
+ declare function useConditionalPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, condition: boolean, options?: PrefetchOptions): void;
260
+ declare function useIdlePrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions & {
261
+ timeout?: number;
262
+ }): void;
263
+ declare function usePeriodicPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions & {
264
+ interval?: number;
265
+ }): void;
266
+ declare function usePredictivePrefetch(): {
267
+ recordInteraction: (action: string, target: string) => void;
268
+ getPredictions: () => string[];
269
+ prefetchPredicted: <TData = unknown>(getQueryConfig: (target: string) => {
270
+ queryKey: QueryKey;
271
+ queryFn: QueryFunction<TData>;
272
+ }) => void;
273
+ clearHistory: () => void;
274
+ };
275
+ declare function usePriorityPrefetch(): {
276
+ addPrefetchTask: <TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, priority?: "high" | "medium" | "low") => void;
277
+ processTasks: () => Promise<void>;
278
+ clearTasks: () => void;
279
+ taskCount: number;
280
+ };
281
+
282
+ interface EnhancedQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> {
283
+ /** Log errors to console in development */
284
+ logErrors?: boolean;
285
+ /** Callback when query takes longer than threshold */
286
+ onSlowQuery?: (duration: number, queryKey: TQueryKey) => void;
287
+ /** Threshold in ms to trigger onSlowQuery (default: 3000) */
288
+ slowQueryThreshold?: number;
289
+ /** Enable performance tracking */
290
+ trackPerformance?: boolean;
291
+ }
292
+ type EnhancedQueryResult<TData = unknown, TError = DefaultError> = UseQueryResult<TData, TError> & {
293
+ /** Number of times the query has been refetched */
294
+ refetchCount: number;
295
+ /** Last query duration in ms */
296
+ lastQueryDuration: number | null;
297
+ };
298
+ declare function useEnhancedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: EnhancedQueryOptions<TQueryFnData, TError, TData, TQueryKey>): EnhancedQueryResult<TData, TError>;
299
+
300
+ type InfiniteQueryFunction<TQueryFnData = unknown, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = (context: QueryFunctionContext<TQueryKey, TPageParam>) => Promise<TQueryFnData>;
301
+ declare function createSuspenseQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TVariables = void>(getQueryKey: (variables: TVariables) => TQueryKey, queryFn: QueryFunction<TQueryFnData, TQueryKey>, options?: Omit<UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn">): (variables: TVariables) => UseSuspenseQueryResult<TData, TError>;
302
+ declare function createSuspenseInfiniteQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, TVariables = void>(getQueryKey: (variables: TVariables) => TQueryKey, queryFn: InfiniteQueryFunction<TQueryFnData, TQueryKey, TPageParam>, options: Omit<UseSuspenseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, "queryKey" | "queryFn"> & {
303
+ getNextPageParam: (lastPage: TQueryFnData, allPages: TQueryFnData[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
304
+ initialPageParam: TPageParam;
305
+ }): (variables: TVariables) => UseSuspenseInfiniteQueryResult<TData, TError>;
306
+ declare function useEnhancedSuspenseQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>): UseSuspenseQueryResult<TData, TError>;
307
+ declare function useEnhancedSuspenseInfiniteQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: UseSuspenseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>): UseSuspenseInfiniteQueryResult<TData, TError>;
308
+
309
+ /**
310
+ * Hook: 创建带数据防护的查询配置
311
+ *
312
+ * 自动根据后端返回的数据选择最佳防护策略:
313
+ * 1. 如果有 version 字段 → 使用版本号比较(最可靠)
314
+ * 2. 如果有 updatedAt 字段 → 使用时间戳比较(次优)
315
+ * 3. 都没有 → 使用内容哈希比较(兜底)
316
+ *
317
+ * @example
318
+ * ```typescript
319
+ * const { data } = useEnhancedQuery(
320
+ * useDataGuardQueryConfig(
321
+ * ['products', 'list', { page: 1, pageSize: 20 }],
322
+ * () => fetchProducts(1, 20),
323
+ * {
324
+ * maxDataAge: 5000,
325
+ * onStaleDataDetected: (info) => {
326
+ * console.warn('检测到旧数据', info)
327
+ * }
328
+ * }
329
+ * )
330
+ * )
331
+ * ```
332
+ */
333
+ declare function useDataGuardQueryConfig<T extends VersionedEntity>(queryKey: QueryKey, fetchFn: () => Promise<VersionedPaginatedResponse<T>>, options?: DataGuardOptions): Pick<UseQueryOptions<VersionedPaginatedResponse<T>>, "queryKey" | "queryFn">;
334
+
335
+ interface DataGuardMutationOptions<TData, TError, TVariables, TContext> extends MutationOptions<TData, TError, TVariables, TContext> {
336
+ /** 冲突错误回调 */
337
+ onConflict?: (error: any) => void;
338
+ }
339
+ /**
340
+ * 带数据防护的 Mutation Hook
341
+ *
342
+ * 自动处理:
343
+ * 1. 乐观更新时递增版本号和更新时间戳
344
+ * 2. 标记最近更新的项
345
+ * 3. 成功后更新所有家族缓存的元数据
346
+ * 4. 冲突检测(409 错误)
347
+ * 5. 延迟清理更新标记
348
+ *
349
+ * @example
350
+ * ```typescript
351
+ * const mutation = useDataGuardMutation(
352
+ * (updated) => api.updateProduct(updated.id, updated),
353
+ * ['products', 'list', { page: 1, pageSize: 20 }],
354
+ * {
355
+ * optimistic: {
356
+ * queryKey: ['products', 'list', { page: 1, pageSize: 20 }],
357
+ * updater: (old, updated) => ({
358
+ * ...old,
359
+ * items: old?.items?.map(p => p.id === updated.id ? updated : p)
360
+ * })
361
+ * },
362
+ * onConflict: (error) => {
363
+ * toast.error('数据冲突,请刷新')
364
+ * }
365
+ * }
366
+ * )
367
+ * ```
368
+ */
369
+ declare function useDataGuardMutation<TData extends VersionedEntity = VersionedEntity, TError = Error, TVariables extends VersionedEntity = VersionedEntity, TContext = unknown>(mutationFn: (data: TVariables) => Promise<TData>, queryKey: QueryKey, options?: DataGuardMutationOptions<TData, TError, TVariables, TContext>): UseMutationResult<TData, TError, TVariables, TContext>;
370
+
371
+ type MutationStateOptions<TResult = unknown> = Parameters<typeof useMutationState$1<TResult>>[0];
372
+ declare function useMutationState<TResult = unknown>(options?: MutationStateOptions<TResult>): Array<TResult>;
373
+
374
+ declare function useIsFetching(filters?: QueryFilters): number;
375
+ declare function useIsMutating(filters?: MutationFilters): number;
376
+
377
+ export { type DataGuardMutationOptions, type EnhancedQueryOptions, type EnhancedQueryResult, type HoverPrefetchOptions, type InViewPrefetchOptions, type MutationDefaultsConfig, type MutationStateOptions, type PrefetchOptions, type UseFocusRefetchOptions, type UsePauseFocusOptions, batchQueryUtils, calculateBatchStats, createBatchQueryConfig, createCursorPaginationOptions, createInfiniteQueryOptions, createOffsetPaginationOptions, createPageNumberPaginationOptions, createSuspenseInfiniteQuery, createSuspenseQuery, setupMutationDefaults, useAutoRefreshBatchQueries, useBatchPrefetch, useBatchQueryPerformance, useCombinedQueries, useConditionalBatchQueries, useConditionalFocusRefetch, useConditionalPrefetch, useDashboardQueries, useDataGuardMutation, useDataGuardQueryConfig, useDependentBatchQueries, useDynamicBatchQueries, useEnhancedInfiniteQuery, useEnhancedQueries, useEnhancedQuery, useEnhancedSuspenseInfiniteQuery, useEnhancedSuspenseQueries, useEnhancedSuspenseQuery, useFocusCallback, useFocusRefetch, useFocusState, useHoverPrefetch, useIdlePrefetch, useIsFetching, useIsMutating, useListMutation, useMutation, useMutationState, usePageVisibility, usePaginatedBatchQueries, usePauseFocus, usePeriodicPrefetch, usePredictivePrefetch, usePriorityPrefetch, useRetryBatchQueries, useRoutePrefetch, useSmartFocusManager, useSmartPrefetch };
@@ -1,9 +1,8 @@
1
- export { batchQueryUtils, calculateBatchStats, createBatchQueryConfig, useAutoRefreshBatchQueries, useBatchQueryPerformance, useCombinedQueries, useConditionalBatchQueries, useDashboardQueries, useDependentBatchQueries, useDynamicBatchQueries, useEnhancedQueries, useEnhancedSuspenseQueries, usePaginatedBatchQueries, useRetryBatchQueries } from "./batchQueries.js";
2
- export { useConditionalFocusRefetch, useFocusCallback, useFocusRefetch, useFocusState, usePageVisibility, usePauseFocus, useSmartFocusManager } from "./useFocusManager.js";
3
- export { createCursorPaginationOptions, createInfiniteQueryOptions, createOffsetPaginationOptions, createPageNumberPaginationOptions, useEnhancedInfiniteQuery } from "./useInfiniteQuery.js";
4
- export { cancelQueriesBatch, invalidateQueriesBatch, setQueryDataBatch, setupMutationDefaults, useListMutation, useMutation } from "./useMutation.js";
5
- export { useBatchPrefetch, useConditionalPrefetch, useHoverPrefetch, useIdlePrefetch, usePeriodicPrefetch, usePredictivePrefetch, usePriorityPrefetch, useRoutePrefetch, useSmartPrefetch } from "./usePrefetch.js";
6
- export { skipToken, useEnhancedQuery } from "./useQuery.js";
7
- export { createSuspenseInfiniteQuery, createSuspenseQuery, useEnhancedSuspenseInfiniteQuery, useEnhancedSuspenseQuery } from "./useSuspenseQuery.js";
8
- export { useDataGuardQueryConfig } from "./useDataGuardQuery.js";
9
- export { useDataGuardMutation } from "./useDataGuardMutation.js";
1
+ export { batchQueryUtils, calculateBatchStats, createBatchQueryConfig, createCursorPaginationOptions, createInfiniteQueryOptions, createOffsetPaginationOptions, createPageNumberPaginationOptions, createSuspenseInfiniteQuery, createSuspenseQuery, setupMutationDefaults, skipToken, useAutoRefreshBatchQueries, useBatchPrefetch, useBatchQueryPerformance, useCombinedQueries, useConditionalBatchQueries, useConditionalFocusRefetch, useConditionalPrefetch, useDashboardQueries, useDataGuardMutation, useDataGuardQueryConfig, useDependentBatchQueries, useDynamicBatchQueries, useEnhancedInfiniteQuery, useEnhancedQueries, useEnhancedQuery, useEnhancedSuspenseInfiniteQuery, useEnhancedSuspenseQueries, useEnhancedSuspenseQuery, useFocusCallback, useFocusRefetch, useFocusState, useHoverPrefetch, useIdlePrefetch, useIsFetching, useIsMutating, useListMutation, useMutation, useMutationState, usePageVisibility, usePaginatedBatchQueries, usePauseFocus, usePeriodicPrefetch, usePredictivePrefetch, usePriorityPrefetch, useRetryBatchQueries, useRoutePrefetch, useSmartFocusManager, useSmartPrefetch } from '../chunk-JHDKUQSB.js';
2
+ import '../chunk-HRO2DWKZ.js';
3
+ import '../chunk-X3ZTSLBQ.js';
4
+ import '../chunk-KC62H4VJ.js';
5
+ import '../chunk-EXITP7QO.js';
6
+ import '../chunk-JN2Y6RSY.js';
7
+ //# sourceMappingURL=index.js.map
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var chunk6MAYHLTE_cjs = require('../chunk-6MAYHLTE.cjs');
4
+ require('../chunk-OFLCHKKE.cjs');
5
+ var reactQuery = require('@tanstack/react-query');
6
+ var react = require('react');
7
+ var reactIntersectionObserver = require('react-intersection-observer');
8
+
9
+ function useInViewPrefetch(queryKey, queryFn, options = {}) {
10
+ const queryClient = reactQuery.useQueryClient();
11
+ const { threshold = 0.1, rootMargin = "50px", triggerOnce = true, enabled = true, staleTime = chunk6MAYHLTE_cjs.DEFAULT_STALE_TIME } = options;
12
+ const [ref, inView] = reactIntersectionObserver.useInView({ threshold, rootMargin, triggerOnce });
13
+ const queryFnRef = react.useRef(queryFn);
14
+ react.useEffect(() => {
15
+ queryFnRef.current = queryFn;
16
+ }, [queryFn]);
17
+ const stableQueryKey = react.useRef(queryKey);
18
+ react.useEffect(() => {
19
+ if (JSON.stringify(stableQueryKey.current) !== JSON.stringify(queryKey)) {
20
+ stableQueryKey.current = queryKey;
21
+ }
22
+ }, [queryKey]);
23
+ react.useEffect(() => {
24
+ if (inView && enabled) {
25
+ queryClient.prefetchQuery({ queryKey: stableQueryKey.current, queryFn: queryFnRef.current, staleTime });
26
+ }
27
+ }, [inView, queryClient, enabled, staleTime]);
28
+ return ref;
29
+ }
30
+
31
+ exports.useInViewPrefetch = useInViewPrefetch;
32
+ //# sourceMappingURL=useInViewPrefetch.cjs.map
33
+ //# sourceMappingURL=useInViewPrefetch.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useInViewPrefetch.ts"],"names":["useQueryClient","DEFAULT_STALE_TIME","useInView","useRef","useEffect"],"mappings":";;;;;;;;AAQO,SAAS,iBAAA,CAAmC,QAAA,EAAoB,OAAA,EAA+B,OAAA,GAAiC,EAAC,EAAG;AACzI,EAAA,MAAM,cAAcA,yBAAA,EAAe;AACnC,EAAA,MAAM,EAAE,SAAA,GAAY,GAAA,EAAK,UAAA,GAAa,MAAA,EAAQ,WAAA,GAAc,IAAA,EAAM,OAAA,GAAU,IAAA,EAAM,SAAA,GAAYC,oCAAA,EAAmB,GAAI,OAAA;AACrH,EAAA,MAAM,CAAC,KAAK,MAAM,CAAA,GAAIC,oCAAU,EAAE,SAAA,EAAW,UAAA,EAAY,WAAA,EAAa,CAAA;AACtE,EAAA,MAAM,UAAA,GAAaC,aAAO,OAAO,CAAA;AACjC,EAAAC,eAAA,CAAU,MAAM;AAAE,IAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAAA,EAAS,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAC5D,EAAA,MAAM,cAAA,GAAiBD,aAAO,QAAQ,CAAA;AACtC,EAAAC,eAAA,CAAU,MAAM;AAAE,IAAA,IAAI,IAAA,CAAK,UAAU,cAAA,CAAe,OAAO,MAAM,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA,EAAG;AAAE,MAAA,cAAA,CAAe,OAAA,GAAU,QAAA;AAAA,IAAU;AAAA,EAAE,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAC/I,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAU,OAAA,EAAS;AACrB,MAAA,WAAA,CAAY,aAAA,CAAc,EAAE,QAAA,EAAU,cAAA,CAAe,SAAS,OAAA,EAAS,UAAA,CAAW,OAAA,EAAS,SAAA,EAAW,CAAA;AAAA,IACxG;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,WAAA,EAAa,OAAA,EAAS,SAAS,CAAC,CAAA;AAC5C,EAAA,OAAO,GAAA;AACT","file":"useInViewPrefetch.cjs","sourcesContent":["import type { QueryFunction, QueryKey } from \"@tanstack/react-query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useEffect, useRef } from \"react\";\nimport { useInView } from \"react-intersection-observer\";\nimport { DEFAULT_STALE_TIME } from \"../core/config.js\";\n\nexport interface InViewPrefetchOptions { threshold?: number; rootMargin?: string; triggerOnce?: boolean; enabled?: boolean; staleTime?: number }\n\nexport function useInViewPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options: InViewPrefetchOptions = {}) {\n const queryClient = useQueryClient();\n const { threshold = 0.1, rootMargin = \"50px\", triggerOnce = true, enabled = true, staleTime = DEFAULT_STALE_TIME } = options;\n const [ref, inView] = useInView({ threshold, rootMargin, triggerOnce });\n const queryFnRef = useRef(queryFn);\n useEffect(() => { queryFnRef.current = queryFn; }, [queryFn]);\n const stableQueryKey = useRef(queryKey);\n useEffect(() => { if (JSON.stringify(stableQueryKey.current) !== JSON.stringify(queryKey)) { stableQueryKey.current = queryKey; } }, [queryKey]);\n useEffect(() => {\n if (inView && enabled) {\n queryClient.prefetchQuery({ queryKey: stableQueryKey.current, queryFn: queryFnRef.current, staleTime });\n }\n }, [inView, queryClient, enabled, staleTime]);\n return ref;\n}"]}
@@ -0,0 +1,12 @@
1
+ import { QueryKey, QueryFunction } from '@tanstack/react-query';
2
+
3
+ interface InViewPrefetchOptions {
4
+ threshold?: number;
5
+ rootMargin?: string;
6
+ triggerOnce?: boolean;
7
+ enabled?: boolean;
8
+ staleTime?: number;
9
+ }
10
+ declare function useInViewPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: InViewPrefetchOptions): (node?: Element | null) => void;
11
+
12
+ export { type InViewPrefetchOptions, useInViewPrefetch };
@@ -1,10 +1,12 @@
1
- import type { QueryFunction, QueryKey } from "@tanstack/react-query";
2
- export interface InViewPrefetchOptions {
1
+ import { QueryKey, QueryFunction } from '@tanstack/react-query';
2
+
3
+ interface InViewPrefetchOptions {
3
4
  threshold?: number;
4
5
  rootMargin?: string;
5
6
  triggerOnce?: boolean;
6
7
  enabled?: boolean;
7
8
  staleTime?: number;
8
9
  }
9
- export declare function useInViewPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: InViewPrefetchOptions): (node?: Element | null) => void;
10
- //# sourceMappingURL=useInViewPrefetch.d.ts.map
10
+ declare function useInViewPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: InViewPrefetchOptions): (node?: Element | null) => void;
11
+
12
+ export { type InViewPrefetchOptions, useInViewPrefetch };
@@ -1,21 +1,31 @@
1
- import { useQueryClient } from "@tanstack/react-query";
2
- import { useEffect, useRef } from "react";
3
- import { useInView } from "react-intersection-observer";
4
- import { DEFAULT_STALE_TIME } from "../core/config.js";
5
- export function useInViewPrefetch(queryKey, queryFn, options = {}) {
6
- const queryClient = useQueryClient();
7
- const { threshold = 0.1, rootMargin = "50px", triggerOnce = true, enabled = true, staleTime = DEFAULT_STALE_TIME } = options;
8
- const [ref, inView] = useInView({ threshold, rootMargin, triggerOnce });
9
- const queryFnRef = useRef(queryFn);
10
- useEffect(() => { queryFnRef.current = queryFn; }, [queryFn]);
11
- const stableQueryKey = useRef(queryKey);
12
- useEffect(() => { if (JSON.stringify(stableQueryKey.current) !== JSON.stringify(queryKey)) {
13
- stableQueryKey.current = queryKey;
14
- } }, [queryKey]);
15
- useEffect(() => {
16
- if (inView && enabled) {
17
- queryClient.prefetchQuery({ queryKey: stableQueryKey.current, queryFn: queryFnRef.current, staleTime });
18
- }
19
- }, [inView, queryClient, enabled, staleTime]);
20
- return ref;
1
+ import { DEFAULT_STALE_TIME } from '../chunk-EXITP7QO.js';
2
+ import '../chunk-JN2Y6RSY.js';
3
+ import { useQueryClient } from '@tanstack/react-query';
4
+ import { useRef, useEffect } from 'react';
5
+ import { useInView } from 'react-intersection-observer';
6
+
7
+ function useInViewPrefetch(queryKey, queryFn, options = {}) {
8
+ const queryClient = useQueryClient();
9
+ const { threshold = 0.1, rootMargin = "50px", triggerOnce = true, enabled = true, staleTime = DEFAULT_STALE_TIME } = options;
10
+ const [ref, inView] = useInView({ threshold, rootMargin, triggerOnce });
11
+ const queryFnRef = useRef(queryFn);
12
+ useEffect(() => {
13
+ queryFnRef.current = queryFn;
14
+ }, [queryFn]);
15
+ const stableQueryKey = useRef(queryKey);
16
+ useEffect(() => {
17
+ if (JSON.stringify(stableQueryKey.current) !== JSON.stringify(queryKey)) {
18
+ stableQueryKey.current = queryKey;
19
+ }
20
+ }, [queryKey]);
21
+ useEffect(() => {
22
+ if (inView && enabled) {
23
+ queryClient.prefetchQuery({ queryKey: stableQueryKey.current, queryFn: queryFnRef.current, staleTime });
24
+ }
25
+ }, [inView, queryClient, enabled, staleTime]);
26
+ return ref;
21
27
  }
28
+
29
+ export { useInViewPrefetch };
30
+ //# sourceMappingURL=useInViewPrefetch.js.map
31
+ //# sourceMappingURL=useInViewPrefetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useInViewPrefetch.ts"],"names":[],"mappings":";;;;;;AAQO,SAAS,iBAAA,CAAmC,QAAA,EAAoB,OAAA,EAA+B,OAAA,GAAiC,EAAC,EAAG;AACzI,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,EAAE,SAAA,GAAY,GAAA,EAAK,UAAA,GAAa,MAAA,EAAQ,WAAA,GAAc,IAAA,EAAM,OAAA,GAAU,IAAA,EAAM,SAAA,GAAY,kBAAA,EAAmB,GAAI,OAAA;AACrH,EAAA,MAAM,CAAC,KAAK,MAAM,CAAA,GAAI,UAAU,EAAE,SAAA,EAAW,UAAA,EAAY,WAAA,EAAa,CAAA;AACtE,EAAA,MAAM,UAAA,GAAa,OAAO,OAAO,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AAAE,IAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAAA,EAAS,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAC5D,EAAA,MAAM,cAAA,GAAiB,OAAO,QAAQ,CAAA;AACtC,EAAA,SAAA,CAAU,MAAM;AAAE,IAAA,IAAI,IAAA,CAAK,UAAU,cAAA,CAAe,OAAO,MAAM,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAA,EAAG;AAAE,MAAA,cAAA,CAAe,OAAA,GAAU,QAAA;AAAA,IAAU;AAAA,EAAE,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAC/I,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAU,OAAA,EAAS;AACrB,MAAA,WAAA,CAAY,aAAA,CAAc,EAAE,QAAA,EAAU,cAAA,CAAe,SAAS,OAAA,EAAS,UAAA,CAAW,OAAA,EAAS,SAAA,EAAW,CAAA;AAAA,IACxG;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,WAAA,EAAa,OAAA,EAAS,SAAS,CAAC,CAAA;AAC5C,EAAA,OAAO,GAAA;AACT","file":"useInViewPrefetch.js","sourcesContent":["import type { QueryFunction, QueryKey } from \"@tanstack/react-query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { useEffect, useRef } from \"react\";\nimport { useInView } from \"react-intersection-observer\";\nimport { DEFAULT_STALE_TIME } from \"../core/config.js\";\n\nexport interface InViewPrefetchOptions { threshold?: number; rootMargin?: string; triggerOnce?: boolean; enabled?: boolean; staleTime?: number }\n\nexport function useInViewPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options: InViewPrefetchOptions = {}) {\n const queryClient = useQueryClient();\n const { threshold = 0.1, rootMargin = \"50px\", triggerOnce = true, enabled = true, staleTime = DEFAULT_STALE_TIME } = options;\n const [ref, inView] = useInView({ threshold, rootMargin, triggerOnce });\n const queryFnRef = useRef(queryFn);\n useEffect(() => { queryFnRef.current = queryFn; }, [queryFn]);\n const stableQueryKey = useRef(queryKey);\n useEffect(() => { if (JSON.stringify(stableQueryKey.current) !== JSON.stringify(queryKey)) { stableQueryKey.current = queryKey; } }, [queryKey]);\n useEffect(() => {\n if (inView && enabled) {\n queryClient.prefetchQuery({ queryKey: stableQueryKey.current, queryFn: queryFnRef.current, staleTime });\n }\n }, [inView, queryClient, enabled, staleTime]);\n return ref;\n}"]}