@gravity-ui/data-source 0.7.0 → 0.8.1

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 (148) hide show
  1. package/README.md +752 -15
  2. package/build/cjs/core/index.d.ts +1 -0
  3. package/build/cjs/core/index.js.map +1 -1
  4. package/build/cjs/core/types/DataManager.d.ts +5 -0
  5. package/build/cjs/core/types/DataManager.js.map +1 -1
  6. package/build/cjs/core/types/Normalizer.d.ts +29 -0
  7. package/build/cjs/core/types/Normalizer.js +6 -0
  8. package/build/cjs/core/types/Normalizer.js.map +1 -0
  9. package/build/cjs/react/DataManagerProvider.d.ts +7 -0
  10. package/build/cjs/react/DataManagerProvider.js +19 -0
  11. package/build/cjs/react/DataManagerProvider.js.map +1 -0
  12. package/build/cjs/react/__tests__/DataManagerContext.test.js +7 -6
  13. package/build/cjs/react/__tests__/DataManagerContext.test.js.map +1 -1
  14. package/build/cjs/react/__tests__/withDataManager.test.js +3 -0
  15. package/build/cjs/react/__tests__/withDataManager.test.js.map +1 -1
  16. package/build/cjs/react/index.d.ts +2 -0
  17. package/build/cjs/react/index.js +8 -0
  18. package/build/cjs/react/index.js.map +1 -1
  19. package/build/cjs/react-query/ClientDataManager.d.ts +16 -3
  20. package/build/cjs/react-query/ClientDataManager.js +158 -13
  21. package/build/cjs/react-query/ClientDataManager.js.map +1 -1
  22. package/build/cjs/react-query/DataSourceProvider.d.ts +7 -0
  23. package/build/cjs/react-query/DataSourceProvider.js +35 -0
  24. package/build/cjs/react-query/DataSourceProvider.js.map +1 -0
  25. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js +177 -0
  26. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  27. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js +100 -0
  28. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  29. package/build/cjs/react-query/__tests__/subscriptions.test.js +1180 -0
  30. package/build/cjs/react-query/__tests__/subscriptions.test.js.map +1 -0
  31. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +659 -0
  32. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  33. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js +229 -0
  34. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  35. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js +195 -0
  36. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  37. package/build/cjs/react-query/impl/infinite/hooks.js +4 -1
  38. package/build/cjs/react-query/impl/infinite/hooks.js.map +1 -1
  39. package/build/cjs/react-query/impl/infinite/types.d.ts +2 -2
  40. package/build/cjs/react-query/impl/infinite/types.js.map +1 -1
  41. package/build/cjs/react-query/impl/infinite/utils.js +6 -1
  42. package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
  43. package/build/cjs/react-query/impl/plain/hooks.js +4 -1
  44. package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
  45. package/build/cjs/react-query/impl/plain/types.d.ts +2 -2
  46. package/build/cjs/react-query/impl/plain/types.js.map +1 -1
  47. package/build/cjs/react-query/impl/plain/utils.js +6 -1
  48. package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
  49. package/build/cjs/react-query/index.d.ts +2 -0
  50. package/build/cjs/react-query/index.js +7 -0
  51. package/build/cjs/react-query/index.js.map +1 -1
  52. package/build/cjs/react-query/types/normalizer.d.ts +21 -0
  53. package/build/cjs/react-query/types/normalizer.js +6 -0
  54. package/build/cjs/react-query/types/normalizer.js.map +1 -0
  55. package/build/cjs/react-query/types/options.d.ts +12 -0
  56. package/build/cjs/react-query/types/options.js.map +1 -1
  57. package/build/cjs/react-query/types/query-meta.d.ts +12 -0
  58. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +295 -0
  59. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  60. package/build/cjs/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  61. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js +88 -0
  62. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  63. package/build/cjs/react-query/utils/normalize.d.ts +22 -0
  64. package/build/cjs/react-query/utils/normalize.js +150 -0
  65. package/build/cjs/react-query/utils/normalize.js.map +1 -0
  66. package/build/cjs/react-query/utils/parseQueryKey.d.ts +2 -0
  67. package/build/cjs/react-query/utils/parseQueryKey.js +10 -0
  68. package/build/cjs/react-query/utils/parseQueryKey.js.map +1 -0
  69. package/build/cjs/react-query/utils/warn.d.ts +1 -0
  70. package/build/cjs/react-query/utils/warn.js +15 -0
  71. package/build/cjs/react-query/utils/warn.js.map +1 -0
  72. package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  73. package/build/cjs/react-query/utils/warnDisabledRefetch.js +11 -0
  74. package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
  75. package/build/esm/core/index.d.ts +1 -0
  76. package/build/esm/core/index.js.map +1 -1
  77. package/build/esm/core/types/DataManager.d.ts +5 -0
  78. package/build/esm/core/types/DataManager.js.map +1 -1
  79. package/build/esm/core/types/Normalizer.d.ts +29 -0
  80. package/build/esm/core/types/Normalizer.js +2 -0
  81. package/build/esm/core/types/Normalizer.js.map +1 -0
  82. package/build/esm/react/DataManagerProvider.d.ts +7 -0
  83. package/build/esm/react/DataManagerProvider.js +12 -0
  84. package/build/esm/react/DataManagerProvider.js.map +1 -0
  85. package/build/esm/react/__tests__/DataManagerContext.test.js +7 -6
  86. package/build/esm/react/__tests__/DataManagerContext.test.js.map +1 -1
  87. package/build/esm/react/__tests__/withDataManager.test.js +3 -0
  88. package/build/esm/react/__tests__/withDataManager.test.js.map +1 -1
  89. package/build/esm/react/index.d.ts +2 -0
  90. package/build/esm/react/index.js +1 -0
  91. package/build/esm/react/index.js.map +1 -1
  92. package/build/esm/react-query/ClientDataManager.d.ts +16 -3
  93. package/build/esm/react-query/ClientDataManager.js +152 -7
  94. package/build/esm/react-query/ClientDataManager.js.map +1 -1
  95. package/build/esm/react-query/DataSourceProvider.d.ts +7 -0
  96. package/build/esm/react-query/DataSourceProvider.js +28 -0
  97. package/build/esm/react-query/DataSourceProvider.js.map +1 -0
  98. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +174 -0
  99. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  100. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +98 -0
  101. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  102. package/build/esm/react-query/__tests__/subscriptions.test.js +1176 -0
  103. package/build/esm/react-query/__tests__/subscriptions.test.js.map +1 -0
  104. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +656 -0
  105. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  106. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +227 -0
  107. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  108. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +192 -0
  109. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  110. package/build/esm/react-query/impl/infinite/hooks.js +5 -2
  111. package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
  112. package/build/esm/react-query/impl/infinite/types.d.ts +2 -2
  113. package/build/esm/react-query/impl/infinite/types.js.map +1 -1
  114. package/build/esm/react-query/impl/infinite/utils.js +6 -1
  115. package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
  116. package/build/esm/react-query/impl/plain/hooks.js +5 -2
  117. package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
  118. package/build/esm/react-query/impl/plain/types.d.ts +2 -2
  119. package/build/esm/react-query/impl/plain/types.js.map +1 -1
  120. package/build/esm/react-query/impl/plain/utils.js +6 -1
  121. package/build/esm/react-query/impl/plain/utils.js.map +1 -1
  122. package/build/esm/react-query/index.d.ts +2 -0
  123. package/build/esm/react-query/index.js +1 -0
  124. package/build/esm/react-query/index.js.map +1 -1
  125. package/build/esm/react-query/types/normalizer.d.ts +21 -0
  126. package/build/esm/react-query/types/normalizer.js +2 -0
  127. package/build/esm/react-query/types/normalizer.js.map +1 -0
  128. package/build/esm/react-query/types/options.d.ts +12 -0
  129. package/build/esm/react-query/types/options.js.map +1 -1
  130. package/build/esm/react-query/types/query-meta.d.ts +12 -0
  131. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +292 -0
  132. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  133. package/build/esm/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  134. package/build/esm/react-query/utils/checkMutationObjectsKeys.js +81 -0
  135. package/build/esm/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  136. package/build/esm/react-query/utils/normalize.d.ts +22 -0
  137. package/build/esm/react-query/utils/normalize.js +143 -0
  138. package/build/esm/react-query/utils/normalize.js.map +1 -0
  139. package/build/esm/react-query/utils/parseQueryKey.d.ts +2 -0
  140. package/build/esm/react-query/utils/parseQueryKey.js +4 -0
  141. package/build/esm/react-query/utils/parseQueryKey.js.map +1 -0
  142. package/build/esm/react-query/utils/warn.d.ts +1 -0
  143. package/build/esm/react-query/utils/warn.js +9 -0
  144. package/build/esm/react-query/utils/warn.js.map +1 -0
  145. package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  146. package/build/esm/react-query/utils/warnDisabledRefetch.js +5 -0
  147. package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
  148. package/package.json +2 -1
@@ -2,6 +2,7 @@ export type { DataSourceKey, DataSourceTag, DataSource, AnyDataSource, DataSourc
2
2
  export type { DataManager } from './types/DataManager';
3
3
  export type { DataLoaderStatus } from './types/DataLoaderStatus';
4
4
  export type { InvalidateRepeatOptions, InvalidateOptions } from './types/DataManagerOptions';
5
+ export type { Normalizer, NormalizerConfig, OptimisticConfig } from './types/Normalizer';
5
6
  export { idle } from './constants';
6
7
  export { composeKey } from './utils/composeKey';
7
8
  export { composeFullKey } from './utils/composeFullKey';
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_composeKey","_composeFullKey","_getError","_getStatus","_hasTag","_mergeStatuses","_skipContext","_withCatch","_withCancellation"],"sources":["index.ts"],"sourcesContent":["export type {\n DataSourceKey,\n DataSourceTag,\n DataSource,\n AnyDataSource,\n DataSourceContext,\n DataSourceParams,\n DataSourceRequest,\n DataSourceResponse,\n DataSourceData,\n DataSourceError,\n DataSourceOptions,\n DataSourceState,\n DataSourceFetchContext,\n ActualParams,\n ActualData,\n} from './types/DataSource';\nexport type {DataManager} from './types/DataManager';\nexport type {DataLoaderStatus} from './types/DataLoaderStatus';\nexport type {InvalidateRepeatOptions, InvalidateOptions} from './types/DataManagerOptions';\n\nexport {idle} from './constants';\n\nexport {composeKey} from './utils/composeKey';\nexport {composeFullKey} from './utils/composeFullKey';\nexport {getError} from './utils/getError';\nexport {getStatus} from './utils/getStatus';\nexport {hasTag} from './utils/hasTag';\nexport {mergeStatuses} from './utils/mergeStatuses';\nexport {skipContext} from './utils/skipContext';\nexport {withCatch} from './utils/withCatch';\nexport type {Cancellable} from './utils/withCancellation';\nexport {isCancellable, isAbortable, withCancellation} from './utils/withCancellation';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AACA,IAAAQ,UAAA,GAAAR,OAAA;AAEA,IAAAS,iBAAA,GAAAT,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_composeKey","_composeFullKey","_getError","_getStatus","_hasTag","_mergeStatuses","_skipContext","_withCatch","_withCancellation"],"sources":["index.ts"],"sourcesContent":["export type {\n DataSourceKey,\n DataSourceTag,\n DataSource,\n AnyDataSource,\n DataSourceContext,\n DataSourceParams,\n DataSourceRequest,\n DataSourceResponse,\n DataSourceData,\n DataSourceError,\n DataSourceOptions,\n DataSourceState,\n DataSourceFetchContext,\n ActualParams,\n ActualData,\n} from './types/DataSource';\nexport type {DataManager} from './types/DataManager';\nexport type {DataLoaderStatus} from './types/DataLoaderStatus';\nexport type {InvalidateRepeatOptions, InvalidateOptions} from './types/DataManagerOptions';\nexport type {Normalizer, NormalizerConfig, OptimisticConfig} from './types/Normalizer';\n\nexport {idle} from './constants';\n\nexport {composeKey} from './utils/composeKey';\nexport {composeFullKey} from './utils/composeFullKey';\nexport {getError} from './utils/getError';\nexport {getStatus} from './utils/getStatus';\nexport {hasTag} from './utils/hasTag';\nexport {mergeStatuses} from './utils/mergeStatuses';\nexport {skipContext} from './utils/skipContext';\nexport {withCatch} from './utils/withCatch';\nexport type {Cancellable} from './utils/withCancellation';\nexport {isCancellable, isAbortable, withCancellation} from './utils/withCancellation';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AACA,IAAAQ,UAAA,GAAAR,OAAA;AAEA,IAAAS,iBAAA,GAAAT,OAAA","ignoreList":[]}
@@ -1,6 +1,11 @@
1
+ import type { Data } from '@normy/core';
1
2
  import type { InvalidateOptions } from './DataManagerOptions';
2
3
  import type { AnyDataSource, DataSourceParams, DataSourceTag } from './DataSource';
4
+ import type { Normalizer } from './Normalizer';
3
5
  export interface DataManager {
6
+ normalizer?: Normalizer;
7
+ optimisticUpdate(mutationData: Data): void;
8
+ invalidateData(data: Data): void;
4
9
  invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions): Promise<void>;
5
10
  invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions): Promise<void>;
6
11
  invalidateSource<TDataSource extends AnyDataSource>(dataSource: TDataSource, invalidateOptions?: InvalidateOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["DataManager.ts"],"sourcesContent":["import type {InvalidateOptions} from './DataManagerOptions';\nimport type {AnyDataSource, DataSourceParams, DataSourceTag} from './DataSource';\n\nexport interface DataManager {\n invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions): Promise<void>;\n\n invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions): Promise<void>;\n\n invalidateSource<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n invalidateOptions?: InvalidateOptions,\n ): Promise<void>;\n\n resetSource<TDataSource extends AnyDataSource>(dataSource: TDataSource): Promise<void>;\n\n invalidateParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ): Promise<void>;\n\n resetParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n ): Promise<void>;\n\n invalidateSourceTags<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ): Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["DataManager.ts"],"sourcesContent":["import type {Data} from '@normy/core';\n\nimport type {InvalidateOptions} from './DataManagerOptions';\nimport type {AnyDataSource, DataSourceParams, DataSourceTag} from './DataSource';\nimport type {Normalizer} from './Normalizer';\n\nexport interface DataManager {\n normalizer?: Normalizer;\n\n optimisticUpdate(mutationData: Data): void;\n\n invalidateData(data: Data): void;\n\n invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions): Promise<void>;\n\n invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions): Promise<void>;\n\n invalidateSource<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n invalidateOptions?: InvalidateOptions,\n ): Promise<void>;\n\n resetSource<TDataSource extends AnyDataSource>(dataSource: TDataSource): Promise<void>;\n\n invalidateParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ): Promise<void>;\n\n resetParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n ): Promise<void>;\n\n invalidateSourceTags<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ): Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import type { NormalizerConfig as NormalizeConfigBase } from '@normy/core';
2
+ import type { Data, NormalizedData } from '@normy/core/types/types';
3
+ export interface OptimisticConfig {
4
+ /** Automatically calculate rollback data, defaults to true */
5
+ autoCalculateRollback?: boolean;
6
+ /** Whether debug logging is enabled */
7
+ devLogging?: boolean;
8
+ }
9
+ export interface NormalizerConfig extends NormalizeConfigBase {
10
+ initialData?: NormalizedData;
11
+ optimistic?: boolean | OptimisticConfig;
12
+ invalidate?: boolean;
13
+ }
14
+ export interface Normalizer {
15
+ getNormalizedData: () => NormalizedData;
16
+ clearNormalizedData: () => void;
17
+ setQuery: (queryKey: string, queryData: Data) => void;
18
+ removeQuery: (queryKey: string) => void;
19
+ getQueriesToUpdate: (mutationData: Data) => {
20
+ queryKey: string;
21
+ data: Data;
22
+ }[];
23
+ getObjectById: <T extends Data>(id: string, exampleObject?: T) => T | undefined;
24
+ getQueryFragment: <T extends Data>(fragment: Data, exampleObject?: T) => T | undefined;
25
+ getDependentQueries: (mutationData: Data) => readonly string[];
26
+ getDependentQueriesByIds: (ids: ReadonlyArray<string>) => readonly string[];
27
+ getCurrentData: <T extends Data>(newData: T) => T | undefined;
28
+ log: (...messages: unknown[]) => void;
29
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ // #sourceMappingURL=Normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["Normalizer.ts"],"sourcesContent":["import type {NormalizerConfig as NormalizeConfigBase} from '@normy/core';\nimport type {Data, NormalizedData} from '@normy/core/types/types';\n\nexport interface OptimisticConfig {\n /** Automatically calculate rollback data, defaults to true */\n autoCalculateRollback?: boolean;\n /** Whether debug logging is enabled */\n devLogging?: boolean;\n}\n\nexport interface NormalizerConfig extends NormalizeConfigBase {\n initialData?: NormalizedData;\n optimistic?: boolean | OptimisticConfig;\n invalidate?: boolean;\n}\n\nexport interface Normalizer {\n getNormalizedData: () => NormalizedData;\n clearNormalizedData: () => void;\n setQuery: (queryKey: string, queryData: Data) => void;\n removeQuery: (queryKey: string) => void;\n getQueriesToUpdate: (mutationData: Data) => {\n queryKey: string;\n data: Data;\n }[];\n getObjectById: <T extends Data>(id: string, exampleObject?: T) => T | undefined;\n getQueryFragment: <T extends Data>(fragment: Data, exampleObject?: T) => T | undefined;\n getDependentQueries: (mutationData: Data) => readonly string[];\n getDependentQueriesByIds: (ids: ReadonlyArray<string>) => readonly string[];\n getCurrentData: <T extends Data>(newData: T) => T | undefined;\n log: (...messages: unknown[]) => void;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { DataManager } from '../core';
3
+ export interface DataManagerProviderProps {
4
+ children: React.ReactNode;
5
+ dataManager: DataManager;
6
+ }
7
+ export declare const DataManagerProvider: React.FC<DataManagerProviderProps>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DataManagerProvider = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _DataManagerContext = require("./DataManagerContext");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ var DataManagerProvider = exports.DataManagerProvider = function DataManagerProvider(_ref) {
12
+ var children = _ref.children,
13
+ dataManager = _ref.dataManager;
14
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataManagerContext.DataManagerContext.Provider, {
15
+ value: dataManager,
16
+ children: children
17
+ });
18
+ };
19
+ // #sourceMappingURL=DataManagerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_DataManagerContext","_jsxRuntime","e","__esModule","default","DataManagerProvider","exports","_ref","children","dataManager","_jsx","DataManagerContext","Provider","value"],"sources":["DataManagerProvider.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {DataManager} from '../core';\n\nimport {DataManagerContext} from './DataManagerContext';\n\nexport interface DataManagerProviderProps {\n children: React.ReactNode;\n dataManager: DataManager;\n}\n\nexport const DataManagerProvider: React.FC<DataManagerProviderProps> = ({\n children,\n dataManager,\n}) => {\n return (\n <DataManagerContext.Provider value={dataManager}>{children}</DataManagerContext.Provider>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,mBAAA,GAAAD,OAAA;AAAwD,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAOjD,IAAMG,mBAAuD,GAAAC,OAAA,CAAAD,mBAAA,GAAG,SAA1DA,mBAAuDA,CAAAE,IAAA,EAG9D;EAAA,IAFFC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,WAAW,GAAAF,IAAA,CAAXE,WAAW;EAEX,oBACI,IAAAC,eAAA,EAACC,sCAAkB,CAACC,QAAQ;IAACC,KAAK,EAAEJ,WAAY;IAAAD,QAAA,EAAEA;EAAQ,CAA8B,CAAC;AAEjG,CAAC","ignoreList":[]}
@@ -8,6 +8,9 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
8
8
  describe('useDataManager', function () {
9
9
  it('should return dataManager from context', function () {
10
10
  var mockDataManager = {
11
+ normalizer: undefined,
12
+ optimisticUpdate: jest.fn(),
13
+ invalidateData: jest.fn(),
11
14
  invalidateTag: jest.fn(),
12
15
  invalidateTags: jest.fn(),
13
16
  invalidateSource: jest.fn(),
@@ -32,15 +35,13 @@ describe('useDataManager', function () {
32
35
  expect(result.current).toBe(mockDataManager);
33
36
  });
34
37
  it('should throw an error when dataManager is not provided', function () {
35
- try {
38
+ var consoleSpy = jest.spyOn(console, 'error').mockImplementation();
39
+ expect(function () {
36
40
  (0, _react2.renderHook)(function () {
37
41
  return (0, _DataManagerContext.useDataManager)();
38
42
  });
39
- } catch (error) {
40
- expect(error).toBeInstanceOf(Error);
41
- // Just to be sure that the error is from the right place
42
- expect(error.message).toBe('DataManager is not provided by context. Use DataManagerContext.Provider to do it');
43
- }
43
+ }).toThrow('DataManager is not provided by context. Use DataManagerContext.Provider to do it');
44
+ consoleSpy.mockRestore();
44
45
  });
45
46
  });
46
47
  // #sourceMappingURL=DataManagerContext.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_react2","_DataManagerContext","_jsxRuntime","e","__esModule","default","describe","it","mockDataManager","invalidateTag","jest","fn","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","wrapper","_ref","children","_jsx","DataManagerContext","Provider","value","_renderHook","renderHook","useDataManager","result","expect","current","toBe","error","toBeInstanceOf","Error","message"],"sources":["DataManagerContext.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {renderHook} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {DataManagerContext, useDataManager} from '../DataManagerContext';\n\ndescribe('useDataManager', () => {\n it('should return dataManager from context', () => {\n const mockDataManager: DataManager = {\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n const wrapper: React.FC<{children: React.ReactNode}> = ({children}) => (\n <DataManagerContext.Provider value={mockDataManager}>\n {children}\n </DataManagerContext.Provider>\n );\n\n const {result} = renderHook(() => useDataManager(), {wrapper});\n\n expect(result.current).toBe(mockDataManager);\n });\n\n it('should throw an error when dataManager is not provided', () => {\n try {\n renderHook(() => useDataManager());\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // Just to be sure that the error is from the right place\n expect((error as Error).message).toBe(\n 'DataManager is not provided by context. Use DataManagerContext.Provider to do it',\n );\n }\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAGA,IAAAE,mBAAA,GAAAF,OAAA;AAAyE,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEzEG,QAAQ,CAAC,gBAAgB,EAAE,YAAM;EAC7BC,EAAE,CAAC,wCAAwC,EAAE,YAAM;IAC/C,IAAMC,eAA4B,GAAG;MACjCC,aAAa,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;MACxBC,cAAc,EAAEF,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBE,gBAAgB,EAAEH,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BG,WAAW,EAAEJ,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBI,gBAAgB,EAAEL,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BK,WAAW,EAAEN,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBM,oBAAoB,EAAEP,IAAI,CAACC,EAAE,CAAC;IAClC,CAAC;IAED,IAAMO,OAA8C,GAAG,SAAjDA,OAA8CA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAA,oBAC7D,IAAAC,eAAA,EAACC,sCAAkB,CAACC,QAAQ;QAACC,KAAK,EAAEhB,eAAgB;QAAAY,QAAA,EAC/CA;MAAQ,CACgB,CAAC;IAAA,CACjC;IAED,IAAAK,WAAA,GAAiB,IAAAC,kBAAU,EAAC;QAAA,OAAM,IAAAC,kCAAc,EAAC,CAAC;MAAA,GAAE;QAACT,OAAO,EAAPA;MAAO,CAAC,CAAC;MAAvDU,MAAM,GAAAH,WAAA,CAANG,MAAM;IAEbC,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACC,IAAI,CAACvB,eAAe,CAAC;EAChD,CAAC,CAAC;EAEFD,EAAE,CAAC,wDAAwD,EAAE,YAAM;IAC/D,IAAI;MACA,IAAAmB,kBAAU,EAAC;QAAA,OAAM,IAAAC,kCAAc,EAAC,CAAC;MAAA,EAAC;IACtC,CAAC,CAAC,OAAOK,KAAK,EAAE;MACZH,MAAM,CAACG,KAAK,CAAC,CAACC,cAAc,CAACC,KAAK,CAAC;MACnC;MACAL,MAAM,CAAEG,KAAK,CAAWG,OAAO,CAAC,CAACJ,IAAI,CACjC,kFACJ,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_react2","_DataManagerContext","_jsxRuntime","e","__esModule","default","describe","it","mockDataManager","normalizer","undefined","optimisticUpdate","jest","fn","invalidateData","invalidateTag","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","wrapper","_ref","children","_jsx","DataManagerContext","Provider","value","_renderHook","renderHook","useDataManager","result","expect","current","toBe","consoleSpy","spyOn","console","mockImplementation","toThrow","mockRestore"],"sources":["DataManagerContext.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {renderHook} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {DataManagerContext, useDataManager} from '../DataManagerContext';\n\ndescribe('useDataManager', () => {\n it('should return dataManager from context', () => {\n const mockDataManager: DataManager = {\n normalizer: undefined,\n optimisticUpdate: jest.fn(),\n invalidateData: jest.fn(),\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n const wrapper: React.FC<{children: React.ReactNode}> = ({children}) => (\n <DataManagerContext.Provider value={mockDataManager}>\n {children}\n </DataManagerContext.Provider>\n );\n\n const {result} = renderHook(() => useDataManager(), {wrapper});\n\n expect(result.current).toBe(mockDataManager);\n });\n\n it('should throw an error when dataManager is not provided', () => {\n const consoleSpy = jest.spyOn(console, 'error').mockImplementation();\n\n expect(() => {\n renderHook(() => useDataManager());\n }).toThrow(\n 'DataManager is not provided by context. Use DataManagerContext.Provider to do it',\n );\n\n consoleSpy.mockRestore();\n });\n});\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAGA,IAAAE,mBAAA,GAAAF,OAAA;AAAyE,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEzEG,QAAQ,CAAC,gBAAgB,EAAE,YAAM;EAC7BC,EAAE,CAAC,wCAAwC,EAAE,YAAM;IAC/C,IAAMC,eAA4B,GAAG;MACjCC,UAAU,EAAEC,SAAS;MACrBC,gBAAgB,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BC,cAAc,EAAEF,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBE,aAAa,EAAEH,IAAI,CAACC,EAAE,CAAC,CAAC;MACxBG,cAAc,EAAEJ,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBI,gBAAgB,EAAEL,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BK,WAAW,EAAEN,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBM,gBAAgB,EAAEP,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BO,WAAW,EAAER,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBQ,oBAAoB,EAAET,IAAI,CAACC,EAAE,CAAC;IAClC,CAAC;IAED,IAAMS,OAA8C,GAAG,SAAjDA,OAA8CA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAA,oBAC7D,IAAAC,eAAA,EAACC,sCAAkB,CAACC,QAAQ;QAACC,KAAK,EAAEpB,eAAgB;QAAAgB,QAAA,EAC/CA;MAAQ,CACgB,CAAC;IAAA,CACjC;IAED,IAAAK,WAAA,GAAiB,IAAAC,kBAAU,EAAC;QAAA,OAAM,IAAAC,kCAAc,EAAC,CAAC;MAAA,GAAE;QAACT,OAAO,EAAPA;MAAO,CAAC,CAAC;MAAvDU,MAAM,GAAAH,WAAA,CAANG,MAAM;IAEbC,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACC,IAAI,CAAC3B,eAAe,CAAC;EAChD,CAAC,CAAC;EAEFD,EAAE,CAAC,wDAAwD,EAAE,YAAM;IAC/D,IAAM6B,UAAU,GAAGxB,IAAI,CAACyB,KAAK,CAACC,OAAO,EAAE,OAAO,CAAC,CAACC,kBAAkB,CAAC,CAAC;IAEpEN,MAAM,CAAC,YAAM;MACT,IAAAH,kBAAU,EAAC;QAAA,OAAM,IAAAC,kCAAc,EAAC,CAAC;MAAA,EAAC;IACtC,CAAC,CAAC,CAACS,OAAO,CACN,kFACJ,CAAC;IAEDJ,UAAU,CAACK,WAAW,CAAC,CAAC;EAC5B,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -15,6 +15,9 @@ jest.mock('../DataManagerContext', function () {
15
15
  });
16
16
  describe('withDataManager', function () {
17
17
  var mockDataManager = {
18
+ normalizer: undefined,
19
+ optimisticUpdate: jest.fn(),
20
+ invalidateData: jest.fn(),
18
21
  invalidateTag: jest.fn(),
19
22
  invalidateTags: jest.fn(),
20
23
  invalidateSource: jest.fn(),
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_react2","_DataManagerContext","_withDataManager","_jsxRuntime","e","__esModule","default","jest","mock","originalModule","requireActual","_objectSpread","useDataManager","fn","describe","mockDataManager","invalidateTag","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","beforeEach","clearAllMocks","mockReturnValue","it","TestComponent","_ref","dataManager","_jsx","children","WrappedComponent","withDataManager","render","expect","screen","getByTestId","toHaveTextContent","_ref2","testProp","concat"],"sources":["withDataManager.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {render, screen} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {useDataManager} from '../DataManagerContext';\nimport type {WithDataManagerProps} from '../withDataManager';\nimport {withDataManager} from '../withDataManager';\n\njest.mock('../DataManagerContext', () => {\n const originalModule = jest.requireActual('../DataManagerContext');\n return {\n ...originalModule,\n useDataManager: jest.fn(),\n };\n});\n\ndescribe('withDataManager', () => {\n const mockDataManager: DataManager = {\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n (useDataManager as jest.Mock).mockReturnValue(mockDataManager);\n });\n\n it('should pass dataManager to wrapped component', () => {\n const TestComponent: React.FC<WithDataManagerProps> = ({dataManager}) => (\n <div data-testid=\"test-component\">\n {dataManager ? 'DataManager provided' : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided');\n });\n\n it('should pass through additional props', () => {\n const TestComponent: React.FC<WithDataManagerProps & {testProp: string}> = ({\n dataManager,\n testProp,\n }) => (\n <div data-testid=\"test-component\">\n {dataManager ? `DataManager provided, testProp: ${testProp}` : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent testProp=\"test value\" />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent(\n 'DataManager provided, testProp: test value',\n );\n });\n});\n"],"mappings":";;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAGA,IAAAE,mBAAA,GAAAF,OAAA;AAEA,IAAAG,gBAAA,GAAAH,OAAA;AAAmD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnDG,IAAI,CAACC,IAAI,CAAC,uBAAuB,EAAE,YAAM;EACrC,IAAMC,cAAc,GAAGF,IAAI,CAACG,aAAa,CAAC,uBAAuB,CAAC;EAClE,WAAAC,sBAAA,MAAAA,sBAAA,MACOF,cAAc;IACjBG,cAAc,EAAEL,IAAI,CAACM,EAAE,CAAC;EAAC;AAEjC,CAAC,CAAC;AAEFC,QAAQ,CAAC,iBAAiB,EAAE,YAAM;EAC9B,IAAMC,eAA4B,GAAG;IACjCC,aAAa,EAAET,IAAI,CAACM,EAAE,CAAC,CAAC;IACxBI,cAAc,EAAEV,IAAI,CAACM,EAAE,CAAC,CAAC;IACzBK,gBAAgB,EAAEX,IAAI,CAACM,EAAE,CAAC,CAAC;IAC3BM,WAAW,EAAEZ,IAAI,CAACM,EAAE,CAAC,CAAC;IACtBO,gBAAgB,EAAEb,IAAI,CAACM,EAAE,CAAC,CAAC;IAC3BQ,WAAW,EAAEd,IAAI,CAACM,EAAE,CAAC,CAAC;IACtBS,oBAAoB,EAAEf,IAAI,CAACM,EAAE,CAAC;EAClC,CAAC;EAEDU,UAAU,CAAC,YAAM;IACbhB,IAAI,CAACiB,aAAa,CAAC,CAAC;IAEnBZ,kCAAc,CAAea,eAAe,CAACV,eAAe,CAAC;EAClE,CAAC,CAAC;EAEFW,EAAE,CAAC,8CAA8C,EAAE,YAAM;IACrD,IAAMC,aAA6C,GAAG,SAAhDA,aAA6CA,CAAAC,IAAA;MAAA,IAAKC,WAAW,GAAAD,IAAA,CAAXC,WAAW;MAAA,oBAC/D,IAAAC,eAAA;QAAK,eAAY,gBAAgB;QAAAC,QAAA,EAC5BF,WAAW,GAAG,sBAAsB,GAAG;MAAgB,CACvD,CAAC;IAAA,CACT;IACD,IAAMG,gBAAgB,GAAG,IAAAC,gCAAe,EAACN,aAAa,CAAC;IAEvD,IAAAO,cAAM,eAAC,IAAAJ,eAAA,EAACE,gBAAgB,IAAE,CAAC,CAAC;IAE5BG,MAAM,CAACC,cAAM,CAACC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAACC,iBAAiB,CAAC,sBAAsB,CAAC;EAC1F,CAAC,CAAC;EAEFZ,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMC,aAAkE,GAAG,SAArEA,aAAkEA,CAAAY,KAAA;MAAA,IACpEV,WAAW,GAAAU,KAAA,CAAXV,WAAW;QACXW,QAAQ,GAAAD,KAAA,CAARC,QAAQ;MAAA,oBAER,IAAAV,eAAA;QAAK,eAAY,gBAAgB;QAAAC,QAAA,EAC5BF,WAAW,sCAAAY,MAAA,CAAsCD,QAAQ,IAAK;MAAgB,CAC9E,CAAC;IAAA,CACT;IACD,IAAMR,gBAAgB,GAAG,IAAAC,gCAAe,EAACN,aAAa,CAAC;IAEvD,IAAAO,cAAM,eAAC,IAAAJ,eAAA,EAACE,gBAAgB;MAACQ,QAAQ,EAAC;IAAY,CAAE,CAAC,CAAC;IAElDL,MAAM,CAACC,cAAM,CAACC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAACC,iBAAiB,CAC1D,4CACJ,CAAC;EACL,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_react2","_DataManagerContext","_withDataManager","_jsxRuntime","e","__esModule","default","jest","mock","originalModule","requireActual","_objectSpread","useDataManager","fn","describe","mockDataManager","normalizer","undefined","optimisticUpdate","invalidateData","invalidateTag","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","beforeEach","clearAllMocks","mockReturnValue","it","TestComponent","_ref","dataManager","_jsx","children","WrappedComponent","withDataManager","render","expect","screen","getByTestId","toHaveTextContent","_ref2","testProp","concat"],"sources":["withDataManager.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {render, screen} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {useDataManager} from '../DataManagerContext';\nimport type {WithDataManagerProps} from '../withDataManager';\nimport {withDataManager} from '../withDataManager';\n\njest.mock('../DataManagerContext', () => {\n const originalModule = jest.requireActual('../DataManagerContext');\n return {\n ...originalModule,\n useDataManager: jest.fn(),\n };\n});\n\ndescribe('withDataManager', () => {\n const mockDataManager: DataManager = {\n normalizer: undefined,\n optimisticUpdate: jest.fn(),\n invalidateData: jest.fn(),\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n (useDataManager as jest.Mock).mockReturnValue(mockDataManager);\n });\n\n it('should pass dataManager to wrapped component', () => {\n const TestComponent: React.FC<WithDataManagerProps> = ({dataManager}) => (\n <div data-testid=\"test-component\">\n {dataManager ? 'DataManager provided' : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided');\n });\n\n it('should pass through additional props', () => {\n const TestComponent: React.FC<WithDataManagerProps & {testProp: string}> = ({\n dataManager,\n testProp,\n }) => (\n <div data-testid=\"test-component\">\n {dataManager ? `DataManager provided, testProp: ${testProp}` : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent testProp=\"test value\" />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent(\n 'DataManager provided, testProp: test value',\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,6 @@
1
1
  export { DataManagerContext, useDataManager } from './DataManagerContext';
2
+ export { DataManagerProvider } from './DataManagerProvider';
3
+ export type { DataManagerProviderProps } from './DataManagerProvider';
2
4
  export type { WithDataManagerProps } from './withDataManager';
3
5
  export { withDataManager } from './withDataManager';
4
6
  export type { ErrorAction, ErrorViewProps } from './components/types';
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  var _exportNames = {
7
7
  DataManagerContext: true,
8
8
  useDataManager: true,
9
+ DataManagerProvider: true,
9
10
  withDataManager: true
10
11
  };
11
12
  Object.defineProperty(exports, "DataManagerContext", {
@@ -14,6 +15,12 @@ Object.defineProperty(exports, "DataManagerContext", {
14
15
  return _DataManagerContext.DataManagerContext;
15
16
  }
16
17
  });
18
+ Object.defineProperty(exports, "DataManagerProvider", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _DataManagerProvider.DataManagerProvider;
22
+ }
23
+ });
17
24
  Object.defineProperty(exports, "useDataManager", {
18
25
  enumerable: true,
19
26
  get: function () {
@@ -27,6 +34,7 @@ Object.defineProperty(exports, "withDataManager", {
27
34
  }
28
35
  });
29
36
  var _DataManagerContext = require("./DataManagerContext");
37
+ var _DataManagerProvider = require("./DataManagerProvider");
30
38
  var _withDataManager = require("./withDataManager");
31
39
  var _DataLoader = require("./components/DataLoader");
32
40
  Object.keys(_DataLoader).forEach(function (key) {
@@ -1 +1 @@
1
- {"version":3,"names":["_DataManagerContext","require","_withDataManager","_DataLoader","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_DataInfiniteLoader"],"sources":["index.ts"],"sourcesContent":["export {DataManagerContext, useDataManager} from './DataManagerContext';\n\nexport type {WithDataManagerProps} from './withDataManager';\nexport {withDataManager} from './withDataManager';\n\nexport type {ErrorAction, ErrorViewProps} from './components/types';\nexport * from './components/DataLoader';\nexport * from './components/DataInfiniteLoader';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAGA,IAAAC,gBAAA,GAAAD,OAAA;AAGA,IAAAE,WAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,WAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,WAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,WAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,mBAAA,GAAAf,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAW,mBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,mBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,mBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_DataManagerContext","require","_DataManagerProvider","_withDataManager","_DataLoader","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_DataInfiniteLoader"],"sources":["index.ts"],"sourcesContent":["export {DataManagerContext, useDataManager} from './DataManagerContext';\nexport {DataManagerProvider} from './DataManagerProvider';\nexport type {DataManagerProviderProps} from './DataManagerProvider';\n\nexport type {WithDataManagerProps} from './withDataManager';\nexport {withDataManager} from './withDataManager';\n\nexport type {ErrorAction, ErrorViewProps} from './components/types';\nexport * from './components/DataLoader';\nexport * from './components/DataInfiniteLoader';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAIA,IAAAE,gBAAA,GAAAF,OAAA;AAGA,IAAAG,WAAA,GAAAH,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAF,WAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,WAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,WAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,mBAAA,GAAAhB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAW,mBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,mBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,mBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1,11 +1,21 @@
1
- import type { InvalidateQueryFilters, QueryClientConfig } from '@tanstack/react-query';
1
+ import type { Data } from '@normy/core';
2
+ import type { InvalidateQueryFilters, QueryClientConfig, QueryKey } from '@tanstack/react-query';
2
3
  import { QueryClient } from '@tanstack/react-query';
3
- import { type AnyDataSource, type DataManager, type DataSourceParams, type DataSourceTag } from '../core';
4
+ import { type AnyDataSource, type DataManager, type DataSourceParams, type DataSourceTag, type Normalizer, type NormalizerConfig } from '../core';
4
5
  import type { InvalidateOptions, InvalidateRepeatOptions } from '../core/types/DataManagerOptions';
5
- export type ClientDataManagerConfig = QueryClientConfig;
6
+ import type { QueryNormalizer } from './types/normalizer';
7
+ export interface ClientDataManagerConfig extends QueryClientConfig {
8
+ normalizerConfig?: NormalizerConfig | boolean;
9
+ }
6
10
  export declare class ClientDataManager implements DataManager {
7
11
  readonly queryClient: QueryClient;
12
+ readonly normalizer?: Normalizer | undefined;
13
+ readonly queryNormalizer?: QueryNormalizer | undefined;
14
+ readonly normalizerConfig?: NormalizerConfig | boolean;
8
15
  constructor(config?: ClientDataManagerConfig);
16
+ optimisticUpdate(mutationData: Data, queryKey?: QueryKey, queryData?: Data): void;
17
+ invalidateData(data: Data, queryKey?: QueryKey): void;
18
+ update(data: Data): void;
9
19
  invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions): Promise<void>;
10
20
  invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions): Promise<void>;
11
21
  invalidateSource<TDataSource extends AnyDataSource>(dataSource: TDataSource, invalidateOptions?: InvalidateOptions): Promise<void>;
@@ -15,4 +25,7 @@ export declare class ClientDataManager implements DataManager {
15
25
  invalidateSourceTags<TDataSource extends AnyDataSource>(dataSource: TDataSource, params: DataSourceParams<TDataSource>, invalidateOptions?: InvalidateOptions): Promise<void>;
16
26
  protected invalidateQueries(filters: InvalidateQueryFilters, invalidateOptions?: InvalidateOptions): Promise<void>;
17
27
  protected repeatInvalidate(invalidate: () => Promise<void>, repeat?: InvalidateRepeatOptions): void;
28
+ private createNormalize;
29
+ private invalidateQuery;
30
+ private optimisticUpdateQuery;
18
31
  }
@@ -4,18 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ClientDataManager = void 0;
7
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
7
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
8
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _core = require("@normy/core");
10
12
  var _reactQuery = require("@tanstack/react-query");
11
- var _core = require("../core");
13
+ var _core2 = require("../core");
14
+ var _checkMutationObjectsKeys = require("./utils/checkMutationObjectsKeys");
15
+ var _normalize = require("./utils/normalize");
16
+ var _parseQueryKey = require("./utils/parseQueryKey");
12
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
18
  var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
14
19
  function ClientDataManager() {
15
- var _config$defaultOption, _config$defaultOption2;
20
+ var _config$defaultOption,
21
+ _config$defaultOption2,
22
+ _this = this;
16
23
  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
17
24
  (0, _classCallCheck2.default)(this, ClientDataManager);
18
25
  this.queryClient = void 0;
26
+ this.normalizer = void 0;
27
+ this.queryNormalizer = void 0;
28
+ this.normalizerConfig = void 0;
29
+ this.normalizerConfig = config.normalizerConfig;
19
30
  this.queryClient = new _reactQuery.QueryClient((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
20
31
  defaultOptions: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, config.defaultOptions), {}, {
21
32
  queries: (0, _objectSpread2.default)({
@@ -26,14 +37,104 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
26
37
  }, (_config$defaultOption2 = config.defaultOptions) === null || _config$defaultOption2 === void 0 ? void 0 : _config$defaultOption2.mutations)
27
38
  })
28
39
  }));
40
+ this.normalizer = this.createNormalize(config.normalizerConfig);
41
+ this.queryNormalizer = (0, _normalize.createQueryNormalizer)(this.normalizer, this.queryClient, config.normalizerConfig, function (data) {
42
+ return _this.optimisticUpdate(data);
43
+ }, function (data) {
44
+ return _this.invalidateData(data);
45
+ });
29
46
  }
30
47
  return (0, _createClass2.default)(ClientDataManager, [{
48
+ key: "optimisticUpdate",
49
+ value: function optimisticUpdate(mutationData, queryKey, queryData) {
50
+ var _this2 = this;
51
+ if (!this.normalizer) {
52
+ return;
53
+ }
54
+ if (queryKey && queryData) {
55
+ this.optimisticUpdateQuery(queryKey, queryData);
56
+ return;
57
+ }
58
+ var queriesToUpdate = this.normalizer.getQueriesToUpdate(mutationData);
59
+ queriesToUpdate.forEach(function (query) {
60
+ var parsedQueryKey = (0, _parseQueryKey.parseQueryKey)(query.queryKey);
61
+ _this2.optimisticUpdateQuery(parsedQueryKey, query.data);
62
+ });
63
+ }
64
+ }, {
65
+ key: "invalidateData",
66
+ value: function invalidateData(data, queryKey) {
67
+ var _this3 = this;
68
+ if (!this.normalizer) {
69
+ return;
70
+ }
71
+ if (queryKey) {
72
+ this.invalidateQuery(queryKey);
73
+ return;
74
+ }
75
+ var queriesToUpdate = this.normalizer.getQueriesToUpdate(data);
76
+ queriesToUpdate.forEach(function (query) {
77
+ var parsedQueryKey = (0, _parseQueryKey.parseQueryKey)(query.queryKey);
78
+ _this3.invalidateQuery(parsedQueryKey);
79
+ });
80
+ }
81
+ }, {
82
+ key: "update",
83
+ value: function update(data) {
84
+ var _this4 = this;
85
+ if (!this.normalizer) {
86
+ return;
87
+ }
88
+ var _ref = (0, _typeof2.default)(this.normalizerConfig) === 'object' ? this.normalizerConfig : {
89
+ optimistic: false,
90
+ invalidate: false
91
+ },
92
+ globalOptimistic = _ref.optimistic,
93
+ globalInvalidate = _ref.invalidate;
94
+ var queriesToUpdate = this.normalizer.getQueriesToUpdate(data);
95
+ if (queriesToUpdate.length === 0) {
96
+ var completeness = (0, _checkMutationObjectsKeys.checkMutationObjectsKeys)(data, this.normalizer);
97
+ var dependentQueries = this.normalizer.getDependentQueries(data);
98
+ if (completeness.needsRefetch) {
99
+ dependentQueries.forEach(function (queryKeyString) {
100
+ var _cachedQuery$meta;
101
+ var parsedQueryKey = (0, _parseQueryKey.parseQueryKey)(queryKeyString);
102
+ var cachedQuery = _this4.queryClient.getQueryCache().find({
103
+ queryKey: parsedQueryKey
104
+ });
105
+ var _ref2 = (_cachedQuery$meta = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.meta) !== null && _cachedQuery$meta !== void 0 ? _cachedQuery$meta : {},
106
+ invalidate = _ref2.invalidate;
107
+ if (invalidate === true || invalidate === undefined && globalInvalidate === true) {
108
+ _this4.invalidateData(data, parsedQueryKey);
109
+ }
110
+ });
111
+ }
112
+ return;
113
+ }
114
+ queriesToUpdate.forEach(function (query) {
115
+ var _cachedQuery$meta2;
116
+ var parsedQueryKey = (0, _parseQueryKey.parseQueryKey)(query.queryKey);
117
+ var cachedQuery = _this4.queryClient.getQueryCache().find({
118
+ queryKey: parsedQueryKey
119
+ });
120
+ var _ref3 = (_cachedQuery$meta2 = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.meta) !== null && _cachedQuery$meta2 !== void 0 ? _cachedQuery$meta2 : {},
121
+ optimistic = _ref3.optimistic,
122
+ invalidate = _ref3.invalidate;
123
+ if (optimistic === true || optimistic === undefined && globalOptimistic === true) {
124
+ _this4.optimisticUpdate(data, parsedQueryKey, query.data);
125
+ }
126
+ if (invalidate === true || invalidate === undefined && globalInvalidate === true) {
127
+ _this4.invalidateData(data, parsedQueryKey);
128
+ }
129
+ });
130
+ }
131
+ }, {
31
132
  key: "invalidateTag",
32
133
  value: function invalidateTag(tag, invalidateOptions) {
33
134
  return this.invalidateQueries({
34
- predicate: function predicate(_ref) {
35
- var queryKey = _ref.queryKey;
36
- return (0, _core.hasTag)(queryKey, tag);
135
+ predicate: function predicate(_ref4) {
136
+ var queryKey = _ref4.queryKey;
137
+ return (0, _core2.hasTag)(queryKey, tag);
37
138
  }
38
139
  }, invalidateOptions);
39
140
  }
@@ -41,10 +142,10 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
41
142
  key: "invalidateTags",
42
143
  value: function invalidateTags(tags, invalidateOptions) {
43
144
  return this.invalidateQueries({
44
- predicate: function predicate(_ref2) {
45
- var queryKey = _ref2.queryKey;
145
+ predicate: function predicate(_ref5) {
146
+ var queryKey = _ref5.queryKey;
46
147
  return tags.every(function (tag) {
47
- return (0, _core.hasTag)(queryKey, tag);
148
+ return (0, _core2.hasTag)(queryKey, tag);
48
149
  });
49
150
  }
50
151
  }, invalidateOptions);
@@ -69,7 +170,7 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
69
170
  key: "invalidateParams",
70
171
  value: function invalidateParams(dataSource, params, invalidateOptions) {
71
172
  return this.invalidateQueries({
72
- queryKey: (0, _core.composeFullKey)(dataSource, params),
173
+ queryKey: (0, _core2.composeFullKey)(dataSource, params),
73
174
  exact: true
74
175
  }, invalidateOptions);
75
176
  }
@@ -77,7 +178,7 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
77
178
  key: "resetParams",
78
179
  value: function resetParams(dataSource, params) {
79
180
  return this.queryClient.resetQueries({
80
- queryKey: (0, _core.composeFullKey)(dataSource, params),
181
+ queryKey: (0, _core2.composeFullKey)(dataSource, params),
81
182
  exact: true
82
183
  });
83
184
  }
@@ -86,15 +187,15 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
86
187
  value: function invalidateSourceTags(dataSource, params, invalidateOptions) {
87
188
  return this.invalidateQueries({
88
189
  // Last element is a full key
89
- queryKey: (0, _core.composeFullKey)(dataSource, params).slice(0, -1)
190
+ queryKey: (0, _core2.composeFullKey)(dataSource, params).slice(0, -1)
90
191
  }, invalidateOptions);
91
192
  }
92
193
  }, {
93
194
  key: "invalidateQueries",
94
195
  value: function invalidateQueries(filters, invalidateOptions) {
95
- var _this = this;
196
+ var _this5 = this;
96
197
  var invalidate = function invalidate() {
97
- return _this.queryClient.invalidateQueries(filters);
198
+ return _this5.queryClient.invalidateQueries(filters);
98
199
  };
99
200
  this.repeatInvalidate(invalidate, invalidateOptions === null || invalidateOptions === void 0 ? void 0 : invalidateOptions.repeat);
100
201
  return invalidate();
@@ -109,6 +210,50 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
109
210
  setTimeout(invalidate, repeat.interval * i);
110
211
  }
111
212
  }
213
+ }, {
214
+ key: "createNormalize",
215
+ value: function createNormalize(config) {
216
+ if (!config) {
217
+ return undefined;
218
+ }
219
+ if (config === true) {
220
+ return (0, _core.createNormalizer)({});
221
+ }
222
+ return (0, _core.createNormalizer)(config);
223
+ }
224
+ }, {
225
+ key: "invalidateQuery",
226
+ value: function invalidateQuery(queryKey) {
227
+ var cachedQuery = this.queryClient.getQueryCache().find({
228
+ queryKey: queryKey
229
+ });
230
+ if ((cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.fetchStatus) !== 'fetching' && (cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.status) === 'success' && !(cachedQuery !== null && cachedQuery !== void 0 && cachedQuery.state.isInvalidated)) {
231
+ this.queryClient.invalidateQueries({
232
+ queryKey: queryKey
233
+ });
234
+ }
235
+ }
236
+ }, {
237
+ key: "optimisticUpdateQuery",
238
+ value: function optimisticUpdateQuery(queryKey, queryData) {
239
+ var cachedQuery = this.queryClient.getQueryCache().find({
240
+ queryKey: queryKey
241
+ });
242
+ var dataUpdatedAt = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.dataUpdatedAt;
243
+ var isInvalidated = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.isInvalidated;
244
+ var error = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.error;
245
+ var status = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.status;
246
+ this.queryClient.setQueryData(queryKey, function () {
247
+ return queryData;
248
+ }, {
249
+ updatedAt: dataUpdatedAt
250
+ });
251
+ cachedQuery === null || cachedQuery === void 0 || cachedQuery.setState({
252
+ isInvalidated: isInvalidated,
253
+ error: error,
254
+ status: status
255
+ });
256
+ }
112
257
  }]);
113
258
  }();
114
259
  // #sourceMappingURL=ClientDataManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactQuery","require","_core","_interopRequireDefault","e","__esModule","default","ClientDataManager","exports","_config$defaultOption","_config$defaultOption2","config","arguments","length","undefined","_classCallCheck","queryClient","QueryClient","_objectSpread","defaultOptions","queries","networkMode","mutations","_createClass","key","value","invalidateTag","tag","invalidateOptions","invalidateQueries","predicate","_ref","queryKey","hasTag","invalidateTags","tags","_ref2","every","invalidateSource","dataSource","name","resetSource","resetQueries","invalidateParams","params","composeFullKey","exact","resetParams","invalidateSourceTags","slice","filters","_this","invalidate","repeatInvalidate","repeat","i","count","setTimeout","interval"],"sources":["ClientDataManager.ts"],"sourcesContent":["import type {InvalidateQueryFilters, QueryClientConfig} from '@tanstack/react-query';\nimport {QueryClient} from '@tanstack/react-query';\n\nimport {\n type AnyDataSource,\n type DataManager,\n type DataSourceParams,\n type DataSourceTag,\n composeFullKey,\n hasTag,\n} from '../core';\nimport type {InvalidateOptions, InvalidateRepeatOptions} from '../core/types/DataManagerOptions';\n\nexport type ClientDataManagerConfig = QueryClientConfig;\n\nexport class ClientDataManager implements DataManager {\n readonly queryClient: QueryClient;\n\n constructor(config: ClientDataManagerConfig = {}) {\n this.queryClient = new QueryClient({\n ...config,\n defaultOptions: {\n ...config.defaultOptions,\n queries: {\n networkMode: 'always',\n ...config.defaultOptions?.queries,\n },\n mutations: {\n networkMode: 'always',\n ...config.defaultOptions?.mutations,\n },\n },\n });\n }\n\n invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions) {\n return this.invalidateQueries(\n {\n predicate: ({queryKey}) => hasTag(queryKey, tag),\n },\n invalidateOptions,\n );\n }\n\n invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions) {\n return this.invalidateQueries(\n {\n predicate: ({queryKey}) => tags.every((tag) => hasTag(queryKey, tag)),\n },\n invalidateOptions,\n );\n }\n\n invalidateSource<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n invalidateOptions?: InvalidateOptions,\n ) {\n return this.invalidateQueries(\n {\n // First element is a data source name\n queryKey: [dataSource.name],\n },\n invalidateOptions,\n );\n }\n\n resetSource<TDataSource extends AnyDataSource>(dataSource: TDataSource) {\n return this.queryClient.resetQueries({\n // First element is a data source name\n queryKey: [dataSource.name],\n });\n }\n\n invalidateParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ) {\n return this.invalidateQueries(\n {\n queryKey: composeFullKey(dataSource, params),\n exact: true,\n },\n invalidateOptions,\n );\n }\n\n resetParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n ) {\n return this.queryClient.resetQueries({\n queryKey: composeFullKey(dataSource, params),\n exact: true,\n });\n }\n\n invalidateSourceTags<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ) {\n return this.invalidateQueries(\n {\n // Last element is a full key\n queryKey: composeFullKey(dataSource, params).slice(0, -1),\n },\n invalidateOptions,\n );\n }\n\n protected invalidateQueries(\n filters: InvalidateQueryFilters,\n invalidateOptions?: InvalidateOptions,\n ) {\n const invalidate = () => this.queryClient.invalidateQueries(filters);\n\n this.repeatInvalidate(invalidate, invalidateOptions?.repeat);\n\n return invalidate();\n }\n\n protected repeatInvalidate(invalidate: () => Promise<void>, repeat?: InvalidateRepeatOptions) {\n if (!repeat) {\n return;\n }\n\n for (let i = 1; i <= repeat.count; i++) {\n setTimeout(invalidate, repeat.interval * i);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_reactQuery","_core2","_checkMutationObjectsKeys","_normalize","_parseQueryKey","_interopRequireDefault","e","__esModule","default","ClientDataManager","exports","_config$defaultOption","_config$defaultOption2","_this","config","arguments","length","undefined","_classCallCheck","queryClient","normalizer","queryNormalizer","normalizerConfig","QueryClient","_objectSpread","defaultOptions","queries","networkMode","mutations","createNormalize","createQueryNormalizer","data","optimisticUpdate","invalidateData","_createClass","key","value","mutationData","queryKey","queryData","_this2","optimisticUpdateQuery","queriesToUpdate","getQueriesToUpdate","forEach","query","parsedQueryKey","parseQueryKey","_this3","invalidateQuery","update","_this4","_ref","_typeof","optimistic","invalidate","globalOptimistic","globalInvalidate","completeness","checkMutationObjectsKeys","dependentQueries","getDependentQueries","needsRefetch","queryKeyString","_cachedQuery$meta","cachedQuery","getQueryCache","find","_ref2","meta","_cachedQuery$meta2","_ref3","invalidateTag","tag","invalidateOptions","invalidateQueries","predicate","_ref4","hasTag","invalidateTags","tags","_ref5","every","invalidateSource","dataSource","name","resetSource","resetQueries","invalidateParams","params","composeFullKey","exact","resetParams","invalidateSourceTags","slice","filters","_this5","repeatInvalidate","repeat","i","count","setTimeout","interval","createNormalizer","state","fetchStatus","status","isInvalidated","dataUpdatedAt","error","setQueryData","updatedAt","setState"],"sources":["ClientDataManager.ts"],"sourcesContent":["import type {Data} from '@normy/core';\nimport {createNormalizer} from '@normy/core';\nimport type {InvalidateQueryFilters, QueryClientConfig, QueryKey} from '@tanstack/react-query';\nimport {QueryClient} from '@tanstack/react-query';\n\nimport {\n type AnyDataSource,\n type DataManager,\n type DataSourceParams,\n type DataSourceTag,\n type Normalizer,\n type NormalizerConfig,\n composeFullKey,\n hasTag,\n} from '../core';\nimport type {InvalidateOptions, InvalidateRepeatOptions} from '../core/types/DataManagerOptions';\n\nimport type {QueryNormalizer} from './types/normalizer';\nimport {checkMutationObjectsKeys} from './utils/checkMutationObjectsKeys';\nimport {createQueryNormalizer} from './utils/normalize';\nimport {parseQueryKey} from './utils/parseQueryKey';\n\nexport interface ClientDataManagerConfig extends QueryClientConfig {\n normalizerConfig?: NormalizerConfig | boolean;\n}\n\nexport class ClientDataManager implements DataManager {\n readonly queryClient: QueryClient;\n readonly normalizer?: Normalizer | undefined;\n readonly queryNormalizer?: QueryNormalizer | undefined;\n readonly normalizerConfig?: NormalizerConfig | boolean;\n\n constructor(config: ClientDataManagerConfig = {}) {\n this.normalizerConfig = config.normalizerConfig;\n\n this.queryClient = new QueryClient({\n ...config,\n defaultOptions: {\n ...config.defaultOptions,\n queries: {\n networkMode: 'always',\n ...config.defaultOptions?.queries,\n },\n mutations: {\n networkMode: 'always',\n ...config.defaultOptions?.mutations,\n },\n },\n });\n\n this.normalizer = this.createNormalize(config.normalizerConfig);\n this.queryNormalizer = createQueryNormalizer(\n this.normalizer,\n this.queryClient,\n config.normalizerConfig,\n (data) => this.optimisticUpdate(data),\n (data) => this.invalidateData(data),\n );\n }\n\n optimisticUpdate(mutationData: Data, queryKey?: QueryKey, queryData?: Data) {\n if (!this.normalizer) {\n return;\n }\n\n if (queryKey && queryData) {\n this.optimisticUpdateQuery(queryKey, queryData);\n\n return;\n }\n\n const queriesToUpdate = this.normalizer.getQueriesToUpdate(mutationData);\n\n queriesToUpdate.forEach((query) => {\n const parsedQueryKey = parseQueryKey(query.queryKey);\n\n this.optimisticUpdateQuery(parsedQueryKey, query.data);\n });\n }\n\n invalidateData(data: Data, queryKey?: QueryKey): void {\n if (!this.normalizer) {\n return;\n }\n\n if (queryKey) {\n this.invalidateQuery(queryKey);\n\n return;\n }\n\n const queriesToUpdate = this.normalizer.getQueriesToUpdate(data);\n\n queriesToUpdate.forEach((query) => {\n const parsedQueryKey = parseQueryKey(query.queryKey);\n\n this.invalidateQuery(parsedQueryKey);\n });\n }\n\n update(data: Data) {\n if (!this.normalizer) {\n return;\n }\n\n const {optimistic: globalOptimistic, invalidate: globalInvalidate} =\n typeof this.normalizerConfig === 'object'\n ? this.normalizerConfig\n : {optimistic: false, invalidate: false};\n\n const queriesToUpdate = this.normalizer.getQueriesToUpdate(data);\n\n if (queriesToUpdate.length === 0) {\n const completeness = checkMutationObjectsKeys(data, this.normalizer);\n const dependentQueries = this.normalizer.getDependentQueries(data);\n\n if (completeness.needsRefetch) {\n dependentQueries.forEach((queryKeyString) => {\n const parsedQueryKey = parseQueryKey(queryKeyString);\n\n const cachedQuery = this.queryClient\n .getQueryCache()\n .find({queryKey: parsedQueryKey});\n\n const {invalidate} = cachedQuery?.meta ?? {};\n\n if (\n invalidate === true ||\n (invalidate === undefined && globalInvalidate === true)\n ) {\n this.invalidateData(data, parsedQueryKey);\n }\n });\n }\n\n return;\n }\n\n queriesToUpdate.forEach((query) => {\n const parsedQueryKey = parseQueryKey(query.queryKey);\n\n const cachedQuery = this.queryClient.getQueryCache().find({queryKey: parsedQueryKey});\n\n const {optimistic, invalidate} = cachedQuery?.meta ?? {};\n\n if (optimistic === true || (optimistic === undefined && globalOptimistic === true)) {\n this.optimisticUpdate(data, parsedQueryKey, query.data);\n }\n\n if (invalidate === true || (invalidate === undefined && globalInvalidate === true)) {\n this.invalidateData(data, parsedQueryKey);\n }\n });\n }\n\n invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions) {\n return this.invalidateQueries(\n {\n predicate: ({queryKey}) => hasTag(queryKey, tag),\n },\n invalidateOptions,\n );\n }\n\n invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions) {\n return this.invalidateQueries(\n {\n predicate: ({queryKey}) => tags.every((tag) => hasTag(queryKey, tag)),\n },\n invalidateOptions,\n );\n }\n\n invalidateSource<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n invalidateOptions?: InvalidateOptions,\n ) {\n return this.invalidateQueries(\n {\n // First element is a data source name\n queryKey: [dataSource.name],\n },\n invalidateOptions,\n );\n }\n\n resetSource<TDataSource extends AnyDataSource>(dataSource: TDataSource) {\n return this.queryClient.resetQueries({\n // First element is a data source name\n queryKey: [dataSource.name],\n });\n }\n\n invalidateParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ) {\n return this.invalidateQueries(\n {\n queryKey: composeFullKey(dataSource, params),\n exact: true,\n },\n invalidateOptions,\n );\n }\n\n resetParams<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n ) {\n return this.queryClient.resetQueries({\n queryKey: composeFullKey(dataSource, params),\n exact: true,\n });\n }\n\n invalidateSourceTags<TDataSource extends AnyDataSource>(\n dataSource: TDataSource,\n params: DataSourceParams<TDataSource>,\n invalidateOptions?: InvalidateOptions,\n ) {\n return this.invalidateQueries(\n {\n // Last element is a full key\n queryKey: composeFullKey(dataSource, params).slice(0, -1),\n },\n invalidateOptions,\n );\n }\n\n protected invalidateQueries(\n filters: InvalidateQueryFilters,\n invalidateOptions?: InvalidateOptions,\n ) {\n const invalidate = () => this.queryClient.invalidateQueries(filters);\n\n this.repeatInvalidate(invalidate, invalidateOptions?.repeat);\n\n return invalidate();\n }\n\n protected repeatInvalidate(invalidate: () => Promise<void>, repeat?: InvalidateRepeatOptions) {\n if (!repeat) {\n return;\n }\n\n for (let i = 1; i <= repeat.count; i++) {\n setTimeout(invalidate, repeat.interval * i);\n }\n }\n\n private createNormalize(\n config: boolean | NormalizerConfig | undefined,\n ): Normalizer | undefined {\n if (!config) {\n return undefined;\n }\n\n if (config === true) {\n return createNormalizer({});\n }\n\n return createNormalizer(config);\n }\n\n private invalidateQuery(queryKey: QueryKey) {\n const cachedQuery = this.queryClient.getQueryCache().find({queryKey});\n\n if (\n cachedQuery?.state.fetchStatus !== 'fetching' &&\n cachedQuery?.state.status === 'success' &&\n !cachedQuery?.state.isInvalidated\n ) {\n this.queryClient.invalidateQueries({queryKey});\n }\n }\n\n private optimisticUpdateQuery(queryKey: QueryKey, queryData: Data) {\n const cachedQuery = this.queryClient.getQueryCache().find({queryKey});\n\n const dataUpdatedAt = cachedQuery?.state.dataUpdatedAt;\n const isInvalidated = cachedQuery?.state.isInvalidated;\n const error = cachedQuery?.state.error;\n const status = cachedQuery?.state.status;\n\n this.queryClient.setQueryData(queryKey, () => queryData, {\n updatedAt: dataUpdatedAt,\n });\n\n cachedQuery?.setState({isInvalidated, error, status});\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { ClientDataManager } from './ClientDataManager';
3
+ export interface DataSourceProviderProps {
4
+ dataManager: ClientDataManager;
5
+ children: React.ReactNode;
6
+ }
7
+ export declare const DataSourceProvider: React.FC<DataSourceProviderProps>;