@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,180 +0,0 @@
1
- import { useQueryClient, useMutation as useTanStackMutation } from "@tanstack/react-query";
2
- import { DEFAULT_MUTATION_CONFIG } from "../core/config.js";
3
- function deriveFamilyKey(queryKey) {
4
- const arr = Array.isArray(queryKey) ? [...queryKey] : [queryKey];
5
- while (arr.length > 1) {
6
- const last = arr[arr.length - 1];
7
- if (last && typeof last === "object" && !Array.isArray(last)) {
8
- arr.pop();
9
- continue;
10
- }
11
- if (typeof last === "string" && (last === "paginated" || last === "filtered" || last === "sorted" || last === "search" || last === "complex")) {
12
- arr.pop();
13
- continue;
14
- }
15
- break;
16
- }
17
- return arr;
18
- }
19
- function isListFamilyKey(queryKey) {
20
- const parts = Array.isArray(queryKey) ? queryKey : [queryKey];
21
- return parts.includes("list") || parts.includes("paginated");
22
- }
23
- export function invalidateQueriesBatch(queryClient, tasks) {
24
- tasks.forEach(task => queryClient.invalidateQueries(task));
25
- }
26
- export function cancelQueriesBatch(queryClient, tasks) {
27
- tasks.forEach(task => queryClient.cancelQueries(task));
28
- }
29
- export function setQueryDataBatch(queryClient, tasks) {
30
- tasks.forEach(task => queryClient.setQueryData(task.queryKey, task.data));
31
- }
32
- export function useMutation(options) {
33
- const queryClient = useQueryClient();
34
- const { optimistic, onMutate, onError, onSuccess, onSettled, ...restOptions } = options;
35
- const mutationConfig = {
36
- ...restOptions,
37
- retry: restOptions.retry ?? DEFAULT_MUTATION_CONFIG?.retry,
38
- retryDelay: restOptions.retryDelay ?? DEFAULT_MUTATION_CONFIG?.retryDelay,
39
- gcTime: restOptions.gcTime ?? DEFAULT_MUTATION_CONFIG?.gcTime
40
- };
41
- if (!optimistic) {
42
- if (onMutate) {
43
- mutationConfig.onMutate = onMutate;
44
- }
45
- if (onError) {
46
- mutationConfig.onError = onError;
47
- }
48
- if (onSuccess) {
49
- mutationConfig.onSuccess = onSuccess;
50
- }
51
- if (onSettled) {
52
- mutationConfig.onSettled = onSettled;
53
- }
54
- }
55
- else {
56
- mutationConfig.onMutate = async (variables) => {
57
- if (optimistic.enabled === false) {
58
- const mutateCallback = onMutate;
59
- const userContext = onMutate ? await mutateCallback(variables) : undefined;
60
- return { userContext };
61
- }
62
- try {
63
- // Derive family key (e.g., ['products', 'list'] from ['products', 'list', { page: 1, pageSize: 10 }])
64
- const familyKey = optimistic.familyKey ?? deriveFamilyKey(optimistic.queryKey);
65
- // Cancel all queries in the family to prevent race conditions
66
- await queryClient.cancelQueries({ queryKey: familyKey });
67
- // Save snapshots of all queries in the family
68
- const previousData = queryClient.getQueriesData({ queryKey: familyKey });
69
- // Apply field mapping if specified
70
- let mappedVariables = variables;
71
- if (optimistic.fieldMapping && typeof variables === "object" && variables !== null) {
72
- mappedVariables = { ...variables };
73
- const sourceObj = variables;
74
- const targetObj = mappedVariables;
75
- Object.entries(optimistic.fieldMapping).forEach(([sourceField, targetField]) => {
76
- if (sourceField in sourceObj) {
77
- targetObj[targetField] = sourceObj[sourceField];
78
- }
79
- });
80
- }
81
- // ✅ Official approach: Update all cached query variants using setQueriesData
82
- queryClient.setQueriesData({ queryKey: familyKey }, (oldData) => {
83
- if (!oldData)
84
- return oldData;
85
- return optimistic.updater(oldData, mappedVariables);
86
- });
87
- const mutateCallback = onMutate;
88
- const userContext = onMutate ? await mutateCallback(variables) : undefined;
89
- return { previousData, userContext };
90
- }
91
- catch (error) {
92
- return { userContext: undefined };
93
- }
94
- };
95
- mutationConfig.onError = (error, variables, context) => {
96
- // Rollback all query variants
97
- if (context?.previousData) {
98
- context.previousData.forEach(([queryKey, data]) => {
99
- queryClient.setQueryData(queryKey, data);
100
- });
101
- }
102
- if (optimistic.rollback && context?.previousData) {
103
- try {
104
- // Call rollback with the first snapshot (usually the current query)
105
- const firstSnapshot = context.previousData[0]?.[1];
106
- if (firstSnapshot) {
107
- optimistic.rollback(firstSnapshot, error);
108
- }
109
- }
110
- catch { }
111
- }
112
- if (onError) {
113
- const errorCallback = onError;
114
- errorCallback(error, variables, context?.userContext);
115
- }
116
- };
117
- mutationConfig.onSuccess = (data, variables, context) => {
118
- // Determine invalidation scope
119
- const scope = optimistic.invalidateScope ?? (isListFamilyKey(optimistic.queryKey) ? "family" : "exact");
120
- const invalidations = [];
121
- if (scope !== "none") {
122
- if (scope === "family") {
123
- const familyKey = optimistic.familyKey ?? deriveFamilyKey(optimistic.queryKey);
124
- invalidations.push({ queryKey: familyKey });
125
- }
126
- else {
127
- invalidations.push({ queryKey: optimistic.queryKey });
128
- }
129
- }
130
- // Add related keys
131
- if (Array.isArray(optimistic.relatedKeys) && optimistic.relatedKeys.length > 0) {
132
- optimistic.relatedKeys.forEach((k) => invalidations.push({ queryKey: k }));
133
- }
134
- if (Array.isArray(optimistic.invalidates) && optimistic.invalidates.length > 0) {
135
- optimistic.invalidates.forEach((k) => invalidations.push({ queryKey: k }));
136
- }
137
- // Execute invalidations (deduplicated)
138
- if (invalidations.length > 0) {
139
- const seen = new Set();
140
- const tasks = invalidations
141
- .map((cfg) => ({ ...cfg, exact: false }))
142
- .filter((cfg) => {
143
- const key = JSON.stringify(cfg.queryKey);
144
- if (seen.has(key))
145
- return false;
146
- seen.add(key);
147
- return true;
148
- });
149
- tasks.forEach(task => queryClient.invalidateQueries(task));
150
- }
151
- if (onSuccess) {
152
- const successCallback = onSuccess;
153
- successCallback(data, variables, context?.userContext);
154
- }
155
- };
156
- mutationConfig.onSettled = (data, error, variables, context) => {
157
- if (onSettled) {
158
- const settledCallback = onSettled;
159
- settledCallback(data, error, variables, context?.userContext);
160
- }
161
- };
162
- }
163
- return useTanStackMutation(mutationConfig);
164
- }
165
- export function setupMutationDefaults(queryClient, config) {
166
- Object.entries(config).forEach(([key, options]) => { queryClient.setMutationDefaults([key], options); });
167
- }
168
- export function useListMutation(mutationFn, queryKey, options) {
169
- const queryClient = useQueryClient();
170
- return useTanStackMutation({
171
- mutationFn,
172
- onSettled: () => {
173
- // Invalidate all queries in the family
174
- const familyKey = deriveFamilyKey(queryKey);
175
- queryClient.invalidateQueries({ queryKey: familyKey, exact: false });
176
- },
177
- ...options,
178
- mutationKey: options?.mutationKey
179
- });
180
- }
@@ -1,54 +0,0 @@
1
- import type { QueryFunction, QueryKey } from "@tanstack/react-query";
2
- export interface PrefetchOptions {
3
- delay?: number;
4
- enabled?: boolean;
5
- staleTime?: number;
6
- minInterval?: number;
7
- }
8
- export interface HoverPrefetchOptions extends PrefetchOptions {
9
- hoverDelay?: number;
10
- }
11
- export interface InViewPrefetchOptions extends PrefetchOptions {
12
- threshold?: number;
13
- rootMargin?: string;
14
- triggerOnce?: boolean;
15
- }
16
- export declare function useHoverPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: HoverPrefetchOptions): {
17
- onMouseEnter: () => void;
18
- onMouseLeave: () => void;
19
- onFocus: () => void;
20
- };
21
- export declare function useRoutePrefetch(): <TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions) => void;
22
- export declare function useBatchPrefetch(): <TData = unknown>(queries: Array<{
23
- queryKey: QueryKey;
24
- queryFn: QueryFunction<TData>;
25
- staleTime?: number;
26
- }>) => void;
27
- export declare function useSmartPrefetch(): {
28
- prefetch: <TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions) => void;
29
- shouldPrefetch: boolean;
30
- clearPrefetchHistory: () => void;
31
- };
32
- export declare function useConditionalPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, condition: boolean, options?: PrefetchOptions): void;
33
- export declare function useIdlePrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions & {
34
- timeout?: number;
35
- }): void;
36
- export declare function usePeriodicPrefetch<TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, options?: PrefetchOptions & {
37
- interval?: number;
38
- }): void;
39
- export declare function usePredictivePrefetch(): {
40
- recordInteraction: (action: string, target: string) => void;
41
- getPredictions: () => string[];
42
- prefetchPredicted: <TData = unknown>(getQueryConfig: (target: string) => {
43
- queryKey: QueryKey;
44
- queryFn: QueryFunction<TData>;
45
- }) => void;
46
- clearHistory: () => void;
47
- };
48
- export declare function usePriorityPrefetch(): {
49
- addPrefetchTask: <TData = unknown>(queryKey: QueryKey, queryFn: QueryFunction<TData>, priority?: "high" | "medium" | "low") => void;
50
- processTasks: () => Promise<void>;
51
- clearTasks: () => void;
52
- taskCount: number;
53
- };
54
- //# sourceMappingURL=usePrefetch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePrefetch.d.ts","sourceRoot":"","sources":["../../src/hooks/usePrefetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMrE,MAAM,WAAW,eAAe;IAAG,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;AAChH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAAG,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACrF,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAAG,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE;AASjI,wBAAgB,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,GAAE,oBAAyB;;;;EAwBtI;AAGD,wBAAgB,gBAAgB,KAGV,KAAK,sBAAsB,QAAQ,WAAW,aAAa,CAAC,KAAK,CAAC,YAAY,eAAe,UAUlH;AAED,wBAAgB,gBAAgB,KAEV,KAAK,qBAAqB,KAAK,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,UAO/H;AAED,wBAAgB,gBAAgB;eAUA,KAAK,sBAAsB,QAAQ,WAAW,aAAa,CAAC,KAAK,CAAC,YAAY,eAAe;;;EAa5H;AAaD,wBAAgB,sBAAsB,CAAC,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,QAgBvJ;AAED,wBAAgB,eAAe,CAAC,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,QAwBnJ;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,QAkBxJ;AAED,wBAAgB,qBAAqB;gCAIY,MAAM,UAAU,MAAM;;wBAa9B,KAAK,4BAA4B,CAAC,MAAM,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;KAAE;;EASlJ;AAED,wBAAgB,mBAAmB;sBAII,KAAK,sBAAsB,QAAQ,WAAW,aAAa,CAAC,KAAK,CAAC,aAAY,MAAM,GAAG,QAAQ,GAAG,KAAK;;;;EAmB7I"}
@@ -1,229 +0,0 @@
1
- import { useQueryClient } from "@tanstack/react-query";
2
- import { useCallback, useEffect, useRef, useState } from "react";
3
- import { DEFAULT_STALE_TIME } from "../core/config.js";
4
- import { isSlowNetwork } from "../utils/network.js";
5
- function isMissingOrStale(queryClient, queryKey, staleTime) {
6
- const state = queryClient.getQueryState(queryKey);
7
- if (!state || state.data === undefined)
8
- return true;
9
- const updatedAt = state.dataUpdatedAt ?? 0;
10
- return Date.now() - updatedAt > staleTime;
11
- }
12
- export function useHoverPrefetch(queryKey, queryFn, options = {}) {
13
- const queryClient = useQueryClient();
14
- const timeoutRef = useRef(undefined);
15
- const { hoverDelay = 200, enabled = true, staleTime = DEFAULT_STALE_TIME, minInterval = 1000 } = options;
16
- const queryFnRef = useRef(queryFn);
17
- useEffect(() => { queryFnRef.current = queryFn; }, [queryFn]);
18
- const lastPrefetchRef = useRef(new Map());
19
- const prefetch = useCallback(() => {
20
- if (!enabled)
21
- return;
22
- const keyStr = JSON.stringify(queryKey);
23
- const last = lastPrefetchRef.current.get(keyStr) ?? 0;
24
- if (Date.now() - last < minInterval)
25
- return;
26
- if (!isMissingOrStale(queryClient, queryKey, staleTime))
27
- return;
28
- queryClient.prefetchQuery({ queryKey, queryFn: queryFnRef.current, staleTime });
29
- lastPrefetchRef.current.set(keyStr, Date.now());
30
- }, [queryClient, queryKey, enabled, staleTime]);
31
- const handleMouseEnter = useCallback(() => {
32
- if (!enabled)
33
- return;
34
- if (timeoutRef.current) {
35
- clearTimeout(timeoutRef.current);
36
- }
37
- timeoutRef.current = setTimeout(prefetch, hoverDelay);
38
- }, [prefetch, hoverDelay, enabled]);
39
- const handleMouseLeave = useCallback(() => { if (timeoutRef.current) {
40
- clearTimeout(timeoutRef.current);
41
- } }, []);
42
- useEffect(() => () => { if (timeoutRef.current) {
43
- clearTimeout(timeoutRef.current);
44
- } }, []);
45
- return { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onFocus: prefetch };
46
- }
47
- export function useRoutePrefetch() {
48
- const queryClient = useQueryClient();
49
- const lastPrefetchRef = useRef(new Map());
50
- return useCallback((queryKey, queryFn, options) => {
51
- const { enabled = true, staleTime = DEFAULT_STALE_TIME, minInterval = 1000 } = options || {};
52
- if (!enabled)
53
- return;
54
- const keyStr = JSON.stringify(queryKey);
55
- const last = lastPrefetchRef.current.get(keyStr) ?? 0;
56
- if (Date.now() - last < minInterval)
57
- return;
58
- if (!isMissingOrStale(queryClient, queryKey, staleTime))
59
- return;
60
- queryClient.prefetchQuery({ queryKey, queryFn, staleTime });
61
- lastPrefetchRef.current.set(keyStr, Date.now());
62
- }, [queryClient]);
63
- }
64
- export function useBatchPrefetch() {
65
- const queryClient = useQueryClient();
66
- return useCallback((queries) => {
67
- queries.forEach(({ queryKey, queryFn, staleTime = DEFAULT_STALE_TIME }) => {
68
- if (isMissingOrStale(queryClient, queryKey, staleTime)) {
69
- queryClient.prefetchQuery({ queryKey, queryFn, staleTime });
70
- }
71
- });
72
- }, [queryClient]);
73
- }
74
- export function useSmartPrefetch() {
75
- const queryClient = useQueryClient();
76
- const prefetchedRef = useRef(new Set());
77
- const lastPrefetchRef = useRef(new Map());
78
- const shouldPrefetchQuery = useCallback((queryKey) => {
79
- const key = JSON.stringify(queryKey);
80
- if (prefetchedRef.current.has(key))
81
- return false;
82
- if (isSlowNetwork())
83
- return false;
84
- return true;
85
- }, []);
86
- const prefetch = useCallback((queryKey, queryFn, options) => {
87
- if (!shouldPrefetchQuery(queryKey))
88
- return;
89
- const { staleTime = DEFAULT_STALE_TIME, minInterval = 1000 } = options || {};
90
- const keyStr = JSON.stringify(queryKey);
91
- const last = lastPrefetchRef.current.get(keyStr) ?? 0;
92
- if (Date.now() - last < minInterval)
93
- return;
94
- if (!isMissingOrStale(queryClient, queryKey, staleTime))
95
- return;
96
- prefetchedRef.current.add(keyStr);
97
- queryClient.prefetchQuery({ queryKey, queryFn, staleTime });
98
- lastPrefetchRef.current.set(keyStr, Date.now());
99
- }, [queryClient, shouldPrefetchQuery]);
100
- const clearPrefetchHistory = useCallback(() => { prefetchedRef.current.clear(); }, []);
101
- return { prefetch, shouldPrefetch: !isSlowNetwork(), clearPrefetchHistory };
102
- }
103
- function useStableQueryKey(queryKey) {
104
- const keyRef = useRef(queryKey);
105
- const keyStr = JSON.stringify(queryKey);
106
- const prevKeyStr = useRef(keyStr);
107
- if (prevKeyStr.current !== keyStr) {
108
- keyRef.current = queryKey;
109
- prevKeyStr.current = keyStr;
110
- }
111
- return keyRef.current;
112
- }
113
- export function useConditionalPrefetch(queryKey, queryFn, condition, options) {
114
- const queryClient = useQueryClient();
115
- const { staleTime = DEFAULT_STALE_TIME, delay = 0 } = options || {};
116
- const queryFnRef = useRef(queryFn);
117
- useEffect(() => { queryFnRef.current = queryFn; }, [queryFn]);
118
- const stableQueryKey = useStableQueryKey(queryKey);
119
- useEffect(() => {
120
- if (!condition)
121
- return;
122
- const currentQueryKey = stableQueryKey;
123
- const timeoutId = setTimeout(() => {
124
- if (isMissingOrStale(queryClient, currentQueryKey, staleTime)) {
125
- queryClient.prefetchQuery({ queryKey: currentQueryKey, queryFn: queryFnRef.current, staleTime });
126
- }
127
- }, delay);
128
- return () => clearTimeout(timeoutId);
129
- }, [condition, queryClient, staleTime, delay, stableQueryKey]);
130
- }
131
- export function useIdlePrefetch(queryKey, queryFn, options) {
132
- const queryClient = useQueryClient();
133
- const { staleTime = DEFAULT_STALE_TIME, enabled = true, timeout = 1000 } = options || {};
134
- const queryFnRef = useRef(queryFn);
135
- useEffect(() => { queryFnRef.current = queryFn; }, [queryFn]);
136
- const stableQueryKey = useStableQueryKey(queryKey);
137
- useEffect(() => {
138
- if (!enabled)
139
- return;
140
- const currentQueryKey = stableQueryKey;
141
- if (typeof window === "undefined" || !("requestIdleCallback" in window)) {
142
- const timeoutId = setTimeout(() => {
143
- if (isMissingOrStale(queryClient, currentQueryKey, staleTime)) {
144
- queryClient.prefetchQuery({ queryKey: currentQueryKey, queryFn: queryFnRef.current, staleTime });
145
- }
146
- }, timeout);
147
- return () => clearTimeout(timeoutId);
148
- }
149
- const idleCallbackId = window.requestIdleCallback(() => {
150
- if (isMissingOrStale(queryClient, currentQueryKey, staleTime)) {
151
- queryClient.prefetchQuery({ queryKey: currentQueryKey, queryFn: queryFnRef.current, staleTime });
152
- }
153
- }, { timeout });
154
- return () => window.cancelIdleCallback(idleCallbackId);
155
- }, [queryClient, staleTime, enabled, timeout, stableQueryKey]);
156
- }
157
- export function usePeriodicPrefetch(queryKey, queryFn, options) {
158
- const queryClient = useQueryClient();
159
- const { staleTime = DEFAULT_STALE_TIME, enabled = true, interval = 60000 } = options || {};
160
- const queryFnRef = useRef(queryFn);
161
- useEffect(() => { queryFnRef.current = queryFn; }, [queryFn]);
162
- const stableQueryKey = useStableQueryKey(queryKey);
163
- useEffect(() => {
164
- if (!enabled)
165
- return;
166
- const currentQueryKey = stableQueryKey;
167
- const prefetchData = () => {
168
- if (isMissingOrStale(queryClient, currentQueryKey, staleTime)) {
169
- queryClient.prefetchQuery({ queryKey: currentQueryKey, queryFn: queryFnRef.current, staleTime });
170
- }
171
- };
172
- prefetchData();
173
- const intervalId = setInterval(prefetchData, interval);
174
- return () => clearInterval(intervalId);
175
- }, [queryClient, staleTime, enabled, interval, stableQueryKey]);
176
- }
177
- export function usePredictivePrefetch() {
178
- const queryClient = useQueryClient();
179
- const interactionHistoryRef = useRef([]);
180
- const maxHistorySize = 50;
181
- const recordInteraction = useCallback((action, target) => {
182
- interactionHistoryRef.current.push({ action, target, timestamp: Date.now() });
183
- if (interactionHistoryRef.current.length > maxHistorySize) {
184
- interactionHistoryRef.current.shift();
185
- }
186
- }, []);
187
- const getPredictions = useCallback(() => {
188
- const history = interactionHistoryRef.current;
189
- if (history.length < 3)
190
- return [];
191
- const targetCounts = new Map();
192
- history.forEach(({ target }) => { targetCounts.set(target, (targetCounts.get(target) || 0) + 1); });
193
- return Array.from(targetCounts.entries()).sort((a, b) => b[1] - a[1]).slice(0, 5).map(([target]) => target);
194
- }, []);
195
- const prefetchPredicted = useCallback((getQueryConfig) => {
196
- const predictions = getPredictions();
197
- predictions.forEach((target) => {
198
- const { queryKey, queryFn } = getQueryConfig(target);
199
- queryClient.prefetchQuery({ queryKey, queryFn });
200
- });
201
- }, [queryClient, getPredictions]);
202
- const clearHistory = useCallback(() => { interactionHistoryRef.current = []; }, []);
203
- return { recordInteraction, getPredictions, prefetchPredicted, clearHistory };
204
- }
205
- export function usePriorityPrefetch() {
206
- const queryClient = useQueryClient();
207
- const tasksRef = useRef([]);
208
- const [taskCount, setTaskCount] = useState(0);
209
- const addPrefetchTask = useCallback((queryKey, queryFn, priority = "medium") => {
210
- tasksRef.current.push({ queryKey, queryFn, priority, timestamp: Date.now() });
211
- setTaskCount(tasksRef.current.length);
212
- }, []);
213
- const processTasks = useCallback(async () => {
214
- const priorityOrder = { high: 0, medium: 1, low: 2 };
215
- const sortedTasks = [...tasksRef.current].sort((a, b) => {
216
- const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
217
- if (priorityDiff !== 0)
218
- return priorityDiff;
219
- return a.timestamp - b.timestamp;
220
- });
221
- for (const task of sortedTasks) {
222
- await queryClient.prefetchQuery({ queryKey: task.queryKey, queryFn: task.queryFn });
223
- }
224
- tasksRef.current = [];
225
- setTaskCount(0);
226
- }, [queryClient]);
227
- const clearTasks = useCallback(() => { tasksRef.current = []; setTaskCount(0); }, []);
228
- return { addPrefetchTask, processTasks, clearTasks, taskCount };
229
- }
@@ -1,21 +0,0 @@
1
- import type { DefaultError, QueryKey, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
2
- import { skipToken } from "@tanstack/react-query";
3
- export interface EnhancedQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> {
4
- /** Log errors to console in development */
5
- logErrors?: boolean;
6
- /** Callback when query takes longer than threshold */
7
- onSlowQuery?: (duration: number, queryKey: TQueryKey) => void;
8
- /** Threshold in ms to trigger onSlowQuery (default: 3000) */
9
- slowQueryThreshold?: number;
10
- /** Enable performance tracking */
11
- trackPerformance?: boolean;
12
- }
13
- export type EnhancedQueryResult<TData = unknown, TError = DefaultError> = UseQueryResult<TData, TError> & {
14
- /** Number of times the query has been refetched */
15
- refetchCount: number;
16
- /** Last query duration in ms */
17
- lastQueryDuration: number | null;
18
- };
19
- export declare function useEnhancedQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: EnhancedQueryOptions<TQueryFnData, TError, TData, TQueryKey>): EnhancedQueryResult<TData, TError>;
20
- export { skipToken };
21
- //# sourceMappingURL=useQuery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,SAAS,EAAY,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,oBAAoB,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,GAAG,YAAY,EAAE,SAAS,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;IAC/M,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9D,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,mBAAmB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,YAAY,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;IACxG,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,GAAG,YAAY,EAAE,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACzI,OAAO,EAAE,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,GACpE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAoDpC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,46 +0,0 @@
1
- import { skipToken, useQuery } from "@tanstack/react-query";
2
- import { useEffect, useRef } from "react";
3
- import { isDev } from "../core/env.js";
4
- export function useEnhancedQuery(options) {
5
- const { logErrors = isDev, onSlowQuery, slowQueryThreshold = 3000, trackPerformance = false, ...queryOptions } = options;
6
- const startTimeRef = useRef(0);
7
- const refetchCountRef = useRef(0);
8
- const lastDurationRef = useRef(null);
9
- const wasFetchingRef = useRef(false);
10
- const result = useQuery(queryOptions);
11
- // Performance tracking
12
- useEffect(() => {
13
- if (trackPerformance || onSlowQuery) {
14
- if (result.isFetching && !wasFetchingRef.current) {
15
- startTimeRef.current = Date.now();
16
- }
17
- else if (!result.isFetching && wasFetchingRef.current && startTimeRef.current > 0) {
18
- const duration = Date.now() - startTimeRef.current;
19
- lastDurationRef.current = duration;
20
- if (onSlowQuery && duration > slowQueryThreshold) {
21
- onSlowQuery(duration, queryOptions.queryKey);
22
- }
23
- startTimeRef.current = 0;
24
- }
25
- wasFetchingRef.current = result.isFetching;
26
- }
27
- }, [result.isFetching, onSlowQuery, slowQueryThreshold, trackPerformance, queryOptions.queryKey]);
28
- // Error logging
29
- useEffect(() => {
30
- if (logErrors && result.isError && result.error) {
31
- console.error(`[useEnhancedQuery Error] ${JSON.stringify(queryOptions.queryKey)}:`, result.error);
32
- }
33
- }, [result.isError, result.error, logErrors, queryOptions.queryKey]);
34
- // Refetch counting
35
- useEffect(() => {
36
- if (result.isRefetching) {
37
- refetchCountRef.current++;
38
- }
39
- }, [result.isRefetching]);
40
- return {
41
- ...result,
42
- refetchCount: refetchCountRef.current,
43
- lastQueryDuration: lastDurationRef.current
44
- };
45
- }
46
- export { skipToken };
@@ -1,11 +0,0 @@
1
- import type { DefaultError, QueryFunction, QueryFunctionContext, QueryKey, UseSuspenseInfiniteQueryOptions, UseSuspenseInfiniteQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from "@tanstack/react-query";
2
- type InfiniteQueryFunction<TQueryFnData = unknown, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = (context: QueryFunctionContext<TQueryKey, TPageParam>) => Promise<TQueryFnData>;
3
- export 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>;
4
- export 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"> & {
5
- getNextPageParam: (lastPage: TQueryFnData, allPages: TQueryFnData[], lastPageParam: TPageParam, allPageParams: TPageParam[]) => TPageParam | undefined | null;
6
- initialPageParam: TPageParam;
7
- }): (variables: TVariables) => UseSuspenseInfiniteQueryResult<TData, TError>;
8
- export declare function useEnhancedSuspenseQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UseSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>): UseSuspenseQueryResult<TData, TError>;
9
- export 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>;
10
- export {};
11
- //# sourceMappingURL=useSuspenseQuery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSuspenseQuery.d.ts","sourceRoot":"","sources":["../../src/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE3N,KAAK,qBAAqB,CAAC,YAAY,GAAG,OAAO,EAAE,SAAS,SAAS,QAAQ,GAAG,QAAQ,EAAE,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAClM,wBAAgB,mBAAmB,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,GAAG,YAAY,EAAE,SAAS,SAAS,QAAQ,GAAG,QAAQ,EAAE,UAAU,GAAG,IAAI,EAC/J,WAAW,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,SAAS,EACjD,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,EAC/C,OAAO,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,IAE/F,WAAW,UAAU,KAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAItE;AACD,wBAAgB,2BAA2B,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,GAAG,YAAY,EAAE,SAAS,SAAS,QAAQ,GAAG,QAAQ,EAAE,UAAU,GAAG,OAAO,EAAE,UAAU,GAAG,IAAI,EAC7L,WAAW,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,SAAS,EACjD,OAAO,EAAE,qBAAqB,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,EACnE,OAAO,EAAE,IAAI,CAAC,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG;IAC3H,gBAAgB,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9J,gBAAgB,EAAE,UAAU,CAAC;CAC9B,IAEO,WAAW,UAAU,KAAG,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,CAI9E;AACD,wBAAgB,wBAAwB,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,GAAG,YAAY,EAAE,SAAS,SAAS,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAEpQ;AACD,wBAAgB,gCAAgC,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,GAAG,YAAY,EAAE,SAAS,SAAS,QAAQ,GAAG,QAAQ,EAAE,UAAU,GAAG,OAAO,EAAE,OAAO,EAAE,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,CAE9T"}
@@ -1,19 +0,0 @@
1
- import { useSuspenseInfiniteQuery, useSuspenseQuery } from "@tanstack/react-query";
2
- export function createSuspenseQuery(getQueryKey, queryFn, options) {
3
- return (variables) => {
4
- const queryKey = getQueryKey(variables);
5
- return useSuspenseQuery({ queryKey, queryFn, ...options });
6
- };
7
- }
8
- export function createSuspenseInfiniteQuery(getQueryKey, queryFn, options) {
9
- return (variables) => {
10
- const queryKey = getQueryKey(variables);
11
- return useSuspenseInfiniteQuery({ queryKey, queryFn, ...options });
12
- };
13
- }
14
- export function useEnhancedSuspenseQuery(options) {
15
- return useSuspenseQuery(options);
16
- }
17
- export function useEnhancedSuspenseInfiniteQuery(options) {
18
- return useSuspenseInfiniteQuery(options);
19
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAChK,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react-query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACb,MAAM,uBAAuB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACvF,oBAAY,WAAW;IAAG,KAAK,iBAAiB;IAAE,OAAO,mBAAmB;IAAE,UAAU,cAAc;IAAE,MAAM,WAAW;CAAE;AAC3H,oBAAY,iBAAiB;IAAG,IAAI,SAAS;IAAE,IAAI,SAAS;IAAE,OAAO,YAAY;CAAE;AACnF,oBAAY,aAAa;IAAG,IAAI,SAAS;IAAE,MAAM,WAAW;IAAE,GAAG,QAAQ;CAAE;AAC3E,oBAAY,uBAAuB;IAAG,UAAU,eAAe;IAAE,YAAY,iBAAiB;IAAE,SAAS,cAAc;IAAE,MAAM,WAAW;CAAE;AAC5I,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAAI,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AAClJ,MAAM,WAAW,kBAAkB;IAAG,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3I,MAAM,WAAW,aAAa;IAAG,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAAC,YAAY,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,IAAI,CAAA;CAAE;AAC1L,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAC3G,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG;KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC"}
@@ -1,26 +0,0 @@
1
- export var StorageType;
2
- (function (StorageType) {
3
- StorageType["LOCAL"] = "localStorage";
4
- StorageType["SESSION"] = "sessionStorage";
5
- StorageType["INDEXED_DB"] = "indexedDB";
6
- StorageType["CUSTOM"] = "custom";
7
- })(StorageType || (StorageType = {}));
8
- export var ConnectionQuality;
9
- (function (ConnectionQuality) {
10
- ConnectionQuality["SLOW"] = "slow";
11
- ConnectionQuality["FAST"] = "fast";
12
- ConnectionQuality["UNKNOWN"] = "unknown";
13
- })(ConnectionQuality || (ConnectionQuality = {}));
14
- export var CachePriority;
15
- (function (CachePriority) {
16
- CachePriority["HIGH"] = "high";
17
- CachePriority["MEDIUM"] = "medium";
18
- CachePriority["LOW"] = "low";
19
- })(CachePriority || (CachePriority = {}));
20
- export var PersistenceStrategyType;
21
- (function (PersistenceStrategyType) {
22
- PersistenceStrategyType["AGGRESSIVE"] = "aggressive";
23
- PersistenceStrategyType["CONSERVATIVE"] = "conservative";
24
- PersistenceStrategyType["SELECTIVE"] = "selective";
25
- PersistenceStrategyType["CUSTOM"] = "custom";
26
- })(PersistenceStrategyType || (PersistenceStrategyType = {}));