@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.
- package/README.md +752 -15
- package/build/cjs/core/index.d.ts +3 -1
- package/build/cjs/core/index.js +7 -0
- package/build/cjs/core/index.js.map +1 -1
- package/build/cjs/core/types/DataManager.d.ts +5 -0
- package/build/cjs/core/types/DataManager.js.map +1 -1
- package/build/cjs/core/types/DataSource.d.ts +15 -19
- package/build/cjs/core/types/DataSource.js.map +1 -1
- package/build/cjs/core/types/Normalizer.d.ts +29 -0
- package/build/cjs/core/types/Normalizer.js +6 -0
- package/build/cjs/core/types/Normalizer.js.map +1 -0
- package/build/cjs/core/utils/__tests__/composeFullKey.test.js +34 -0
- package/build/cjs/core/utils/__tests__/composeFullKey.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/composeKey.test.js +32 -0
- package/build/cjs/core/utils/__tests__/composeKey.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/getError.test.js +31 -0
- package/build/cjs/core/utils/__tests__/getError.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/getStatus.test.js +49 -0
- package/build/cjs/core/utils/__tests__/getStatus.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/hasTag.test.js +31 -0
- package/build/cjs/core/utils/__tests__/hasTag.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/mergeStatuses.test.js +25 -0
- package/build/cjs/core/utils/__tests__/mergeStatuses.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/skipContext.test.js +70 -0
- package/build/cjs/core/utils/__tests__/skipContext.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/withCancellation.test.js +106 -0
- package/build/cjs/core/utils/__tests__/withCancellation.test.js.map +1 -0
- package/build/cjs/core/utils/__tests__/withCatch.test.js +208 -0
- package/build/cjs/core/utils/__tests__/withCatch.test.js.map +1 -0
- package/build/cjs/core/utils/withCatch.d.ts +26 -0
- package/build/cjs/core/utils/withCatch.js +37 -0
- package/build/cjs/core/utils/withCatch.js.map +1 -0
- package/build/cjs/react/DataManagerProvider.d.ts +7 -0
- package/build/cjs/react/DataManagerProvider.js +19 -0
- package/build/cjs/react/DataManagerProvider.js.map +1 -0
- package/build/cjs/react/__tests__/DataManagerContext.test.js +47 -0
- package/build/cjs/react/__tests__/DataManagerContext.test.js.map +1 -0
- package/build/cjs/react/__tests__/withDataManager.test.js +61 -0
- package/build/cjs/react/__tests__/withDataManager.test.js.map +1 -0
- package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +187 -0
- package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +1 -0
- package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js +119 -0
- package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js.map +1 -0
- package/build/cjs/react/index.d.ts +2 -0
- package/build/cjs/react/index.js +8 -0
- package/build/cjs/react/index.js.map +1 -1
- package/build/cjs/react/withDataManager.d.ts +1 -1
- package/build/cjs/react/withDataManager.js +3 -3
- package/build/cjs/react/withDataManager.js.map +1 -1
- package/build/cjs/react-query/ClientDataManager.d.ts +11 -2
- package/build/cjs/react-query/ClientDataManager.js +76 -9
- package/build/cjs/react-query/ClientDataManager.js.map +1 -1
- package/build/cjs/react-query/DataSourceProvider.d.ts +7 -0
- package/build/cjs/react-query/DataSourceProvider.js +35 -0
- package/build/cjs/react-query/DataSourceProvider.js.map +1 -0
- package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js +177 -0
- package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
- package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js +100 -0
- package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
- package/build/cjs/react-query/__tests__/subscriptions.test.js +1180 -0
- package/build/cjs/react-query/__tests__/subscriptions.test.js.map +1 -0
- package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +514 -0
- package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
- package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js +229 -0
- package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
- package/build/cjs/react-query/constants.d.ts +2 -0
- package/build/cjs/react-query/constants.js +9 -0
- package/build/cjs/react-query/constants.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js +55 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js +195 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js +97 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js +77 -0
- package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js +79 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js +117 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js.map +1 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js +156 -0
- package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js.map +1 -0
- package/build/cjs/react-query/hooks/useRefetchInterval.d.ts +1 -1
- package/build/cjs/react-query/impl/infinite/factory.d.ts +1 -1
- package/build/cjs/react-query/impl/infinite/factory.js.map +1 -1
- package/build/cjs/react-query/impl/infinite/hooks.js +4 -1
- package/build/cjs/react-query/impl/infinite/hooks.js.map +1 -1
- package/build/cjs/react-query/impl/infinite/types.d.ts +9 -9
- package/build/cjs/react-query/impl/infinite/types.js.map +1 -1
- package/build/cjs/react-query/impl/infinite/utils.js +11 -22
- package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
- package/build/cjs/react-query/impl/plain/factory.d.ts +1 -1
- package/build/cjs/react-query/impl/plain/factory.js.map +1 -1
- package/build/cjs/react-query/impl/plain/hooks.js +4 -1
- package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
- package/build/cjs/react-query/impl/plain/types.d.ts +6 -6
- package/build/cjs/react-query/impl/plain/types.js.map +1 -1
- package/build/cjs/react-query/impl/plain/utils.js +12 -23
- package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
- package/build/cjs/react-query/index.d.ts +2 -0
- package/build/cjs/react-query/index.js +7 -0
- package/build/cjs/react-query/index.js.map +1 -1
- package/build/cjs/react-query/types/normalizer.d.ts +21 -0
- package/build/cjs/react-query/types/normalizer.js +6 -0
- package/build/cjs/react-query/types/normalizer.js.map +1 -0
- package/build/cjs/react-query/types/options.d.ts +12 -0
- package/build/cjs/react-query/types/options.js.map +1 -1
- package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js +27 -0
- package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js +76 -0
- package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js +30 -0
- package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/notReachable.test.js +35 -0
- package/build/cjs/react-query/utils/__tests__/notReachable.test.js.map +1 -0
- package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js +27 -0
- package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js.map +1 -0
- package/build/cjs/react-query/utils/formatNullableValue.d.ts +2 -0
- package/build/cjs/react-query/utils/formatNullableValue.js +17 -0
- package/build/cjs/react-query/utils/formatNullableValue.js.map +1 -0
- package/build/cjs/react-query/utils/getProgressiveRefetch.d.ts +2 -2
- package/build/cjs/react-query/utils/normalize.d.ts +22 -0
- package/build/cjs/react-query/utils/normalize.js +150 -0
- package/build/cjs/react-query/utils/normalize.js.map +1 -0
- package/build/cjs/react-query/utils/parseNullableValue.d.ts +2 -0
- package/build/cjs/react-query/utils/parseNullableValue.js +17 -0
- package/build/cjs/react-query/utils/parseNullableValue.js.map +1 -0
- package/build/cjs/react-query/utils/warn.d.ts +1 -0
- package/build/cjs/react-query/utils/warn.js +15 -0
- package/build/cjs/react-query/utils/warn.js.map +1 -0
- package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
- package/build/cjs/react-query/utils/warnDisabledRefetch.js +11 -0
- package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
- package/build/cjs/setupTests.d.ts +1 -0
- package/build/cjs/setupTests.js +4 -0
- package/build/cjs/setupTests.js.map +1 -0
- package/build/esm/core/index.d.ts +3 -1
- package/build/esm/core/index.js +1 -0
- package/build/esm/core/index.js.map +1 -1
- package/build/esm/core/types/DataManager.d.ts +5 -0
- package/build/esm/core/types/DataManager.js.map +1 -1
- package/build/esm/core/types/DataSource.d.ts +15 -19
- package/build/esm/core/types/DataSource.js.map +1 -1
- package/build/esm/core/types/Normalizer.d.ts +29 -0
- package/build/esm/core/types/Normalizer.js +2 -0
- package/build/esm/core/types/Normalizer.js.map +1 -0
- package/build/esm/core/utils/__tests__/composeFullKey.test.js +32 -0
- package/build/esm/core/utils/__tests__/composeFullKey.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/composeKey.test.js +30 -0
- package/build/esm/core/utils/__tests__/composeKey.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/getError.test.js +29 -0
- package/build/esm/core/utils/__tests__/getError.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/getStatus.test.js +47 -0
- package/build/esm/core/utils/__tests__/getStatus.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/hasTag.test.js +29 -0
- package/build/esm/core/utils/__tests__/hasTag.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/mergeStatuses.test.js +23 -0
- package/build/esm/core/utils/__tests__/mergeStatuses.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/skipContext.test.js +67 -0
- package/build/esm/core/utils/__tests__/skipContext.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/withCancellation.test.js +104 -0
- package/build/esm/core/utils/__tests__/withCancellation.test.js.map +1 -0
- package/build/esm/core/utils/__tests__/withCatch.test.js +205 -0
- package/build/esm/core/utils/__tests__/withCatch.test.js.map +1 -0
- package/build/esm/core/utils/withCatch.d.ts +26 -0
- package/build/esm/core/utils/withCatch.js +31 -0
- package/build/esm/core/utils/withCatch.js.map +1 -0
- package/build/esm/react/DataManagerProvider.d.ts +7 -0
- package/build/esm/react/DataManagerProvider.js +12 -0
- package/build/esm/react/DataManagerProvider.js.map +1 -0
- package/build/esm/react/__tests__/DataManagerContext.test.js +44 -0
- package/build/esm/react/__tests__/DataManagerContext.test.js.map +1 -0
- package/build/esm/react/__tests__/withDataManager.test.js +58 -0
- package/build/esm/react/__tests__/withDataManager.test.js.map +1 -0
- package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +184 -0
- package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +1 -0
- package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js +116 -0
- package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js.map +1 -0
- package/build/esm/react/index.d.ts +2 -0
- package/build/esm/react/index.js +1 -0
- package/build/esm/react/index.js.map +1 -1
- package/build/esm/react/withDataManager.d.ts +1 -1
- package/build/esm/react/withDataManager.js +3 -3
- package/build/esm/react/withDataManager.js.map +1 -1
- package/build/esm/react-query/ClientDataManager.d.ts +11 -2
- package/build/esm/react-query/ClientDataManager.js +70 -3
- package/build/esm/react-query/ClientDataManager.js.map +1 -1
- package/build/esm/react-query/DataSourceProvider.d.ts +7 -0
- package/build/esm/react-query/DataSourceProvider.js +28 -0
- package/build/esm/react-query/DataSourceProvider.js.map +1 -0
- package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +174 -0
- package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
- package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +98 -0
- package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
- package/build/esm/react-query/__tests__/subscriptions.test.js +1176 -0
- package/build/esm/react-query/__tests__/subscriptions.test.js.map +1 -0
- package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +511 -0
- package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
- package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +227 -0
- package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
- package/build/esm/react-query/constants.d.ts +2 -0
- package/build/esm/react-query/constants.js +3 -0
- package/build/esm/react-query/constants.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js +52 -0
- package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +192 -0
- package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useQueryData.test.js +95 -0
- package/build/esm/react-query/hooks/__tests__/useQueryData.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js +74 -0
- package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js +77 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js +115 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js.map +1 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js +154 -0
- package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js.map +1 -0
- package/build/esm/react-query/hooks/useRefetchInterval.d.ts +1 -1
- package/build/esm/react-query/impl/infinite/factory.d.ts +1 -1
- package/build/esm/react-query/impl/infinite/factory.js.map +1 -1
- package/build/esm/react-query/impl/infinite/hooks.js +5 -2
- package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
- package/build/esm/react-query/impl/infinite/types.d.ts +9 -9
- package/build/esm/react-query/impl/infinite/types.js.map +1 -1
- package/build/esm/react-query/impl/infinite/utils.js +9 -20
- package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
- package/build/esm/react-query/impl/plain/factory.d.ts +1 -1
- package/build/esm/react-query/impl/plain/factory.js.map +1 -1
- package/build/esm/react-query/impl/plain/hooks.js +5 -2
- package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
- package/build/esm/react-query/impl/plain/types.d.ts +6 -6
- package/build/esm/react-query/impl/plain/types.js.map +1 -1
- package/build/esm/react-query/impl/plain/utils.js +10 -21
- package/build/esm/react-query/impl/plain/utils.js.map +1 -1
- package/build/esm/react-query/index.d.ts +2 -0
- package/build/esm/react-query/index.js +1 -0
- package/build/esm/react-query/index.js.map +1 -1
- package/build/esm/react-query/types/normalizer.d.ts +21 -0
- package/build/esm/react-query/types/normalizer.js +2 -0
- package/build/esm/react-query/types/normalizer.js.map +1 -0
- package/build/esm/react-query/types/options.d.ts +12 -0
- package/build/esm/react-query/types/options.js.map +1 -1
- package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js +25 -0
- package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js +74 -0
- package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js +28 -0
- package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/notReachable.test.js +33 -0
- package/build/esm/react-query/utils/__tests__/notReachable.test.js.map +1 -0
- package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js +25 -0
- package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js.map +1 -0
- package/build/esm/react-query/utils/formatNullableValue.d.ts +2 -0
- package/build/esm/react-query/utils/formatNullableValue.js +11 -0
- package/build/esm/react-query/utils/formatNullableValue.js.map +1 -0
- package/build/esm/react-query/utils/getProgressiveRefetch.d.ts +2 -2
- package/build/esm/react-query/utils/normalize.d.ts +22 -0
- package/build/esm/react-query/utils/normalize.js +143 -0
- package/build/esm/react-query/utils/normalize.js.map +1 -0
- package/build/esm/react-query/utils/parseNullableValue.d.ts +2 -0
- package/build/esm/react-query/utils/parseNullableValue.js +11 -0
- package/build/esm/react-query/utils/parseNullableValue.js.map +1 -0
- package/build/esm/react-query/utils/warn.d.ts +1 -0
- package/build/esm/react-query/utils/warn.js +9 -0
- package/build/esm/react-query/utils/warn.js.map +1 -0
- package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
- package/build/esm/react-query/utils/warnDisabledRefetch.js +5 -0
- package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
- package/build/esm/setupTests.d.ts +1 -0
- package/build/esm/setupTests.js +2 -0
- package/build/esm/setupTests.js.map +1 -0
- package/package.json +18 -13
- package/build/cjs/react-query/impl/utils.d.ts +0 -4
- package/build/cjs/react-query/impl/utils.js +0 -27
- package/build/cjs/react-query/impl/utils.js.map +0 -1
- package/build/esm/react-query/impl/utils.d.ts +0 -4
- package/build/esm/react-query/impl/utils.js +0 -21
- 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
|