@tanstack/preact-query 0.0.1 → 5.91.0

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 (338) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -45
  3. package/build/codemods/src/utils/index.cjs +208 -0
  4. package/build/codemods/src/utils/transformers/query-cache-transformer.cjs +124 -0
  5. package/build/codemods/src/utils/transformers/query-client-transformer.cjs +53 -0
  6. package/build/codemods/src/utils/transformers/use-query-like-transformer.cjs +38 -0
  7. package/build/codemods/src/v4/key-transformation.cjs +181 -0
  8. package/build/codemods/src/v4/replace-import-specifier.cjs +25 -0
  9. package/build/codemods/src/v4/utils/replacers/key-replacer.cjs +164 -0
  10. package/build/codemods/src/v5/is-loading/is-loading.cjs +244 -0
  11. package/build/codemods/src/v5/keep-previous-data/README.md +32 -0
  12. package/build/codemods/src/v5/keep-previous-data/keep-previous-data.cjs +271 -0
  13. package/build/codemods/src/v5/keep-previous-data/utils/already-has-placeholder-data-property.cjs +26 -0
  14. package/build/codemods/src/v5/remove-overloads/remove-overloads.cjs +58 -0
  15. package/build/codemods/src/v5/remove-overloads/transformers/filter-aware-usage-transformer.cjs +271 -0
  16. package/build/codemods/src/v5/remove-overloads/transformers/query-fn-aware-usage-transformer.cjs +185 -0
  17. package/build/codemods/src/v5/remove-overloads/utils/index.cjs +123 -0
  18. package/build/codemods/src/v5/remove-overloads/utils/unknown-usage-error.cjs +27 -0
  19. package/build/codemods/src/v5/rename-hydrate/rename-hydrate.cjs +55 -0
  20. package/build/codemods/src/v5/rename-properties/rename-properties.cjs +41 -0
  21. package/build/legacy/HydrationBoundary.cjs +80 -0
  22. package/build/legacy/HydrationBoundary.cjs.map +1 -0
  23. package/build/legacy/HydrationBoundary.d.cts +14 -0
  24. package/build/legacy/HydrationBoundary.d.ts +14 -0
  25. package/build/legacy/HydrationBoundary.js +55 -0
  26. package/build/legacy/HydrationBoundary.js.map +1 -0
  27. package/build/legacy/IsRestoringProvider.cjs +37 -0
  28. package/build/legacy/IsRestoringProvider.cjs.map +1 -0
  29. package/build/legacy/IsRestoringProvider.d.cts +6 -0
  30. package/build/legacy/IsRestoringProvider.d.ts +6 -0
  31. package/build/legacy/IsRestoringProvider.js +11 -0
  32. package/build/legacy/IsRestoringProvider.js.map +1 -0
  33. package/build/legacy/QueryClientProvider.cjs +62 -0
  34. package/build/legacy/QueryClientProvider.cjs.map +1 -0
  35. package/build/legacy/QueryClientProvider.d.cts +13 -0
  36. package/build/legacy/QueryClientProvider.d.ts +13 -0
  37. package/build/legacy/QueryClientProvider.js +35 -0
  38. package/build/legacy/QueryClientProvider.js.map +1 -0
  39. package/build/legacy/QueryErrorResetBoundary.cjs +57 -0
  40. package/build/legacy/QueryErrorResetBoundary.cjs.map +1 -0
  41. package/build/legacy/QueryErrorResetBoundary.d.cts +19 -0
  42. package/build/legacy/QueryErrorResetBoundary.d.ts +19 -0
  43. package/build/legacy/QueryErrorResetBoundary.js +31 -0
  44. package/build/legacy/QueryErrorResetBoundary.js.map +1 -0
  45. package/build/legacy/errorBoundaryUtils.cjs +57 -0
  46. package/build/legacy/errorBoundaryUtils.cjs.map +1 -0
  47. package/build/legacy/errorBoundaryUtils.d.cts +15 -0
  48. package/build/legacy/errorBoundaryUtils.d.ts +15 -0
  49. package/build/legacy/errorBoundaryUtils.js +30 -0
  50. package/build/legacy/errorBoundaryUtils.js.map +1 -0
  51. package/build/legacy/index.cjs +97 -0
  52. package/build/legacy/index.cjs.map +1 -0
  53. package/build/legacy/index.d.cts +21 -0
  54. package/build/legacy/index.d.ts +21 -0
  55. package/build/legacy/index.js +54 -0
  56. package/build/legacy/index.js.map +1 -0
  57. package/build/legacy/infiniteQueryOptions.cjs +33 -0
  58. package/build/legacy/infiniteQueryOptions.cjs.map +1 -0
  59. package/build/legacy/infiniteQueryOptions.d.cts +23 -0
  60. package/build/legacy/infiniteQueryOptions.d.ts +23 -0
  61. package/build/legacy/infiniteQueryOptions.js +8 -0
  62. package/build/legacy/infiniteQueryOptions.js.map +1 -0
  63. package/build/legacy/mutationOptions.cjs +33 -0
  64. package/build/legacy/mutationOptions.cjs.map +1 -0
  65. package/build/legacy/mutationOptions.d.cts +7 -0
  66. package/build/legacy/mutationOptions.d.ts +7 -0
  67. package/build/legacy/mutationOptions.js +8 -0
  68. package/build/legacy/mutationOptions.js.map +1 -0
  69. package/build/legacy/queryOptions.cjs +33 -0
  70. package/build/legacy/queryOptions.cjs.map +1 -0
  71. package/build/legacy/queryOptions.d.cts +24 -0
  72. package/build/legacy/queryOptions.d.ts +24 -0
  73. package/build/legacy/queryOptions.js +8 -0
  74. package/build/legacy/queryOptions.js.map +1 -0
  75. package/build/legacy/suspense.cjs +58 -0
  76. package/build/legacy/suspense.cjs.map +1 -0
  77. package/build/legacy/suspense.d.cts +11 -0
  78. package/build/legacy/suspense.d.ts +11 -0
  79. package/build/legacy/suspense.js +29 -0
  80. package/build/legacy/suspense.js.map +1 -0
  81. package/build/legacy/types.cjs +19 -0
  82. package/build/legacy/types.cjs.map +1 -0
  83. package/build/legacy/types.d.cts +52 -0
  84. package/build/legacy/types.d.ts +52 -0
  85. package/build/legacy/types.js +1 -0
  86. package/build/legacy/types.js.map +1 -0
  87. package/build/legacy/useBaseQuery.cjs +121 -0
  88. package/build/legacy/useBaseQuery.cjs.map +1 -0
  89. package/build/legacy/useBaseQuery.d.cts +6 -0
  90. package/build/legacy/useBaseQuery.d.ts +6 -0
  91. package/build/legacy/useBaseQuery.js +105 -0
  92. package/build/legacy/useBaseQuery.js.map +1 -0
  93. package/build/legacy/useInfiniteQuery.cjs +39 -0
  94. package/build/legacy/useInfiniteQuery.cjs.map +1 -0
  95. package/build/legacy/useInfiniteQuery.d.cts +9 -0
  96. package/build/legacy/useInfiniteQuery.d.ts +9 -0
  97. package/build/legacy/useInfiniteQuery.js +14 -0
  98. package/build/legacy/useInfiniteQuery.js.map +1 -0
  99. package/build/legacy/useIsFetching.cjs +45 -0
  100. package/build/legacy/useIsFetching.cjs.map +1 -0
  101. package/build/legacy/useIsFetching.d.cts +5 -0
  102. package/build/legacy/useIsFetching.d.ts +5 -0
  103. package/build/legacy/useIsFetching.js +20 -0
  104. package/build/legacy/useIsFetching.js.map +1 -0
  105. package/build/legacy/useMutation.cjs +63 -0
  106. package/build/legacy/useMutation.cjs.map +1 -0
  107. package/build/legacy/useMutation.d.cts +6 -0
  108. package/build/legacy/useMutation.d.ts +6 -0
  109. package/build/legacy/useMutation.js +43 -0
  110. package/build/legacy/useMutation.js.map +1 -0
  111. package/build/legacy/useMutationState.cjs +75 -0
  112. package/build/legacy/useMutationState.cjs.map +1 -0
  113. package/build/legacy/useMutationState.d.cts +10 -0
  114. package/build/legacy/useMutationState.d.ts +10 -0
  115. package/build/legacy/useMutationState.js +49 -0
  116. package/build/legacy/useMutationState.js.map +1 -0
  117. package/build/legacy/usePrefetchInfiniteQuery.cjs +37 -0
  118. package/build/legacy/usePrefetchInfiniteQuery.cjs.map +1 -0
  119. package/build/legacy/usePrefetchInfiniteQuery.d.cts +5 -0
  120. package/build/legacy/usePrefetchInfiniteQuery.d.ts +5 -0
  121. package/build/legacy/usePrefetchInfiniteQuery.js +12 -0
  122. package/build/legacy/usePrefetchInfiniteQuery.js.map +1 -0
  123. package/build/legacy/usePrefetchQuery.cjs +37 -0
  124. package/build/legacy/usePrefetchQuery.cjs.map +1 -0
  125. package/build/legacy/usePrefetchQuery.d.cts +6 -0
  126. package/build/legacy/usePrefetchQuery.d.ts +6 -0
  127. package/build/legacy/usePrefetchQuery.js +12 -0
  128. package/build/legacy/usePrefetchQuery.js.map +1 -0
  129. package/build/legacy/useQueries.cjs +120 -0
  130. package/build/legacy/useQueries.cjs.map +1 -0
  131. package/build/legacy/useQueries.d.cts +76 -0
  132. package/build/legacy/useQueries.d.ts +76 -0
  133. package/build/legacy/useQueries.js +109 -0
  134. package/build/legacy/useQueries.js.map +1 -0
  135. package/build/legacy/useQuery.cjs +35 -0
  136. package/build/legacy/useQuery.cjs.map +1 -0
  137. package/build/legacy/useQuery.d.cts +9 -0
  138. package/build/legacy/useQuery.d.ts +9 -0
  139. package/build/legacy/useQuery.js +10 -0
  140. package/build/legacy/useQuery.js.map +1 -0
  141. package/build/legacy/useSuspenseInfiniteQuery.cjs +50 -0
  142. package/build/legacy/useSuspenseInfiniteQuery.cjs.map +1 -0
  143. package/build/legacy/useSuspenseInfiniteQuery.d.cts +6 -0
  144. package/build/legacy/useSuspenseInfiniteQuery.d.ts +6 -0
  145. package/build/legacy/useSuspenseInfiniteQuery.js +25 -0
  146. package/build/legacy/useSuspenseInfiniteQuery.js.map +1 -0
  147. package/build/legacy/useSuspenseQueries.cjs +55 -0
  148. package/build/legacy/useSuspenseQueries.cjs.map +1 -0
  149. package/build/legacy/useSuspenseQueries.d.cts +79 -0
  150. package/build/legacy/useSuspenseQueries.d.ts +79 -0
  151. package/build/legacy/useSuspenseQueries.js +30 -0
  152. package/build/legacy/useSuspenseQueries.js.map +1 -0
  153. package/build/legacy/useSuspenseQuery.cjs +51 -0
  154. package/build/legacy/useSuspenseQuery.cjs.map +1 -0
  155. package/build/legacy/useSuspenseQuery.d.cts +6 -0
  156. package/build/legacy/useSuspenseQuery.d.ts +6 -0
  157. package/build/legacy/useSuspenseQuery.js +26 -0
  158. package/build/legacy/useSuspenseQuery.js.map +1 -0
  159. package/build/legacy/utils.cjs +79 -0
  160. package/build/legacy/utils.cjs.map +1 -0
  161. package/build/legacy/utils.d.cts +4 -0
  162. package/build/legacy/utils.d.ts +4 -0
  163. package/build/legacy/utils.js +53 -0
  164. package/build/legacy/utils.js.map +1 -0
  165. package/build/modern/HydrationBoundary.cjs +80 -0
  166. package/build/modern/HydrationBoundary.cjs.map +1 -0
  167. package/build/modern/HydrationBoundary.d.cts +14 -0
  168. package/build/modern/HydrationBoundary.d.ts +14 -0
  169. package/build/modern/HydrationBoundary.js +55 -0
  170. package/build/modern/HydrationBoundary.js.map +1 -0
  171. package/build/modern/IsRestoringProvider.cjs +37 -0
  172. package/build/modern/IsRestoringProvider.cjs.map +1 -0
  173. package/build/modern/IsRestoringProvider.d.cts +6 -0
  174. package/build/modern/IsRestoringProvider.d.ts +6 -0
  175. package/build/modern/IsRestoringProvider.js +11 -0
  176. package/build/modern/IsRestoringProvider.js.map +1 -0
  177. package/build/modern/QueryClientProvider.cjs +62 -0
  178. package/build/modern/QueryClientProvider.cjs.map +1 -0
  179. package/build/modern/QueryClientProvider.d.cts +13 -0
  180. package/build/modern/QueryClientProvider.d.ts +13 -0
  181. package/build/modern/QueryClientProvider.js +35 -0
  182. package/build/modern/QueryClientProvider.js.map +1 -0
  183. package/build/modern/QueryErrorResetBoundary.cjs +57 -0
  184. package/build/modern/QueryErrorResetBoundary.cjs.map +1 -0
  185. package/build/modern/QueryErrorResetBoundary.d.cts +19 -0
  186. package/build/modern/QueryErrorResetBoundary.d.ts +19 -0
  187. package/build/modern/QueryErrorResetBoundary.js +31 -0
  188. package/build/modern/QueryErrorResetBoundary.js.map +1 -0
  189. package/build/modern/errorBoundaryUtils.cjs +57 -0
  190. package/build/modern/errorBoundaryUtils.cjs.map +1 -0
  191. package/build/modern/errorBoundaryUtils.d.cts +15 -0
  192. package/build/modern/errorBoundaryUtils.d.ts +15 -0
  193. package/build/modern/errorBoundaryUtils.js +30 -0
  194. package/build/modern/errorBoundaryUtils.js.map +1 -0
  195. package/build/modern/index.cjs +97 -0
  196. package/build/modern/index.cjs.map +1 -0
  197. package/build/modern/index.d.cts +21 -0
  198. package/build/modern/index.d.ts +21 -0
  199. package/build/modern/index.js +54 -0
  200. package/build/modern/index.js.map +1 -0
  201. package/build/modern/infiniteQueryOptions.cjs +33 -0
  202. package/build/modern/infiniteQueryOptions.cjs.map +1 -0
  203. package/build/modern/infiniteQueryOptions.d.cts +23 -0
  204. package/build/modern/infiniteQueryOptions.d.ts +23 -0
  205. package/build/modern/infiniteQueryOptions.js +8 -0
  206. package/build/modern/infiniteQueryOptions.js.map +1 -0
  207. package/build/modern/mutationOptions.cjs +33 -0
  208. package/build/modern/mutationOptions.cjs.map +1 -0
  209. package/build/modern/mutationOptions.d.cts +7 -0
  210. package/build/modern/mutationOptions.d.ts +7 -0
  211. package/build/modern/mutationOptions.js +8 -0
  212. package/build/modern/mutationOptions.js.map +1 -0
  213. package/build/modern/queryOptions.cjs +33 -0
  214. package/build/modern/queryOptions.cjs.map +1 -0
  215. package/build/modern/queryOptions.d.cts +24 -0
  216. package/build/modern/queryOptions.d.ts +24 -0
  217. package/build/modern/queryOptions.js +8 -0
  218. package/build/modern/queryOptions.js.map +1 -0
  219. package/build/modern/suspense.cjs +58 -0
  220. package/build/modern/suspense.cjs.map +1 -0
  221. package/build/modern/suspense.d.cts +11 -0
  222. package/build/modern/suspense.d.ts +11 -0
  223. package/build/modern/suspense.js +29 -0
  224. package/build/modern/suspense.js.map +1 -0
  225. package/build/modern/types.cjs +19 -0
  226. package/build/modern/types.cjs.map +1 -0
  227. package/build/modern/types.d.cts +52 -0
  228. package/build/modern/types.d.ts +52 -0
  229. package/build/modern/types.js +1 -0
  230. package/build/modern/types.js.map +1 -0
  231. package/build/modern/useBaseQuery.cjs +118 -0
  232. package/build/modern/useBaseQuery.cjs.map +1 -0
  233. package/build/modern/useBaseQuery.d.cts +6 -0
  234. package/build/modern/useBaseQuery.d.ts +6 -0
  235. package/build/modern/useBaseQuery.js +102 -0
  236. package/build/modern/useBaseQuery.js.map +1 -0
  237. package/build/modern/useInfiniteQuery.cjs +39 -0
  238. package/build/modern/useInfiniteQuery.cjs.map +1 -0
  239. package/build/modern/useInfiniteQuery.d.cts +9 -0
  240. package/build/modern/useInfiniteQuery.d.ts +9 -0
  241. package/build/modern/useInfiniteQuery.js +14 -0
  242. package/build/modern/useInfiniteQuery.js.map +1 -0
  243. package/build/modern/useIsFetching.cjs +45 -0
  244. package/build/modern/useIsFetching.cjs.map +1 -0
  245. package/build/modern/useIsFetching.d.cts +5 -0
  246. package/build/modern/useIsFetching.d.ts +5 -0
  247. package/build/modern/useIsFetching.js +20 -0
  248. package/build/modern/useIsFetching.js.map +1 -0
  249. package/build/modern/useMutation.cjs +63 -0
  250. package/build/modern/useMutation.cjs.map +1 -0
  251. package/build/modern/useMutation.d.cts +6 -0
  252. package/build/modern/useMutation.d.ts +6 -0
  253. package/build/modern/useMutation.js +43 -0
  254. package/build/modern/useMutation.js.map +1 -0
  255. package/build/modern/useMutationState.cjs +75 -0
  256. package/build/modern/useMutationState.cjs.map +1 -0
  257. package/build/modern/useMutationState.d.cts +10 -0
  258. package/build/modern/useMutationState.d.ts +10 -0
  259. package/build/modern/useMutationState.js +49 -0
  260. package/build/modern/useMutationState.js.map +1 -0
  261. package/build/modern/usePrefetchInfiniteQuery.cjs +37 -0
  262. package/build/modern/usePrefetchInfiniteQuery.cjs.map +1 -0
  263. package/build/modern/usePrefetchInfiniteQuery.d.cts +5 -0
  264. package/build/modern/usePrefetchInfiniteQuery.d.ts +5 -0
  265. package/build/modern/usePrefetchInfiniteQuery.js +12 -0
  266. package/build/modern/usePrefetchInfiniteQuery.js.map +1 -0
  267. package/build/modern/usePrefetchQuery.cjs +37 -0
  268. package/build/modern/usePrefetchQuery.cjs.map +1 -0
  269. package/build/modern/usePrefetchQuery.d.cts +6 -0
  270. package/build/modern/usePrefetchQuery.d.ts +6 -0
  271. package/build/modern/usePrefetchQuery.js +12 -0
  272. package/build/modern/usePrefetchQuery.js.map +1 -0
  273. package/build/modern/useQueries.cjs +120 -0
  274. package/build/modern/useQueries.cjs.map +1 -0
  275. package/build/modern/useQueries.d.cts +76 -0
  276. package/build/modern/useQueries.d.ts +76 -0
  277. package/build/modern/useQueries.js +109 -0
  278. package/build/modern/useQueries.js.map +1 -0
  279. package/build/modern/useQuery.cjs +35 -0
  280. package/build/modern/useQuery.cjs.map +1 -0
  281. package/build/modern/useQuery.d.cts +9 -0
  282. package/build/modern/useQuery.d.ts +9 -0
  283. package/build/modern/useQuery.js +10 -0
  284. package/build/modern/useQuery.js.map +1 -0
  285. package/build/modern/useSuspenseInfiniteQuery.cjs +50 -0
  286. package/build/modern/useSuspenseInfiniteQuery.cjs.map +1 -0
  287. package/build/modern/useSuspenseInfiniteQuery.d.cts +6 -0
  288. package/build/modern/useSuspenseInfiniteQuery.d.ts +6 -0
  289. package/build/modern/useSuspenseInfiniteQuery.js +25 -0
  290. package/build/modern/useSuspenseInfiniteQuery.js.map +1 -0
  291. package/build/modern/useSuspenseQueries.cjs +55 -0
  292. package/build/modern/useSuspenseQueries.cjs.map +1 -0
  293. package/build/modern/useSuspenseQueries.d.cts +79 -0
  294. package/build/modern/useSuspenseQueries.d.ts +79 -0
  295. package/build/modern/useSuspenseQueries.js +30 -0
  296. package/build/modern/useSuspenseQueries.js.map +1 -0
  297. package/build/modern/useSuspenseQuery.cjs +51 -0
  298. package/build/modern/useSuspenseQuery.cjs.map +1 -0
  299. package/build/modern/useSuspenseQuery.d.cts +6 -0
  300. package/build/modern/useSuspenseQuery.d.ts +6 -0
  301. package/build/modern/useSuspenseQuery.js +26 -0
  302. package/build/modern/useSuspenseQuery.js.map +1 -0
  303. package/build/modern/utils.cjs +79 -0
  304. package/build/modern/utils.cjs.map +1 -0
  305. package/build/modern/utils.d.cts +4 -0
  306. package/build/modern/utils.d.ts +4 -0
  307. package/build/modern/utils.js +53 -0
  308. package/build/modern/utils.js.map +1 -0
  309. package/build/query-codemods/eslint.config.js +18 -0
  310. package/build/query-codemods/package.json +38 -0
  311. package/build/query-codemods/root.eslint.config.js +64 -0
  312. package/build/query-codemods/tsconfig.json +8 -0
  313. package/build/query-codemods/vite.config.ts +30 -0
  314. package/package.json +82 -8
  315. package/src/HydrationBoundary.tsx +108 -0
  316. package/src/IsRestoringProvider.ts +7 -0
  317. package/src/QueryClientProvider.tsx +45 -0
  318. package/src/QueryErrorResetBoundary.tsx +57 -0
  319. package/src/errorBoundaryUtils.ts +76 -0
  320. package/src/index.ts +56 -0
  321. package/src/infiniteQueryOptions.ts +150 -0
  322. package/src/mutationOptions.ts +42 -0
  323. package/src/queryOptions.ts +88 -0
  324. package/src/suspense.ts +81 -0
  325. package/src/types.ts +241 -0
  326. package/src/useBaseQuery.ts +169 -0
  327. package/src/useInfiniteQuery.ts +81 -0
  328. package/src/useIsFetching.ts +23 -0
  329. package/src/useMutation.ts +69 -0
  330. package/src/useMutationState.ts +74 -0
  331. package/src/usePrefetchInfiniteQuery.tsx +31 -0
  332. package/src/usePrefetchQuery.tsx +20 -0
  333. package/src/useQueries.ts +331 -0
  334. package/src/useQuery.ts +52 -0
  335. package/src/useSuspenseInfiniteQuery.ts +50 -0
  336. package/src/useSuspenseQueries.ts +211 -0
  337. package/src/useSuspenseQuery.ts +34 -0
  338. package/src/utils.ts +88 -0
@@ -0,0 +1,88 @@
1
+ import type {
2
+ DataTag,
3
+ DefaultError,
4
+ InitialDataFunction,
5
+ NonUndefinedGuard,
6
+ OmitKeyof,
7
+ QueryFunction,
8
+ QueryKey,
9
+ SkipToken,
10
+ } from '@tanstack/query-core'
11
+
12
+ import type { UseQueryOptions } from './types'
13
+
14
+ export type UndefinedInitialDataOptions<
15
+ TQueryFnData = unknown,
16
+ TError = DefaultError,
17
+ TData = TQueryFnData,
18
+ TQueryKey extends QueryKey = QueryKey,
19
+ > = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
20
+ initialData?:
21
+ | undefined
22
+ | InitialDataFunction<NonUndefinedGuard<TQueryFnData>>
23
+ | NonUndefinedGuard<TQueryFnData>
24
+ }
25
+
26
+ export type UnusedSkipTokenOptions<
27
+ TQueryFnData = unknown,
28
+ TError = DefaultError,
29
+ TData = TQueryFnData,
30
+ TQueryKey extends QueryKey = QueryKey,
31
+ > = OmitKeyof<
32
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
33
+ 'queryFn'
34
+ > & {
35
+ queryFn?: Exclude<
36
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'],
37
+ SkipToken | undefined
38
+ >
39
+ }
40
+
41
+ export type DefinedInitialDataOptions<
42
+ TQueryFnData = unknown,
43
+ TError = DefaultError,
44
+ TData = TQueryFnData,
45
+ TQueryKey extends QueryKey = QueryKey,
46
+ > = Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryFn'> & {
47
+ initialData:
48
+ | NonUndefinedGuard<TQueryFnData>
49
+ | (() => NonUndefinedGuard<TQueryFnData>)
50
+ queryFn?: QueryFunction<TQueryFnData, TQueryKey>
51
+ }
52
+
53
+ export function queryOptions<
54
+ TQueryFnData = unknown,
55
+ TError = DefaultError,
56
+ TData = TQueryFnData,
57
+ TQueryKey extends QueryKey = QueryKey,
58
+ >(
59
+ options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
60
+ ): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
61
+ queryKey: DataTag<TQueryKey, TQueryFnData, TError>
62
+ }
63
+
64
+ export function queryOptions<
65
+ TQueryFnData = unknown,
66
+ TError = DefaultError,
67
+ TData = TQueryFnData,
68
+ TQueryKey extends QueryKey = QueryKey,
69
+ >(
70
+ options: UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey>,
71
+ ): UnusedSkipTokenOptions<TQueryFnData, TError, TData, TQueryKey> & {
72
+ queryKey: DataTag<TQueryKey, TQueryFnData, TError>
73
+ }
74
+
75
+ export function queryOptions<
76
+ TQueryFnData = unknown,
77
+ TError = DefaultError,
78
+ TData = TQueryFnData,
79
+ TQueryKey extends QueryKey = QueryKey,
80
+ >(
81
+ options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
82
+ ): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
83
+ queryKey: DataTag<TQueryKey, TQueryFnData, TError>
84
+ }
85
+
86
+ export function queryOptions(options: unknown) {
87
+ return options
88
+ }
@@ -0,0 +1,81 @@
1
+ import type {
2
+ DefaultError,
3
+ DefaultedQueryObserverOptions,
4
+ Query,
5
+ QueryKey,
6
+ QueryObserver,
7
+ QueryObserverResult,
8
+ } from '@tanstack/query-core'
9
+
10
+ import type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary'
11
+
12
+ export const defaultThrowOnError = <
13
+ TQueryFnData = unknown,
14
+ TError = DefaultError,
15
+ TData = TQueryFnData,
16
+ TQueryKey extends QueryKey = QueryKey,
17
+ >(
18
+ _error: TError,
19
+ query: Query<TQueryFnData, TError, TData, TQueryKey>,
20
+ ) => query.state.data === undefined
21
+
22
+ export const ensureSuspenseTimers = (
23
+ defaultedOptions: DefaultedQueryObserverOptions<any, any, any, any, any>,
24
+ ) => {
25
+ if (defaultedOptions.suspense) {
26
+ // Handle staleTime to ensure minimum 1000ms in Suspense mode
27
+ // This prevents unnecessary refetching when components remount after suspending
28
+ const MIN_SUSPENSE_TIME_MS = 1000
29
+
30
+ const clamp = (value: number | 'static' | undefined) =>
31
+ value === 'static'
32
+ ? value
33
+ : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS)
34
+
35
+ const originalStaleTime = defaultedOptions.staleTime
36
+ defaultedOptions.staleTime =
37
+ typeof originalStaleTime === 'function'
38
+ ? (...args) => clamp(originalStaleTime(...args))
39
+ : clamp(originalStaleTime)
40
+
41
+ if (typeof defaultedOptions.gcTime === 'number') {
42
+ defaultedOptions.gcTime = Math.max(
43
+ defaultedOptions.gcTime,
44
+ MIN_SUSPENSE_TIME_MS,
45
+ )
46
+ }
47
+ }
48
+ }
49
+
50
+ export const willFetch = (
51
+ result: QueryObserverResult<any, any>,
52
+ isRestoring: boolean,
53
+ ) => result.isLoading && result.isFetching && !isRestoring
54
+
55
+ export const shouldSuspend = (
56
+ defaultedOptions:
57
+ | DefaultedQueryObserverOptions<any, any, any, any, any>
58
+ | undefined,
59
+ result: QueryObserverResult<any, any>,
60
+ ) => defaultedOptions?.suspense && result.isPending
61
+
62
+ export const fetchOptimistic = <
63
+ TQueryFnData,
64
+ TError,
65
+ TData,
66
+ TQueryData,
67
+ TQueryKey extends QueryKey,
68
+ >(
69
+ defaultedOptions: DefaultedQueryObserverOptions<
70
+ TQueryFnData,
71
+ TError,
72
+ TData,
73
+ TQueryData,
74
+ TQueryKey
75
+ >,
76
+ observer: QueryObserver<TQueryFnData, TError, TData, TQueryData, TQueryKey>,
77
+ errorResetBoundary: QueryErrorResetBoundaryValue,
78
+ ) =>
79
+ observer.fetchOptimistic(defaultedOptions).catch(() => {
80
+ errorResetBoundary.clearReset()
81
+ })
package/src/types.ts ADDED
@@ -0,0 +1,241 @@
1
+ /* istanbul ignore file */
2
+ import type {
3
+ DefaultError,
4
+ DefinedInfiniteQueryObserverResult,
5
+ DefinedQueryObserverResult,
6
+ DistributiveOmit,
7
+ FetchQueryOptions,
8
+ InfiniteQueryObserverOptions,
9
+ InfiniteQueryObserverResult,
10
+ MutateFunction,
11
+ MutationObserverOptions,
12
+ MutationObserverResult,
13
+ OmitKeyof,
14
+ Override,
15
+ QueryKey,
16
+ QueryObserverOptions,
17
+ QueryObserverResult,
18
+ SkipToken,
19
+ } from '@tanstack/query-core'
20
+
21
+ export type AnyUseBaseQueryOptions = UseBaseQueryOptions<
22
+ any,
23
+ any,
24
+ any,
25
+ any,
26
+ any
27
+ >
28
+ export interface UseBaseQueryOptions<
29
+ TQueryFnData = unknown,
30
+ TError = DefaultError,
31
+ TData = TQueryFnData,
32
+ TQueryData = TQueryFnData,
33
+ TQueryKey extends QueryKey = QueryKey,
34
+ > extends QueryObserverOptions<
35
+ TQueryFnData,
36
+ TError,
37
+ TData,
38
+ TQueryData,
39
+ TQueryKey
40
+ > {
41
+ /**
42
+ * Set this to `false` to unsubscribe this observer from updates to the query cache.
43
+ * Defaults to `true`.
44
+ */
45
+ subscribed?: boolean
46
+ }
47
+
48
+ export interface UsePrefetchQueryOptions<
49
+ TQueryFnData = unknown,
50
+ TError = DefaultError,
51
+ TData = TQueryFnData,
52
+ TQueryKey extends QueryKey = QueryKey,
53
+ > extends OmitKeyof<
54
+ FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
55
+ 'queryFn'
56
+ > {
57
+ queryFn?: Exclude<
58
+ FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'],
59
+ SkipToken
60
+ >
61
+ }
62
+
63
+ export type AnyUseQueryOptions = UseQueryOptions<any, any, any, any>
64
+ export interface UseQueryOptions<
65
+ TQueryFnData = unknown,
66
+ TError = DefaultError,
67
+ TData = TQueryFnData,
68
+ TQueryKey extends QueryKey = QueryKey,
69
+ > extends OmitKeyof<
70
+ UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
71
+ 'suspense'
72
+ > {}
73
+
74
+ export type AnyUseSuspenseQueryOptions = UseSuspenseQueryOptions<
75
+ any,
76
+ any,
77
+ any,
78
+ any
79
+ >
80
+ export interface UseSuspenseQueryOptions<
81
+ TQueryFnData = unknown,
82
+ TError = DefaultError,
83
+ TData = TQueryFnData,
84
+ TQueryKey extends QueryKey = QueryKey,
85
+ > extends OmitKeyof<
86
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
87
+ 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'
88
+ > {
89
+ queryFn?: Exclude<
90
+ UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'],
91
+ SkipToken
92
+ >
93
+ }
94
+
95
+ export type AnyUseInfiniteQueryOptions = UseInfiniteQueryOptions<
96
+ any,
97
+ any,
98
+ any,
99
+ any,
100
+ any
101
+ >
102
+ export interface UseInfiniteQueryOptions<
103
+ TQueryFnData = unknown,
104
+ TError = DefaultError,
105
+ TData = TQueryFnData,
106
+ TQueryKey extends QueryKey = QueryKey,
107
+ TPageParam = unknown,
108
+ > extends OmitKeyof<
109
+ InfiniteQueryObserverOptions<
110
+ TQueryFnData,
111
+ TError,
112
+ TData,
113
+ TQueryKey,
114
+ TPageParam
115
+ >,
116
+ 'suspense'
117
+ > {
118
+ /**
119
+ * Set this to `false` to unsubscribe this observer from updates to the query cache.
120
+ * Defaults to `true`.
121
+ */
122
+ subscribed?: boolean
123
+ }
124
+
125
+ export type AnyUseSuspenseInfiniteQueryOptions =
126
+ UseSuspenseInfiniteQueryOptions<any, any, any, any, any>
127
+ export interface UseSuspenseInfiniteQueryOptions<
128
+ TQueryFnData = unknown,
129
+ TError = DefaultError,
130
+ TData = TQueryFnData,
131
+ TQueryKey extends QueryKey = QueryKey,
132
+ TPageParam = unknown,
133
+ > extends OmitKeyof<
134
+ UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>,
135
+ 'queryFn' | 'enabled' | 'throwOnError' | 'placeholderData'
136
+ > {
137
+ queryFn?: Exclude<
138
+ UseInfiniteQueryOptions<
139
+ TQueryFnData,
140
+ TError,
141
+ TData,
142
+ TQueryKey,
143
+ TPageParam
144
+ >['queryFn'],
145
+ SkipToken
146
+ >
147
+ }
148
+
149
+ export type UseBaseQueryResult<
150
+ TData = unknown,
151
+ TError = DefaultError,
152
+ > = QueryObserverResult<TData, TError>
153
+
154
+ export type UseQueryResult<
155
+ TData = unknown,
156
+ TError = DefaultError,
157
+ > = UseBaseQueryResult<TData, TError>
158
+
159
+ export type UseSuspenseQueryResult<
160
+ TData = unknown,
161
+ TError = DefaultError,
162
+ > = DistributiveOmit<
163
+ DefinedQueryObserverResult<TData, TError>,
164
+ 'isPlaceholderData' | 'promise'
165
+ >
166
+
167
+ export type DefinedUseQueryResult<
168
+ TData = unknown,
169
+ TError = DefaultError,
170
+ > = DefinedQueryObserverResult<TData, TError>
171
+
172
+ export type UseInfiniteQueryResult<
173
+ TData = unknown,
174
+ TError = DefaultError,
175
+ > = InfiniteQueryObserverResult<TData, TError>
176
+
177
+ export type DefinedUseInfiniteQueryResult<
178
+ TData = unknown,
179
+ TError = DefaultError,
180
+ > = DefinedInfiniteQueryObserverResult<TData, TError>
181
+
182
+ export type UseSuspenseInfiniteQueryResult<
183
+ TData = unknown,
184
+ TError = DefaultError,
185
+ > = OmitKeyof<
186
+ DefinedInfiniteQueryObserverResult<TData, TError>,
187
+ 'isPlaceholderData' | 'promise'
188
+ >
189
+
190
+ export type AnyUseMutationOptions = UseMutationOptions<any, any, any, any>
191
+ export interface UseMutationOptions<
192
+ TData = unknown,
193
+ TError = DefaultError,
194
+ TVariables = void,
195
+ TOnMutateResult = unknown,
196
+ > extends OmitKeyof<
197
+ MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>,
198
+ '_defaulted'
199
+ > {}
200
+
201
+ export type UseMutateFunction<
202
+ TData = unknown,
203
+ TError = DefaultError,
204
+ TVariables = void,
205
+ TOnMutateResult = unknown,
206
+ > = (
207
+ ...args: Parameters<
208
+ MutateFunction<TData, TError, TVariables, TOnMutateResult>
209
+ >
210
+ ) => void
211
+
212
+ export type UseMutateAsyncFunction<
213
+ TData = unknown,
214
+ TError = DefaultError,
215
+ TVariables = void,
216
+ TOnMutateResult = unknown,
217
+ > = MutateFunction<TData, TError, TVariables, TOnMutateResult>
218
+
219
+ export type UseBaseMutationResult<
220
+ TData = unknown,
221
+ TError = DefaultError,
222
+ TVariables = unknown,
223
+ TOnMutateResult = unknown,
224
+ > = Override<
225
+ MutationObserverResult<TData, TError, TVariables, TOnMutateResult>,
226
+ { mutate: UseMutateFunction<TData, TError, TVariables, TOnMutateResult> }
227
+ > & {
228
+ mutateAsync: UseMutateAsyncFunction<
229
+ TData,
230
+ TError,
231
+ TVariables,
232
+ TOnMutateResult
233
+ >
234
+ }
235
+
236
+ export type UseMutationResult<
237
+ TData = unknown,
238
+ TError = DefaultError,
239
+ TVariables = unknown,
240
+ TOnMutateResult = unknown,
241
+ > = UseBaseMutationResult<TData, TError, TVariables, TOnMutateResult>
@@ -0,0 +1,169 @@
1
+ import { isServer, noop, notifyManager } from '@tanstack/query-core'
2
+ import type {
3
+ QueryClient,
4
+ QueryKey,
5
+ QueryObserver,
6
+ QueryObserverResult,
7
+ } from '@tanstack/query-core'
8
+ import { useCallback, useEffect, useState } from 'preact/hooks'
9
+
10
+ import { useIsRestoring } from './IsRestoringProvider'
11
+ import { useQueryClient } from './QueryClientProvider'
12
+ import { useQueryErrorResetBoundary } from './QueryErrorResetBoundary'
13
+ import {
14
+ ensurePreventErrorBoundaryRetry,
15
+ getHasError,
16
+ useClearResetErrorBoundary,
17
+ } from './errorBoundaryUtils'
18
+ import {
19
+ ensureSuspenseTimers,
20
+ fetchOptimistic,
21
+ shouldSuspend,
22
+ willFetch,
23
+ } from './suspense'
24
+ import type { UseBaseQueryOptions } from './types'
25
+ import { useSyncExternalStore } from './utils'
26
+
27
+ export function useBaseQuery<
28
+ TQueryFnData,
29
+ TError,
30
+ TData,
31
+ TQueryData,
32
+ TQueryKey extends QueryKey,
33
+ >(
34
+ options: UseBaseQueryOptions<
35
+ TQueryFnData,
36
+ TError,
37
+ TData,
38
+ TQueryData,
39
+ TQueryKey
40
+ >,
41
+ Observer: typeof QueryObserver,
42
+ queryClient?: QueryClient,
43
+ ): QueryObserverResult<TData, TError> {
44
+ if (process.env.NODE_ENV !== 'production') {
45
+ if (typeof options !== 'object' || Array.isArray(options)) {
46
+ throw new Error(
47
+ 'Bad argument type. Starting with v5, only the "Object" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object',
48
+ )
49
+ }
50
+ }
51
+
52
+ const isRestoring = useIsRestoring()
53
+ const errorResetBoundary = useQueryErrorResetBoundary()
54
+ const client = useQueryClient(queryClient)
55
+ const defaultedOptions = client.defaultQueryOptions(options)
56
+
57
+ ;(client.getDefaultOptions().queries as any)?._experimental_beforeQuery?.(
58
+ defaultedOptions,
59
+ )
60
+
61
+ if (process.env.NODE_ENV !== 'production') {
62
+ if (!defaultedOptions.queryFn) {
63
+ console.error(
64
+ `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`,
65
+ )
66
+ }
67
+ }
68
+
69
+ // Make sure results are optimistically set in fetching state before subscribing or updating options
70
+ defaultedOptions._optimisticResults = isRestoring
71
+ ? 'isRestoring'
72
+ : 'optimistic'
73
+
74
+ ensureSuspenseTimers(defaultedOptions)
75
+ ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary)
76
+
77
+ useClearResetErrorBoundary(errorResetBoundary)
78
+
79
+ // this needs to be invoked before creating the Observer because that can create a cache entry
80
+ const isNewCacheEntry = !client
81
+ .getQueryCache()
82
+ .get(defaultedOptions.queryHash)
83
+
84
+ const [observer] = useState(
85
+ () =>
86
+ new Observer<TQueryFnData, TError, TData, TQueryData, TQueryKey>(
87
+ client,
88
+ defaultedOptions,
89
+ ),
90
+ )
91
+
92
+ // note: this must be called before useSyncExternalStore
93
+ const result = observer.getOptimisticResult(defaultedOptions)
94
+
95
+ const shouldSubscribe = !isRestoring && options.subscribed !== false
96
+ useSyncExternalStore(
97
+ useCallback(
98
+ (onStoreChange) => {
99
+ const unsubscribe = shouldSubscribe
100
+ ? observer.subscribe(notifyManager.batchCalls(onStoreChange))
101
+ : noop
102
+
103
+ // Update result to make sure we did not miss any query updates
104
+ // between creating the observer and subscribing to it.
105
+ observer.updateResult()
106
+
107
+ return unsubscribe
108
+ },
109
+ [observer, shouldSubscribe],
110
+ ),
111
+ () => observer.getCurrentResult(),
112
+ )
113
+
114
+ useEffect(() => {
115
+ observer.setOptions(defaultedOptions)
116
+ }, [defaultedOptions, observer])
117
+
118
+ // Handle suspense
119
+ if (shouldSuspend(defaultedOptions, result)) {
120
+ throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary)
121
+ }
122
+
123
+ // Handle error boundary
124
+ if (
125
+ getHasError({
126
+ result,
127
+ errorResetBoundary,
128
+ throwOnError: defaultedOptions.throwOnError,
129
+ query: client
130
+ .getQueryCache()
131
+ .get<
132
+ TQueryFnData,
133
+ TError,
134
+ TQueryData,
135
+ TQueryKey
136
+ >(defaultedOptions.queryHash),
137
+ suspense: defaultedOptions.suspense,
138
+ })
139
+ ) {
140
+ throw result.error
141
+ }
142
+
143
+ ;(client.getDefaultOptions().queries as any)?._experimental_afterQuery?.(
144
+ defaultedOptions,
145
+ result,
146
+ )
147
+
148
+ if (
149
+ defaultedOptions.experimental_prefetchInRender &&
150
+ !isServer &&
151
+ willFetch(result, isRestoring)
152
+ ) {
153
+ const promise = isNewCacheEntry
154
+ ? // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted
155
+ fetchOptimistic(defaultedOptions, observer, errorResetBoundary)
156
+ : // subscribe to the "cache promise" so that we can finalize the currentThenable once data comes in
157
+ client.getQueryCache().get(defaultedOptions.queryHash)?.promise
158
+
159
+ promise?.catch(noop).finally(() => {
160
+ // `.updateResult()` will trigger `.#currentThenable` to finalize
161
+ observer.updateResult()
162
+ })
163
+ }
164
+
165
+ // Handle result property usage tracking
166
+ return !defaultedOptions.notifyOnChangeProps
167
+ ? observer.trackResult(result)
168
+ : result
169
+ }
@@ -0,0 +1,81 @@
1
+ import { InfiniteQueryObserver } from '@tanstack/query-core'
2
+ import type {
3
+ DefaultError,
4
+ InfiniteData,
5
+ QueryClient,
6
+ QueryKey,
7
+ QueryObserver,
8
+ } from '@tanstack/query-core'
9
+
10
+ import type {
11
+ DefinedInitialDataInfiniteOptions,
12
+ UndefinedInitialDataInfiniteOptions,
13
+ } from './infiniteQueryOptions'
14
+ import type {
15
+ DefinedUseInfiniteQueryResult,
16
+ UseInfiniteQueryOptions,
17
+ UseInfiniteQueryResult,
18
+ } from './types'
19
+ import { useBaseQuery } from './useBaseQuery'
20
+
21
+ export function useInfiniteQuery<
22
+ TQueryFnData,
23
+ TError = DefaultError,
24
+ TData = InfiniteData<TQueryFnData>,
25
+ TQueryKey extends QueryKey = QueryKey,
26
+ TPageParam = unknown,
27
+ >(
28
+ options: DefinedInitialDataInfiniteOptions<
29
+ TQueryFnData,
30
+ TError,
31
+ TData,
32
+ TQueryKey,
33
+ TPageParam
34
+ >,
35
+ queryClient?: QueryClient,
36
+ ): DefinedUseInfiniteQueryResult<TData, TError>
37
+
38
+ export function useInfiniteQuery<
39
+ TQueryFnData,
40
+ TError = DefaultError,
41
+ TData = InfiniteData<TQueryFnData>,
42
+ TQueryKey extends QueryKey = QueryKey,
43
+ TPageParam = unknown,
44
+ >(
45
+ options: UndefinedInitialDataInfiniteOptions<
46
+ TQueryFnData,
47
+ TError,
48
+ TData,
49
+ TQueryKey,
50
+ TPageParam
51
+ >,
52
+ queryClient?: QueryClient,
53
+ ): UseInfiniteQueryResult<TData, TError>
54
+
55
+ export function useInfiniteQuery<
56
+ TQueryFnData,
57
+ TError = DefaultError,
58
+ TData = InfiniteData<TQueryFnData>,
59
+ TQueryKey extends QueryKey = QueryKey,
60
+ TPageParam = unknown,
61
+ >(
62
+ options: UseInfiniteQueryOptions<
63
+ TQueryFnData,
64
+ TError,
65
+ TData,
66
+ TQueryKey,
67
+ TPageParam
68
+ >,
69
+ queryClient?: QueryClient,
70
+ ): UseInfiniteQueryResult<TData, TError>
71
+
72
+ export function useInfiniteQuery(
73
+ options: UseInfiniteQueryOptions,
74
+ queryClient?: QueryClient,
75
+ ) {
76
+ return useBaseQuery(
77
+ options,
78
+ InfiniteQueryObserver as typeof QueryObserver,
79
+ queryClient,
80
+ )
81
+ }
@@ -0,0 +1,23 @@
1
+ import { notifyManager } from '@tanstack/query-core'
2
+ import type { QueryClient, QueryFilters } from '@tanstack/query-core'
3
+ import { useCallback } from 'preact/hooks'
4
+
5
+ import { useQueryClient } from './QueryClientProvider'
6
+ import { useSyncExternalStore } from './utils'
7
+
8
+ export function useIsFetching(
9
+ filters?: QueryFilters,
10
+ queryClient?: QueryClient,
11
+ ): number {
12
+ const client = useQueryClient(queryClient)
13
+ const queryCache = client.getQueryCache()
14
+
15
+ return useSyncExternalStore(
16
+ useCallback(
17
+ (onStoreChange) =>
18
+ queryCache.subscribe(notifyManager.batchCalls(onStoreChange)),
19
+ [queryCache],
20
+ ),
21
+ () => client.isFetching(filters),
22
+ )
23
+ }