@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
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMutation","renderHook","waitFor","ClientDataManager","DataSourceProvider","jsx","_jsx","describe","dataManager","beforeEach","defaultOptions","queries","retry","mutations","normalizerConfig","devLogging","afterEach","_dataManager$queryNor","queryNormalizer","unsubscribe","queryClient","clear","it","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","normalized","wrap","_callee2$","_context2","prev","next","expect","toBeDefined","subscribe","fetchQuery","queryKey","queryFn","_queryFn","_callee","_callee$","_context","abrupt","id","name","stop","apply","arguments","normalize","getNormalizedData","objects","_callee5","normalizedBefore","objectCountBefore","normalizedAfter","_callee5$","_context5","_queryFn2","_callee3","_callee3$","_context3","Object","keys","length","_queryFn3","_callee4","_callee4$","_context4","toBe","JSON","stringify","_callee7","_callee7$","_context7","_queryFn4","_callee6","_callee6$","_context6","removeQueries","Promise","resolve","setTimeout","toBeUndefined","_callee8","_callee8$","_context8","_callee10","_callee10$","_context10","_queryFn5","_callee9","_callee9$","_context9","toHaveLength","not","toThrow","dataManagerWithOptimistic","optimistic","autoCalculateRollback","_dataManagerWithOptim","_callee13","wrapper","_renderHook","mutationResult","data","_callee13$","_context13","_queryFn6","_callee11","_callee11$","_context11","_ref7","children","mutationFn","_mutationFn","_callee12","_callee12$","_context12","result","current","mutate","undefined","isSuccess","getQueryData","_callee16","_renderHook2","dataFinal","_callee16$","_context16","_queryFn7","_callee14","_callee14$","_context14","_ref9","_mutationFn2","_callee15","_callee15$","_context15","onMutate","optimisticData","_callee19","_renderHook3","_callee19$","_context19","_queryFn8","_callee17","_callee17$","_context17","_ref11","_mutationFn3","_callee18","_callee18$","_context18","Error","isError","_callee22","_renderHook4","_callee22$","_context22","_queryFn9","_callee20","_callee20$","_context20","_ref13","_mutationFn4","_callee21","_callee21$","_context21","_callee24","dmNoNormalize","_renderHook5","_callee24$","_context24","setQueryData","_ref15","_mutationFn5","_callee23","_callee23$","_context23","_callee27","dmWithLogging","consoleSpy","_renderHook6","_callee27$","_context27","jest","spyOn","console","mockImplementation","_queryFn10","_callee25","_callee25$","_context25","_ref17","_mutationFn6","_callee26","_callee26$","_context26","toHaveBeenCalledWith","any","mockRestore","_callee30","dmNoAutoRollback","_renderHook7","_callee30$","_context30","_queryFn11","_callee28","_callee28$","_context28","_ref19","_mutationFn7","_callee29","_callee29$","_context29","rollbackData","_callee33","dmWithInvalidate","invalidateSpy","_renderHook8","_callee33$","_context33","invalidate","_queryFn12","_callee31","_callee31$","_context31","_ref21","_mutationFn8","_callee32","_callee32$","_context32","toHaveBeenCalled","_callee36","_renderHook9","_callee36$","_context36","_queryFn13","_callee34","_callee34$","_context34","_ref23","_mutationFn9","_callee35","_callee35$","_context35"],"sources":["subscriptions.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {useMutation} from '@tanstack/react-query';\nimport {renderHook, waitFor} from '@testing-library/react';\n\nimport {ClientDataManager} from '../ClientDataManager';\nimport {DataSourceProvider} from '../DataSourceProvider';\n\ndescribe('subscriptions', () => {\n let dataManager: ClientDataManager;\n\n beforeEach(() => {\n dataManager = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n },\n });\n });\n\n afterEach(() => {\n dataManager.queryNormalizer?.unsubscribe();\n dataManager.queryClient.clear();\n });\n\n describe('QueryCache subscription', () => {\n it('should add query to normalizer when added to QueryCache', async () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n dataManager.queryNormalizer!.subscribe();\n\n // Add query with normalize: true option\n await dataManager.queryClient.fetchQuery({\n queryKey: ['users'],\n queryFn: async () => [{id: '1', name: 'User 1'}],\n normalize: true,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n expect(normalized.objects['@@1']).toBeDefined();\n });\n\n it('should update query in normalizer on update', async () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n // Initial data with normalize: true\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Old'}],\n normalize: true,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n const normalizedBefore = dataManager.queryNormalizer!.getNormalizedData();\n const objectCountBefore = Object.keys(normalizedBefore.objects).length;\n\n // Update data\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'New'}],\n normalize: true,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n // Verify that normalized data was updated\n const normalizedAfter = dataManager.queryNormalizer!.getNormalizedData();\n expect(Object.keys(normalizedAfter.objects).length).toBe(objectCountBefore);\n expect(normalizedAfter.queries[JSON.stringify(queryKey)]).toBeDefined();\n });\n\n it('should remove query from normalizer when removed from QueryCache', async () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n // Add query\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'User 1'}],\n normalize: true,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n // Remove query\n dataManager.queryClient.removeQueries({queryKey});\n\n // Give time to process event\n await new Promise((resolve) => setTimeout(resolve, 10));\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n // Query should be removed from queries\n expect(normalized.queries[JSON.stringify(queryKey)]).toBeUndefined();\n });\n\n it('should support meta configuration for queries', async () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n dataManager.queryNormalizer!.subscribe();\n\n // Check that we can use meta for configuration\n // Real check for disabling via meta is already tested in integration tests\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n expect(normalized).toBeDefined();\n expect(normalized.objects).toBeDefined();\n expect(normalized.queries).toBeDefined();\n });\n\n it('should unsubscribe correctly', async () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n dataManager.queryNormalizer!.subscribe();\n dataManager.queryNormalizer!.unsubscribe();\n\n // After unsubscribing, adding query should not affect normalizer\n await dataManager.queryClient.fetchQuery({\n queryKey: ['users'],\n queryFn: async () => [{id: '1', name: 'User 1'}],\n normalize: true,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n expect(Object.keys(normalized.objects)).toHaveLength(0);\n });\n\n it('should allow multiple unsubscribe calls', () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n dataManager.queryNormalizer!.subscribe();\n dataManager.queryNormalizer!.unsubscribe();\n\n // Repeated call should not throw error\n expect(() => dataManager.queryNormalizer!.unsubscribe()).not.toThrow();\n });\n });\n\n describe('MutationCache subscription', () => {\n let dataManagerWithOptimistic: ClientDataManager;\n\n beforeEach(() => {\n dataManagerWithOptimistic = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n optimistic: {\n autoCalculateRollback: true,\n },\n },\n });\n });\n\n afterEach(() => {\n dataManagerWithOptimistic.queryNormalizer?.unsubscribe();\n dataManagerWithOptimistic.queryClient.clear();\n });\n\n it('should update queries on successful mutation', async () => {\n expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();\n\n dataManagerWithOptimistic.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n // Initial data\n await dataManagerWithOptimistic.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Old'}],\n normalize: true,\n } as Parameters<typeof dataManagerWithOptimistic.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n // Create wrapper for hooks\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManagerWithOptimistic}>\n {children}\n </DataSourceProvider>\n );\n\n // Mutation via useMutation\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => ({id: '1', name: 'New'}),\n normalize: true,\n optimistic: true,\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n optimistic: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isSuccess).toBe(true));\n\n const data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('New');\n });\n\n it('should apply optimistic updates', async () => {\n expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();\n\n dataManagerWithOptimistic.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n // Initial data\n await dataManagerWithOptimistic.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Original'}],\n normalize: true,\n } as Parameters<typeof dataManagerWithOptimistic.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManagerWithOptimistic}>\n {children}\n </DataSourceProvider>\n );\n\n // Mutation with optimistic data\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => {\n await new Promise((resolve) => setTimeout(resolve, 50));\n return {id: '1', name: 'Final'};\n },\n onMutate: () => ({\n optimisticData: {id: '1', name: 'Optimistic'},\n }),\n normalize: true,\n optimistic: true,\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n optimistic: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n // Check optimistic data\n await waitFor(() => {\n const data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('Optimistic');\n });\n\n // Wait for mutation to complete\n await waitFor(() => expect(mutationResult.current.isSuccess).toBe(true));\n\n const dataFinal = dataManagerWithOptimistic.queryClient.getQueryData(\n queryKey,\n ) as Array<{\n id: string;\n name: string;\n }>;\n expect(dataFinal[0].name).toBe('Final');\n });\n\n it('should automatically calculate rollbackData', async () => {\n expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();\n\n dataManagerWithOptimistic.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n // Initial data\n await dataManagerWithOptimistic.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Original'}],\n normalize: true,\n } as Parameters<typeof dataManagerWithOptimistic.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManagerWithOptimistic}>\n {children}\n </DataSourceProvider>\n );\n\n // Mutation with optimistic data that will fail\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => {\n await new Promise((resolve) => setTimeout(resolve, 50));\n throw new Error('Mutation failed');\n },\n onMutate: () => ({\n optimisticData: {id: '1', name: 'Optimistic'},\n }),\n normalize: true,\n optimistic: true,\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n optimistic: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isError).toBe(true));\n\n // Data should be rolled back to original\n const data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('Original');\n });\n\n it('should rollback changes on mutation error', async () => {\n expect(dataManagerWithOptimistic.queryNormalizer).toBeDefined();\n\n dataManagerWithOptimistic.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n // Initial data\n await dataManagerWithOptimistic.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Original'}],\n normalize: true,\n } as Parameters<typeof dataManagerWithOptimistic.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManagerWithOptimistic}>\n {children}\n </DataSourceProvider>\n );\n\n // Mutation with error\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => {\n await new Promise((resolve) => setTimeout(resolve, 50));\n throw new Error('Failed');\n },\n onMutate: () => ({\n optimisticData: {id: '1', name: 'Optimistic'},\n }),\n normalize: true,\n optimistic: true,\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n optimistic: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isError).toBe(true));\n\n const data = dataManagerWithOptimistic.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('Original');\n });\n\n it('should ignore mutations with normalize: false', async () => {\n const dmNoNormalize = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n },\n });\n\n expect(dmNoNormalize.queryNormalizer).toBeDefined();\n\n const queryKey = ['users'];\n dmNoNormalize.queryClient.setQueryData(queryKey, [{id: '1', name: 'Original'}]);\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dmNoNormalize}>{children}</DataSourceProvider>\n );\n\n // Mutation should not update data automatically (no normalize option)\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => ({id: '1', name: 'New'}),\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isSuccess).toBe(true));\n\n const data = dmNoNormalize.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('Original'); // Not changed\n });\n\n it('should support devLogging for optimistic updates', async () => {\n const dmWithLogging = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n optimistic: {\n autoCalculateRollback: true,\n devLogging: true,\n },\n },\n });\n\n expect(dmWithLogging.queryNormalizer).toBeDefined();\n\n const consoleSpy = jest.spyOn(console, 'log').mockImplementation();\n\n dmWithLogging.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n await dmWithLogging.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Original'}],\n normalize: true,\n } as Parameters<typeof dmWithLogging.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dmWithLogging}>{children}</DataSourceProvider>\n );\n\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => {\n await new Promise((resolve) => setTimeout(resolve, 50));\n throw new Error('Failed');\n },\n onMutate: () => ({\n optimisticData: {id: '1', name: 'Optimistic'},\n }),\n normalize: true,\n optimistic: true,\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n optimistic: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isError).toBe(true));\n\n // Verify that logging was called\n expect(consoleSpy).toHaveBeenCalledWith(\n '[OptimisticUpdate] Auto-calculated rollbackData:',\n expect.any(Object),\n );\n expect(consoleSpy).toHaveBeenCalledWith('[OptimisticUpdate] Rolling back changes');\n\n consoleSpy.mockRestore();\n });\n\n it('should support manual rollbackData', async () => {\n const dmNoAutoRollback = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n optimistic: {\n autoCalculateRollback: false,\n },\n },\n });\n\n expect(dmNoAutoRollback.queryNormalizer).toBeDefined();\n\n dmNoAutoRollback.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n await dmNoAutoRollback.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Original'}],\n normalize: true,\n } as Parameters<typeof dmNoAutoRollback.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dmNoAutoRollback}>{children}</DataSourceProvider>\n );\n\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => {\n await new Promise((resolve) => setTimeout(resolve, 50));\n throw new Error('Failed');\n },\n onMutate: () => ({\n optimisticData: {id: '1', name: 'Optimistic'},\n rollbackData: {id: '1', name: 'Manual Rollback'},\n }),\n normalize: true,\n optimistic: true,\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n optimistic: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isError).toBe(true));\n\n const data = dmNoAutoRollback.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('Manual Rollback');\n\n dmNoAutoRollback.queryNormalizer!.unsubscribe();\n dmNoAutoRollback.queryClient.clear();\n });\n\n it('should invalidate queries when invalidate option is enabled', async () => {\n const dmWithInvalidate = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n invalidate: true,\n },\n });\n\n expect(dmWithInvalidate.queryNormalizer).toBeDefined();\n\n dmWithInvalidate.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n // Initial data\n await dmWithInvalidate.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Original'}],\n });\n\n // Spy on invalidateQueries\n const invalidateSpy = jest.spyOn(dmWithInvalidate.queryClient, 'invalidateQueries');\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dmWithInvalidate}>{children}</DataSourceProvider>\n );\n\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => ({id: '1', name: 'Updated'}),\n normalize: true,\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isSuccess).toBe(true));\n\n // Verify that invalidateQueries was called\n expect(invalidateSpy).toHaveBeenCalled();\n\n invalidateSpy.mockRestore();\n dmWithInvalidate.queryNormalizer!.unsubscribe();\n dmWithInvalidate.queryClient.clear();\n });\n\n it('should not invalidate queries when invalidate: false is set on mutation', async () => {\n const dmWithInvalidate = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n invalidate: true, // Globally enabled\n },\n });\n\n expect(dmWithInvalidate.queryNormalizer).toBeDefined();\n\n dmWithInvalidate.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n await dmWithInvalidate.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'Original'}],\n });\n\n const invalidateSpy = jest.spyOn(dmWithInvalidate.queryClient, 'invalidateQueries');\n\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dmWithInvalidate}>{children}</DataSourceProvider>\n );\n\n const {result: mutationResult} = renderHook(\n () =>\n useMutation({\n mutationFn: async () => ({id: '1', name: 'Updated'}),\n normalize: true,\n invalidate: false, // Disable for this mutation\n } as Parameters<typeof useMutation>[0] & {\n normalize: boolean;\n invalidate: boolean;\n }),\n {wrapper},\n );\n\n mutationResult.current.mutate(undefined);\n\n await waitFor(() => expect(mutationResult.current.isSuccess).toBe(true));\n\n // Verify that invalidateQueries was NOT called\n expect(invalidateSpy).not.toHaveBeenCalled();\n\n invalidateSpy.mockRestore();\n dmWithInvalidate.queryNormalizer!.unsubscribe();\n dmWithInvalidate.queryClient.clear();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,511 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/regeneratorRuntime";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import React from 'react';
4
+ import { renderHook, waitFor } from '@testing-library/react';
5
+ import { ClientDataManager } from '../ClientDataManager';
6
+ import { DataSourceProvider } from '../DataSourceProvider';
7
+ import { useQueryData } from '../hooks/useQueryData';
8
+ import { makePlainQueryDataSource } from '../impl/plain/factory';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ describe('Normalization Configuration Integration', function () {
11
+ var queryClient;
12
+ var dataManager;
13
+ beforeEach(function () {
14
+ dataManager = new ClientDataManager({
15
+ normalizerConfig: {
16
+ devLogging: false
17
+ }
18
+ });
19
+ queryClient = dataManager.queryClient;
20
+ });
21
+ afterEach(function () {
22
+ var _dataManager$queryNor;
23
+ (_dataManager$queryNor = dataManager.queryNormalizer) === null || _dataManager$queryNor === void 0 || _dataManager$queryNor.unsubscribe();
24
+ queryClient.clear();
25
+ });
26
+ describe('ClientDataManager configuration', function () {
27
+ it('should use custom getNormalizationObjectKey from config', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
28
+ var customGetKey, customDataManager, queryKey, normalized;
29
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
30
+ while (1) switch (_context2.prev = _context2.next) {
31
+ case 0:
32
+ customGetKey = jest.fn(function (obj) {
33
+ return "custom:".concat(obj.id);
34
+ });
35
+ customDataManager = new ClientDataManager({
36
+ normalizerConfig: {
37
+ getNormalizationObjectKey: customGetKey,
38
+ devLogging: false
39
+ }
40
+ });
41
+ customDataManager.queryNormalizer.subscribe();
42
+ queryKey = ['users'];
43
+ _context2.next = 6;
44
+ return customDataManager.queryClient.fetchQuery({
45
+ queryKey: queryKey,
46
+ queryFn: function () {
47
+ var _queryFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
48
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
49
+ while (1) switch (_context.prev = _context.next) {
50
+ case 0:
51
+ return _context.abrupt("return", [{
52
+ id: '1',
53
+ name: 'User 1'
54
+ }]);
55
+ case 1:
56
+ case "end":
57
+ return _context.stop();
58
+ }
59
+ }, _callee);
60
+ }));
61
+ function queryFn() {
62
+ return _queryFn.apply(this, arguments);
63
+ }
64
+ return queryFn;
65
+ }(),
66
+ normalize: true
67
+ });
68
+ case 6:
69
+ normalized = customDataManager.queryNormalizer.getNormalizedData();
70
+ expect(normalized.objects['@@custom:1']).toBeDefined();
71
+ expect(customGetKey).toHaveBeenCalled();
72
+ customDataManager.queryNormalizer.unsubscribe();
73
+ customDataManager.queryClient.clear();
74
+ case 11:
75
+ case "end":
76
+ return _context2.stop();
77
+ }
78
+ }, _callee2);
79
+ })));
80
+ it('should use custom getArrayType from config', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
81
+ var customGetArrayType, customDataManager, queryKey;
82
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
83
+ while (1) switch (_context4.prev = _context4.next) {
84
+ case 0:
85
+ customGetArrayType = jest.fn(function (_ref3) {
86
+ var arrayKey = _ref3.arrayKey;
87
+ return "custom:".concat(arrayKey);
88
+ });
89
+ customDataManager = new ClientDataManager({
90
+ normalizerConfig: {
91
+ getArrayType: customGetArrayType,
92
+ devLogging: false
93
+ }
94
+ });
95
+ customDataManager.queryNormalizer.subscribe();
96
+ queryKey = ['items'];
97
+ _context4.next = 6;
98
+ return customDataManager.queryClient.fetchQuery({
99
+ queryKey: queryKey,
100
+ queryFn: function () {
101
+ var _queryFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
102
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
103
+ while (1) switch (_context3.prev = _context3.next) {
104
+ case 0:
105
+ return _context3.abrupt("return", {
106
+ items: [{
107
+ id: '1',
108
+ name: 'Item 1'
109
+ }]
110
+ });
111
+ case 1:
112
+ case "end":
113
+ return _context3.stop();
114
+ }
115
+ }, _callee3);
116
+ }));
117
+ function queryFn() {
118
+ return _queryFn2.apply(this, arguments);
119
+ }
120
+ return queryFn;
121
+ }(),
122
+ normalize: true
123
+ });
124
+ case 6:
125
+ expect(customGetArrayType).toHaveBeenCalled();
126
+ customDataManager.queryNormalizer.unsubscribe();
127
+ customDataManager.queryClient.clear();
128
+ case 9:
129
+ case "end":
130
+ return _context4.stop();
131
+ }
132
+ }, _callee4);
133
+ })));
134
+ });
135
+ describe('Query-level normalization control', function () {
136
+ it('should normalize when query has normalize: true', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
137
+ var queryKey, normalized;
138
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
139
+ while (1) switch (_context6.prev = _context6.next) {
140
+ case 0:
141
+ dataManager.queryNormalizer.subscribe();
142
+ queryKey = ['users-normalized'];
143
+ _context6.next = 4;
144
+ return dataManager.queryClient.fetchQuery({
145
+ queryKey: queryKey,
146
+ queryFn: function () {
147
+ var _queryFn3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
148
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
149
+ while (1) switch (_context5.prev = _context5.next) {
150
+ case 0:
151
+ return _context5.abrupt("return", [{
152
+ id: '1',
153
+ name: 'User 1'
154
+ }]);
155
+ case 1:
156
+ case "end":
157
+ return _context5.stop();
158
+ }
159
+ }, _callee5);
160
+ }));
161
+ function queryFn() {
162
+ return _queryFn3.apply(this, arguments);
163
+ }
164
+ return queryFn;
165
+ }(),
166
+ normalize: true
167
+ });
168
+ case 4:
169
+ normalized = dataManager.queryNormalizer.getNormalizedData(); // Data SHOULD be normalized
170
+ expect(normalized.objects['@@1']).toBeDefined();
171
+ case 6:
172
+ case "end":
173
+ return _context6.stop();
174
+ }
175
+ }, _callee6);
176
+ })));
177
+ it('should NOT normalize when query has normalize: false', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
178
+ var queryKey, normalized;
179
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
180
+ while (1) switch (_context8.prev = _context8.next) {
181
+ case 0:
182
+ dataManager.queryNormalizer.subscribe();
183
+ queryKey = ['users-not-normalized'];
184
+ _context8.next = 4;
185
+ return dataManager.queryClient.fetchQuery({
186
+ queryKey: queryKey,
187
+ queryFn: function () {
188
+ var _queryFn4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
189
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
190
+ while (1) switch (_context7.prev = _context7.next) {
191
+ case 0:
192
+ return _context7.abrupt("return", [{
193
+ id: '2',
194
+ name: 'User 2'
195
+ }]);
196
+ case 1:
197
+ case "end":
198
+ return _context7.stop();
199
+ }
200
+ }, _callee7);
201
+ }));
202
+ function queryFn() {
203
+ return _queryFn4.apply(this, arguments);
204
+ }
205
+ return queryFn;
206
+ }(),
207
+ normalize: false
208
+ });
209
+ case 4:
210
+ normalized = dataManager.queryNormalizer.getNormalizedData(); // Data should NOT be normalized
211
+ expect(normalized.objects['@@2']).toBeUndefined();
212
+ case 6:
213
+ case "end":
214
+ return _context8.stop();
215
+ }
216
+ }, _callee8);
217
+ })));
218
+ it('should normalize by default when normalize option is not provided', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
219
+ var queryKey, normalized;
220
+ return _regeneratorRuntime().wrap(function _callee10$(_context10) {
221
+ while (1) switch (_context10.prev = _context10.next) {
222
+ case 0:
223
+ dataManager.queryNormalizer.subscribe();
224
+ queryKey = ['users-default'];
225
+ _context10.next = 4;
226
+ return dataManager.queryClient.fetchQuery({
227
+ queryKey: queryKey,
228
+ queryFn: function () {
229
+ var _queryFn5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
230
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
231
+ while (1) switch (_context9.prev = _context9.next) {
232
+ case 0:
233
+ return _context9.abrupt("return", [{
234
+ id: '3',
235
+ name: 'User 3'
236
+ }]);
237
+ case 1:
238
+ case "end":
239
+ return _context9.stop();
240
+ }
241
+ }, _callee9);
242
+ }));
243
+ function queryFn() {
244
+ return _queryFn5.apply(this, arguments);
245
+ }
246
+ return queryFn;
247
+ }()
248
+ });
249
+ case 4:
250
+ normalized = dataManager.queryNormalizer.getNormalizedData(); // Data SHOULD be normalized (default behavior is now true)
251
+ expect(normalized.objects['@@3']).toBeDefined();
252
+ case 6:
253
+ case "end":
254
+ return _context10.stop();
255
+ }
256
+ }, _callee10);
257
+ })));
258
+ });
259
+ describe('DataSourceProvider integration', function () {
260
+ it('should auto-subscribe queryNormalizer on mount', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {
261
+ var wrapper, dataSource, _renderHook, result, normalized;
262
+ return _regeneratorRuntime().wrap(function _callee12$(_context12) {
263
+ while (1) switch (_context12.prev = _context12.next) {
264
+ case 0:
265
+ wrapper = function wrapper(_ref8) {
266
+ var children = _ref8.children;
267
+ return /*#__PURE__*/_jsx(DataSourceProvider, {
268
+ dataManager: dataManager,
269
+ children: children
270
+ });
271
+ };
272
+ dataSource = makePlainQueryDataSource({
273
+ name: 'users',
274
+ fetch: function () {
275
+ var _fetch = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
276
+ return _regeneratorRuntime().wrap(function _callee11$(_context11) {
277
+ while (1) switch (_context11.prev = _context11.next) {
278
+ case 0:
279
+ return _context11.abrupt("return", [{
280
+ id: '1',
281
+ name: 'User 1'
282
+ }]);
283
+ case 1:
284
+ case "end":
285
+ return _context11.stop();
286
+ }
287
+ }, _callee11);
288
+ }));
289
+ function fetch() {
290
+ return _fetch.apply(this, arguments);
291
+ }
292
+ return fetch;
293
+ }(),
294
+ options: {
295
+ normalize: true
296
+ }
297
+ });
298
+ _renderHook = renderHook(function () {
299
+ return useQueryData(dataSource, {});
300
+ }, {
301
+ wrapper: wrapper
302
+ }), result = _renderHook.result;
303
+ _context12.next = 5;
304
+ return waitFor(function () {
305
+ return expect(result.current.status).toBe('success');
306
+ });
307
+ case 5:
308
+ normalized = dataManager.queryNormalizer.getNormalizedData(); // Data should be normalized because DataSourceProvider subscribes automatically
309
+ expect(normalized.objects['@@1']).toBeDefined();
310
+ case 7:
311
+ case "end":
312
+ return _context12.stop();
313
+ }
314
+ }, _callee12);
315
+ })));
316
+ it('should work with multiple queries', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
317
+ var wrapper, dataSource1, dataSource2, _renderHook2, result1, _renderHook3, result2, normalized;
318
+ return _regeneratorRuntime().wrap(function _callee15$(_context15) {
319
+ while (1) switch (_context15.prev = _context15.next) {
320
+ case 0:
321
+ wrapper = function wrapper(_ref10) {
322
+ var children = _ref10.children;
323
+ return /*#__PURE__*/_jsx(DataSourceProvider, {
324
+ dataManager: dataManager,
325
+ children: children
326
+ });
327
+ };
328
+ dataSource1 = makePlainQueryDataSource({
329
+ name: 'users',
330
+ fetch: function () {
331
+ var _fetch2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {
332
+ return _regeneratorRuntime().wrap(function _callee13$(_context13) {
333
+ while (1) switch (_context13.prev = _context13.next) {
334
+ case 0:
335
+ return _context13.abrupt("return", [{
336
+ id: '1',
337
+ name: 'User 1'
338
+ }]);
339
+ case 1:
340
+ case "end":
341
+ return _context13.stop();
342
+ }
343
+ }, _callee13);
344
+ }));
345
+ function fetch() {
346
+ return _fetch2.apply(this, arguments);
347
+ }
348
+ return fetch;
349
+ }(),
350
+ options: {
351
+ normalize: true
352
+ }
353
+ });
354
+ dataSource2 = makePlainQueryDataSource({
355
+ name: 'posts',
356
+ fetch: function () {
357
+ var _fetch3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {
358
+ return _regeneratorRuntime().wrap(function _callee14$(_context14) {
359
+ while (1) switch (_context14.prev = _context14.next) {
360
+ case 0:
361
+ return _context14.abrupt("return", [{
362
+ id: '2',
363
+ title: 'Post 1'
364
+ }]);
365
+ case 1:
366
+ case "end":
367
+ return _context14.stop();
368
+ }
369
+ }, _callee14);
370
+ }));
371
+ function fetch() {
372
+ return _fetch3.apply(this, arguments);
373
+ }
374
+ return fetch;
375
+ }(),
376
+ options: {
377
+ normalize: true
378
+ }
379
+ });
380
+ _renderHook2 = renderHook(function () {
381
+ return useQueryData(dataSource1, {});
382
+ }, {
383
+ wrapper: wrapper
384
+ }), result1 = _renderHook2.result;
385
+ _renderHook3 = renderHook(function () {
386
+ return useQueryData(dataSource2, {});
387
+ }, {
388
+ wrapper: wrapper
389
+ }), result2 = _renderHook3.result;
390
+ _context15.next = 7;
391
+ return waitFor(function () {
392
+ expect(result1.current.status).toBe('success');
393
+ expect(result2.current.status).toBe('success');
394
+ });
395
+ case 7:
396
+ normalized = dataManager.queryNormalizer.getNormalizedData();
397
+ expect(normalized.objects['@@1']).toBeDefined();
398
+ expect(normalized.objects['@@2']).toBeDefined();
399
+ case 10:
400
+ case "end":
401
+ return _context15.stop();
402
+ }
403
+ }, _callee15);
404
+ })));
405
+ });
406
+ describe('Optimistic updates configuration', function () {
407
+ it('should enable optimistic updates when configured', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {
408
+ var dmWithOptimistic, queryKey, initialData, data;
409
+ return _regeneratorRuntime().wrap(function _callee16$(_context16) {
410
+ while (1) switch (_context16.prev = _context16.next) {
411
+ case 0:
412
+ dmWithOptimistic = new ClientDataManager({
413
+ normalizerConfig: {
414
+ devLogging: false,
415
+ optimistic: true
416
+ }
417
+ });
418
+ expect(dmWithOptimistic.queryNormalizer).toBeDefined();
419
+ dmWithOptimistic.queryNormalizer.subscribe();
420
+ queryKey = ['users'];
421
+ initialData = [{
422
+ id: '1',
423
+ name: 'Old'
424
+ }];
425
+ dmWithOptimistic.queryClient.setQueryData(queryKey, initialData);
426
+ dmWithOptimistic.normalizer.setQuery(JSON.stringify(queryKey), initialData);
427
+
428
+ // Manual optimistic update via setNormalizedData
429
+ dmWithOptimistic.queryNormalizer.setNormalizedData({
430
+ id: '1',
431
+ name: 'New'
432
+ });
433
+ data = dmWithOptimistic.queryClient.getQueryData(queryKey);
434
+ expect(data[0].name).toBe('New');
435
+ dmWithOptimistic.queryNormalizer.unsubscribe();
436
+ dmWithOptimistic.queryClient.clear();
437
+ case 12:
438
+ case "end":
439
+ return _context16.stop();
440
+ }
441
+ }, _callee16);
442
+ })));
443
+ it('should work with optimistic config object', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {
444
+ var dmWithOptimisticConfig;
445
+ return _regeneratorRuntime().wrap(function _callee17$(_context17) {
446
+ while (1) switch (_context17.prev = _context17.next) {
447
+ case 0:
448
+ dmWithOptimisticConfig = new ClientDataManager({
449
+ normalizerConfig: {
450
+ devLogging: false,
451
+ optimistic: {
452
+ autoCalculateRollback: true,
453
+ devLogging: false
454
+ }
455
+ }
456
+ });
457
+ expect(dmWithOptimisticConfig.queryNormalizer).toBeDefined();
458
+ expect(dmWithOptimisticConfig.normalizer).toBeDefined();
459
+ dmWithOptimisticConfig.queryClient.clear();
460
+ case 4:
461
+ case "end":
462
+ return _context17.stop();
463
+ }
464
+ }, _callee17);
465
+ })));
466
+ });
467
+ describe('Invalidate configuration', function () {
468
+ it('should support invalidate option in global config', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {
469
+ var dmWithInvalidate;
470
+ return _regeneratorRuntime().wrap(function _callee18$(_context18) {
471
+ while (1) switch (_context18.prev = _context18.next) {
472
+ case 0:
473
+ dmWithInvalidate = new ClientDataManager({
474
+ normalizerConfig: {
475
+ devLogging: false,
476
+ invalidate: true
477
+ }
478
+ });
479
+ expect(dmWithInvalidate.queryNormalizer).toBeDefined();
480
+ expect(dmWithInvalidate.normalizer).toBeDefined();
481
+ dmWithInvalidate.queryClient.clear();
482
+ case 4:
483
+ case "end":
484
+ return _context18.stop();
485
+ }
486
+ }, _callee18);
487
+ })));
488
+ it('should support both optimistic and invalidate options', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {
489
+ var dmWithBoth;
490
+ return _regeneratorRuntime().wrap(function _callee19$(_context19) {
491
+ while (1) switch (_context19.prev = _context19.next) {
492
+ case 0:
493
+ dmWithBoth = new ClientDataManager({
494
+ normalizerConfig: {
495
+ devLogging: false,
496
+ optimistic: true,
497
+ invalidate: true
498
+ }
499
+ });
500
+ expect(dmWithBoth.queryNormalizer).toBeDefined();
501
+ expect(dmWithBoth.normalizer).toBeDefined();
502
+ dmWithBoth.queryClient.clear();
503
+ case 4:
504
+ case "end":
505
+ return _context19.stop();
506
+ }
507
+ }, _callee19);
508
+ })));
509
+ });
510
+ });
511
+ // #sourceMappingURL=threeLevelIntegration.test.js.map