@openapi-qraft/react 1.14.0 → 2.0.0-next.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 (419) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/cjs/Unstable_QraftSecureRequestFn.cjs.map +1 -1
  3. package/dist/cjs/callbacks/cancelQueries.cjs +1 -1
  4. package/dist/cjs/callbacks/cancelQueries.cjs.map +1 -1
  5. package/dist/cjs/callbacks/fetchInfiniteQuery.cjs +2 -2
  6. package/dist/cjs/callbacks/fetchInfiniteQuery.cjs.map +1 -1
  7. package/dist/cjs/callbacks/fetchQuery.cjs +2 -2
  8. package/dist/cjs/callbacks/fetchQuery.cjs.map +1 -1
  9. package/dist/cjs/callbacks/getInfiniteQueryData.cjs +3 -2
  10. package/dist/cjs/callbacks/getInfiniteQueryData.cjs.map +1 -1
  11. package/dist/cjs/callbacks/getInfiniteQueryKey.cjs +1 -1
  12. package/dist/cjs/callbacks/getInfiniteQueryKey.cjs.map +1 -1
  13. package/dist/cjs/callbacks/getInfiniteQueryState.cjs +3 -2
  14. package/dist/cjs/callbacks/getInfiniteQueryState.cjs.map +1 -1
  15. package/dist/cjs/callbacks/getMutationKey.cjs +1 -1
  16. package/dist/cjs/callbacks/getMutationKey.cjs.map +1 -1
  17. package/dist/cjs/callbacks/getQueriesData.cjs +2 -2
  18. package/dist/cjs/callbacks/getQueriesData.cjs.map +1 -1
  19. package/dist/cjs/callbacks/getQueryData.cjs +3 -2
  20. package/dist/cjs/callbacks/getQueryData.cjs.map +1 -1
  21. package/dist/cjs/callbacks/getQueryKey.cjs +1 -1
  22. package/dist/cjs/callbacks/getQueryKey.cjs.map +1 -1
  23. package/dist/cjs/callbacks/getQueryState.cjs +3 -2
  24. package/dist/cjs/callbacks/getQueryState.cjs.map +1 -1
  25. package/dist/cjs/callbacks/index.cjs +0 -4
  26. package/dist/cjs/callbacks/index.cjs.map +1 -1
  27. package/dist/cjs/callbacks/invalidateQueries.cjs +1 -1
  28. package/dist/cjs/callbacks/invalidateQueries.cjs.map +1 -1
  29. package/dist/cjs/callbacks/isFetching.cjs +1 -1
  30. package/dist/cjs/callbacks/isFetching.cjs.map +1 -1
  31. package/dist/cjs/callbacks/isMutating.cjs +2 -2
  32. package/dist/cjs/callbacks/isMutating.cjs.map +1 -1
  33. package/dist/cjs/callbacks/operationInvokeFn.cjs +7 -5
  34. package/dist/cjs/callbacks/operationInvokeFn.cjs.map +1 -1
  35. package/dist/cjs/callbacks/prefetchInfiniteQuery.cjs +2 -2
  36. package/dist/cjs/callbacks/prefetchInfiniteQuery.cjs.map +1 -1
  37. package/dist/cjs/callbacks/prefetchQuery.cjs +2 -2
  38. package/dist/cjs/callbacks/prefetchQuery.cjs.map +1 -1
  39. package/dist/cjs/callbacks/refetchQueries.cjs +1 -1
  40. package/dist/cjs/callbacks/refetchQueries.cjs.map +1 -1
  41. package/dist/cjs/callbacks/removeQueries.cjs +2 -2
  42. package/dist/cjs/callbacks/removeQueries.cjs.map +1 -1
  43. package/dist/cjs/callbacks/resetQueries.cjs +1 -1
  44. package/dist/cjs/callbacks/resetQueries.cjs.map +1 -1
  45. package/dist/cjs/callbacks/setInfiniteQueryData.cjs +2 -1
  46. package/dist/cjs/callbacks/setInfiniteQueryData.cjs.map +1 -1
  47. package/dist/cjs/callbacks/setQueriesData.cjs +2 -2
  48. package/dist/cjs/callbacks/setQueriesData.cjs.map +1 -1
  49. package/dist/cjs/callbacks/setQueryData.cjs +3 -2
  50. package/dist/cjs/callbacks/setQueryData.cjs.map +1 -1
  51. package/dist/cjs/callbacks/useInfiniteQuery.cjs.map +1 -1
  52. package/dist/cjs/callbacks/useIsFetching.cjs +2 -3
  53. package/dist/cjs/callbacks/useIsFetching.cjs.map +1 -1
  54. package/dist/cjs/callbacks/useIsMutating.cjs +2 -3
  55. package/dist/cjs/callbacks/useIsMutating.cjs.map +1 -1
  56. package/dist/cjs/callbacks/useMutation.cjs +10 -14
  57. package/dist/cjs/callbacks/useMutation.cjs.map +1 -1
  58. package/dist/cjs/callbacks/useMutationState.cjs +2 -3
  59. package/dist/cjs/callbacks/useMutationState.cjs.map +1 -1
  60. package/dist/cjs/callbacks/useQueries.cjs +6 -10
  61. package/dist/cjs/callbacks/useQueries.cjs.map +1 -1
  62. package/dist/cjs/callbacks/useQuery.cjs.map +1 -1
  63. package/dist/cjs/callbacks/useSuspenseInfiniteQuery.cjs.map +1 -1
  64. package/dist/cjs/callbacks/useSuspenseQueries.cjs +6 -10
  65. package/dist/cjs/callbacks/useSuspenseQueries.cjs.map +1 -1
  66. package/dist/cjs/callbacks/useSuspenseQuery.cjs.map +1 -1
  67. package/dist/cjs/index.cjs +0 -2
  68. package/dist/cjs/index.cjs.map +1 -1
  69. package/dist/cjs/lib/callQueryClientFetchMethod.cjs +15 -22
  70. package/dist/cjs/lib/callQueryClientFetchMethod.cjs.map +1 -1
  71. package/dist/cjs/lib/callQueryClientMethodWithMutationFilters.cjs +4 -6
  72. package/dist/cjs/lib/callQueryClientMethodWithMutationFilters.cjs.map +1 -1
  73. package/dist/cjs/lib/callQueryClientMethodWithQueryFilters.cjs +4 -6
  74. package/dist/cjs/lib/callQueryClientMethodWithQueryFilters.cjs.map +1 -1
  75. package/dist/cjs/lib/callQueryClientMethodWithQueryKey.cjs +4 -6
  76. package/dist/cjs/lib/callQueryClientMethodWithQueryKey.cjs.map +1 -1
  77. package/dist/cjs/lib/requestFn.cjs +35 -21
  78. package/dist/cjs/lib/requestFn.cjs.map +1 -1
  79. package/dist/cjs/lib/requestFnResponseResolver.cjs +9 -0
  80. package/dist/cjs/lib/requestFnResponseResolver.cjs.map +1 -0
  81. package/dist/cjs/lib/useComposeUseQueryOptions.cjs +6 -10
  82. package/dist/cjs/lib/useComposeUseQueryOptions.cjs.map +1 -1
  83. package/dist/cjs/qraftAPIClient.cjs +13 -3
  84. package/dist/cjs/qraftAPIClient.cjs.map +1 -1
  85. package/dist/esm/Unstable_QraftSecureRequestFn.js.map +1 -1
  86. package/dist/esm/callbacks/cancelQueries.js +1 -1
  87. package/dist/esm/callbacks/cancelQueries.js.map +1 -1
  88. package/dist/esm/callbacks/fetchInfiniteQuery.js +2 -2
  89. package/dist/esm/callbacks/fetchInfiniteQuery.js.map +1 -1
  90. package/dist/esm/callbacks/fetchQuery.js +2 -2
  91. package/dist/esm/callbacks/fetchQuery.js.map +1 -1
  92. package/dist/esm/callbacks/getInfiniteQueryData.js +3 -2
  93. package/dist/esm/callbacks/getInfiniteQueryData.js.map +1 -1
  94. package/dist/esm/callbacks/getInfiniteQueryKey.js +1 -1
  95. package/dist/esm/callbacks/getInfiniteQueryKey.js.map +1 -1
  96. package/dist/esm/callbacks/getInfiniteQueryState.js +3 -2
  97. package/dist/esm/callbacks/getInfiniteQueryState.js.map +1 -1
  98. package/dist/esm/callbacks/getMutationKey.js +1 -1
  99. package/dist/esm/callbacks/getMutationKey.js.map +1 -1
  100. package/dist/esm/callbacks/getQueriesData.js +2 -2
  101. package/dist/esm/callbacks/getQueriesData.js.map +1 -1
  102. package/dist/esm/callbacks/getQueryData.js +3 -2
  103. package/dist/esm/callbacks/getQueryData.js.map +1 -1
  104. package/dist/esm/callbacks/getQueryKey.js +1 -1
  105. package/dist/esm/callbacks/getQueryKey.js.map +1 -1
  106. package/dist/esm/callbacks/getQueryState.js +3 -2
  107. package/dist/esm/callbacks/getQueryState.js.map +1 -1
  108. package/dist/esm/callbacks/index.js +0 -2
  109. package/dist/esm/callbacks/index.js.map +1 -1
  110. package/dist/esm/callbacks/invalidateQueries.js +1 -1
  111. package/dist/esm/callbacks/invalidateQueries.js.map +1 -1
  112. package/dist/esm/callbacks/isFetching.js +1 -1
  113. package/dist/esm/callbacks/isFetching.js.map +1 -1
  114. package/dist/esm/callbacks/isMutating.js +2 -2
  115. package/dist/esm/callbacks/isMutating.js.map +1 -1
  116. package/dist/esm/callbacks/operationInvokeFn.js +7 -5
  117. package/dist/esm/callbacks/operationInvokeFn.js.map +1 -1
  118. package/dist/esm/callbacks/prefetchInfiniteQuery.js +2 -2
  119. package/dist/esm/callbacks/prefetchInfiniteQuery.js.map +1 -1
  120. package/dist/esm/callbacks/prefetchQuery.js +2 -2
  121. package/dist/esm/callbacks/prefetchQuery.js.map +1 -1
  122. package/dist/esm/callbacks/refetchQueries.js +1 -1
  123. package/dist/esm/callbacks/refetchQueries.js.map +1 -1
  124. package/dist/esm/callbacks/removeQueries.js +2 -2
  125. package/dist/esm/callbacks/removeQueries.js.map +1 -1
  126. package/dist/esm/callbacks/resetQueries.js +1 -1
  127. package/dist/esm/callbacks/resetQueries.js.map +1 -1
  128. package/dist/esm/callbacks/setInfiniteQueryData.js +2 -1
  129. package/dist/esm/callbacks/setInfiniteQueryData.js.map +1 -1
  130. package/dist/esm/callbacks/setQueriesData.js +2 -2
  131. package/dist/esm/callbacks/setQueriesData.js.map +1 -1
  132. package/dist/esm/callbacks/setQueryData.js +3 -2
  133. package/dist/esm/callbacks/setQueryData.js.map +1 -1
  134. package/dist/esm/callbacks/useInfiniteQuery.js.map +1 -1
  135. package/dist/esm/callbacks/useIsFetching.js +2 -3
  136. package/dist/esm/callbacks/useIsFetching.js.map +1 -1
  137. package/dist/esm/callbacks/useIsMutating.js +2 -3
  138. package/dist/esm/callbacks/useIsMutating.js.map +1 -1
  139. package/dist/esm/callbacks/useMutation.js +10 -14
  140. package/dist/esm/callbacks/useMutation.js.map +1 -1
  141. package/dist/esm/callbacks/useMutationState.js +2 -3
  142. package/dist/esm/callbacks/useMutationState.js.map +1 -1
  143. package/dist/esm/callbacks/useQueries.js +6 -10
  144. package/dist/esm/callbacks/useQueries.js.map +1 -1
  145. package/dist/esm/callbacks/useQuery.js.map +1 -1
  146. package/dist/esm/callbacks/useSuspenseInfiniteQuery.js.map +1 -1
  147. package/dist/esm/callbacks/useSuspenseQueries.js +6 -10
  148. package/dist/esm/callbacks/useSuspenseQueries.js.map +1 -1
  149. package/dist/esm/callbacks/useSuspenseQuery.js.map +1 -1
  150. package/dist/esm/index.js +0 -1
  151. package/dist/esm/index.js.map +1 -1
  152. package/dist/esm/lib/callQueryClientFetchMethod.js +15 -22
  153. package/dist/esm/lib/callQueryClientFetchMethod.js.map +1 -1
  154. package/dist/esm/lib/callQueryClientMethodWithMutationFilters.js +4 -6
  155. package/dist/esm/lib/callQueryClientMethodWithMutationFilters.js.map +1 -1
  156. package/dist/esm/lib/callQueryClientMethodWithQueryFilters.js +4 -6
  157. package/dist/esm/lib/callQueryClientMethodWithQueryFilters.js.map +1 -1
  158. package/dist/esm/lib/callQueryClientMethodWithQueryKey.js +4 -6
  159. package/dist/esm/lib/callQueryClientMethodWithQueryKey.js.map +1 -1
  160. package/dist/esm/lib/requestFn.js +35 -21
  161. package/dist/esm/lib/requestFn.js.map +1 -1
  162. package/dist/esm/lib/requestFnResponseResolver.js +7 -0
  163. package/dist/esm/lib/requestFnResponseResolver.js.map +1 -0
  164. package/dist/esm/lib/useComposeUseQueryOptions.js +6 -10
  165. package/dist/esm/lib/useComposeUseQueryOptions.js.map +1 -1
  166. package/dist/esm/qraftAPIClient.js +13 -3
  167. package/dist/esm/qraftAPIClient.js.map +1 -1
  168. package/dist/types/Unstable_QraftSecureRequestFn.d.ts +2 -2
  169. package/dist/types/Unstable_QraftSecureRequestFn.d.ts.map +1 -1
  170. package/dist/types/callbacks/cancelQueries.d.ts +3 -3
  171. package/dist/types/callbacks/cancelQueries.d.ts.map +1 -1
  172. package/dist/types/callbacks/fetchInfiniteQuery.d.ts +3 -3
  173. package/dist/types/callbacks/fetchInfiniteQuery.d.ts.map +1 -1
  174. package/dist/types/callbacks/fetchQuery.d.ts +3 -3
  175. package/dist/types/callbacks/fetchQuery.d.ts.map +1 -1
  176. package/dist/types/callbacks/getInfiniteQueryData.d.ts +2 -2
  177. package/dist/types/callbacks/getInfiniteQueryData.d.ts.map +1 -1
  178. package/dist/types/callbacks/getInfiniteQueryKey.d.ts +2 -2
  179. package/dist/types/callbacks/getInfiniteQueryKey.d.ts.map +1 -1
  180. package/dist/types/callbacks/getInfiniteQueryState.d.ts +2 -2
  181. package/dist/types/callbacks/getInfiniteQueryState.d.ts.map +1 -1
  182. package/dist/types/callbacks/getMutationKey.d.ts +3 -3
  183. package/dist/types/callbacks/getMutationKey.d.ts.map +1 -1
  184. package/dist/types/callbacks/getQueriesData.d.ts +3 -3
  185. package/dist/types/callbacks/getQueriesData.d.ts.map +1 -1
  186. package/dist/types/callbacks/getQueryData.d.ts +2 -2
  187. package/dist/types/callbacks/getQueryData.d.ts.map +1 -1
  188. package/dist/types/callbacks/getQueryKey.d.ts +3 -3
  189. package/dist/types/callbacks/getQueryKey.d.ts.map +1 -1
  190. package/dist/types/callbacks/getQueryState.d.ts +2 -2
  191. package/dist/types/callbacks/getQueryState.d.ts.map +1 -1
  192. package/dist/types/callbacks/index.d.ts +0 -2
  193. package/dist/types/callbacks/index.d.ts.map +1 -1
  194. package/dist/types/callbacks/invalidateQueries.d.ts +3 -3
  195. package/dist/types/callbacks/invalidateQueries.d.ts.map +1 -1
  196. package/dist/types/callbacks/isFetching.d.ts +3 -3
  197. package/dist/types/callbacks/isFetching.d.ts.map +1 -1
  198. package/dist/types/callbacks/isMutating.d.ts +3 -3
  199. package/dist/types/callbacks/isMutating.d.ts.map +1 -1
  200. package/dist/types/callbacks/operationInvokeFn.d.ts +5 -5
  201. package/dist/types/callbacks/operationInvokeFn.d.ts.map +1 -1
  202. package/dist/types/callbacks/prefetchInfiniteQuery.d.ts +3 -3
  203. package/dist/types/callbacks/prefetchInfiniteQuery.d.ts.map +1 -1
  204. package/dist/types/callbacks/prefetchQuery.d.ts +3 -3
  205. package/dist/types/callbacks/prefetchQuery.d.ts.map +1 -1
  206. package/dist/types/callbacks/refetchQueries.d.ts +3 -3
  207. package/dist/types/callbacks/refetchQueries.d.ts.map +1 -1
  208. package/dist/types/callbacks/removeQueries.d.ts +3 -3
  209. package/dist/types/callbacks/removeQueries.d.ts.map +1 -1
  210. package/dist/types/callbacks/resetQueries.d.ts +3 -3
  211. package/dist/types/callbacks/resetQueries.d.ts.map +1 -1
  212. package/dist/types/callbacks/setInfiniteQueryData.d.ts +4 -4
  213. package/dist/types/callbacks/setInfiniteQueryData.d.ts.map +1 -1
  214. package/dist/types/callbacks/setQueriesData.d.ts +3 -3
  215. package/dist/types/callbacks/setQueriesData.d.ts.map +1 -1
  216. package/dist/types/callbacks/setQueryData.d.ts +3 -3
  217. package/dist/types/callbacks/setQueryData.d.ts.map +1 -1
  218. package/dist/types/callbacks/useInfiniteQuery.d.ts +2 -2
  219. package/dist/types/callbacks/useInfiniteQuery.d.ts.map +1 -1
  220. package/dist/types/callbacks/useIsFetching.d.ts +2 -2
  221. package/dist/types/callbacks/useIsFetching.d.ts.map +1 -1
  222. package/dist/types/callbacks/useIsMutating.d.ts +4 -4
  223. package/dist/types/callbacks/useIsMutating.d.ts.map +1 -1
  224. package/dist/types/callbacks/useMutation.d.ts +3 -3
  225. package/dist/types/callbacks/useMutation.d.ts.map +1 -1
  226. package/dist/types/callbacks/useMutationState.d.ts +4 -4
  227. package/dist/types/callbacks/useMutationState.d.ts.map +1 -1
  228. package/dist/types/callbacks/useQueries.d.ts +4 -4
  229. package/dist/types/callbacks/useQueries.d.ts.map +1 -1
  230. package/dist/types/callbacks/useQuery.d.ts +2 -2
  231. package/dist/types/callbacks/useQuery.d.ts.map +1 -1
  232. package/dist/types/callbacks/useSuspenseInfiniteQuery.d.ts +2 -2
  233. package/dist/types/callbacks/useSuspenseInfiniteQuery.d.ts.map +1 -1
  234. package/dist/types/callbacks/useSuspenseQueries.d.ts +4 -4
  235. package/dist/types/callbacks/useSuspenseQueries.d.ts.map +1 -1
  236. package/dist/types/callbacks/useSuspenseQuery.d.ts +2 -2
  237. package/dist/types/callbacks/useSuspenseQuery.d.ts.map +1 -1
  238. package/dist/types/index.d.ts +2 -3
  239. package/dist/types/index.d.ts.map +1 -1
  240. package/dist/types/lib/callQueryClientFetchMethod.d.ts +3 -2
  241. package/dist/types/lib/callQueryClientFetchMethod.d.ts.map +1 -1
  242. package/dist/types/lib/callQueryClientMethodWithMutationFilters.d.ts +2 -1
  243. package/dist/types/lib/callQueryClientMethodWithMutationFilters.d.ts.map +1 -1
  244. package/dist/types/lib/callQueryClientMethodWithQueryFilters.d.ts +2 -1
  245. package/dist/types/lib/callQueryClientMethodWithQueryFilters.d.ts.map +1 -1
  246. package/dist/types/lib/callQueryClientMethodWithQueryKey.d.ts +2 -1
  247. package/dist/types/lib/callQueryClientMethodWithQueryKey.d.ts.map +1 -1
  248. package/dist/types/lib/requestFn.d.ts +17 -4
  249. package/dist/types/lib/requestFn.d.ts.map +1 -1
  250. package/dist/types/lib/requestFnResponseResolver.d.ts +3 -0
  251. package/dist/types/lib/requestFnResponseResolver.d.ts.map +1 -0
  252. package/dist/types/lib/useComposeUseQueryOptions.d.ts +2 -2
  253. package/dist/types/lib/useComposeUseQueryOptions.d.ts.map +1 -1
  254. package/dist/types/qraftAPIClient.d.ts +40 -9
  255. package/dist/types/qraftAPIClient.d.ts.map +1 -1
  256. package/dist/types/service-operation/ServiceOperation.d.ts +2 -2
  257. package/dist/types/service-operation/ServiceOperation.d.ts.map +1 -1
  258. package/dist/types/service-operation/ServiceOperationCancelQueries.d.ts +2 -13
  259. package/dist/types/service-operation/ServiceOperationCancelQueries.d.ts.map +1 -1
  260. package/dist/types/service-operation/ServiceOperationFetchInfiniteQuery.d.ts +10 -7
  261. package/dist/types/service-operation/ServiceOperationFetchInfiniteQuery.d.ts.map +1 -1
  262. package/dist/types/service-operation/ServiceOperationFetchQuery.d.ts +19 -10
  263. package/dist/types/service-operation/ServiceOperationFetchQuery.d.ts.map +1 -1
  264. package/dist/types/service-operation/ServiceOperationGetInfiniteQueryData.d.ts +3 -3
  265. package/dist/types/service-operation/ServiceOperationGetInfiniteQueryData.d.ts.map +1 -1
  266. package/dist/types/service-operation/ServiceOperationGetQueriesData.d.ts +3 -4
  267. package/dist/types/service-operation/ServiceOperationGetQueriesData.d.ts.map +1 -1
  268. package/dist/types/service-operation/ServiceOperationGetQueryData.d.ts +3 -3
  269. package/dist/types/service-operation/ServiceOperationGetQueryData.d.ts.map +1 -1
  270. package/dist/types/service-operation/ServiceOperationGetQueryState.d.ts +3 -3
  271. package/dist/types/service-operation/ServiceOperationGetQueryState.d.ts.map +1 -1
  272. package/dist/types/service-operation/ServiceOperationInvalidateQueries.d.ts +2 -13
  273. package/dist/types/service-operation/ServiceOperationInvalidateQueries.d.ts.map +1 -1
  274. package/dist/types/service-operation/ServiceOperationIsFetchingQueries.d.ts +2 -12
  275. package/dist/types/service-operation/ServiceOperationIsFetchingQueries.d.ts.map +1 -1
  276. package/dist/types/service-operation/ServiceOperationIsMutatingQueries.d.ts +2 -12
  277. package/dist/types/service-operation/ServiceOperationIsMutatingQueries.d.ts.map +1 -1
  278. package/dist/types/service-operation/ServiceOperationMutationFn.d.ts +16 -33
  279. package/dist/types/service-operation/ServiceOperationMutationFn.d.ts.map +1 -1
  280. package/dist/types/service-operation/ServiceOperationQueryFn.d.ts +7 -49
  281. package/dist/types/service-operation/ServiceOperationQueryFn.d.ts.map +1 -1
  282. package/dist/types/service-operation/ServiceOperationRefetchQueries.d.ts +2 -23
  283. package/dist/types/service-operation/ServiceOperationRefetchQueries.d.ts.map +1 -1
  284. package/dist/types/service-operation/ServiceOperationRemoveQueries.d.ts +2 -12
  285. package/dist/types/service-operation/ServiceOperationRemoveQueries.d.ts.map +1 -1
  286. package/dist/types/service-operation/ServiceOperationResetQueries.d.ts +2 -13
  287. package/dist/types/service-operation/ServiceOperationResetQueries.d.ts.map +1 -1
  288. package/dist/types/service-operation/ServiceOperationSetInfiniteQueryData.d.ts +2 -2
  289. package/dist/types/service-operation/ServiceOperationSetInfiniteQueryData.d.ts.map +1 -1
  290. package/dist/types/service-operation/ServiceOperationSetQueriesData.d.ts +3 -14
  291. package/dist/types/service-operation/ServiceOperationSetQueriesData.d.ts.map +1 -1
  292. package/dist/types/service-operation/ServiceOperationSetQueryData.d.ts +2 -12
  293. package/dist/types/service-operation/ServiceOperationSetQueryData.d.ts.map +1 -1
  294. package/dist/types/service-operation/ServiceOperationUseInfiniteQuery.d.ts +6 -5
  295. package/dist/types/service-operation/ServiceOperationUseInfiniteQuery.d.ts.map +1 -1
  296. package/dist/types/service-operation/ServiceOperationUseIsFetchingQueries.d.ts +2 -2
  297. package/dist/types/service-operation/ServiceOperationUseIsFetchingQueries.d.ts.map +1 -1
  298. package/dist/types/service-operation/ServiceOperationUseIsMutating.d.ts +2 -2
  299. package/dist/types/service-operation/ServiceOperationUseIsMutating.d.ts.map +1 -1
  300. package/dist/types/service-operation/ServiceOperationUseMutation.d.ts +4 -4
  301. package/dist/types/service-operation/ServiceOperationUseMutation.d.ts.map +1 -1
  302. package/dist/types/service-operation/ServiceOperationUseMutationState.d.ts +2 -2
  303. package/dist/types/service-operation/ServiceOperationUseMutationState.d.ts.map +1 -1
  304. package/dist/types/service-operation/ServiceOperationUseQueries.d.ts +2 -2
  305. package/dist/types/service-operation/ServiceOperationUseQueries.d.ts.map +1 -1
  306. package/dist/types/service-operation/ServiceOperationUseQuery.d.ts +5 -5
  307. package/dist/types/service-operation/ServiceOperationUseQuery.d.ts.map +1 -1
  308. package/dist/types/service-operation/ServiceOperationUseSuspenseInfiniteQuery.d.ts +2 -2
  309. package/dist/types/service-operation/ServiceOperationUseSuspenseInfiniteQuery.d.ts.map +1 -1
  310. package/dist/types/service-operation/ServiceOperationUseSuspenseQueries.d.ts +2 -2
  311. package/dist/types/service-operation/ServiceOperationUseSuspenseQueries.d.ts.map +1 -1
  312. package/dist/types/service-operation/ServiceOperationUseSuspenseQuery.d.ts +2 -2
  313. package/dist/types/service-operation/ServiceOperationUseSuspenseQuery.d.ts.map +1 -1
  314. package/package.json +4 -4
  315. package/src/Unstable_QraftSecureRequestFn.ts +3 -2
  316. package/src/callbacks/cancelQueries.ts +5 -4
  317. package/src/callbacks/fetchInfiniteQuery.ts +10 -5
  318. package/src/callbacks/fetchQuery.ts +8 -5
  319. package/src/callbacks/getInfiniteQueryData.ts +5 -3
  320. package/src/callbacks/getInfiniteQueryKey.ts +2 -2
  321. package/src/callbacks/getInfiniteQueryState.ts +5 -3
  322. package/src/callbacks/getMutationKey.ts +3 -3
  323. package/src/callbacks/getQueriesData.ts +4 -3
  324. package/src/callbacks/getQueryData.ts +5 -3
  325. package/src/callbacks/getQueryKey.ts +3 -3
  326. package/src/callbacks/getQueryState.ts +5 -3
  327. package/src/callbacks/index.ts +0 -2
  328. package/src/callbacks/invalidateQueries.ts +5 -4
  329. package/src/callbacks/isFetching.ts +5 -4
  330. package/src/callbacks/isMutating.ts +5 -4
  331. package/src/callbacks/operationInvokeFn.ts +23 -13
  332. package/src/callbacks/prefetchInfiniteQuery.ts +10 -5
  333. package/src/callbacks/prefetchQuery.ts +6 -5
  334. package/src/callbacks/refetchQueries.ts +5 -4
  335. package/src/callbacks/removeQueries.ts +5 -4
  336. package/src/callbacks/resetQueries.ts +5 -4
  337. package/src/callbacks/setInfiniteQueryData.ts +8 -6
  338. package/src/callbacks/setQueriesData.ts +5 -4
  339. package/src/callbacks/setQueryData.ts +7 -5
  340. package/src/callbacks/useInfiniteQuery.ts +2 -2
  341. package/src/callbacks/useIsFetching.ts +4 -5
  342. package/src/callbacks/useIsMutating.ts +7 -10
  343. package/src/callbacks/useMutation.ts +22 -29
  344. package/src/callbacks/useMutationState.ts +7 -10
  345. package/src/callbacks/useQueries.ts +16 -23
  346. package/src/callbacks/useQuery.ts +2 -2
  347. package/src/callbacks/useSuspenseInfiniteQuery.ts +2 -2
  348. package/src/callbacks/useSuspenseQueries.ts +16 -23
  349. package/src/callbacks/useSuspenseQuery.ts +2 -2
  350. package/src/index.ts +10 -2
  351. package/src/lib/callQueryClientFetchMethod.ts +39 -37
  352. package/src/lib/callQueryClientMethodWithMutationFilters.ts +5 -9
  353. package/src/lib/callQueryClientMethodWithQueryFilters.ts +5 -9
  354. package/src/lib/callQueryClientMethodWithQueryKey.ts +10 -10
  355. package/src/lib/requestFn.ts +104 -50
  356. package/src/lib/requestFnResponseResolver.ts +8 -0
  357. package/src/lib/urlSerializer.test.ts +0 -1
  358. package/src/lib/useComposeUseQueryOptions.ts +16 -24
  359. package/src/qraftAPIClient.ts +236 -31
  360. package/src/service-operation/ServiceOperation.ts +2 -2
  361. package/src/service-operation/ServiceOperationCancelQueries.ts +4 -37
  362. package/src/service-operation/ServiceOperationFetchInfiniteQuery.ts +12 -11
  363. package/src/service-operation/ServiceOperationFetchQuery.ts +40 -23
  364. package/src/service-operation/ServiceOperationGetInfiniteQueryData.ts +5 -4
  365. package/src/service-operation/ServiceOperationGetQueriesData.ts +5 -6
  366. package/src/service-operation/ServiceOperationGetQueryData.ts +5 -4
  367. package/src/service-operation/ServiceOperationGetQueryState.ts +3 -9
  368. package/src/service-operation/ServiceOperationInvalidateQueries.ts +10 -34
  369. package/src/service-operation/ServiceOperationIsFetchingQueries.ts +3 -24
  370. package/src/service-operation/ServiceOperationIsMutatingQueries.ts +2 -37
  371. package/src/service-operation/ServiceOperationMutationFn.ts +32 -75
  372. package/src/service-operation/ServiceOperationQueryFn.ts +15 -121
  373. package/src/service-operation/ServiceOperationRefetchQueries.ts +4 -58
  374. package/src/service-operation/ServiceOperationRemoveQueries.ts +3 -24
  375. package/src/service-operation/ServiceOperationResetQueries.ts +4 -37
  376. package/src/service-operation/ServiceOperationSetInfiniteQueryData.ts +1 -7
  377. package/src/service-operation/ServiceOperationSetQueriesData.ts +3 -32
  378. package/src/service-operation/ServiceOperationSetQueryData.ts +3 -31
  379. package/src/service-operation/ServiceOperationUseInfiniteQuery.ts +13 -11
  380. package/src/service-operation/ServiceOperationUseIsFetchingQueries.ts +3 -4
  381. package/src/service-operation/ServiceOperationUseIsMutating.ts +2 -3
  382. package/src/service-operation/ServiceOperationUseMutation.ts +6 -8
  383. package/src/service-operation/ServiceOperationUseMutationState.ts +17 -21
  384. package/src/service-operation/ServiceOperationUseQueries.ts +6 -10
  385. package/src/service-operation/ServiceOperationUseQuery.ts +7 -9
  386. package/src/service-operation/ServiceOperationUseSuspenseInfiniteQuery.ts +1 -3
  387. package/src/service-operation/ServiceOperationUseSuspenseQueries.ts +9 -12
  388. package/src/service-operation/ServiceOperationUseSuspenseQuery.ts +2 -3
  389. package/dist/cjs/QraftContext.cjs +0 -9
  390. package/dist/cjs/QraftContext.cjs.map +0 -1
  391. package/dist/cjs/callbacks/mutationFn.cjs +0 -12
  392. package/dist/cjs/callbacks/mutationFn.cjs.map +0 -1
  393. package/dist/cjs/callbacks/queryFn.cjs +0 -13
  394. package/dist/cjs/callbacks/queryFn.cjs.map +0 -1
  395. package/dist/cjs/lib/useQueryClient.cjs +0 -18
  396. package/dist/cjs/lib/useQueryClient.cjs.map +0 -1
  397. package/dist/esm/QraftContext.js +0 -7
  398. package/dist/esm/QraftContext.js.map +0 -1
  399. package/dist/esm/callbacks/mutationFn.js +0 -10
  400. package/dist/esm/callbacks/mutationFn.js.map +0 -1
  401. package/dist/esm/callbacks/queryFn.js +0 -11
  402. package/dist/esm/callbacks/queryFn.js.map +0 -1
  403. package/dist/esm/lib/useQueryClient.js +0 -16
  404. package/dist/esm/lib/useQueryClient.js.map +0 -1
  405. package/dist/types/QraftContext.d.ts +0 -20
  406. package/dist/types/QraftContext.d.ts.map +0 -1
  407. package/dist/types/ServiceOperation.d.ts +0 -44
  408. package/dist/types/ServiceOperation.d.ts.map +0 -1
  409. package/dist/types/callbacks/mutationFn.d.ts +0 -4
  410. package/dist/types/callbacks/mutationFn.d.ts.map +0 -1
  411. package/dist/types/callbacks/queryFn.d.ts +0 -7
  412. package/dist/types/callbacks/queryFn.d.ts.map +0 -1
  413. package/dist/types/lib/useQueryClient.d.ts +0 -9
  414. package/dist/types/lib/useQueryClient.d.ts.map +0 -1
  415. package/src/QraftContext.ts +0 -28
  416. package/src/ServiceOperation.ts +0 -66
  417. package/src/callbacks/mutationFn.ts +0 -22
  418. package/src/callbacks/queryFn.ts +0 -26
  419. package/src/lib/useQueryClient.ts +0 -25
@@ -11,12 +11,12 @@
11
11
  *
12
12
  * @throws {error: object|string, response: Response} Throws an error if the request fails. The error includes the error message and the response from the server.
13
13
  */
14
- export async function requestFn<T>(
14
+ export async function requestFn<TData, TError>(
15
15
  schema: OperationSchema,
16
16
  requestInfo: RequestFnInfo,
17
17
  options?: RequestFnOptions
18
- ): Promise<T> {
19
- return baseRequestFn(schema, requestInfo, {
18
+ ): Promise<RequestFnResponse<TData, TError>> {
19
+ return baseRequestFn<TData, TError>(schema, requestInfo, {
20
20
  urlSerializer,
21
21
  bodySerializer,
22
22
  ...options,
@@ -39,46 +39,36 @@ export async function requestFn<T>(
39
39
  *
40
40
  * @throws {error: object|string, response: Response} Throws an error if the request fails. The error includes the error message and the response from the server.
41
41
  */
42
- export async function baseRequestFn<T>(
42
+ export async function baseRequestFn<TData, TError>(
43
43
  requestSchema: OperationSchema,
44
44
  requestInfo: RequestFnInfo,
45
45
  options: WithRequired<RequestFnOptions, 'urlSerializer' | 'bodySerializer'>
46
- ): Promise<T> {
46
+ ): Promise<RequestFnResponse<TData, TError>> {
47
47
  const { parameters, headers, body, ...requestInfoRest } = requestInfo;
48
48
 
49
49
  const requestBody = options.bodySerializer(requestSchema, requestInfo);
50
50
 
51
51
  const baseFetch = options.fetch ?? fetch;
52
52
 
53
- const response = await baseFetch(
54
- options.urlSerializer(requestSchema, requestInfo),
55
- {
56
- method: requestSchema.method.toUpperCase(),
57
- body: requestBody,
58
- headers: mergeHeaders(
59
- {
60
- Accept: 'application/json',
61
- 'Content-Type': requestSchema.mediaType ?? getBodyContentType(body),
62
- },
63
- headers,
64
- parameters?.header,
65
- requestBody instanceof FormData
66
- ? // remove `Content-Type` if serialized body is FormData; browser will correctly set Content-Type & boundary expression
67
- { 'Content-Type': null }
68
- : undefined
69
- ),
70
- ...requestInfoRest,
71
- }
72
- );
73
-
74
- // clone response to allow multiple reads
75
- const clonedResponse = response.clone();
76
-
77
- if (!response.ok) {
78
- throw await getResponseBody(clonedResponse);
79
- }
80
-
81
- return (await getResponseBody(clonedResponse)) as T;
53
+ return baseFetch(options.urlSerializer(requestSchema, requestInfo), {
54
+ method: requestSchema.method.toUpperCase(),
55
+ body: requestBody,
56
+ headers: mergeHeaders(
57
+ {
58
+ Accept: 'application/json',
59
+ 'Content-Type': requestSchema.mediaType ?? getBodyContentType(body),
60
+ },
61
+ headers,
62
+ parameters?.header,
63
+ requestBody instanceof FormData
64
+ ? // remove `Content-Type` if the serialized body is FormData; the browser will correctly set Content-Type & boundary expression
65
+ { 'Content-Type': null }
66
+ : undefined
67
+ ),
68
+ ...requestInfoRest,
69
+ })
70
+ .then(processResponse as typeof processResponse<TData, TError>)
71
+ .catch(resolveResponse as typeof resolveResponse<TData, TError>);
82
72
  }
83
73
 
84
74
  /**
@@ -257,27 +247,72 @@ function getBodyContentType(body: RequestFnPayload['body']) {
257
247
  if (!(body instanceof FormData)) return 'application/json';
258
248
  }
259
249
 
260
- async function getResponseBody<T>(response: Response): Promise<T | undefined> {
250
+ async function processResponse<TData, TError>(
251
+ response: Response
252
+ ): Promise<RequestFnResponse<TData, TError>> {
261
253
  if (response.status === 204 || response.headers.get('Content-Length') === '0')
262
- return undefined;
263
-
264
- const contentType = response.headers.get('Content-Type')?.toLowerCase();
265
- const isJSON =
266
- contentType?.includes('/json') || contentType?.includes('+json');
254
+ return (
255
+ response.ok ? { data: {}, response } : { error: {}, response }
256
+ ) as RequestFnResponse<TData, TError>;
257
+
258
+ if (isJsonResponse(response)) {
259
+ // clone response before parsing every time to allow multiple reads
260
+ const jsonResponse = response.clone().json();
261
+ return resolveResponse(
262
+ response,
263
+ response.ok ? jsonResponse : Promise.reject(await jsonResponse)
264
+ );
265
+ }
267
266
 
268
- if (isJSON) {
267
+ const jsonResponse = new Promise<TData>((resolve, reject) =>
269
268
  // attempt to parse JSON for successful responses, otherwise fail
270
- if (response.ok) return response.json();
269
+ response.clone().text().then(JSON.parse).then(resolve, reject)
270
+ );
271
271
 
272
- const errorFallbackResponse = response.clone(); // clone to allow multiple reads
272
+ return resolveResponse(
273
+ response,
274
+ response.ok ? jsonResponse : Promise.reject(await jsonResponse)
275
+ );
276
+ }
277
+
278
+ function isJsonResponse(response: Response) {
279
+ const contentType = response.headers.get('Content-Type')?.toLowerCase();
280
+ return contentType?.includes('/json') || contentType?.includes('+json');
281
+ }
273
282
 
274
- return response.json().catch(() => {
275
- // falling back to .text() when necessary for error messages
276
- return errorFallbackResponse.text();
283
+ function resolveResponse<TData, TError>(
284
+ error: Error
285
+ ): Promise<RequestFnResponse<TData, TError>>;
286
+ function resolveResponse<TData, TError>(
287
+ responseToReturn: Response,
288
+ responsePromise: Promise<TData>
289
+ ): Promise<RequestFnResponse<TData, TError>>;
290
+ function resolveResponse<TData, TError>(
291
+ responseToReturn: Response | Error,
292
+ responsePromise?: Promise<TData>
293
+ ): Promise<RequestFnResponse<TData, TError>> {
294
+ if (!responsePromise)
295
+ return Promise.reject({
296
+ error: responseToReturn,
297
+ response: undefined,
298
+ data: undefined,
277
299
  });
278
- }
279
300
 
280
- return response.text() as Promise<T>;
301
+ return responsePromise
302
+ .then(
303
+ (data) =>
304
+ ({ data, response: responseToReturn }) as RequestFnResponse<
305
+ TData,
306
+ TError
307
+ >
308
+ )
309
+ .catch(
310
+ (error) =>
311
+ ({ error, response: responseToReturn }) as RequestFnResponse<
312
+ TData,
313
+ TError
314
+ >
315
+ );
281
316
  }
282
317
 
283
318
  // To have definitely typed headers without a conversion to stings
@@ -319,7 +354,7 @@ export interface RequestFnPayload {
319
354
  * Base URL to use for the request
320
355
  * @example 'https://api.example.com'
321
356
  */
322
- baseUrl: string | undefined;
357
+ baseUrl?: string;
323
358
 
324
359
  /**
325
360
  * OpenAPI parameters
@@ -365,7 +400,26 @@ export interface RequestFnOptions {
365
400
  fetch?: typeof fetch;
366
401
  }
367
402
 
368
- export type RequestFn<T> = typeof requestFn<T>;
403
+ export type RequestFn<TData, TError> = typeof requestFn<TData, TError>;
404
+
405
+ export type RequestFnResponse<TData, TError> =
406
+ | {
407
+ data?: TData;
408
+ response: Response;
409
+ error?: never;
410
+ }
411
+ | {
412
+ // server error
413
+ error?: TError | Error;
414
+ response: Response;
415
+ data?: never;
416
+ }
417
+ | {
418
+ // network error
419
+ error?: Error;
420
+ data?: never;
421
+ response?: never;
422
+ };
369
423
 
370
424
  type WithRequired<T, K extends keyof T> = T & {
371
425
  [_ in K]: {};
@@ -0,0 +1,8 @@
1
+ import { RequestFnResponse } from './requestFn.js';
2
+
3
+ export function requestFnResponseResolver<TData, TError>(
4
+ requestFnResponse: RequestFnResponse<TData, TError>
5
+ ): TData | undefined {
6
+ if ('error' in requestFnResponse) throw requestFnResponse.error;
7
+ return requestFnResponse.data;
8
+ }
@@ -45,7 +45,6 @@ describe('urlSerializer', () => {
45
45
  expect(
46
46
  urlSerializer(
47
47
  { url: '/users/{userId}/posts', method: 'get' },
48
- // @ts-expect-error - Missing baseUrl fallback
49
48
  {
50
49
  parameters: { path: { userId: '123' } },
51
50
  }
@@ -2,46 +2,41 @@
2
2
 
3
3
  import type { QueryClient } from '@tanstack/query-core';
4
4
  import type { UseQueryOptions } from '@tanstack/react-query';
5
- import type { QraftClientOptions } from '../qraftAPIClient.js';
5
+ import type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';
6
6
  import type { ServiceOperationQueryKey } from '../service-operation/ServiceOperationKey.js';
7
7
  import type { OperationSchema } from './requestFn.js';
8
- import { useContext } from 'react';
9
- import { QraftContext } from '../QraftContext.js';
10
8
  import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';
11
9
  import { composeQueryKey } from './composeQueryKey.js';
10
+ import { requestFnResponseResolver } from './requestFnResponseResolver.js';
12
11
  import { shelfMerge } from './shelfMerge.js';
13
- import { useQueryClient } from './useQueryClient.js';
14
12
 
15
13
  /**
16
14
  * Composes the options for useQuery, useInfiniteQuery, useSuspenseQuery, and useSuspenseQueries.
17
15
  * @internal
18
16
  */
19
17
  export function useComposeUseQueryOptions(
20
- qraftOptions: QraftClientOptions | undefined,
18
+ qraftOptions: CreateAPIQueryClientOptions,
21
19
  schema: OperationSchema,
22
20
  args: UseQueryOptionsArgs,
23
21
  infinite: boolean
24
22
  ): never {
25
- const [parameters, options, queryClient] = args;
26
-
27
- const contextValue = useContext(qraftOptions?.context ?? QraftContext);
23
+ const [parameters, options] = args;
28
24
 
29
25
  const queryFn =
30
26
  options?.queryFn ??
31
27
  // @ts-expect-error - Too complex to type
32
28
  function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
33
- if (!contextValue?.requestFn)
34
- throw new Error(`QraftContext.requestFn not found`);
35
-
36
- return contextValue.requestFn(schema, {
37
- // @ts-expect-error - Too complex to type
38
- parameters: infinite
39
- ? (shelfMerge(2, queryParams, pageParam) as never)
40
- : queryParams,
41
- baseUrl: contextValue.baseUrl,
42
- signal,
43
- meta,
44
- });
29
+ return qraftOptions
30
+ .requestFn(schema, {
31
+ // @ts-expect-error - Too complex to type
32
+ parameters: infinite
33
+ ? (shelfMerge(2, queryParams, pageParam) as never)
34
+ : queryParams,
35
+ baseUrl: qraftOptions.baseUrl,
36
+ signal,
37
+ meta,
38
+ })
39
+ .then(requestFnResponseResolver, requestFnResponseResolver);
45
40
  };
46
41
 
47
42
  const queryKey = Array.isArray(parameters)
@@ -50,10 +45,7 @@ export function useComposeUseQueryOptions(
50
45
  ? composeInfiniteQueryKey(schema, parameters)
51
46
  : composeQueryKey(schema, parameters);
52
47
 
53
- return [
54
- { ...options, queryFn, queryKey },
55
- useQueryClient(qraftOptions, queryClient),
56
- ] as never;
48
+ return [{ ...options, queryFn, queryKey }, qraftOptions.queryClient] as never;
57
49
  }
58
50
 
59
51
  type UseQueryOptionsArgs = [
@@ -1,21 +1,78 @@
1
- import type { Context } from 'react';
1
+ import type { QueryClient } from '@tanstack/query-core';
2
+ import type * as callbacks from './callbacks/index.js';
2
3
  import type * as operationInvokeModule from './callbacks/operationInvokeFn.js';
3
- import type { OperationSchema } from './lib/requestFn.js';
4
- import type { QraftContextValue } from './QraftContext.js';
4
+ import type {
5
+ OperationSchema,
6
+ RequestFnInfo,
7
+ RequestFnResponse,
8
+ } from './lib/requestFn.js';
9
+ import type {
10
+ ServiceOperationMutation,
11
+ ServiceOperationQuery,
12
+ } from './service-operation/index.js';
13
+ import type { ServiceOperationMutationFn } from './service-operation/ServiceOperationMutationFn.js';
14
+ import type { ServiceOperationQueryFn } from './service-operation/ServiceOperationQueryFn.js';
5
15
  import { createRecursiveProxy } from './lib/createRecursiveProxy.js';
6
16
 
7
- export interface QraftClientOptions {
8
- context?: Context<QraftContextValue>;
17
+ export interface CreateAPIBasicClientOptions {
18
+ requestFn<TData, TError>(
19
+ schema: OperationSchema,
20
+ requestInfo: RequestFnInfo
21
+ ): Promise<RequestFnResponse<TData, TError>>;
22
+ baseUrl: string;
9
23
  }
10
24
 
11
- export const qraftAPIClient = <
12
- Services extends ServicesBaseDeclaration<Services>,
13
- Callbacks extends ServicesCallbacks,
25
+ export interface CreateAPIQueryClientOptions
26
+ extends CreateAPIBasicClientOptions {
27
+ queryClient: QueryClient;
28
+ }
29
+
30
+ /**
31
+ * @deprecated use `CreateAPIClientOptions` instead
32
+ */
33
+ export type QraftClientOptions =
34
+ | CreateAPIBasicClientOptions
35
+ | CreateAPIQueryClientOptions;
36
+
37
+ export type CreateAPIClientOptions =
38
+ | CreateAPIBasicClientOptions
39
+ | CreateAPIQueryClientOptions;
40
+
41
+ export function qraftAPIClient<
42
+ Services extends ServicesDeclaration<Services>,
43
+ TCallbacks extends Callbacks,
44
+ >(
45
+ services: ServiceSchemasDeclaration<Services>,
46
+ callbacks: TCallbacks,
47
+ options: CreateAPIBasicClientOptions
48
+ ): APIBasicClientServices<Services, TCallbacks>;
49
+
50
+ export function qraftAPIClient<
51
+ Services extends ServicesDeclaration<Services>,
52
+ TCallbacks extends Required<Callbacks>,
14
53
  >(
15
- services: ServicesDeclaration<Services>,
16
- callbacks: Callbacks,
17
- options?: QraftClientOptions
18
- ): Services => {
54
+ services: ServiceSchemasDeclaration<Services>,
55
+ callbacks: TCallbacks,
56
+ options: CreateAPIQueryClientOptions
57
+ ): Services;
58
+
59
+ export function qraftAPIClient<
60
+ Services extends ServicesDeclaration<Services>,
61
+ TCallbacks extends Callbacks,
62
+ >(
63
+ services: ServiceSchemasDeclaration<Services>,
64
+ callbacks: TCallbacks,
65
+ options: CreateAPIQueryClientOptions
66
+ ): APIQueryClientServices<Services, TCallbacks>;
67
+
68
+ export function qraftAPIClient<
69
+ Services extends ServicesDeclaration<Services>,
70
+ TCallbacks extends Callbacks,
71
+ >(
72
+ services: ServiceSchemasDeclaration<Services>,
73
+ callbacks: TCallbacks,
74
+ options: CreateAPIClientOptions
75
+ ): APIQueryClientServices<Services, TCallbacks> | Services {
19
76
  return createRecursiveProxy(
20
77
  function getCallback(getPath, key) {
21
78
  if (getPath.length !== 2 || key !== 'schema') return; // todo::maybe return callback?
@@ -28,23 +85,46 @@ export const qraftAPIClient = <
28
85
  function applyCallback(applyPath, args) {
29
86
  const { path, callbackName } = extractCallbackDetails(applyPath);
30
87
 
31
- if (!(callbackName in callbacks))
32
- throw new Error(`Function ${callbackName} is not supported`);
88
+ assertValidCallbackName(callbackName, callbacks);
33
89
 
34
90
  const serviceOperation = getByPath(services, path);
35
91
 
36
92
  if (!isServiceOperation(serviceOperation))
37
93
  throw new Error(`Service operation not found: ${path.join('.')}`);
38
94
 
39
- return callbacks[callbackName as keyof Callbacks](
40
- options,
41
- serviceOperation.schema,
42
- args
43
- );
95
+ if (
96
+ callbackName !== 'operationInvokeFn' &&
97
+ callbackName !== 'getQueryKey' &&
98
+ callbackName !== 'getMutationKey'
99
+ )
100
+ if (!('queryClient' in options && options.queryClient))
101
+ throw new Error(
102
+ `'qraft.<service>.<operation>.${String(callbackName)}()' requires 'queryClient' in options.`
103
+ );
104
+
105
+ // @ts-expect-error - Too complex union type
106
+ return callbacks[callbackName](options, serviceOperation.schema, args);
44
107
  },
45
108
  []
46
109
  ) as never;
47
- };
110
+ }
111
+
112
+ function assertValidCallbackName<
113
+ TCallbacks extends Record<string, (...rest: any[]) => unknown>,
114
+ >(
115
+ callbackName: string | number | symbol,
116
+ callbacks: TCallbacks
117
+ ): asserts callbackName is keyof TCallbacks {
118
+ if (!(callbackName in callbacks)) {
119
+ if ((callbackName as OperationInvokeFnName) === 'operationInvokeFn')
120
+ throw new Error(
121
+ `Callback 'operationInvokeFn' is required for executing 'qraft.<service>.<operation>()', but it is not provided in the 'callbacks' object.`
122
+ );
123
+ throw new Error(
124
+ `Callback for 'qraft.<service>.<operation>.${String(callbackName)}()' is not provided in the 'callbacks' object.`
125
+ );
126
+ }
127
+ }
48
128
 
49
129
  /**
50
130
  * Extracts Callback details from the applyPath
@@ -55,10 +135,7 @@ function extractCallbackDetails(applyPath: string[]) {
55
135
  if (applyPath.length === 2) {
56
136
  return {
57
137
  path: applyPath,
58
- callbackName: 'operationInvokeFn' satisfies Extract<
59
- keyof typeof operationInvokeModule,
60
- 'operationInvokeFn'
61
- >,
138
+ callbackName: 'operationInvokeFn' satisfies OperationInvokeFnName,
62
139
  };
63
140
  } else {
64
141
  // <service>.<operation>.<method>()
@@ -83,18 +160,146 @@ function getByPath(obj: Record<string, unknown>, path: string[]) {
83
160
  }, obj);
84
161
  }
85
162
 
86
- type ServicesBaseDeclaration<Services> = {
163
+ type Callbacks = Partial<typeof callbacks>;
164
+
165
+ type ServicesDeclaration<Services> = {
87
166
  [service in keyof Services]: {
88
- [method in keyof Services[service]]: { schema: OperationSchema };
167
+ [method in keyof Services[service]]: {
168
+ schema: OperationSchema;
169
+ types: {
170
+ parameters?: any;
171
+ data?: any;
172
+ error?: any;
173
+ body?: any;
174
+ };
175
+ };
89
176
  };
90
177
  };
91
178
 
92
- type ServicesDeclaration<Services extends ServicesBaseDeclaration<Services>> = {
93
- [service in keyof Services]: {
94
- [method in keyof Services[service]]: {
95
- schema: Services[service][method]['schema'];
179
+ type ServiceSchemasDeclaration<Services extends ServicesDeclaration<Services>> =
180
+ {
181
+ [service in keyof Services]: {
182
+ [method in keyof Services[service]]: {
183
+ schema: Services[service][method]['schema'];
184
+ };
96
185
  };
97
186
  };
187
+
188
+ type QueryOperationCallbacks = Extract<
189
+ keyof Callbacks,
190
+ | 'cancelQueries'
191
+ | 'fetchInfiniteQuery'
192
+ | 'fetchQuery'
193
+ | 'getInfiniteQueryData'
194
+ | 'getInfiniteQueryKey'
195
+ | 'getInfiniteQueryState'
196
+ | 'getQueriesData'
197
+ | 'getQueryData'
198
+ | 'getQueryKey'
199
+ | 'getQueryState'
200
+ | 'invalidateQueries'
201
+ | 'isFetching'
202
+ | 'prefetchInfiniteQuery'
203
+ | 'prefetchQuery'
204
+ | 'refetchQueries'
205
+ | 'removeQueries'
206
+ | 'resetQueries'
207
+ | 'setInfiniteQueryData'
208
+ | 'setQueriesData'
209
+ | 'setQueryData'
210
+ | 'useInfiniteQuery'
211
+ | 'useIsFetching'
212
+ | 'useQueries'
213
+ | 'useQuery'
214
+ | 'useSuspenseInfiniteQuery'
215
+ | 'useSuspenseQueries'
216
+ | 'useSuspenseQuery'
217
+ >;
218
+
219
+ type MutationOperationCallbacks = Extract<
220
+ keyof Callbacks,
221
+ | 'getMutationKey'
222
+ | 'isMutating'
223
+ | 'useIsMutating'
224
+ | 'useMutation'
225
+ | 'useMutationState'
226
+ >;
227
+
228
+ export type APIQueryClientServices<
229
+ TServices extends ServicesDeclaration<TServices>,
230
+ TCallbacks extends Callbacks,
231
+ > = ServicesFilteredByCallbacks<
232
+ TServices,
233
+ TCallbacks,
234
+ QueryOperationCallbacks,
235
+ MutationOperationCallbacks
236
+ >;
237
+
238
+ export type APIBasicClientServices<
239
+ TServices extends ServicesDeclaration<TServices>,
240
+ TCallbacks extends Callbacks,
241
+ > = ServicesFilteredByCallbacks<
242
+ TServices,
243
+ TCallbacks,
244
+ Extract<QueryOperationCallbacks, 'getQueryKey'>,
245
+ Extract<MutationOperationCallbacks, 'getMutationKey'>
246
+ >;
247
+
248
+ type ServicesFilteredByCallbacks<
249
+ TServices extends ServicesDeclaration<TServices>,
250
+ TCallbacks extends Callbacks,
251
+ TQueryOperationCallbacks extends QueryOperationCallbacks,
252
+ TMutationOperationCallbacks extends MutationOperationCallbacks,
253
+ > = {
254
+ [serviceName in keyof TServices]: {
255
+ [method in keyof TServices[serviceName]]: TServices[serviceName][method]['schema']['method'] extends
256
+ | 'get'
257
+ | 'head'
258
+ | 'options'
259
+ ? Pick<
260
+ ServiceOperationQuery<
261
+ TServices[serviceName][method]['schema'],
262
+ TServices[serviceName][method]['types']['data'],
263
+ TServices[serviceName][method]['types']['parameters'],
264
+ TServices[serviceName][method]['types']['error']
265
+ >,
266
+ | Extract<keyof TCallbacks, TQueryOperationCallbacks>
267
+ | 'types'
268
+ | 'schema'
269
+ > &
270
+ (OperationInvokeFnName extends keyof TCallbacks
271
+ ? ServiceOperationQueryFn<
272
+ TServices[serviceName][method]['schema'],
273
+ TServices[serviceName][method]['types']['data'],
274
+ TServices[serviceName][method]['types']['parameters'],
275
+ TServices[serviceName][method]['types']['error']
276
+ >
277
+ : {})
278
+ : Pick<
279
+ ServiceOperationMutation<
280
+ TServices[serviceName][method]['schema'],
281
+ TServices[serviceName][method]['types']['body'],
282
+ TServices[serviceName][method]['types']['data'],
283
+ TServices[serviceName][method]['types']['parameters'],
284
+ TServices[serviceName][method]['types']['error']
285
+ >,
286
+ | Extract<keyof TCallbacks, TMutationOperationCallbacks>
287
+ | 'types'
288
+ | 'schema'
289
+ > &
290
+ (OperationInvokeFnName extends keyof TCallbacks
291
+ ? ServiceOperationMutationFn<
292
+ TServices[serviceName][method]['schema'],
293
+ TServices[serviceName][method]['types']['body'],
294
+ TServices[serviceName][method]['types']['data'],
295
+ TServices[serviceName][method]['types']['parameters'],
296
+ TServices[serviceName][method]['types']['error']
297
+ >
298
+ : {});
299
+ };
98
300
  };
99
301
 
100
- type ServicesCallbacks = Record<string, (...rest: any[]) => unknown>;
302
+ type OperationInvokeFnName = Extract<
303
+ keyof typeof operationInvokeModule,
304
+ 'operationInvokeFn'
305
+ >;
@@ -40,7 +40,7 @@ export interface ServiceOperationQuery<
40
40
  ServiceOperationUseSuspenseQuery<TSchema, TData, TParams, TError>,
41
41
  ServiceOperationUseSuspenseInfiniteQuery<TSchema, TData, TParams, TError>,
42
42
  ServiceOperationUseIsFetchingQueries<TSchema, TData, TParams, TError>,
43
- ServiceOperationQueryFn<TSchema, TData, TParams>,
43
+ ServiceOperationQueryFn<TSchema, TData, TParams, TError>,
44
44
  ServiceOperationFetchQuery<TSchema, TData, TParams, TError>,
45
45
  ServiceOperationFetchInfiniteQuery<TSchema, TData, TParams, TError>,
46
46
  ServiceOperationGetQueryData<TSchema, TData, TParams>,
@@ -74,7 +74,7 @@ export interface ServiceOperationMutation<
74
74
  ServiceOperationUseIsMutating<TSchema, TBody, TData, TParams, TError>,
75
75
  ServiceOperationUseMutationState<TSchema, TBody, TData, TParams, TError>,
76
76
  ServiceOperationIsMutatingQueries<TSchema, TBody, TData, TParams, TError>,
77
- ServiceOperationMutationFn<TSchema, TBody, TData, TParams> {
77
+ ServiceOperationMutationFn<TSchema, TBody, TData, TParams, TError> {
78
78
  schema: TSchema;
79
79
  types: {
80
80
  parameters: TParams;
@@ -1,8 +1,4 @@
1
- import type {
2
- CancelOptions,
3
- DefaultError,
4
- QueryClient,
5
- } from '@tanstack/query-core';
1
+ import type { CancelOptions, DefaultError } from '@tanstack/query-core';
6
2
  import type {
7
3
  QueryFiltersByParameters,
8
4
  QueryFiltersByQueryKey,
@@ -14,39 +10,10 @@ export interface ServiceOperationCancelQueries<
14
10
  TParams = {},
15
11
  TError = DefaultError,
16
12
  > {
17
- cancelQueries<TInfinite extends boolean>(
18
- filters:
13
+ cancelQueries<TInfinite extends boolean = false>(
14
+ filters?:
19
15
  | QueryFiltersByParameters<TSchema, TData, TInfinite, TParams, TError>
20
16
  | QueryFiltersByQueryKey<TSchema, TData, TInfinite, TParams, TError>,
21
- options: CancelOptions,
22
- queryClient: QueryClient
23
- ): Promise<void>;
24
-
25
- cancelQueries<TInfinite extends boolean>(
26
- filters:
27
- | QueryFiltersByParameters<TSchema, TData, TInfinite, TParams, TError>
28
- | QueryFiltersByQueryKey<TSchema, TData, TInfinite, TParams, TError>,
29
- queryClient: QueryClient
30
- ): Promise<void>;
31
-
32
- cancelQueries(queryClient: QueryClient): Promise<void>;
33
- }
34
-
35
- /**
36
- * @internal
37
- */
38
- export interface ServiceOperationCancelQueriesCallback<
39
- TSchema extends { url: string; method: string },
40
- TData,
41
- TParams = {},
42
- TError = DefaultError,
43
- > extends ServiceOperationCancelQueries<TSchema, TData, TParams, TError> {
44
- cancelQueries<TInfinite extends boolean>(
45
- filters:
46
- | QueryFiltersByParameters<TSchema, TData, TInfinite, TParams, TError>
47
- | QueryFiltersByQueryKey<TSchema, TData, TInfinite, TParams, TError>
48
- | QueryClient,
49
- options?: CancelOptions | QueryClient,
50
- queryClient?: QueryClient
17
+ options?: CancelOptions
51
18
  ): Promise<void>;
52
19
  }