@gravity-ui/data-source 0.6.1 → 0.8.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 (278) hide show
  1. package/README.md +752 -15
  2. package/build/cjs/core/index.d.ts +3 -1
  3. package/build/cjs/core/index.js +7 -0
  4. package/build/cjs/core/index.js.map +1 -1
  5. package/build/cjs/core/types/DataManager.d.ts +5 -0
  6. package/build/cjs/core/types/DataManager.js.map +1 -1
  7. package/build/cjs/core/types/DataSource.d.ts +15 -19
  8. package/build/cjs/core/types/DataSource.js.map +1 -1
  9. package/build/cjs/core/types/Normalizer.d.ts +29 -0
  10. package/build/cjs/core/types/Normalizer.js +6 -0
  11. package/build/cjs/core/types/Normalizer.js.map +1 -0
  12. package/build/cjs/core/utils/__tests__/composeFullKey.test.js +34 -0
  13. package/build/cjs/core/utils/__tests__/composeFullKey.test.js.map +1 -0
  14. package/build/cjs/core/utils/__tests__/composeKey.test.js +32 -0
  15. package/build/cjs/core/utils/__tests__/composeKey.test.js.map +1 -0
  16. package/build/cjs/core/utils/__tests__/getError.test.js +31 -0
  17. package/build/cjs/core/utils/__tests__/getError.test.js.map +1 -0
  18. package/build/cjs/core/utils/__tests__/getStatus.test.js +49 -0
  19. package/build/cjs/core/utils/__tests__/getStatus.test.js.map +1 -0
  20. package/build/cjs/core/utils/__tests__/hasTag.test.js +31 -0
  21. package/build/cjs/core/utils/__tests__/hasTag.test.js.map +1 -0
  22. package/build/cjs/core/utils/__tests__/mergeStatuses.test.js +25 -0
  23. package/build/cjs/core/utils/__tests__/mergeStatuses.test.js.map +1 -0
  24. package/build/cjs/core/utils/__tests__/skipContext.test.js +70 -0
  25. package/build/cjs/core/utils/__tests__/skipContext.test.js.map +1 -0
  26. package/build/cjs/core/utils/__tests__/withCancellation.test.js +106 -0
  27. package/build/cjs/core/utils/__tests__/withCancellation.test.js.map +1 -0
  28. package/build/cjs/core/utils/__tests__/withCatch.test.js +208 -0
  29. package/build/cjs/core/utils/__tests__/withCatch.test.js.map +1 -0
  30. package/build/cjs/core/utils/withCatch.d.ts +26 -0
  31. package/build/cjs/core/utils/withCatch.js +37 -0
  32. package/build/cjs/core/utils/withCatch.js.map +1 -0
  33. package/build/cjs/react/DataManagerProvider.d.ts +7 -0
  34. package/build/cjs/react/DataManagerProvider.js +19 -0
  35. package/build/cjs/react/DataManagerProvider.js.map +1 -0
  36. package/build/cjs/react/__tests__/DataManagerContext.test.js +47 -0
  37. package/build/cjs/react/__tests__/DataManagerContext.test.js.map +1 -0
  38. package/build/cjs/react/__tests__/withDataManager.test.js +61 -0
  39. package/build/cjs/react/__tests__/withDataManager.test.js.map +1 -0
  40. package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +187 -0
  41. package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +1 -0
  42. package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js +119 -0
  43. package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js.map +1 -0
  44. package/build/cjs/react/index.d.ts +2 -0
  45. package/build/cjs/react/index.js +8 -0
  46. package/build/cjs/react/index.js.map +1 -1
  47. package/build/cjs/react/withDataManager.d.ts +1 -1
  48. package/build/cjs/react/withDataManager.js +3 -3
  49. package/build/cjs/react/withDataManager.js.map +1 -1
  50. package/build/cjs/react-query/ClientDataManager.d.ts +11 -2
  51. package/build/cjs/react-query/ClientDataManager.js +76 -9
  52. package/build/cjs/react-query/ClientDataManager.js.map +1 -1
  53. package/build/cjs/react-query/DataSourceProvider.d.ts +7 -0
  54. package/build/cjs/react-query/DataSourceProvider.js +35 -0
  55. package/build/cjs/react-query/DataSourceProvider.js.map +1 -0
  56. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js +177 -0
  57. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  58. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js +100 -0
  59. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  60. package/build/cjs/react-query/__tests__/subscriptions.test.js +1180 -0
  61. package/build/cjs/react-query/__tests__/subscriptions.test.js.map +1 -0
  62. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +514 -0
  63. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  64. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js +229 -0
  65. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  66. package/build/cjs/react-query/constants.d.ts +2 -0
  67. package/build/cjs/react-query/constants.js +9 -0
  68. package/build/cjs/react-query/constants.js.map +1 -0
  69. package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js +55 -0
  70. package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js.map +1 -0
  71. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js +195 -0
  72. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  73. package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js +97 -0
  74. package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js.map +1 -0
  75. package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js +77 -0
  76. package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js.map +1 -0
  77. package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js +79 -0
  78. package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js.map +1 -0
  79. package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js +117 -0
  80. package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js.map +1 -0
  81. package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js +156 -0
  82. package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js.map +1 -0
  83. package/build/cjs/react-query/hooks/useRefetchInterval.d.ts +1 -1
  84. package/build/cjs/react-query/impl/infinite/factory.d.ts +1 -1
  85. package/build/cjs/react-query/impl/infinite/factory.js.map +1 -1
  86. package/build/cjs/react-query/impl/infinite/hooks.js +4 -1
  87. package/build/cjs/react-query/impl/infinite/hooks.js.map +1 -1
  88. package/build/cjs/react-query/impl/infinite/types.d.ts +9 -9
  89. package/build/cjs/react-query/impl/infinite/types.js.map +1 -1
  90. package/build/cjs/react-query/impl/infinite/utils.js +11 -22
  91. package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
  92. package/build/cjs/react-query/impl/plain/factory.d.ts +1 -1
  93. package/build/cjs/react-query/impl/plain/factory.js.map +1 -1
  94. package/build/cjs/react-query/impl/plain/hooks.js +4 -1
  95. package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
  96. package/build/cjs/react-query/impl/plain/types.d.ts +6 -6
  97. package/build/cjs/react-query/impl/plain/types.js.map +1 -1
  98. package/build/cjs/react-query/impl/plain/utils.js +12 -23
  99. package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
  100. package/build/cjs/react-query/index.d.ts +2 -0
  101. package/build/cjs/react-query/index.js +7 -0
  102. package/build/cjs/react-query/index.js.map +1 -1
  103. package/build/cjs/react-query/types/normalizer.d.ts +21 -0
  104. package/build/cjs/react-query/types/normalizer.js +6 -0
  105. package/build/cjs/react-query/types/normalizer.js.map +1 -0
  106. package/build/cjs/react-query/types/options.d.ts +12 -0
  107. package/build/cjs/react-query/types/options.js.map +1 -1
  108. package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js +27 -0
  109. package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js.map +1 -0
  110. package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js +76 -0
  111. package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +1 -0
  112. package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js +30 -0
  113. package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js.map +1 -0
  114. package/build/cjs/react-query/utils/__tests__/notReachable.test.js +35 -0
  115. package/build/cjs/react-query/utils/__tests__/notReachable.test.js.map +1 -0
  116. package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js +27 -0
  117. package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js.map +1 -0
  118. package/build/cjs/react-query/utils/formatNullableValue.d.ts +2 -0
  119. package/build/cjs/react-query/utils/formatNullableValue.js +17 -0
  120. package/build/cjs/react-query/utils/formatNullableValue.js.map +1 -0
  121. package/build/cjs/react-query/utils/getProgressiveRefetch.d.ts +2 -2
  122. package/build/cjs/react-query/utils/normalize.d.ts +22 -0
  123. package/build/cjs/react-query/utils/normalize.js +150 -0
  124. package/build/cjs/react-query/utils/normalize.js.map +1 -0
  125. package/build/cjs/react-query/utils/parseNullableValue.d.ts +2 -0
  126. package/build/cjs/react-query/utils/parseNullableValue.js +17 -0
  127. package/build/cjs/react-query/utils/parseNullableValue.js.map +1 -0
  128. package/build/cjs/react-query/utils/warn.d.ts +1 -0
  129. package/build/cjs/react-query/utils/warn.js +15 -0
  130. package/build/cjs/react-query/utils/warn.js.map +1 -0
  131. package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  132. package/build/cjs/react-query/utils/warnDisabledRefetch.js +11 -0
  133. package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
  134. package/build/cjs/setupTests.d.ts +1 -0
  135. package/build/cjs/setupTests.js +4 -0
  136. package/build/cjs/setupTests.js.map +1 -0
  137. package/build/esm/core/index.d.ts +3 -1
  138. package/build/esm/core/index.js +1 -0
  139. package/build/esm/core/index.js.map +1 -1
  140. package/build/esm/core/types/DataManager.d.ts +5 -0
  141. package/build/esm/core/types/DataManager.js.map +1 -1
  142. package/build/esm/core/types/DataSource.d.ts +15 -19
  143. package/build/esm/core/types/DataSource.js.map +1 -1
  144. package/build/esm/core/types/Normalizer.d.ts +29 -0
  145. package/build/esm/core/types/Normalizer.js +2 -0
  146. package/build/esm/core/types/Normalizer.js.map +1 -0
  147. package/build/esm/core/utils/__tests__/composeFullKey.test.js +32 -0
  148. package/build/esm/core/utils/__tests__/composeFullKey.test.js.map +1 -0
  149. package/build/esm/core/utils/__tests__/composeKey.test.js +30 -0
  150. package/build/esm/core/utils/__tests__/composeKey.test.js.map +1 -0
  151. package/build/esm/core/utils/__tests__/getError.test.js +29 -0
  152. package/build/esm/core/utils/__tests__/getError.test.js.map +1 -0
  153. package/build/esm/core/utils/__tests__/getStatus.test.js +47 -0
  154. package/build/esm/core/utils/__tests__/getStatus.test.js.map +1 -0
  155. package/build/esm/core/utils/__tests__/hasTag.test.js +29 -0
  156. package/build/esm/core/utils/__tests__/hasTag.test.js.map +1 -0
  157. package/build/esm/core/utils/__tests__/mergeStatuses.test.js +23 -0
  158. package/build/esm/core/utils/__tests__/mergeStatuses.test.js.map +1 -0
  159. package/build/esm/core/utils/__tests__/skipContext.test.js +67 -0
  160. package/build/esm/core/utils/__tests__/skipContext.test.js.map +1 -0
  161. package/build/esm/core/utils/__tests__/withCancellation.test.js +104 -0
  162. package/build/esm/core/utils/__tests__/withCancellation.test.js.map +1 -0
  163. package/build/esm/core/utils/__tests__/withCatch.test.js +205 -0
  164. package/build/esm/core/utils/__tests__/withCatch.test.js.map +1 -0
  165. package/build/esm/core/utils/withCatch.d.ts +26 -0
  166. package/build/esm/core/utils/withCatch.js +31 -0
  167. package/build/esm/core/utils/withCatch.js.map +1 -0
  168. package/build/esm/react/DataManagerProvider.d.ts +7 -0
  169. package/build/esm/react/DataManagerProvider.js +12 -0
  170. package/build/esm/react/DataManagerProvider.js.map +1 -0
  171. package/build/esm/react/__tests__/DataManagerContext.test.js +44 -0
  172. package/build/esm/react/__tests__/DataManagerContext.test.js.map +1 -0
  173. package/build/esm/react/__tests__/withDataManager.test.js +58 -0
  174. package/build/esm/react/__tests__/withDataManager.test.js.map +1 -0
  175. package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +184 -0
  176. package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +1 -0
  177. package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js +116 -0
  178. package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js.map +1 -0
  179. package/build/esm/react/index.d.ts +2 -0
  180. package/build/esm/react/index.js +1 -0
  181. package/build/esm/react/index.js.map +1 -1
  182. package/build/esm/react/withDataManager.d.ts +1 -1
  183. package/build/esm/react/withDataManager.js +3 -3
  184. package/build/esm/react/withDataManager.js.map +1 -1
  185. package/build/esm/react-query/ClientDataManager.d.ts +11 -2
  186. package/build/esm/react-query/ClientDataManager.js +70 -3
  187. package/build/esm/react-query/ClientDataManager.js.map +1 -1
  188. package/build/esm/react-query/DataSourceProvider.d.ts +7 -0
  189. package/build/esm/react-query/DataSourceProvider.js +28 -0
  190. package/build/esm/react-query/DataSourceProvider.js.map +1 -0
  191. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +174 -0
  192. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  193. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +98 -0
  194. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  195. package/build/esm/react-query/__tests__/subscriptions.test.js +1176 -0
  196. package/build/esm/react-query/__tests__/subscriptions.test.js.map +1 -0
  197. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +511 -0
  198. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  199. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +227 -0
  200. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  201. package/build/esm/react-query/constants.d.ts +2 -0
  202. package/build/esm/react-query/constants.js +3 -0
  203. package/build/esm/react-query/constants.js.map +1 -0
  204. package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js +52 -0
  205. package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js.map +1 -0
  206. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +192 -0
  207. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  208. package/build/esm/react-query/hooks/__tests__/useQueryData.test.js +95 -0
  209. package/build/esm/react-query/hooks/__tests__/useQueryData.test.js.map +1 -0
  210. package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js +74 -0
  211. package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js.map +1 -0
  212. package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js +77 -0
  213. package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js.map +1 -0
  214. package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js +115 -0
  215. package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js.map +1 -0
  216. package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js +154 -0
  217. package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js.map +1 -0
  218. package/build/esm/react-query/hooks/useRefetchInterval.d.ts +1 -1
  219. package/build/esm/react-query/impl/infinite/factory.d.ts +1 -1
  220. package/build/esm/react-query/impl/infinite/factory.js.map +1 -1
  221. package/build/esm/react-query/impl/infinite/hooks.js +5 -2
  222. package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
  223. package/build/esm/react-query/impl/infinite/types.d.ts +9 -9
  224. package/build/esm/react-query/impl/infinite/types.js.map +1 -1
  225. package/build/esm/react-query/impl/infinite/utils.js +9 -20
  226. package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
  227. package/build/esm/react-query/impl/plain/factory.d.ts +1 -1
  228. package/build/esm/react-query/impl/plain/factory.js.map +1 -1
  229. package/build/esm/react-query/impl/plain/hooks.js +5 -2
  230. package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
  231. package/build/esm/react-query/impl/plain/types.d.ts +6 -6
  232. package/build/esm/react-query/impl/plain/types.js.map +1 -1
  233. package/build/esm/react-query/impl/plain/utils.js +10 -21
  234. package/build/esm/react-query/impl/plain/utils.js.map +1 -1
  235. package/build/esm/react-query/index.d.ts +2 -0
  236. package/build/esm/react-query/index.js +1 -0
  237. package/build/esm/react-query/index.js.map +1 -1
  238. package/build/esm/react-query/types/normalizer.d.ts +21 -0
  239. package/build/esm/react-query/types/normalizer.js +2 -0
  240. package/build/esm/react-query/types/normalizer.js.map +1 -0
  241. package/build/esm/react-query/types/options.d.ts +12 -0
  242. package/build/esm/react-query/types/options.js.map +1 -1
  243. package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js +25 -0
  244. package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js.map +1 -0
  245. package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js +74 -0
  246. package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +1 -0
  247. package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js +28 -0
  248. package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js.map +1 -0
  249. package/build/esm/react-query/utils/__tests__/notReachable.test.js +33 -0
  250. package/build/esm/react-query/utils/__tests__/notReachable.test.js.map +1 -0
  251. package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js +25 -0
  252. package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js.map +1 -0
  253. package/build/esm/react-query/utils/formatNullableValue.d.ts +2 -0
  254. package/build/esm/react-query/utils/formatNullableValue.js +11 -0
  255. package/build/esm/react-query/utils/formatNullableValue.js.map +1 -0
  256. package/build/esm/react-query/utils/getProgressiveRefetch.d.ts +2 -2
  257. package/build/esm/react-query/utils/normalize.d.ts +22 -0
  258. package/build/esm/react-query/utils/normalize.js +143 -0
  259. package/build/esm/react-query/utils/normalize.js.map +1 -0
  260. package/build/esm/react-query/utils/parseNullableValue.d.ts +2 -0
  261. package/build/esm/react-query/utils/parseNullableValue.js +11 -0
  262. package/build/esm/react-query/utils/parseNullableValue.js.map +1 -0
  263. package/build/esm/react-query/utils/warn.d.ts +1 -0
  264. package/build/esm/react-query/utils/warn.js +9 -0
  265. package/build/esm/react-query/utils/warn.js.map +1 -0
  266. package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  267. package/build/esm/react-query/utils/warnDisabledRefetch.js +5 -0
  268. package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
  269. package/build/esm/setupTests.d.ts +1 -0
  270. package/build/esm/setupTests.js +2 -0
  271. package/build/esm/setupTests.js.map +1 -0
  272. package/package.json +18 -13
  273. package/build/cjs/react-query/impl/utils.d.ts +0 -4
  274. package/build/cjs/react-query/impl/utils.js +0 -27
  275. package/build/cjs/react-query/impl/utils.js.map +0 -1
  276. package/build/esm/react-query/impl/utils.d.ts +0 -4
  277. package/build/esm/react-query/impl/utils.js +0 -21
  278. package/build/esm/react-query/impl/utils.js.map +0 -1
@@ -1,32 +1,28 @@
1
1
  import type { idle } from '../constants';
2
2
  export type DataSourceKey = ReadonlyArray<unknown>;
3
3
  export type DataSourceTag = string;
4
+ declare const errorHintSymbol: unique symbol;
4
5
  declare const stateHintSymbol: unique symbol;
5
- export interface DataSource<TContext, TParams, TRequest, TResponse, TData, TError, TErrorResponse, TOptions, TState, TFetchContext> {
6
+ export interface DataSource<TContext, TParams, TRequest, TResponse, TData, TError, TOptions, TState, TFetchContext> {
6
7
  readonly name: string;
7
8
  fetch: (context: TContext, fetchContext: TFetchContext, request: TRequest) => Promise<TResponse> | TResponse;
8
9
  tags?: (params: ActualParams<NoInfer<TParams>, NoInfer<TRequest>>) => DataSourceTag[];
9
10
  transformParams?: (params: TParams) => NoInfer<TRequest>;
10
- transformResponse?: (response: ActualResponse<NoInfer<TResponse>, NoInfer<TErrorResponse>>) => TData;
11
- /**
12
- * When set, the `fetch` errors will be transformed into data without changing the state to error.
13
- */
14
- transformError?: (error: TError) => TErrorResponse;
11
+ transformResponse?: (response: TResponse) => TData;
15
12
  options?: Partial<TOptions>;
16
13
  [stateHintSymbol]?: TState;
14
+ [errorHintSymbol]?: TError;
17
15
  }
18
- export type AnyDataSource = DataSource<any, any, any, any, any, any, any, any, any, any>;
19
- export type DataSourceContext<TDataSource> = TDataSource extends DataSource<infer TContext, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer _TErrorResponse, infer _TOptions, infer _TState, infer _TFetchContext> ? TContext : never;
20
- export type DataSourceParams<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer TParams, infer TRequest, infer _TResponse, infer _TData, infer _TError, infer _TErrorResponse, infer _TOptions, infer _TState, infer _TFetchContext> ? ActualParams<TParams, TRequest> : never;
21
- export type DataSourceRequest<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer TRequest, infer _TResponse, infer _TData, infer _TError, infer _TErrorResponse, infer _TOptions, infer _TState, infer _TFetchContext> ? TRequest : never;
22
- export type DataSourceResponse<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer TResponse, infer _TData, infer _TError, infer TErrorResponse, infer _TOptions, infer _TState, infer _TFetchContext> ? ActualResponse<TResponse, TErrorResponse> : never;
23
- export type DataSourceData<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer TResponse, infer TData, infer _TError, infer TErrorResponse, infer _TOptions, infer _TState, infer _TFetchContext> ? ActualData<TResponse, TData, TErrorResponse> : never;
24
- export type DataSourceError<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer TError, infer _TErrorResponse, infer _TOptions, infer _TState, infer _TFetchContext> ? TError : never;
25
- export type DataSourceErrorResponse<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer TErrorResponse, infer _TOptions, infer _TState, infer _TFetchContext> ? TErrorResponse : never;
26
- export type DataSourceOptions<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer _TErrorResponse, infer TOptions, infer _TState, infer _TFetchContext> ? TOptions : never;
27
- export type DataSourceState<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer _TErrorResponse, infer _TOptions, infer TState, infer _TFetchContext> ? TState : never;
28
- export type DataSourceFetchContext<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer _TErrorResponse, infer _TOptions, infer _TState, infer TFetchContext> ? TFetchContext : never;
16
+ export type AnyDataSource = DataSource<any, any, any, any, any, any, any, any, any>;
17
+ export type DataSourceContext<TDataSource> = TDataSource extends DataSource<infer TContext, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer _TOptions, infer _TState, infer _TFetchContext> ? TContext : never;
18
+ export type DataSourceParams<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer TParams, infer TRequest, infer _TResponse, infer _TData, infer _TError, infer _TOptions, infer _TState, infer _TFetchContext> ? ActualParams<TParams, TRequest> : never;
19
+ export type DataSourceRequest<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer TRequest, infer _TResponse, infer _TData, infer _TError, infer _TOptions, infer _TState, infer _TFetchContext> ? TRequest : never;
20
+ export type DataSourceResponse<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer TResponse, infer _TData, infer _TError, infer _TOptions, infer _TState, infer _TFetchContext> ? TResponse : never;
21
+ export type DataSourceData<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer TResponse, infer TData, infer _TError, infer _TOptions, infer _TState, infer _TFetchContext> ? ActualData<TData, TResponse> : never;
22
+ export type DataSourceError<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer TError, infer _TOptions, infer _TState, infer _TFetchContext> ? TError : never;
23
+ export type DataSourceOptions<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer TOptions, infer _TState, infer _TFetchContext> ? TOptions : never;
24
+ export type DataSourceState<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer _TOptions, infer TState, infer _TFetchContext> ? TState : never;
25
+ export type DataSourceFetchContext<TDataSource> = TDataSource extends DataSource<infer _TContenxt, infer _TParams, infer _TRequest, infer _TResponse, infer _TData, infer _TError, infer _TOptions, infer _TState, infer TFetchContext> ? TFetchContext : never;
29
26
  export type ActualParams<TParams, TRequest> = (unknown extends TParams ? TRequest : TParams) | typeof idle;
30
- export type ActualResponse<TResponse, TErrorResponse> = unknown extends TErrorResponse ? TResponse : TResponse | TErrorResponse;
31
- export type ActualData<TResponse, TData, TErrorResponse> = unknown extends TData ? ActualResponse<TResponse, TErrorResponse> : TData;
27
+ export type ActualData<TData, TResponse> = unknown extends TData ? TResponse : TData;
32
28
  export {};
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["DataSource.ts"],"sourcesContent":["import type {idle} from '../constants';\n\nexport type DataSourceKey = ReadonlyArray<unknown>;\nexport type DataSourceTag = string;\n\ndeclare const stateHintSymbol: unique symbol;\n\nexport interface DataSource<\n TContext,\n TParams,\n TRequest,\n TResponse,\n TData,\n TError,\n TErrorResponse,\n TOptions,\n TState,\n TFetchContext,\n> {\n readonly name: string;\n\n fetch: (\n context: TContext,\n fetchContext: TFetchContext,\n request: TRequest,\n ) => Promise<TResponse> | TResponse;\n tags?: (params: ActualParams<NoInfer<TParams>, NoInfer<TRequest>>) => DataSourceTag[];\n\n transformParams?: (params: TParams) => NoInfer<TRequest>;\n transformResponse?: (\n response: ActualResponse<NoInfer<TResponse>, NoInfer<TErrorResponse>>,\n ) => TData;\n\n /**\n * When set, the `fetch` errors will be transformed into data without changing the state to error.\n */\n transformError?: (error: TError) => TErrorResponse;\n\n options?: Partial<TOptions>;\n [stateHintSymbol]?: TState;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyDataSource = DataSource<any, any, any, any, any, any, any, any, any, any>;\n\nexport type DataSourceContext<TDataSource> =\n TDataSource extends DataSource<\n infer TContext,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TContext\n : never;\n\nexport type DataSourceParams<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer TParams,\n infer TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? ActualParams<TParams, TRequest>\n : never;\n\nexport type DataSourceRequest<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TRequest\n : never;\n\nexport type DataSourceResponse<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer TResponse,\n infer _TData,\n infer _TError,\n infer TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? ActualResponse<TResponse, TErrorResponse>\n : never;\n\nexport type DataSourceData<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer TResponse,\n infer TData,\n infer _TError,\n infer TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? ActualData<TResponse, TData, TErrorResponse>\n : never;\n\nexport type DataSourceError<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer TError,\n infer _TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TError\n : never;\n\nexport type DataSourceErrorResponse<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TErrorResponse\n : never;\n\nexport type DataSourceOptions<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TErrorResponse,\n infer TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TOptions\n : never;\n\nexport type DataSourceState<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TErrorResponse,\n infer _TOptions,\n infer TState,\n infer _TFetchContext\n >\n ? TState\n : never;\n\nexport type DataSourceFetchContext<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TErrorResponse,\n infer _TOptions,\n infer _TState,\n infer TFetchContext\n >\n ? TFetchContext\n : never;\n\nexport type ActualParams<TParams, TRequest> =\n | (unknown extends TParams ? TRequest : TParams)\n | typeof idle;\n\nexport type ActualResponse<TResponse, TErrorResponse> = unknown extends TErrorResponse\n ? TResponse\n : TResponse | TErrorResponse;\n\nexport type ActualData<TResponse, TData, TErrorResponse> = unknown extends TData\n ? ActualResponse<TResponse, TErrorResponse>\n : TData;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["DataSource.ts"],"sourcesContent":["import type {idle} from '../constants';\n\nexport type DataSourceKey = ReadonlyArray<unknown>;\nexport type DataSourceTag = string;\n\ndeclare const errorHintSymbol: unique symbol;\ndeclare const stateHintSymbol: unique symbol;\n\nexport interface DataSource<\n TContext,\n TParams,\n TRequest,\n TResponse,\n TData,\n TError,\n TOptions,\n TState,\n TFetchContext,\n> {\n readonly name: string;\n\n fetch: (\n context: TContext,\n fetchContext: TFetchContext,\n request: TRequest,\n ) => Promise<TResponse> | TResponse;\n tags?: (params: ActualParams<NoInfer<TParams>, NoInfer<TRequest>>) => DataSourceTag[];\n\n transformParams?: (params: TParams) => NoInfer<TRequest>;\n transformResponse?: (response: TResponse) => TData;\n\n options?: Partial<TOptions>;\n [stateHintSymbol]?: TState;\n [errorHintSymbol]?: TError;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyDataSource = DataSource<any, any, any, any, any, any, any, any, any>;\n\nexport type DataSourceContext<TDataSource> =\n TDataSource extends DataSource<\n infer TContext,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TContext\n : never;\n\nexport type DataSourceParams<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer TParams,\n infer TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? ActualParams<TParams, TRequest>\n : never;\n\nexport type DataSourceRequest<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TRequest\n : never;\n\nexport type DataSourceResponse<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer TResponse,\n infer _TData,\n infer _TError,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TResponse\n : never;\n\nexport type DataSourceData<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer TResponse,\n infer TData,\n infer _TError,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? ActualData<TData, TResponse>\n : never;\n\nexport type DataSourceError<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer TError,\n infer _TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TError\n : never;\n\nexport type DataSourceOptions<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer TOptions,\n infer _TState,\n infer _TFetchContext\n >\n ? TOptions\n : never;\n\nexport type DataSourceState<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TOptions,\n infer TState,\n infer _TFetchContext\n >\n ? TState\n : never;\n\nexport type DataSourceFetchContext<TDataSource> =\n TDataSource extends DataSource<\n infer _TContenxt,\n infer _TParams,\n infer _TRequest,\n infer _TResponse,\n infer _TData,\n infer _TError,\n infer _TOptions,\n infer _TState,\n infer TFetchContext\n >\n ? TFetchContext\n : never;\n\nexport type ActualParams<TParams, TRequest> =\n | (unknown extends TParams ? TRequest : TParams)\n | typeof idle;\n\nexport type ActualData<TData, TResponse> = unknown extends TData ? TResponse : TData;\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import type { NormalizerConfig as NormalizeConfigBase } from '@normy/core';
2
+ import type { Data, NormalizedData } from '@normy/core/types/types';
3
+ export interface OptimisticConfig {
4
+ /** Automatically calculate rollback data, defaults to true */
5
+ autoCalculateRollback?: boolean;
6
+ /** Whether debug logging is enabled */
7
+ devLogging?: boolean;
8
+ }
9
+ export interface NormalizerConfig extends NormalizeConfigBase {
10
+ initialData?: NormalizedData;
11
+ optimistic?: boolean | OptimisticConfig;
12
+ invalidate?: boolean;
13
+ }
14
+ export interface Normalizer {
15
+ getNormalizedData: () => NormalizedData;
16
+ clearNormalizedData: () => void;
17
+ setQuery: (queryKey: string, queryData: Data) => void;
18
+ removeQuery: (queryKey: string) => void;
19
+ getQueriesToUpdate: (mutationData: Data) => {
20
+ queryKey: string;
21
+ data: Data;
22
+ }[];
23
+ getObjectById: <T extends Data>(id: string, exampleObject?: T) => T | undefined;
24
+ getQueryFragment: <T extends Data>(fragment: Data, exampleObject?: T) => T | undefined;
25
+ getDependentQueries: (mutationData: Data) => readonly string[];
26
+ getDependentQueriesByIds: (ids: ReadonlyArray<string>) => readonly string[];
27
+ getCurrentData: <T extends Data>(newData: T) => T | undefined;
28
+ log: (...messages: unknown[]) => void;
29
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ // #sourceMappingURL=Normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["Normalizer.ts"],"sourcesContent":["import type {NormalizerConfig as NormalizeConfigBase} from '@normy/core';\nimport type {Data, NormalizedData} from '@normy/core/types/types';\n\nexport interface OptimisticConfig {\n /** Automatically calculate rollback data, defaults to true */\n autoCalculateRollback?: boolean;\n /** Whether debug logging is enabled */\n devLogging?: boolean;\n}\n\nexport interface NormalizerConfig extends NormalizeConfigBase {\n initialData?: NormalizedData;\n optimistic?: boolean | OptimisticConfig;\n invalidate?: boolean;\n}\n\nexport interface Normalizer {\n getNormalizedData: () => NormalizedData;\n clearNormalizedData: () => void;\n setQuery: (queryKey: string, queryData: Data) => void;\n removeQuery: (queryKey: string) => void;\n getQueriesToUpdate: (mutationData: Data) => {\n queryKey: string;\n data: Data;\n }[];\n getObjectById: <T extends Data>(id: string, exampleObject?: T) => T | undefined;\n getQueryFragment: <T extends Data>(fragment: Data, exampleObject?: T) => T | undefined;\n getDependentQueries: (mutationData: Data) => readonly string[];\n getDependentQueriesByIds: (ids: ReadonlyArray<string>) => readonly string[];\n getCurrentData: <T extends Data>(newData: T) => T | undefined;\n log: (...messages: unknown[]) => void;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ import { composeFullKey } from '../composeFullKey';
2
+ import { composeKey } from '../composeKey';
3
+ describe('composeFullKey', function () {
4
+ var dataSource = {
5
+ name: 'test',
6
+ fetch: jest.fn()
7
+ };
8
+ var dataSourceWithTags = {
9
+ name: 'test',
10
+ fetch: jest.fn(),
11
+ tags: function tags() {
12
+ return ['tag1', 'tag2'];
13
+ }
14
+ };
15
+ it('should compose full key without tags', function () {
16
+ var params = {
17
+ id: 1
18
+ };
19
+ var result = composeFullKey(dataSource, params);
20
+ var key = composeKey(dataSource, params);
21
+ expect(result).toEqual(['test', key]);
22
+ });
23
+ it('should compose full key with tags', function () {
24
+ var params = {
25
+ id: 1
26
+ };
27
+ var result = composeFullKey(dataSourceWithTags, params);
28
+ var key = composeKey(dataSourceWithTags, params);
29
+ expect(result).toEqual(['test', 'tag1', 'tag2', key]);
30
+ });
31
+ });
32
+ // #sourceMappingURL=composeFullKey.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["composeFullKey","composeKey","describe","dataSource","name","fetch","jest","fn","dataSourceWithTags","tags","it","params","id","result","key","expect","toEqual"],"sources":["composeFullKey.test.ts"],"sourcesContent":["import type {AnyDataSource} from '../../types/DataSource';\nimport {composeFullKey} from '../composeFullKey';\nimport {composeKey} from '../composeKey';\n\ndescribe('composeFullKey', () => {\n const dataSource: AnyDataSource = {\n name: 'test',\n fetch: jest.fn(),\n };\n\n const dataSourceWithTags: AnyDataSource = {\n name: 'test',\n fetch: jest.fn(),\n tags: () => ['tag1', 'tag2'],\n };\n\n it('should compose full key without tags', () => {\n const params = {id: 1};\n const result = composeFullKey(dataSource, params);\n const key = composeKey(dataSource, params);\n expect(result).toEqual(['test', key]);\n });\n\n it('should compose full key with tags', () => {\n const params = {id: 1};\n const result = composeFullKey(dataSourceWithTags, params);\n const key = composeKey(dataSourceWithTags, params);\n expect(result).toEqual(['test', 'tag1', 'tag2', key]);\n });\n});\n"],"mappings":"AACA,SAAQA,cAAc,QAAO,mBAAmB;AAChD,SAAQC,UAAU,QAAO,eAAe;AAExCC,QAAQ,CAAC,gBAAgB,EAAE,YAAM;EAC7B,IAAMC,UAAyB,GAAG;IAC9BC,IAAI,EAAE,MAAM;IACZC,KAAK,EAAEC,IAAI,CAACC,EAAE,CAAC;EACnB,CAAC;EAED,IAAMC,kBAAiC,GAAG;IACtCJ,IAAI,EAAE,MAAM;IACZC,KAAK,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;IAChBE,IAAI,EAAE,SAANA,IAAIA,CAAA;MAAA,OAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAA;EAChC,CAAC;EAEDC,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMC,MAAM,GAAG;MAACC,EAAE,EAAE;IAAC,CAAC;IACtB,IAAMC,MAAM,GAAGb,cAAc,CAACG,UAAU,EAAEQ,MAAM,CAAC;IACjD,IAAMG,GAAG,GAAGb,UAAU,CAACE,UAAU,EAAEQ,MAAM,CAAC;IAC1CI,MAAM,CAACF,MAAM,CAAC,CAACG,OAAO,CAAC,CAAC,MAAM,EAAEF,GAAG,CAAC,CAAC;EACzC,CAAC,CAAC;EAEFJ,EAAE,CAAC,mCAAmC,EAAE,YAAM;IAC1C,IAAMC,MAAM,GAAG;MAACC,EAAE,EAAE;IAAC,CAAC;IACtB,IAAMC,MAAM,GAAGb,cAAc,CAACQ,kBAAkB,EAAEG,MAAM,CAAC;IACzD,IAAMG,GAAG,GAAGb,UAAU,CAACO,kBAAkB,EAAEG,MAAM,CAAC;IAClDI,MAAM,CAACF,MAAM,CAAC,CAACG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAEF,GAAG,CAAC,CAAC;EACzD,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ import { idle } from '../../constants';
2
+ import { composeKey } from '../composeKey';
3
+ describe('composeKey', function () {
4
+ var dataSource = {
5
+ name: 'test',
6
+ fetch: jest.fn()
7
+ };
8
+ it('should compose key with idle params', function () {
9
+ var result = composeKey(dataSource, idle);
10
+ expect(result).toBe('test:idle');
11
+ });
12
+ it('should compose key with string param', function () {
13
+ var params = 'string';
14
+ var result = composeKey(dataSource, params);
15
+ expect(result).toBe('test("string")');
16
+ });
17
+ it('should compose key with object param', function () {
18
+ var params = {
19
+ id: 1
20
+ };
21
+ var result = composeKey(dataSource, params);
22
+ expect(result).toMatch(/^test\(.+\)$/);
23
+ });
24
+ it('should compose key with array param', function () {
25
+ var params = [1, 2, 3];
26
+ var result = composeKey(dataSource, params);
27
+ expect(result).toMatch(/^test\(.+\)$/);
28
+ });
29
+ });
30
+ // #sourceMappingURL=composeKey.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["idle","composeKey","describe","dataSource","name","fetch","jest","fn","it","result","expect","toBe","params","id","toMatch"],"sources":["composeKey.test.ts"],"sourcesContent":["import {idle} from '../../constants';\nimport type {AnyDataSource} from '../../types/DataSource';\nimport {composeKey} from '../composeKey';\n\ndescribe('composeKey', () => {\n const dataSource: AnyDataSource = {\n name: 'test',\n fetch: jest.fn(),\n };\n\n it('should compose key with idle params', () => {\n const result = composeKey(dataSource, idle);\n expect(result).toBe('test:idle');\n });\n\n it('should compose key with string param', () => {\n const params = 'string';\n const result = composeKey(dataSource, params);\n expect(result).toBe('test(\"string\")');\n });\n\n it('should compose key with object param', () => {\n const params = {id: 1};\n const result = composeKey(dataSource, params);\n expect(result).toMatch(/^test\\(.+\\)$/);\n });\n\n it('should compose key with array param', () => {\n const params = [1, 2, 3];\n const result = composeKey(dataSource, params);\n expect(result).toMatch(/^test\\(.+\\)$/);\n });\n});\n"],"mappings":"AAAA,SAAQA,IAAI,QAAO,iBAAiB;AAEpC,SAAQC,UAAU,QAAO,eAAe;AAExCC,QAAQ,CAAC,YAAY,EAAE,YAAM;EACzB,IAAMC,UAAyB,GAAG;IAC9BC,IAAI,EAAE,MAAM;IACZC,KAAK,EAAEC,IAAI,CAACC,EAAE,CAAC;EACnB,CAAC;EAEDC,EAAE,CAAC,qCAAqC,EAAE,YAAM;IAC5C,IAAMC,MAAM,GAAGR,UAAU,CAACE,UAAU,EAAEH,IAAI,CAAC;IAC3CU,MAAM,CAACD,MAAM,CAAC,CAACE,IAAI,CAAC,WAAW,CAAC;EACpC,CAAC,CAAC;EAEFH,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMI,MAAM,GAAG,QAAQ;IACvB,IAAMH,MAAM,GAAGR,UAAU,CAACE,UAAU,EAAES,MAAM,CAAC;IAC7CF,MAAM,CAACD,MAAM,CAAC,CAACE,IAAI,CAAC,gBAAgB,CAAC;EACzC,CAAC,CAAC;EAEFH,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMI,MAAM,GAAG;MAACC,EAAE,EAAE;IAAC,CAAC;IACtB,IAAMJ,MAAM,GAAGR,UAAU,CAACE,UAAU,EAAES,MAAM,CAAC;IAC7CF,MAAM,CAACD,MAAM,CAAC,CAACK,OAAO,CAAC,cAAc,CAAC;EAC1C,CAAC,CAAC;EAEFN,EAAE,CAAC,qCAAqC,EAAE,YAAM;IAC5C,IAAMI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB,IAAMH,MAAM,GAAGR,UAAU,CAACE,UAAU,EAAES,MAAM,CAAC;IAC7CF,MAAM,CAACD,MAAM,CAAC,CAACK,OAAO,CAAC,cAAc,CAAC;EAC1C,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import { getError } from '../getError';
2
+ describe('getError', function () {
3
+ it('should return null when no errors', function () {
4
+ var states = [{
5
+ error: null
6
+ }, {
7
+ error: null
8
+ }, {
9
+ error: null
10
+ }];
11
+ expect(getError(states)).toBeNull();
12
+ });
13
+ it('should return the first error found', function () {
14
+ var error1 = 'Error 1';
15
+ var error2 = 'Error 2';
16
+ var states = [{
17
+ error: null
18
+ }, {
19
+ error: error1
20
+ }, {
21
+ error: error2
22
+ }];
23
+ expect(getError(states)).toBe(error1);
24
+ });
25
+ it('should handle empty array', function () {
26
+ expect(getError([])).toBeNull();
27
+ });
28
+ });
29
+ // #sourceMappingURL=getError.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getError","describe","it","states","error","expect","toBeNull","error1","error2","toBe"],"sources":["getError.test.ts"],"sourcesContent":["import {getError} from '../getError';\n\ndescribe('getError', () => {\n it('should return null when no errors', () => {\n const states = [{error: null}, {error: null}, {error: null}];\n expect(getError(states)).toBeNull();\n });\n\n it('should return the first error found', () => {\n const error1 = 'Error 1';\n const error2 = 'Error 2';\n const states = [{error: null}, {error: error1}, {error: error2}];\n expect(getError(states)).toBe(error1);\n });\n\n it('should handle empty array', () => {\n expect(getError([])).toBeNull();\n });\n});\n"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,aAAa;AAEpCC,QAAQ,CAAC,UAAU,EAAE,YAAM;EACvBC,EAAE,CAAC,mCAAmC,EAAE,YAAM;IAC1C,IAAMC,MAAM,GAAG,CAAC;MAACC,KAAK,EAAE;IAAI,CAAC,EAAE;MAACA,KAAK,EAAE;IAAI,CAAC,EAAE;MAACA,KAAK,EAAE;IAAI,CAAC,CAAC;IAC5DC,MAAM,CAACL,QAAQ,CAACG,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFJ,EAAE,CAAC,qCAAqC,EAAE,YAAM;IAC5C,IAAMK,MAAM,GAAG,SAAS;IACxB,IAAMC,MAAM,GAAG,SAAS;IACxB,IAAML,MAAM,GAAG,CAAC;MAACC,KAAK,EAAE;IAAI,CAAC,EAAE;MAACA,KAAK,EAAEG;IAAM,CAAC,EAAE;MAACH,KAAK,EAAEI;IAAM,CAAC,CAAC;IAChEH,MAAM,CAACL,QAAQ,CAACG,MAAM,CAAC,CAAC,CAACM,IAAI,CAACF,MAAM,CAAC;EACzC,CAAC,CAAC;EAEFL,EAAE,CAAC,2BAA2B,EAAE,YAAM;IAClCG,MAAM,CAACL,QAAQ,CAAC,EAAE,CAAC,CAAC,CAACM,QAAQ,CAAC,CAAC;EACnC,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ import { getStatus } from '../getStatus';
2
+ describe('getStatus', function () {
3
+ it('should return success when all statuses are success', function () {
4
+ var states = [{
5
+ status: 'success'
6
+ }, {
7
+ status: 'success'
8
+ }, {
9
+ status: 'success'
10
+ }];
11
+ expect(getStatus(states)).toBe('success');
12
+ });
13
+ it('should return loading when at least one status is loading', function () {
14
+ var states = [{
15
+ status: 'success'
16
+ }, {
17
+ status: 'loading'
18
+ }, {
19
+ status: 'success'
20
+ }];
21
+ expect(getStatus(states)).toBe('loading');
22
+ });
23
+ it('should return error when at least one status is error', function () {
24
+ var states = [{
25
+ status: 'success'
26
+ }, {
27
+ status: 'error'
28
+ }, {
29
+ status: 'success'
30
+ }];
31
+ expect(getStatus(states)).toBe('error');
32
+ });
33
+ it('should prioritize error over loading', function () {
34
+ var states = [{
35
+ status: 'loading'
36
+ }, {
37
+ status: 'error'
38
+ }, {
39
+ status: 'success'
40
+ }];
41
+ expect(getStatus(states)).toBe('error');
42
+ });
43
+ it('should handle empty array', function () {
44
+ expect(getStatus([])).toBe('success');
45
+ });
46
+ });
47
+ // #sourceMappingURL=getStatus.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getStatus","describe","it","states","status","expect","toBe"],"sources":["getStatus.test.ts"],"sourcesContent":["import type {DataLoaderStatus} from '../../types/DataLoaderStatus';\nimport {getStatus} from '../getStatus';\n\ndescribe('getStatus', () => {\n it('should return success when all statuses are success', () => {\n const states = [\n {status: 'success' as DataLoaderStatus},\n {status: 'success' as DataLoaderStatus},\n {status: 'success' as DataLoaderStatus},\n ];\n expect(getStatus(states)).toBe('success');\n });\n\n it('should return loading when at least one status is loading', () => {\n const states = [\n {status: 'success' as DataLoaderStatus},\n {status: 'loading' as DataLoaderStatus},\n {status: 'success' as DataLoaderStatus},\n ];\n expect(getStatus(states)).toBe('loading');\n });\n\n it('should return error when at least one status is error', () => {\n const states = [\n {status: 'success' as DataLoaderStatus},\n {status: 'error' as DataLoaderStatus},\n {status: 'success' as DataLoaderStatus},\n ];\n expect(getStatus(states)).toBe('error');\n });\n\n it('should prioritize error over loading', () => {\n const states = [\n {status: 'loading' as DataLoaderStatus},\n {status: 'error' as DataLoaderStatus},\n {status: 'success' as DataLoaderStatus},\n ];\n expect(getStatus(states)).toBe('error');\n });\n\n it('should handle empty array', () => {\n expect(getStatus([])).toBe('success');\n });\n});\n"],"mappings":"AACA,SAAQA,SAAS,QAAO,cAAc;AAEtCC,QAAQ,CAAC,WAAW,EAAE,YAAM;EACxBC,EAAE,CAAC,qDAAqD,EAAE,YAAM;IAC5D,IAAMC,MAAM,GAAG,CACX;MAACC,MAAM,EAAE;IAA6B,CAAC,EACvC;MAACA,MAAM,EAAE;IAA6B,CAAC,EACvC;MAACA,MAAM,EAAE;IAA6B,CAAC,CAC1C;IACDC,MAAM,CAACL,SAAS,CAACG,MAAM,CAAC,CAAC,CAACG,IAAI,CAAC,SAAS,CAAC;EAC7C,CAAC,CAAC;EAEFJ,EAAE,CAAC,2DAA2D,EAAE,YAAM;IAClE,IAAMC,MAAM,GAAG,CACX;MAACC,MAAM,EAAE;IAA6B,CAAC,EACvC;MAACA,MAAM,EAAE;IAA6B,CAAC,EACvC;MAACA,MAAM,EAAE;IAA6B,CAAC,CAC1C;IACDC,MAAM,CAACL,SAAS,CAACG,MAAM,CAAC,CAAC,CAACG,IAAI,CAAC,SAAS,CAAC;EAC7C,CAAC,CAAC;EAEFJ,EAAE,CAAC,uDAAuD,EAAE,YAAM;IAC9D,IAAMC,MAAM,GAAG,CACX;MAACC,MAAM,EAAE;IAA6B,CAAC,EACvC;MAACA,MAAM,EAAE;IAA2B,CAAC,EACrC;MAACA,MAAM,EAAE;IAA6B,CAAC,CAC1C;IACDC,MAAM,CAACL,SAAS,CAACG,MAAM,CAAC,CAAC,CAACG,IAAI,CAAC,OAAO,CAAC;EAC3C,CAAC,CAAC;EAEFJ,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMC,MAAM,GAAG,CACX;MAACC,MAAM,EAAE;IAA6B,CAAC,EACvC;MAACA,MAAM,EAAE;IAA2B,CAAC,EACrC;MAACA,MAAM,EAAE;IAA6B,CAAC,CAC1C;IACDC,MAAM,CAACL,SAAS,CAACG,MAAM,CAAC,CAAC,CAACG,IAAI,CAAC,OAAO,CAAC;EAC3C,CAAC,CAAC;EAEFJ,EAAE,CAAC,2BAA2B,EAAE,YAAM;IAClCG,MAAM,CAACL,SAAS,CAAC,EAAE,CAAC,CAAC,CAACM,IAAI,CAAC,SAAS,CAAC;EACzC,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import { hasTag } from '../hasTag';
2
+ describe('hasTag', function () {
3
+ it('should return true when key contains tag', function () {
4
+ var key = ['dataSource', 'tag1', 'tag2', 'fullKey'];
5
+ var tag = 'tag1';
6
+ expect(hasTag(key, tag)).toBe(true);
7
+ });
8
+ it('should return false when key does not contain tag', function () {
9
+ var key = ['dataSource', 'tag1', 'tag2', 'fullKey'];
10
+ var tag = 'tag3';
11
+ expect(hasTag(key, tag)).toBe(false);
12
+ });
13
+ it('should return false when tag is at first position (data source name)', function () {
14
+ var key = ['tag1', 'tag2', 'tag3', 'fullKey'];
15
+ var tag = 'tag1';
16
+ expect(hasTag(key, tag)).toBe(false);
17
+ });
18
+ it('should return false when tag is at last position (full key)', function () {
19
+ var key = ['dataSource', 'tag1', 'tag2', 'tag3'];
20
+ var tag = 'tag3';
21
+ expect(hasTag(key, tag)).toBe(false);
22
+ });
23
+ it('should return false when key is not an array', function () {
24
+ var key = 'not an array';
25
+ var tag = 'tag';
26
+ expect(hasTag(key, tag)).toBe(false);
27
+ });
28
+ });
29
+ // #sourceMappingURL=hasTag.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["hasTag","describe","it","key","tag","expect","toBe"],"sources":["hasTag.test.ts"],"sourcesContent":["import type {DataSourceKey, DataSourceTag} from '../../types/DataSource';\nimport {hasTag} from '../hasTag';\n\ndescribe('hasTag', () => {\n it('should return true when key contains tag', () => {\n const key: DataSourceKey = ['dataSource', 'tag1', 'tag2', 'fullKey'];\n const tag: DataSourceTag = 'tag1';\n expect(hasTag(key, tag)).toBe(true);\n });\n\n it('should return false when key does not contain tag', () => {\n const key: DataSourceKey = ['dataSource', 'tag1', 'tag2', 'fullKey'];\n const tag: DataSourceTag = 'tag3';\n expect(hasTag(key, tag)).toBe(false);\n });\n\n it('should return false when tag is at first position (data source name)', () => {\n const key: DataSourceKey = ['tag1', 'tag2', 'tag3', 'fullKey'];\n const tag: DataSourceTag = 'tag1';\n expect(hasTag(key, tag)).toBe(false);\n });\n\n it('should return false when tag is at last position (full key)', () => {\n const key: DataSourceKey = ['dataSource', 'tag1', 'tag2', 'tag3'];\n const tag: DataSourceTag = 'tag3';\n expect(hasTag(key, tag)).toBe(false);\n });\n\n it('should return false when key is not an array', () => {\n const key = 'not an array';\n const tag: DataSourceTag = 'tag';\n expect(hasTag(key as unknown as DataSourceKey, tag)).toBe(false);\n });\n});\n"],"mappings":"AACA,SAAQA,MAAM,QAAO,WAAW;AAEhCC,QAAQ,CAAC,QAAQ,EAAE,YAAM;EACrBC,EAAE,CAAC,0CAA0C,EAAE,YAAM;IACjD,IAAMC,GAAkB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IACpE,IAAMC,GAAkB,GAAG,MAAM;IACjCC,MAAM,CAACL,MAAM,CAACG,GAAG,EAAEC,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,IAAI,CAAC;EACvC,CAAC,CAAC;EAEFJ,EAAE,CAAC,mDAAmD,EAAE,YAAM;IAC1D,IAAMC,GAAkB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IACpE,IAAMC,GAAkB,GAAG,MAAM;IACjCC,MAAM,CAACL,MAAM,CAACG,GAAG,EAAEC,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,KAAK,CAAC;EACxC,CAAC,CAAC;EAEFJ,EAAE,CAAC,sEAAsE,EAAE,YAAM;IAC7E,IAAMC,GAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;IAC9D,IAAMC,GAAkB,GAAG,MAAM;IACjCC,MAAM,CAACL,MAAM,CAACG,GAAG,EAAEC,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,KAAK,CAAC;EACxC,CAAC,CAAC;EAEFJ,EAAE,CAAC,6DAA6D,EAAE,YAAM;IACpE,IAAMC,GAAkB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IACjE,IAAMC,GAAkB,GAAG,MAAM;IACjCC,MAAM,CAACL,MAAM,CAACG,GAAG,EAAEC,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,KAAK,CAAC;EACxC,CAAC,CAAC;EAEFJ,EAAE,CAAC,8CAA8C,EAAE,YAAM;IACrD,IAAMC,GAAG,GAAG,cAAc;IAC1B,IAAMC,GAAkB,GAAG,KAAK;IAChCC,MAAM,CAACL,MAAM,CAACG,GAAG,EAA8BC,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,KAAK,CAAC;EACpE,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import { mergeStatuses } from '../mergeStatuses';
2
+ describe('mergeStatuses', function () {
3
+ it('should return success when all statuses are success', function () {
4
+ var statuses = ['success', 'success', 'success'];
5
+ expect(mergeStatuses(statuses)).toBe('success');
6
+ });
7
+ it('should return loading when at least one status is loading', function () {
8
+ var statuses = ['success', 'loading', 'success'];
9
+ expect(mergeStatuses(statuses)).toBe('loading');
10
+ });
11
+ it('should return error when at least one status is error', function () {
12
+ var statuses = ['success', 'error', 'success'];
13
+ expect(mergeStatuses(statuses)).toBe('error');
14
+ });
15
+ it('should prioritize error over loading', function () {
16
+ var statuses = ['loading', 'error', 'success'];
17
+ expect(mergeStatuses(statuses)).toBe('error');
18
+ });
19
+ it('should handle empty array', function () {
20
+ expect(mergeStatuses([])).toBe('success');
21
+ });
22
+ });
23
+ // #sourceMappingURL=mergeStatuses.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mergeStatuses","describe","it","statuses","expect","toBe"],"sources":["mergeStatuses.test.ts"],"sourcesContent":["import type {DataLoaderStatus} from '../../types/DataLoaderStatus';\nimport {mergeStatuses} from '../mergeStatuses';\n\ndescribe('mergeStatuses', () => {\n it('should return success when all statuses are success', () => {\n const statuses: DataLoaderStatus[] = ['success', 'success', 'success'];\n expect(mergeStatuses(statuses)).toBe('success');\n });\n\n it('should return loading when at least one status is loading', () => {\n const statuses: DataLoaderStatus[] = ['success', 'loading', 'success'];\n expect(mergeStatuses(statuses)).toBe('loading');\n });\n\n it('should return error when at least one status is error', () => {\n const statuses: DataLoaderStatus[] = ['success', 'error', 'success'];\n expect(mergeStatuses(statuses)).toBe('error');\n });\n\n it('should prioritize error over loading', () => {\n const statuses: DataLoaderStatus[] = ['loading', 'error', 'success'];\n expect(mergeStatuses(statuses)).toBe('error');\n });\n\n it('should handle empty array', () => {\n expect(mergeStatuses([])).toBe('success');\n });\n});\n"],"mappings":"AACA,SAAQA,aAAa,QAAO,kBAAkB;AAE9CC,QAAQ,CAAC,eAAe,EAAE,YAAM;EAC5BC,EAAE,CAAC,qDAAqD,EAAE,YAAM;IAC5D,IAAMC,QAA4B,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IACtEC,MAAM,CAACJ,aAAa,CAACG,QAAQ,CAAC,CAAC,CAACE,IAAI,CAAC,SAAS,CAAC;EACnD,CAAC,CAAC;EAEFH,EAAE,CAAC,2DAA2D,EAAE,YAAM;IAClE,IAAMC,QAA4B,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IACtEC,MAAM,CAACJ,aAAa,CAACG,QAAQ,CAAC,CAAC,CAACE,IAAI,CAAC,SAAS,CAAC;EACnD,CAAC,CAAC;EAEFH,EAAE,CAAC,uDAAuD,EAAE,YAAM;IAC9D,IAAMC,QAA4B,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;IACpEC,MAAM,CAACJ,aAAa,CAACG,QAAQ,CAAC,CAAC,CAACE,IAAI,CAAC,OAAO,CAAC;EACjD,CAAC,CAAC;EAEFH,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMC,QAA4B,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;IACpEC,MAAM,CAACJ,aAAa,CAACG,QAAQ,CAAC,CAAC,CAACE,IAAI,CAAC,OAAO,CAAC;EACjD,CAAC,CAAC;EAEFH,EAAE,CAAC,2BAA2B,EAAE,YAAM;IAClCE,MAAM,CAACJ,aAAa,CAAC,EAAE,CAAC,CAAC,CAACK,IAAI,CAAC,SAAS,CAAC;EAC7C,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/regeneratorRuntime";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import { skipContext } from '../skipContext';
4
+ describe('skipContext', function () {
5
+ it('should ignore context and query function context parameters', function () {
6
+ var mockFn = jest.fn(function (arg1, arg2) {
7
+ return "".concat(arg1, "-").concat(arg2);
8
+ });
9
+ var wrappedFn = skipContext(mockFn);
10
+ var result = wrappedFn('context', 'queryFnContext', 'hello', 42);
11
+ expect(mockFn).toHaveBeenCalledWith('hello', 42);
12
+ expect(result).toBe('hello-42');
13
+ });
14
+ it('should work with functions that have no parameters', function () {
15
+ var mockFn = jest.fn(function () {
16
+ return 'result';
17
+ });
18
+ var wrappedFn = skipContext(mockFn);
19
+ var result = wrappedFn('context', 'queryFnContext');
20
+ expect(mockFn).toHaveBeenCalledWith();
21
+ expect(result).toBe('result');
22
+ });
23
+ it('should work with async functions', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
24
+ var mockFn, wrappedFn, result;
25
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
26
+ while (1) switch (_context2.prev = _context2.next) {
27
+ case 0:
28
+ mockFn = jest.fn(/*#__PURE__*/function () {
29
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(arg) {
30
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
31
+ while (1) switch (_context.prev = _context.next) {
32
+ case 0:
33
+ return _context.abrupt("return", "async-".concat(arg));
34
+ case 1:
35
+ case "end":
36
+ return _context.stop();
37
+ }
38
+ }, _callee);
39
+ }));
40
+ return function (_x) {
41
+ return _ref2.apply(this, arguments);
42
+ };
43
+ }());
44
+ wrappedFn = skipContext(mockFn);
45
+ _context2.next = 4;
46
+ return wrappedFn('context', 'queryFnContext', 'test');
47
+ case 4:
48
+ result = _context2.sent;
49
+ expect(mockFn).toHaveBeenCalledWith('test');
50
+ expect(result).toBe('async-test');
51
+ case 7:
52
+ case "end":
53
+ return _context2.stop();
54
+ }
55
+ }, _callee2);
56
+ })));
57
+ it('should pass multiple arguments correctly', function () {
58
+ var mockFn = jest.fn(function (arg1, arg2, arg3) {
59
+ return "".concat(arg1, "-").concat(arg2, "-").concat(arg3);
60
+ });
61
+ var wrappedFn = skipContext(mockFn);
62
+ var result = wrappedFn('context', 'queryFnContext', 'hello', 42, true);
63
+ expect(mockFn).toHaveBeenCalledWith('hello', 42, true);
64
+ expect(result).toBe('hello-42-true');
65
+ });
66
+ });
67
+ // #sourceMappingURL=skipContext.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["skipContext","describe","it","mockFn","jest","fn","arg1","arg2","concat","wrappedFn","result","expect","toHaveBeenCalledWith","toBe","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","wrap","_callee2$","_context2","prev","next","_ref2","_callee","arg","_callee$","_context","abrupt","stop","_x","apply","arguments","sent","arg3"],"sources":["skipContext.test.ts"],"sourcesContent":["import {skipContext} from '../skipContext';\n\ndescribe('skipContext', () => {\n it('should ignore context and query function context parameters', () => {\n const mockFn = jest.fn((arg1: string, arg2: number) => `${arg1}-${arg2}`);\n const wrappedFn = skipContext(mockFn);\n const result = wrappedFn('context', 'queryFnContext', 'hello', 42);\n expect(mockFn).toHaveBeenCalledWith('hello', 42);\n expect(result).toBe('hello-42');\n });\n\n it('should work with functions that have no parameters', () => {\n const mockFn = jest.fn(() => 'result');\n const wrappedFn = skipContext(mockFn);\n const result = wrappedFn('context', 'queryFnContext');\n expect(mockFn).toHaveBeenCalledWith();\n expect(result).toBe('result');\n });\n\n it('should work with async functions', async () => {\n const mockFn = jest.fn(async (arg: string) => `async-${arg}`);\n const wrappedFn = skipContext(mockFn);\n const result = await wrappedFn('context', 'queryFnContext', 'test');\n expect(mockFn).toHaveBeenCalledWith('test');\n expect(result).toBe('async-test');\n });\n\n it('should pass multiple arguments correctly', () => {\n const mockFn = jest.fn(\n (arg1: string, arg2: number, arg3: boolean) => `${arg1}-${arg2}-${arg3}`,\n );\n const wrappedFn = skipContext(mockFn);\n const result = wrappedFn('context', 'queryFnContext', 'hello', 42, true);\n expect(mockFn).toHaveBeenCalledWith('hello', 42, true);\n expect(result).toBe('hello-42-true');\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ import { isAbortable, isCancellable, withCancellation } from '../withCancellation';
2
+ describe('withCancellation', function () {
3
+ describe('isCancellable', function () {
4
+ it('should return true for objects with cancel method', function () {
5
+ var cancellable = {
6
+ cancel: jest.fn()
7
+ };
8
+ expect(isCancellable(cancellable)).toBe(true);
9
+ });
10
+ it('should return false for null', function () {
11
+ expect(isCancellable(null)).toBe(false);
12
+ });
13
+ it('should return false for objects without cancel method', function () {
14
+ expect(isCancellable({})).toBe(false);
15
+ });
16
+ it('should return false for objects with invalid cancel method', function () {
17
+ expect(isCancellable({
18
+ cancel: 'not a function'
19
+ })).toBe(false);
20
+ });
21
+ });
22
+ describe('isAbortable', function () {
23
+ it('should return true for objects with valid signal', function () {
24
+ var abortController = new AbortController();
25
+ var abortable = {
26
+ signal: abortController.signal
27
+ };
28
+ expect(isAbortable(abortable)).toBe(true);
29
+ });
30
+ it('should return false for null', function () {
31
+ expect(isAbortable(null)).toBe(false);
32
+ });
33
+ it('should return false for objects without signal', function () {
34
+ expect(isAbortable({})).toBe(false);
35
+ });
36
+ it('should return false for objects with invalid signal', function () {
37
+ expect(isAbortable({
38
+ signal: {}
39
+ })).toBe(false);
40
+ });
41
+ });
42
+ describe('withCancellation', function () {
43
+ it('should add abort listener when fetch returns cancellable and context is abortable', function () {
44
+ var mockCancel = jest.fn();
45
+ var cancellable = {
46
+ cancel: mockCancel
47
+ };
48
+ var abortController = new AbortController();
49
+ var fetchContext = {
50
+ signal: abortController.signal
51
+ };
52
+ var mockFetch = jest.fn().mockReturnValue(cancellable);
53
+ var dataSource = {
54
+ name: 'test',
55
+ fetch: mockFetch
56
+ };
57
+ var wrappedFetch = withCancellation(dataSource.fetch);
58
+ var result = wrappedFetch({}, fetchContext, {});
59
+ expect(mockFetch).toHaveBeenCalledWith({}, fetchContext, {});
60
+ expect(result).toBe(cancellable);
61
+ expect(mockCancel).not.toHaveBeenCalled();
62
+
63
+ // Simulate abort
64
+ abortController.abort();
65
+ expect(mockCancel).toHaveBeenCalled();
66
+ });
67
+ it('should not add abort listener when fetch returns non-cancellable', function () {
68
+ var abortController = new AbortController();
69
+ var fetchContext = {
70
+ signal: abortController.signal
71
+ };
72
+ var mockFetch = jest.fn().mockReturnValue('not cancellable');
73
+ var dataSource = {
74
+ name: 'test',
75
+ fetch: mockFetch
76
+ };
77
+ var wrappedFetch = withCancellation(dataSource.fetch);
78
+ var result = wrappedFetch({}, fetchContext, {});
79
+ expect(mockFetch).toHaveBeenCalledWith({}, fetchContext, {});
80
+ expect(result).toBe('not cancellable');
81
+
82
+ // No error should occur when aborting
83
+ abortController.abort();
84
+ });
85
+ it('should not add abort listener when context is not abortable', function () {
86
+ var mockCancel = jest.fn();
87
+ var cancellable = {
88
+ cancel: mockCancel
89
+ };
90
+ var fetchContext = {};
91
+ var mockFetch = jest.fn().mockReturnValue(cancellable);
92
+ var dataSource = {
93
+ name: 'test',
94
+ fetch: mockFetch
95
+ };
96
+ var wrappedFetch = withCancellation(dataSource.fetch);
97
+ var result = wrappedFetch({}, fetchContext, {});
98
+ expect(mockFetch).toHaveBeenCalledWith({}, fetchContext, {});
99
+ expect(result).toBe(cancellable);
100
+ expect(mockCancel).not.toHaveBeenCalled();
101
+ });
102
+ });
103
+ });
104
+ // #sourceMappingURL=withCancellation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isAbortable","isCancellable","withCancellation","describe","it","cancellable","cancel","jest","fn","expect","toBe","abortController","AbortController","abortable","signal","mockCancel","fetchContext","mockFetch","mockReturnValue","dataSource","name","fetch","wrappedFetch","result","toHaveBeenCalledWith","not","toHaveBeenCalled","abort"],"sources":["withCancellation.test.ts"],"sourcesContent":["import type {AnyDataSource} from '../../types/DataSource';\nimport type {Cancellable} from '../withCancellation';\nimport {isAbortable, isCancellable, withCancellation} from '../withCancellation';\n\ndescribe('withCancellation', () => {\n describe('isCancellable', () => {\n it('should return true for objects with cancel method', () => {\n const cancellable: Cancellable = {\n cancel: jest.fn(),\n };\n expect(isCancellable(cancellable)).toBe(true);\n });\n\n it('should return false for null', () => {\n expect(isCancellable(null)).toBe(false);\n });\n\n it('should return false for objects without cancel method', () => {\n expect(isCancellable({})).toBe(false);\n });\n\n it('should return false for objects with invalid cancel method', () => {\n expect(isCancellable({cancel: 'not a function'})).toBe(false);\n });\n });\n\n describe('isAbortable', () => {\n it('should return true for objects with valid signal', () => {\n const abortController = new AbortController();\n const abortable = {signal: abortController.signal};\n expect(isAbortable(abortable)).toBe(true);\n });\n\n it('should return false for null', () => {\n expect(isAbortable(null)).toBe(false);\n });\n\n it('should return false for objects without signal', () => {\n expect(isAbortable({})).toBe(false);\n });\n\n it('should return false for objects with invalid signal', () => {\n expect(isAbortable({signal: {}})).toBe(false);\n });\n });\n\n describe('withCancellation', () => {\n it('should add abort listener when fetch returns cancellable and context is abortable', () => {\n const mockCancel = jest.fn();\n const cancellable: Cancellable = {\n cancel: mockCancel,\n };\n\n const abortController = new AbortController();\n const fetchContext = {signal: abortController.signal};\n\n const mockFetch = jest.fn().mockReturnValue(cancellable);\n const dataSource: AnyDataSource = {\n name: 'test',\n fetch: mockFetch,\n };\n\n const wrappedFetch = withCancellation(dataSource.fetch);\n const result = wrappedFetch({}, fetchContext, {});\n\n expect(mockFetch).toHaveBeenCalledWith({}, fetchContext, {});\n expect(result).toBe(cancellable);\n expect(mockCancel).not.toHaveBeenCalled();\n\n // Simulate abort\n abortController.abort();\n expect(mockCancel).toHaveBeenCalled();\n });\n\n it('should not add abort listener when fetch returns non-cancellable', () => {\n const abortController = new AbortController();\n const fetchContext = {signal: abortController.signal};\n\n const mockFetch = jest.fn().mockReturnValue('not cancellable');\n const dataSource: AnyDataSource = {\n name: 'test',\n fetch: mockFetch,\n };\n\n const wrappedFetch = withCancellation(dataSource.fetch);\n const result = wrappedFetch({}, fetchContext, {});\n\n expect(mockFetch).toHaveBeenCalledWith({}, fetchContext, {});\n expect(result).toBe('not cancellable');\n\n // No error should occur when aborting\n abortController.abort();\n });\n\n it('should not add abort listener when context is not abortable', () => {\n const mockCancel = jest.fn();\n const cancellable: Cancellable = {\n cancel: mockCancel,\n };\n\n const fetchContext = {};\n\n const mockFetch = jest.fn().mockReturnValue(cancellable);\n const dataSource: AnyDataSource = {\n name: 'test',\n fetch: mockFetch,\n };\n\n const wrappedFetch = withCancellation(dataSource.fetch);\n const result = wrappedFetch({}, fetchContext, {});\n\n expect(mockFetch).toHaveBeenCalledWith({}, fetchContext, {});\n expect(result).toBe(cancellable);\n expect(mockCancel).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}