@gravity-ui/data-source 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) 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 +11 -2
  20. package/build/cjs/react-query/ClientDataManager.js +76 -9
  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 +514 -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/plain/hooks.js +4 -1
  42. package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
  43. package/build/cjs/react-query/impl/plain/types.d.ts +2 -2
  44. package/build/cjs/react-query/impl/plain/types.js.map +1 -1
  45. package/build/cjs/react-query/index.d.ts +2 -0
  46. package/build/cjs/react-query/index.js +7 -0
  47. package/build/cjs/react-query/index.js.map +1 -1
  48. package/build/cjs/react-query/types/normalizer.d.ts +21 -0
  49. package/build/cjs/react-query/types/normalizer.js +6 -0
  50. package/build/cjs/react-query/types/normalizer.js.map +1 -0
  51. package/build/cjs/react-query/types/options.d.ts +12 -0
  52. package/build/cjs/react-query/types/options.js.map +1 -1
  53. package/build/cjs/react-query/utils/normalize.d.ts +22 -0
  54. package/build/cjs/react-query/utils/normalize.js +150 -0
  55. package/build/cjs/react-query/utils/normalize.js.map +1 -0
  56. package/build/cjs/react-query/utils/warn.d.ts +1 -0
  57. package/build/cjs/react-query/utils/warn.js +15 -0
  58. package/build/cjs/react-query/utils/warn.js.map +1 -0
  59. package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  60. package/build/cjs/react-query/utils/warnDisabledRefetch.js +11 -0
  61. package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
  62. package/build/esm/core/index.d.ts +1 -0
  63. package/build/esm/core/index.js.map +1 -1
  64. package/build/esm/core/types/DataManager.d.ts +5 -0
  65. package/build/esm/core/types/DataManager.js.map +1 -1
  66. package/build/esm/core/types/Normalizer.d.ts +29 -0
  67. package/build/esm/core/types/Normalizer.js +2 -0
  68. package/build/esm/core/types/Normalizer.js.map +1 -0
  69. package/build/esm/react/DataManagerProvider.d.ts +7 -0
  70. package/build/esm/react/DataManagerProvider.js +12 -0
  71. package/build/esm/react/DataManagerProvider.js.map +1 -0
  72. package/build/esm/react/__tests__/DataManagerContext.test.js +7 -6
  73. package/build/esm/react/__tests__/DataManagerContext.test.js.map +1 -1
  74. package/build/esm/react/__tests__/withDataManager.test.js +3 -0
  75. package/build/esm/react/__tests__/withDataManager.test.js.map +1 -1
  76. package/build/esm/react/index.d.ts +2 -0
  77. package/build/esm/react/index.js +1 -0
  78. package/build/esm/react/index.js.map +1 -1
  79. package/build/esm/react-query/ClientDataManager.d.ts +11 -2
  80. package/build/esm/react-query/ClientDataManager.js +70 -3
  81. package/build/esm/react-query/ClientDataManager.js.map +1 -1
  82. package/build/esm/react-query/DataSourceProvider.d.ts +7 -0
  83. package/build/esm/react-query/DataSourceProvider.js +28 -0
  84. package/build/esm/react-query/DataSourceProvider.js.map +1 -0
  85. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +174 -0
  86. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  87. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +98 -0
  88. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  89. package/build/esm/react-query/__tests__/subscriptions.test.js +1176 -0
  90. package/build/esm/react-query/__tests__/subscriptions.test.js.map +1 -0
  91. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +511 -0
  92. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  93. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +227 -0
  94. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  95. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +192 -0
  96. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  97. package/build/esm/react-query/impl/infinite/hooks.js +5 -2
  98. package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
  99. package/build/esm/react-query/impl/infinite/types.d.ts +2 -2
  100. package/build/esm/react-query/impl/infinite/types.js.map +1 -1
  101. package/build/esm/react-query/impl/plain/hooks.js +5 -2
  102. package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
  103. package/build/esm/react-query/impl/plain/types.d.ts +2 -2
  104. package/build/esm/react-query/impl/plain/types.js.map +1 -1
  105. package/build/esm/react-query/index.d.ts +2 -0
  106. package/build/esm/react-query/index.js +1 -0
  107. package/build/esm/react-query/index.js.map +1 -1
  108. package/build/esm/react-query/types/normalizer.d.ts +21 -0
  109. package/build/esm/react-query/types/normalizer.js +2 -0
  110. package/build/esm/react-query/types/normalizer.js.map +1 -0
  111. package/build/esm/react-query/types/options.d.ts +12 -0
  112. package/build/esm/react-query/types/options.js.map +1 -1
  113. package/build/esm/react-query/utils/normalize.d.ts +22 -0
  114. package/build/esm/react-query/utils/normalize.js +143 -0
  115. package/build/esm/react-query/utils/normalize.js.map +1 -0
  116. package/build/esm/react-query/utils/warn.d.ts +1 -0
  117. package/build/esm/react-query/utils/warn.js +9 -0
  118. package/build/esm/react-query/utils/warn.js.map +1 -0
  119. package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  120. package/build/esm/react-query/utils/warnDisabledRefetch.js +5 -0
  121. package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
  122. 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,19 @@
1
+ import type { Data } from '@normy/core';
1
2
  import type { InvalidateQueryFilters, QueryClientConfig } 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;
8
14
  constructor(config?: ClientDataManagerConfig);
15
+ optimisticUpdate(mutationData: Data): void;
16
+ invalidateData(data: Data): void;
9
17
  invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions): Promise<void>;
10
18
  invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions): Promise<void>;
11
19
  invalidateSource<TDataSource extends AnyDataSource>(dataSource: TDataSource, invalidateOptions?: InvalidateOptions): Promise<void>;
@@ -15,4 +23,5 @@ export declare class ClientDataManager implements DataManager {
15
23
  invalidateSourceTags<TDataSource extends AnyDataSource>(dataSource: TDataSource, params: DataSourceParams<TDataSource>, invalidateOptions?: InvalidateOptions): Promise<void>;
16
24
  protected invalidateQueries(filters: InvalidateQueryFilters, invalidateOptions?: InvalidateOptions): Promise<void>;
17
25
  protected repeatInvalidate(invalidate: () => Promise<void>, repeat?: InvalidateRepeatOptions): void;
26
+ private createNormalize;
18
27
  }
@@ -7,15 +7,21 @@ exports.ClientDataManager = void 0;
7
7
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _core = require("@normy/core");
10
11
  var _reactQuery = require("@tanstack/react-query");
11
- var _core = require("../core");
12
+ var _core2 = require("../core");
13
+ var _normalize = require("./utils/normalize");
12
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
15
  var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
14
16
  function ClientDataManager() {
15
- var _config$defaultOption, _config$defaultOption2;
17
+ var _config$defaultOption,
18
+ _config$defaultOption2,
19
+ _this = this;
16
20
  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
17
21
  (0, _classCallCheck2.default)(this, ClientDataManager);
18
22
  this.queryClient = void 0;
23
+ this.normalizer = void 0;
24
+ this.queryNormalizer = void 0;
19
25
  this.queryClient = new _reactQuery.QueryClient((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
20
26
  defaultOptions: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, config.defaultOptions), {}, {
21
27
  queries: (0, _objectSpread2.default)({
@@ -26,14 +32,64 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
26
32
  }, (_config$defaultOption2 = config.defaultOptions) === null || _config$defaultOption2 === void 0 ? void 0 : _config$defaultOption2.mutations)
27
33
  })
28
34
  }));
35
+ this.normalizer = this.createNormalize(config.normalizerConfig);
36
+ this.queryNormalizer = (0, _normalize.createQueryNormalizer)(this.normalizer, this.queryClient, config.normalizerConfig, function (data) {
37
+ return _this.optimisticUpdate(data);
38
+ }, function (data) {
39
+ return _this.invalidateData(data);
40
+ });
29
41
  }
30
42
  return (0, _createClass2.default)(ClientDataManager, [{
43
+ key: "optimisticUpdate",
44
+ value: function optimisticUpdate(mutationData) {
45
+ var _this2 = this;
46
+ if (!this.normalizer) {
47
+ return;
48
+ }
49
+ var queriesToUpdate = this.normalizer.getQueriesToUpdate(mutationData);
50
+ queriesToUpdate.forEach(function (query) {
51
+ var queryKey = JSON.parse(query.queryKey);
52
+ var cachedQuery = _this2.queryClient.getQueryCache().find({
53
+ queryKey: queryKey
54
+ });
55
+ var dataUpdatedAt = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.dataUpdatedAt;
56
+ var isInvalidated = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.isInvalidated;
57
+ var error = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.error;
58
+ var status = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.status;
59
+ _this2.queryClient.setQueryData(queryKey, function () {
60
+ return query.data;
61
+ }, {
62
+ updatedAt: dataUpdatedAt
63
+ });
64
+ cachedQuery === null || cachedQuery === void 0 || cachedQuery.setState({
65
+ isInvalidated: isInvalidated,
66
+ error: error,
67
+ status: status
68
+ });
69
+ });
70
+ }
71
+ }, {
72
+ key: "invalidateData",
73
+ value: function invalidateData(data) {
74
+ var _this3 = this;
75
+ if (!this.normalizer) {
76
+ return;
77
+ }
78
+ var queriesToUpdate = this.normalizer.getQueriesToUpdate(data);
79
+ queriesToUpdate.forEach(function (query) {
80
+ var queryKey = JSON.parse(query.queryKey);
81
+ _this3.queryClient.invalidateQueries({
82
+ queryKey: queryKey
83
+ });
84
+ });
85
+ }
86
+ }, {
31
87
  key: "invalidateTag",
32
88
  value: function invalidateTag(tag, invalidateOptions) {
33
89
  return this.invalidateQueries({
34
90
  predicate: function predicate(_ref) {
35
91
  var queryKey = _ref.queryKey;
36
- return (0, _core.hasTag)(queryKey, tag);
92
+ return (0, _core2.hasTag)(queryKey, tag);
37
93
  }
38
94
  }, invalidateOptions);
39
95
  }
@@ -44,7 +100,7 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
44
100
  predicate: function predicate(_ref2) {
45
101
  var queryKey = _ref2.queryKey;
46
102
  return tags.every(function (tag) {
47
- return (0, _core.hasTag)(queryKey, tag);
103
+ return (0, _core2.hasTag)(queryKey, tag);
48
104
  });
49
105
  }
50
106
  }, invalidateOptions);
@@ -69,7 +125,7 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
69
125
  key: "invalidateParams",
70
126
  value: function invalidateParams(dataSource, params, invalidateOptions) {
71
127
  return this.invalidateQueries({
72
- queryKey: (0, _core.composeFullKey)(dataSource, params),
128
+ queryKey: (0, _core2.composeFullKey)(dataSource, params),
73
129
  exact: true
74
130
  }, invalidateOptions);
75
131
  }
@@ -77,7 +133,7 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
77
133
  key: "resetParams",
78
134
  value: function resetParams(dataSource, params) {
79
135
  return this.queryClient.resetQueries({
80
- queryKey: (0, _core.composeFullKey)(dataSource, params),
136
+ queryKey: (0, _core2.composeFullKey)(dataSource, params),
81
137
  exact: true
82
138
  });
83
139
  }
@@ -86,15 +142,15 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
86
142
  value: function invalidateSourceTags(dataSource, params, invalidateOptions) {
87
143
  return this.invalidateQueries({
88
144
  // Last element is a full key
89
- queryKey: (0, _core.composeFullKey)(dataSource, params).slice(0, -1)
145
+ queryKey: (0, _core2.composeFullKey)(dataSource, params).slice(0, -1)
90
146
  }, invalidateOptions);
91
147
  }
92
148
  }, {
93
149
  key: "invalidateQueries",
94
150
  value: function invalidateQueries(filters, invalidateOptions) {
95
- var _this = this;
151
+ var _this4 = this;
96
152
  var invalidate = function invalidate() {
97
- return _this.queryClient.invalidateQueries(filters);
153
+ return _this4.queryClient.invalidateQueries(filters);
98
154
  };
99
155
  this.repeatInvalidate(invalidate, invalidateOptions === null || invalidateOptions === void 0 ? void 0 : invalidateOptions.repeat);
100
156
  return invalidate();
@@ -109,6 +165,17 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
109
165
  setTimeout(invalidate, repeat.interval * i);
110
166
  }
111
167
  }
168
+ }, {
169
+ key: "createNormalize",
170
+ value: function createNormalize(config) {
171
+ if (!config) {
172
+ return undefined;
173
+ }
174
+ if (config === true) {
175
+ return (0, _core.createNormalizer)({});
176
+ }
177
+ return (0, _core.createNormalizer)(config);
178
+ }
112
179
  }]);
113
180
  }();
114
181
  // #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","_normalize","_interopRequireDefault","e","__esModule","default","ClientDataManager","exports","_config$defaultOption","_config$defaultOption2","_this","config","arguments","length","undefined","_classCallCheck","queryClient","normalizer","queryNormalizer","QueryClient","_objectSpread","defaultOptions","queries","networkMode","mutations","createNormalize","normalizerConfig","createQueryNormalizer","data","optimisticUpdate","invalidateData","_createClass","key","value","mutationData","_this2","queriesToUpdate","getQueriesToUpdate","forEach","query","queryKey","JSON","parse","cachedQuery","getQueryCache","find","dataUpdatedAt","state","isInvalidated","error","status","setQueryData","updatedAt","setState","_this3","invalidateQueries","invalidateTag","tag","invalidateOptions","predicate","_ref","hasTag","invalidateTags","tags","_ref2","every","invalidateSource","dataSource","name","resetSource","resetQueries","invalidateParams","params","composeFullKey","exact","resetParams","invalidateSourceTags","slice","filters","_this4","invalidate","repeatInvalidate","repeat","i","count","setTimeout","interval","createNormalizer"],"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 {createQueryNormalizer} from './utils/normalize';\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\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 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) {\n if (!this.normalizer) {\n return;\n }\n\n const queriesToUpdate = this.normalizer.getQueriesToUpdate(mutationData);\n\n queriesToUpdate.forEach((query) => {\n const queryKey = JSON.parse(query.queryKey) as QueryKey;\n\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, () => query.data, {\n updatedAt: dataUpdatedAt,\n });\n\n cachedQuery?.setState({isInvalidated, error, status});\n });\n }\n\n invalidateData(data: Data): void {\n if (!this.normalizer) {\n return;\n }\n\n const queriesToUpdate = this.normalizer.getQueriesToUpdate(data);\n\n queriesToUpdate.forEach((query) => {\n const queryKey = JSON.parse(query.queryKey) as QueryKey;\n this.queryClient.invalidateQueries({queryKey});\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"],"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>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DataSourceProvider = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactQuery = require("@tanstack/react-query");
9
+ var _DataManagerProvider = require("../react/DataManagerProvider");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ var DataSourceProvider = exports.DataSourceProvider = function DataSourceProvider(_ref) {
13
+ var children = _ref.children,
14
+ dataManager = _ref.dataManager;
15
+ _react.default.useEffect(function () {
16
+ if (!dataManager.queryNormalizer) {
17
+ return undefined;
18
+ }
19
+ dataManager.queryNormalizer.subscribe();
20
+ return function () {
21
+ var _dataManager$queryNor, _dataManager$queryNor2;
22
+ (_dataManager$queryNor = dataManager.queryNormalizer) === null || _dataManager$queryNor === void 0 || _dataManager$queryNor.unsubscribe();
23
+ (_dataManager$queryNor2 = dataManager.queryNormalizer) === null || _dataManager$queryNor2 === void 0 || _dataManager$queryNor2.clear();
24
+ };
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
+ }, []);
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactQuery.QueryClientProvider, {
28
+ client: dataManager.queryClient,
29
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataManagerProvider.DataManagerProvider, {
30
+ dataManager: dataManager,
31
+ children: children
32
+ })
33
+ });
34
+ };
35
+ // #sourceMappingURL=DataSourceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactQuery","_DataManagerProvider","_jsxRuntime","e","__esModule","default","DataSourceProvider","exports","_ref","children","dataManager","React","useEffect","queryNormalizer","undefined","subscribe","_dataManager$queryNor","_dataManager$queryNor2","unsubscribe","clear","_jsx","QueryClientProvider","client","queryClient","DataManagerProvider"],"sources":["DataSourceProvider.tsx"],"sourcesContent":["import React from 'react';\n\nimport {QueryClientProvider} from '@tanstack/react-query';\n\nimport {DataManagerProvider} from '../react/DataManagerProvider';\n\nimport type {ClientDataManager} from './ClientDataManager';\n\nexport interface DataSourceProviderProps {\n dataManager: ClientDataManager;\n children: React.ReactNode;\n}\n\nexport const DataSourceProvider: React.FC<DataSourceProviderProps> = ({children, dataManager}) => {\n React.useEffect(() => {\n if (!dataManager.queryNormalizer) {\n return undefined;\n }\n\n dataManager.queryNormalizer.subscribe();\n\n return () => {\n dataManager.queryNormalizer?.unsubscribe();\n dataManager.queryNormalizer?.clear();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <QueryClientProvider client={dataManager.queryClient}>\n <DataManagerProvider dataManager={dataManager}>{children}</DataManagerProvider>\n </QueryClientProvider>\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,oBAAA,GAAAF,OAAA;AAAiE,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAS1D,IAAMG,kBAAqD,GAAAC,OAAA,CAAAD,kBAAA,GAAG,SAAxDA,kBAAqDA,CAAAE,IAAA,EAAgC;EAAA,IAA3BC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAEC,WAAW,GAAAF,IAAA,CAAXE,WAAW;EACxFC,cAAK,CAACC,SAAS,CAAC,YAAM;IAClB,IAAI,CAACF,WAAW,CAACG,eAAe,EAAE;MAC9B,OAAOC,SAAS;IACpB;IAEAJ,WAAW,CAACG,eAAe,CAACE,SAAS,CAAC,CAAC;IAEvC,OAAO,YAAM;MAAA,IAAAC,qBAAA,EAAAC,sBAAA;MACT,CAAAD,qBAAA,GAAAN,WAAW,CAACG,eAAe,cAAAG,qBAAA,eAA3BA,qBAAA,CAA6BE,WAAW,CAAC,CAAC;MAC1C,CAAAD,sBAAA,GAAAP,WAAW,CAACG,eAAe,cAAAI,sBAAA,eAA3BA,sBAAA,CAA6BE,KAAK,CAAC,CAAC;IACxC,CAAC;IACD;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,oBACI,IAAAC,eAAA,EAACC,+BAAmB;IAACC,MAAM,EAAEZ,WAAW,CAACa,WAAY;IAAAd,QAAA,eACjD,IAAAW,eAAA,EAACI,wCAAmB;MAACd,WAAW,EAAEA,WAAY;MAAAD,QAAA,EAAEA;IAAQ,CAAsB;EAAC,CAC9D,CAAC;AAE9B,CAAC","ignoreList":[]}