@gravity-ui/data-source 0.8.0 → 0.8.2

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 (65) hide show
  1. package/build/cjs/react-query/ClientDataManager.d.ts +7 -3
  2. package/build/cjs/react-query/ClientDataManager.js +107 -29
  3. package/build/cjs/react-query/ClientDataManager.js.map +1 -1
  4. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +145 -0
  5. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +1 -1
  6. package/build/cjs/react-query/impl/infinite/hooks.js +1 -4
  7. package/build/cjs/react-query/impl/infinite/hooks.js.map +1 -1
  8. package/build/cjs/react-query/impl/infinite/utils.js +6 -1
  9. package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
  10. package/build/cjs/react-query/impl/plain/hooks.js +1 -4
  11. package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
  12. package/build/cjs/react-query/impl/plain/utils.js +6 -1
  13. package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
  14. package/build/cjs/react-query/types/options.d.ts +0 -5
  15. package/build/cjs/react-query/types/options.js.map +1 -1
  16. package/build/cjs/react-query/types/query-meta.d.ts +12 -0
  17. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +295 -0
  18. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  19. package/build/cjs/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  20. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js +88 -0
  21. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  22. package/build/cjs/react-query/utils/parseQueryKey.d.ts +2 -0
  23. package/build/cjs/react-query/utils/parseQueryKey.js +10 -0
  24. package/build/cjs/react-query/utils/parseQueryKey.js.map +1 -0
  25. package/build/esm/react-query/ClientDataManager.d.ts +7 -3
  26. package/build/esm/react-query/ClientDataManager.js +107 -29
  27. package/build/esm/react-query/ClientDataManager.js.map +1 -1
  28. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +145 -0
  29. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -1
  30. package/build/esm/react-query/impl/infinite/hooks.js +2 -5
  31. package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
  32. package/build/esm/react-query/impl/infinite/utils.js +6 -1
  33. package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
  34. package/build/esm/react-query/impl/plain/hooks.js +2 -5
  35. package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
  36. package/build/esm/react-query/impl/plain/utils.js +6 -1
  37. package/build/esm/react-query/impl/plain/utils.js.map +1 -1
  38. package/build/esm/react-query/types/options.d.ts +0 -5
  39. package/build/esm/react-query/types/options.js.map +1 -1
  40. package/build/esm/react-query/types/query-meta.d.ts +12 -0
  41. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +292 -0
  42. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  43. package/build/esm/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  44. package/build/esm/react-query/utils/checkMutationObjectsKeys.js +81 -0
  45. package/build/esm/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  46. package/build/esm/react-query/utils/parseQueryKey.d.ts +2 -0
  47. package/build/esm/react-query/utils/parseQueryKey.js +4 -0
  48. package/build/esm/react-query/utils/parseQueryKey.js.map +1 -0
  49. package/package.json +1 -1
  50. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js +0 -195
  51. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +0 -1
  52. package/build/cjs/react-query/utils/warn.d.ts +0 -1
  53. package/build/cjs/react-query/utils/warn.js +0 -15
  54. package/build/cjs/react-query/utils/warn.js.map +0 -1
  55. package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +0 -1
  56. package/build/cjs/react-query/utils/warnDisabledRefetch.js +0 -11
  57. package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +0 -1
  58. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +0 -192
  59. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +0 -1
  60. package/build/esm/react-query/utils/warn.d.ts +0 -1
  61. package/build/esm/react-query/utils/warn.js +0 -9
  62. package/build/esm/react-query/utils/warn.js.map +0 -1
  63. package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +0 -1
  64. package/build/esm/react-query/utils/warnDisabledRefetch.js +0 -5
  65. package/build/esm/react-query/utils/warnDisabledRefetch.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { Data } from '@normy/core';
2
- import type { InvalidateQueryFilters, QueryClientConfig } from '@tanstack/react-query';
2
+ import type { InvalidateQueryFilters, QueryClientConfig, QueryKey } from '@tanstack/react-query';
3
3
  import { QueryClient } from '@tanstack/react-query';
4
4
  import { type AnyDataSource, type DataManager, type DataSourceParams, type DataSourceTag, type Normalizer, type NormalizerConfig } from '../core';
5
5
  import type { InvalidateOptions, InvalidateRepeatOptions } from '../core/types/DataManagerOptions';
@@ -11,9 +11,11 @@ export declare class ClientDataManager implements DataManager {
11
11
  readonly queryClient: QueryClient;
12
12
  readonly normalizer?: Normalizer | undefined;
13
13
  readonly queryNormalizer?: QueryNormalizer | undefined;
14
+ readonly normalizerConfig?: NormalizerConfig | boolean;
14
15
  constructor(config?: ClientDataManagerConfig);
15
- optimisticUpdate(mutationData: Data): void;
16
- invalidateData(data: Data): void;
16
+ optimisticUpdate(mutationData: Data, queryKey?: QueryKey, queryData?: Data): void;
17
+ invalidateData(data: Data, queryKey?: QueryKey): void;
18
+ update(data: Data): void;
17
19
  invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions): Promise<void>;
18
20
  invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions): Promise<void>;
19
21
  invalidateSource<TDataSource extends AnyDataSource>(dataSource: TDataSource, invalidateOptions?: InvalidateOptions): Promise<void>;
@@ -24,4 +26,6 @@ export declare class ClientDataManager implements DataManager {
24
26
  protected invalidateQueries(filters: InvalidateQueryFilters, invalidateOptions?: InvalidateOptions): Promise<void>;
25
27
  protected repeatInvalidate(invalidate: () => Promise<void>, repeat?: InvalidateRepeatOptions): void;
26
28
  private createNormalize;
29
+ private invalidateQuery;
30
+ private optimisticUpdateQuery;
27
31
  }
@@ -4,13 +4,16 @@ 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"));
10
11
  var _core = require("@normy/core");
11
12
  var _reactQuery = require("@tanstack/react-query");
12
13
  var _core2 = require("../core");
14
+ var _checkMutationObjectsKeys = require("./utils/checkMutationObjectsKeys");
13
15
  var _normalize = require("./utils/normalize");
16
+ var _parseQueryKey = require("./utils/parseQueryKey");
14
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
18
  var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
16
19
  function ClientDataManager() {
@@ -22,6 +25,8 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
22
25
  this.queryClient = void 0;
23
26
  this.normalizer = void 0;
24
27
  this.queryNormalizer = void 0;
28
+ this.normalizerConfig = void 0;
29
+ this.normalizerConfig = config.normalizerConfig;
25
30
  this.queryClient = new _reactQuery.QueryClient((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
26
31
  defaultOptions: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, config.defaultOptions), {}, {
27
32
  queries: (0, _objectSpread2.default)({
@@ -41,54 +46,94 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
41
46
  }
42
47
  return (0, _createClass2.default)(ClientDataManager, [{
43
48
  key: "optimisticUpdate",
44
- value: function optimisticUpdate(mutationData) {
49
+ value: function optimisticUpdate(mutationData, queryKey, queryData) {
45
50
  var _this2 = this;
46
51
  if (!this.normalizer) {
47
52
  return;
48
53
  }
54
+ if (queryKey && queryData) {
55
+ this.optimisticUpdateQuery(queryKey, queryData);
56
+ return;
57
+ }
49
58
  var queriesToUpdate = this.normalizer.getQueriesToUpdate(mutationData);
50
59
  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
- });
60
+ var parsedQueryKey = (0, _parseQueryKey.parseQueryKey)(query.queryKey);
61
+ _this2.optimisticUpdateQuery(parsedQueryKey, query.data);
69
62
  });
70
63
  }
71
64
  }, {
72
65
  key: "invalidateData",
73
- value: function invalidateData(data) {
66
+ value: function invalidateData(data, queryKey) {
74
67
  var _this3 = this;
75
68
  if (!this.normalizer) {
76
69
  return;
77
70
  }
71
+ if (queryKey) {
72
+ this.invalidateQuery(queryKey);
73
+ return;
74
+ }
78
75
  var queriesToUpdate = this.normalizer.getQueriesToUpdate(data);
79
76
  queriesToUpdate.forEach(function (query) {
80
- var queryKey = JSON.parse(query.queryKey);
81
- _this3.queryClient.invalidateQueries({
82
- queryKey: queryKey
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
83
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
+ }
84
129
  });
85
130
  }
86
131
  }, {
87
132
  key: "invalidateTag",
88
133
  value: function invalidateTag(tag, invalidateOptions) {
89
134
  return this.invalidateQueries({
90
- predicate: function predicate(_ref) {
91
- var queryKey = _ref.queryKey;
135
+ predicate: function predicate(_ref4) {
136
+ var queryKey = _ref4.queryKey;
92
137
  return (0, _core2.hasTag)(queryKey, tag);
93
138
  }
94
139
  }, invalidateOptions);
@@ -97,8 +142,8 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
97
142
  key: "invalidateTags",
98
143
  value: function invalidateTags(tags, invalidateOptions) {
99
144
  return this.invalidateQueries({
100
- predicate: function predicate(_ref2) {
101
- var queryKey = _ref2.queryKey;
145
+ predicate: function predicate(_ref5) {
146
+ var queryKey = _ref5.queryKey;
102
147
  return tags.every(function (tag) {
103
148
  return (0, _core2.hasTag)(queryKey, tag);
104
149
  });
@@ -148,9 +193,9 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
148
193
  }, {
149
194
  key: "invalidateQueries",
150
195
  value: function invalidateQueries(filters, invalidateOptions) {
151
- var _this4 = this;
196
+ var _this5 = this;
152
197
  var invalidate = function invalidate() {
153
- return _this4.queryClient.invalidateQueries(filters);
198
+ return _this5.queryClient.invalidateQueries(filters);
154
199
  };
155
200
  this.repeatInvalidate(invalidate, invalidateOptions === null || invalidateOptions === void 0 ? void 0 : invalidateOptions.repeat);
156
201
  return invalidate();
@@ -176,6 +221,39 @@ var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
176
221
  }
177
222
  return (0, _core.createNormalizer)(config);
178
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
+ }
179
257
  }]);
180
258
  }();
181
259
  // #sourceMappingURL=ClientDataManager.js.map
@@ -1 +1 @@
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":";;;;;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAaA,IAAAG,UAAA,GAAAH,OAAA;AAAuD,SAAAI,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMvD,IAAaG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA;EAK1B,SAAAA,kBAAA,EAAkD;IAAA,IAAAE,qBAAA;MAAAC,sBAAA;MAAAC,KAAA;IAAA,IAAtCC,MAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAAG,wBAAA,QAAAT,iBAAA;IAAA,KAJvCU,WAAW;IAAA,KACXC,UAAU;IAAA,KACVC,eAAe;IAGpB,IAAI,CAACF,WAAW,GAAG,IAAIG,uBAAW,KAAAC,sBAAA,MAAAA,sBAAA,MAC3BT,MAAM;MACTU,cAAc,MAAAD,sBAAA,MAAAA,sBAAA,MACPT,MAAM,CAACU,cAAc;QACxBC,OAAO,MAAAF,sBAAA;UACHG,WAAW,EAAE;QAAQ,IAAAf,qBAAA,GAClBG,MAAM,CAACU,cAAc,cAAAb,qBAAA,uBAArBA,qBAAA,CAAuBc,OAAO,CACpC;QACDE,SAAS,MAAAJ,sBAAA;UACLG,WAAW,EAAE;QAAQ,IAAAd,sBAAA,GAClBE,MAAM,CAACU,cAAc,cAAAZ,sBAAA,uBAArBA,sBAAA,CAAuBe,SAAS;MACtC;IACJ,EACJ,CAAC;IAEF,IAAI,CAACP,UAAU,GAAG,IAAI,CAACQ,eAAe,CAACd,MAAM,CAACe,gBAAgB,CAAC;IAC/D,IAAI,CAACR,eAAe,GAAG,IAAAS,gCAAqB,EACxC,IAAI,CAACV,UAAU,EACf,IAAI,CAACD,WAAW,EAChBL,MAAM,CAACe,gBAAgB,EACvB,UAACE,IAAI;MAAA,OAAKlB,KAAI,CAACmB,gBAAgB,CAACD,IAAI,CAAC;IAAA,GACrC,UAACA,IAAI;MAAA,OAAKlB,KAAI,CAACoB,cAAc,CAACF,IAAI,CAAC;IAAA,CACvC,CAAC;EACL;EAAC,WAAAG,qBAAA,EAAAzB,iBAAA;IAAA0B,GAAA;IAAAC,KAAA,EAED,SAAAJ,gBAAgBA,CAACK,YAAkB,EAAE;MAAA,IAAAC,MAAA;MACjC,IAAI,CAAC,IAAI,CAAClB,UAAU,EAAE;QAClB;MACJ;MAEA,IAAMmB,eAAe,GAAG,IAAI,CAACnB,UAAU,CAACoB,kBAAkB,CAACH,YAAY,CAAC;MAExEE,eAAe,CAACE,OAAO,CAAC,UAACC,KAAK,EAAK;QAC/B,IAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACH,KAAK,CAACC,QAAQ,CAAa;QAEvD,IAAMG,WAAW,GAAGR,MAAI,CAACnB,WAAW,CAAC4B,aAAa,CAAC,CAAC,CAACC,IAAI,CAAC;UAACL,QAAQ,EAARA;QAAQ,CAAC,CAAC;QAErE,IAAMM,aAAa,GAAGH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,KAAK,CAACD,aAAa;QACtD,IAAME,aAAa,GAAGL,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,KAAK,CAACC,aAAa;QACtD,IAAMC,KAAK,GAAGN,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,KAAK,CAACE,KAAK;QACtC,IAAMC,MAAM,GAAGP,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,KAAK,CAACG,MAAM;QAExCf,MAAI,CAACnB,WAAW,CAACmC,YAAY,CAACX,QAAQ,EAAE;UAAA,OAAMD,KAAK,CAACX,IAAI;QAAA,GAAE;UACtDwB,SAAS,EAAEN;QACf,CAAC,CAAC;QAEFH,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEU,QAAQ,CAAC;UAACL,aAAa,EAAbA,aAAa;UAAEC,KAAK,EAALA,KAAK;UAAEC,MAAM,EAANA;QAAM,CAAC,CAAC;MACzD,CAAC,CAAC;IACN;EAAC;IAAAlB,GAAA;IAAAC,KAAA,EAED,SAAAH,cAAcA,CAACF,IAAU,EAAQ;MAAA,IAAA0B,MAAA;MAC7B,IAAI,CAAC,IAAI,CAACrC,UAAU,EAAE;QAClB;MACJ;MAEA,IAAMmB,eAAe,GAAG,IAAI,CAACnB,UAAU,CAACoB,kBAAkB,CAACT,IAAI,CAAC;MAEhEQ,eAAe,CAACE,OAAO,CAAC,UAACC,KAAK,EAAK;QAC/B,IAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACH,KAAK,CAACC,QAAQ,CAAa;QACvDc,MAAI,CAACtC,WAAW,CAACuC,iBAAiB,CAAC;UAACf,QAAQ,EAARA;QAAQ,CAAC,CAAC;MAClD,CAAC,CAAC;IACN;EAAC;IAAAR,GAAA;IAAAC,KAAA,EAED,SAAAuB,aAAaA,CAACC,GAAkB,EAAEC,iBAAqC,EAAE;MACrE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACII,SAAS,EAAE,SAAXA,SAASA,CAAAC,IAAA;UAAA,IAAIpB,QAAQ,GAAAoB,IAAA,CAARpB,QAAQ;UAAA,OAAM,IAAAqB,aAAM,EAACrB,QAAQ,EAAEiB,GAAG,CAAC;QAAA;MACpD,CAAC,EACDC,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAA6B,cAAcA,CAACC,IAAqB,EAAEL,iBAAqC,EAAE;MACzE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACII,SAAS,EAAE,SAAXA,SAASA,CAAAK,KAAA;UAAA,IAAIxB,QAAQ,GAAAwB,KAAA,CAARxB,QAAQ;UAAA,OAAMuB,IAAI,CAACE,KAAK,CAAC,UAACR,GAAG;YAAA,OAAK,IAAAI,aAAM,EAACrB,QAAQ,EAAEiB,GAAG,CAAC;UAAA,EAAC;QAAA;MACzE,CAAC,EACDC,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAAiC,gBAAgBA,CACZC,UAAuB,EACvBT,iBAAqC,EACvC;MACE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACI;QACAf,QAAQ,EAAE,CAAC2B,UAAU,CAACC,IAAI;MAC9B,CAAC,EACDV,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAAoC,WAAWA,CAAoCF,UAAuB,EAAE;MACpE,OAAO,IAAI,CAACnD,WAAW,CAACsD,YAAY,CAAC;QACjC;QACA9B,QAAQ,EAAE,CAAC2B,UAAU,CAACC,IAAI;MAC9B,CAAC,CAAC;IACN;EAAC;IAAApC,GAAA;IAAAC,KAAA,EAED,SAAAsC,gBAAgBA,CACZJ,UAAuB,EACvBK,MAAqC,EACrCd,iBAAqC,EACvC;MACE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACIf,QAAQ,EAAE,IAAAiC,qBAAc,EAACN,UAAU,EAAEK,MAAM,CAAC;QAC5CE,KAAK,EAAE;MACX,CAAC,EACDhB,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAA0C,WAAWA,CACPR,UAAuB,EACvBK,MAAqC,EACvC;MACE,OAAO,IAAI,CAACxD,WAAW,CAACsD,YAAY,CAAC;QACjC9B,QAAQ,EAAE,IAAAiC,qBAAc,EAACN,UAAU,EAAEK,MAAM,CAAC;QAC5CE,KAAK,EAAE;MACX,CAAC,CAAC;IACN;EAAC;IAAA1C,GAAA;IAAAC,KAAA,EAED,SAAA2C,oBAAoBA,CAChBT,UAAuB,EACvBK,MAAqC,EACrCd,iBAAqC,EACvC;MACE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACI;QACAf,QAAQ,EAAE,IAAAiC,qBAAc,EAACN,UAAU,EAAEK,MAAM,CAAC,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;MAC5D,CAAC,EACDnB,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAUsB,iBAAiBA,CACvBuB,OAA+B,EAC/BpB,iBAAqC,EACvC;MAAA,IAAAqB,MAAA;MACE,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAA;QAAA,OAASD,MAAI,CAAC/D,WAAW,CAACuC,iBAAiB,CAACuB,OAAO,CAAC;MAAA;MAEpE,IAAI,CAACG,gBAAgB,CAACD,UAAU,EAAEtB,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEwB,MAAM,CAAC;MAE5D,OAAOF,UAAU,CAAC,CAAC;IACvB;EAAC;IAAAhD,GAAA;IAAAC,KAAA,EAED,SAAUgD,gBAAgBA,CAACD,UAA+B,EAAEE,MAAgC,EAAE;MAC1F,IAAI,CAACA,MAAM,EAAE;QACT;MACJ;MAEA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAID,MAAM,CAACE,KAAK,EAAED,CAAC,EAAE,EAAE;QACpCE,UAAU,CAACL,UAAU,EAAEE,MAAM,CAACI,QAAQ,GAAGH,CAAC,CAAC;MAC/C;IACJ;EAAC;IAAAnD,GAAA;IAAAC,KAAA,EAED,SAAQR,eAAeA,CACnBd,MAA8C,EACxB;MACtB,IAAI,CAACA,MAAM,EAAE;QACT,OAAOG,SAAS;MACpB;MAEA,IAAIH,MAAM,KAAK,IAAI,EAAE;QACjB,OAAO,IAAA4E,sBAAgB,EAAC,CAAC,CAAC,CAAC;MAC/B;MAEA,OAAO,IAAAA,sBAAgB,EAAC5E,MAAM,CAAC;IACnC;EAAC;AAAA","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":[]}
@@ -510,5 +510,150 @@ describe('Normalization Configuration Integration', function () {
510
510
  }, _callee19);
511
511
  })));
512
512
  });
513
+ describe('ClientDataManager.update()', function () {
514
+ it('should work with array of objects for optimistic update', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee20() {
515
+ var dm, queryKey, initialData, data;
516
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee20$(_context20) {
517
+ while (1) switch (_context20.prev = _context20.next) {
518
+ case 0:
519
+ dm = new _ClientDataManager.ClientDataManager({
520
+ normalizerConfig: {
521
+ devLogging: false,
522
+ optimistic: true
523
+ }
524
+ });
525
+ dm.queryNormalizer.subscribe();
526
+ queryKey = ['users'];
527
+ initialData = [{
528
+ id: '1',
529
+ name: 'User 1'
530
+ }, {
531
+ id: '2',
532
+ name: 'User 2'
533
+ }];
534
+ dm.queryClient.setQueryData(queryKey, initialData);
535
+ dm.normalizer.setQuery(JSON.stringify(queryKey), initialData);
536
+
537
+ // Update both objects
538
+ dm.update([{
539
+ id: '1',
540
+ name: 'Updated 1'
541
+ }, {
542
+ id: '2',
543
+ name: 'Updated 2'
544
+ }]);
545
+ data = dm.queryClient.getQueryData(queryKey);
546
+ expect(data[0].name).toBe('Updated 1');
547
+ expect(data[1].name).toBe('Updated 2');
548
+ dm.queryNormalizer.unsubscribe();
549
+ dm.queryClient.clear();
550
+ case 12:
551
+ case "end":
552
+ return _context20.stop();
553
+ }
554
+ }, _callee20);
555
+ })));
556
+ it('should call invalidateData when invalidate option is enabled', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee21() {
557
+ var dm, queryKey, initialData, cache, invalidateSpy;
558
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee21$(_context21) {
559
+ while (1) switch (_context21.prev = _context21.next) {
560
+ case 0:
561
+ dm = new _ClientDataManager.ClientDataManager({
562
+ normalizerConfig: {
563
+ devLogging: false,
564
+ invalidate: true
565
+ }
566
+ });
567
+ dm.queryNormalizer.subscribe();
568
+ queryKey = ['users'];
569
+ initialData = [{
570
+ id: '1',
571
+ name: 'User 1'
572
+ }];
573
+ dm.queryClient.setQueryData(queryKey, initialData);
574
+ dm.normalizer.setQuery(JSON.stringify(queryKey), initialData);
575
+
576
+ // Set query state to success so it can be invalidated
577
+ cache = dm.queryClient.getQueryCache().find({
578
+ queryKey: queryKey
579
+ });
580
+ cache === null || cache === void 0 || cache.setState({
581
+ status: 'success',
582
+ fetchStatus: 'idle',
583
+ isInvalidated: false
584
+ });
585
+ invalidateSpy = jest.spyOn(dm, 'invalidateData');
586
+ dm.update({
587
+ id: '1',
588
+ name: 'Updated'
589
+ });
590
+ expect(invalidateSpy).toHaveBeenCalled();
591
+ invalidateSpy.mockRestore();
592
+ dm.queryNormalizer.unsubscribe();
593
+ dm.queryClient.clear();
594
+ case 14:
595
+ case "end":
596
+ return _context21.stop();
597
+ }
598
+ }, _callee21);
599
+ })));
600
+ it('should trigger refetch when mutation has fewer keys and normy returns empty queriesToUpdate', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee22() {
601
+ var dm, queryKey, initialData, cache, originalGetQueriesToUpdate, invalidateSpy;
602
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee22$(_context22) {
603
+ while (1) switch (_context22.prev = _context22.next) {
604
+ case 0:
605
+ // checkMutationObjectsKeys is called only when getQueriesToUpdate returns []
606
+ // This happens when normy can't compute a diff (e.g., structure mismatch)
607
+ dm = new _ClientDataManager.ClientDataManager({
608
+ normalizerConfig: {
609
+ devLogging: false,
610
+ invalidate: true // Need to enable invalidate for refetch to work
611
+ }
612
+ });
613
+ dm.queryNormalizer.subscribe();
614
+ queryKey = ['users']; // Store data with more keys
615
+ initialData = [{
616
+ id: '1',
617
+ name: 'User 1',
618
+ email: 'user@test.com',
619
+ age: 25
620
+ }];
621
+ dm.queryClient.setQueryData(queryKey, initialData);
622
+ dm.normalizer.setQuery(JSON.stringify(queryKey), initialData);
623
+
624
+ // Set query state to success so it can be invalidated
625
+ cache = dm.queryClient.getQueryCache().find({
626
+ queryKey: queryKey
627
+ });
628
+ cache === null || cache === void 0 || cache.setState({
629
+ status: 'success',
630
+ fetchStatus: 'idle',
631
+ isInvalidated: false
632
+ });
633
+
634
+ // Mock getQueriesToUpdate to return empty array (simulating normy can't compute diff)
635
+ originalGetQueriesToUpdate = dm.normalizer.getQueriesToUpdate;
636
+ dm.normalizer.getQueriesToUpdate = jest.fn().mockReturnValue([]);
637
+ invalidateSpy = jest.spyOn(dm.queryClient, 'invalidateQueries'); // Update with fewer keys - should trigger refetch via checkMutationObjectsKeys
638
+ dm.update({
639
+ id: '1',
640
+ name: 'Updated'
641
+ });
642
+
643
+ // Check if invalidation was triggered due to fewer keys
644
+ expect(invalidateSpy).toHaveBeenCalled();
645
+
646
+ // Restore mocks
647
+ dm.normalizer.getQueriesToUpdate = originalGetQueriesToUpdate;
648
+ invalidateSpy.mockRestore();
649
+ dm.queryNormalizer.unsubscribe();
650
+ dm.queryClient.clear();
651
+ case 17:
652
+ case "end":
653
+ return _context22.stop();
654
+ }
655
+ }, _callee22);
656
+ })));
657
+ });
513
658
  });
514
659
  // #sourceMappingURL=threeLevelIntegration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_react2","_ClientDataManager","_DataSourceProvider","_useQueryData","_factory","_jsxRuntime","e","__esModule","default","describe","queryClient","dataManager","beforeEach","ClientDataManager","normalizerConfig","devLogging","afterEach","_dataManager$queryNor","queryNormalizer","unsubscribe","clear","it","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","customGetKey","customDataManager","queryKey","normalized","wrap","_callee2$","_context2","prev","next","jest","fn","obj","concat","id","getNormalizationObjectKey","subscribe","fetchQuery","queryFn","_queryFn","_callee","_callee$","_context","abrupt","name","stop","apply","arguments","normalize","getNormalizedData","expect","objects","toBeDefined","toHaveBeenCalled","_callee4","customGetArrayType","_callee4$","_context4","_ref3","arrayKey","getArrayType","_queryFn2","_callee3","_callee3$","_context3","items","_callee6","_callee6$","_context6","_queryFn3","_callee5","_callee5$","_context5","_callee8","_callee8$","_context8","_queryFn4","_callee7","_callee7$","_context7","toBeUndefined","_callee10","_callee10$","_context10","_queryFn5","_callee9","_callee9$","_context9","_callee12","wrapper","dataSource","_renderHook","result","_callee12$","_context12","_ref8","children","_jsx","DataSourceProvider","makePlainQueryDataSource","fetch","_fetch","_callee11","_callee11$","_context11","options","renderHook","useQueryData","waitFor","current","status","toBe","_callee15","dataSource1","dataSource2","_renderHook2","result1","_renderHook3","result2","_callee15$","_context15","_ref10","_fetch2","_callee13","_callee13$","_context13","_fetch3","_callee14","_callee14$","_context14","title","_callee16","dmWithOptimistic","initialData","data","_callee16$","_context16","optimistic","setQueryData","normalizer","setQuery","JSON","stringify","setNormalizedData","getQueryData","_callee17","dmWithOptimisticConfig","_callee17$","_context17","autoCalculateRollback","_callee18","dmWithInvalidate","_callee18$","_context18","invalidate","_callee19","dmWithBoth","_callee19$","_context19"],"sources":["threeLevelIntegration.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {QueryClient} from '@tanstack/react-query';\nimport {renderHook, waitFor} from '@testing-library/react';\n\nimport {ClientDataManager} from '../ClientDataManager';\nimport {DataSourceProvider} from '../DataSourceProvider';\nimport {useQueryData} from '../hooks/useQueryData';\nimport {makePlainQueryDataSource} from '../impl/plain/factory';\n\ndescribe('Normalization Configuration Integration', () => {\n let queryClient: QueryClient;\n let dataManager: ClientDataManager;\n\n beforeEach(() => {\n dataManager = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n },\n });\n queryClient = dataManager.queryClient;\n });\n\n afterEach(() => {\n dataManager.queryNormalizer?.unsubscribe();\n queryClient.clear();\n });\n\n describe('ClientDataManager configuration', () => {\n it('should use custom getNormalizationObjectKey from config', async () => {\n const customGetKey = jest.fn((obj) => `custom:${obj.id}`);\n\n const customDataManager = new ClientDataManager({\n normalizerConfig: {\n getNormalizationObjectKey: customGetKey,\n devLogging: false,\n },\n });\n\n customDataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n await customDataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'User 1'}],\n normalize: true,\n } as Parameters<typeof customDataManager.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n const normalized = customDataManager.queryNormalizer!.getNormalizedData();\n\n expect(normalized.objects['@@custom:1']).toBeDefined();\n expect(customGetKey).toHaveBeenCalled();\n\n customDataManager.queryNormalizer!.unsubscribe();\n customDataManager.queryClient.clear();\n });\n\n it('should use custom getArrayType from config', async () => {\n const customGetArrayType = jest.fn(({arrayKey}) => `custom:${arrayKey}`);\n\n const customDataManager = new ClientDataManager({\n normalizerConfig: {\n getArrayType: customGetArrayType,\n devLogging: false,\n },\n });\n\n customDataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['items'];\n\n await customDataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => ({\n items: [{id: '1', name: 'Item 1'}],\n }),\n normalize: true,\n } as Parameters<typeof customDataManager.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n expect(customGetArrayType).toHaveBeenCalled();\n\n customDataManager.queryNormalizer!.unsubscribe();\n customDataManager.queryClient.clear();\n });\n });\n\n describe('Query-level normalization control', () => {\n it('should normalize when query has normalize: true', async () => {\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users-normalized'];\n\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'User 1'}],\n normalize: true,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data SHOULD be normalized\n expect(normalized.objects['@@1']).toBeDefined();\n });\n\n it('should NOT normalize when query has normalize: false', async () => {\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users-not-normalized'];\n\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '2', name: 'User 2'}],\n normalize: false,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data should NOT be normalized\n expect(normalized.objects['@@2']).toBeUndefined();\n });\n\n it('should normalize by default when normalize option is not provided', async () => {\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users-default'];\n\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '3', name: 'User 3'}],\n });\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data SHOULD be normalized (default behavior is now true)\n expect(normalized.objects['@@3']).toBeDefined();\n });\n });\n\n describe('DataSourceProvider integration', () => {\n it('should auto-subscribe queryNormalizer on mount', async () => {\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManager}>{children}</DataSourceProvider>\n );\n\n const dataSource = makePlainQueryDataSource({\n name: 'users',\n fetch: async () => [{id: '1', name: 'User 1'}],\n options: {\n normalize: true,\n },\n });\n\n const {result} = renderHook(() => useQueryData(dataSource, {}), {wrapper});\n\n await waitFor(() => expect(result.current.status).toBe('success'));\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data should be normalized because DataSourceProvider subscribes automatically\n expect(normalized.objects['@@1']).toBeDefined();\n });\n\n it('should work with multiple queries', async () => {\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManager}>{children}</DataSourceProvider>\n );\n\n const dataSource1 = makePlainQueryDataSource({\n name: 'users',\n fetch: async () => [{id: '1', name: 'User 1'}],\n options: {\n normalize: true,\n },\n });\n\n const dataSource2 = makePlainQueryDataSource({\n name: 'posts',\n fetch: async () => [{id: '2', title: 'Post 1'}],\n options: {\n normalize: true,\n },\n });\n\n const {result: result1} = renderHook(() => useQueryData(dataSource1, {}), {wrapper});\n const {result: result2} = renderHook(() => useQueryData(dataSource2, {}), {wrapper});\n\n await waitFor(() => {\n expect(result1.current.status).toBe('success');\n expect(result2.current.status).toBe('success');\n });\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n expect(normalized.objects['@@1']).toBeDefined();\n expect(normalized.objects['@@2']).toBeDefined();\n });\n });\n\n describe('Optimistic updates configuration', () => {\n it('should enable optimistic updates when configured', async () => {\n const dmWithOptimistic = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n optimistic: true,\n },\n });\n\n expect(dmWithOptimistic.queryNormalizer).toBeDefined();\n\n dmWithOptimistic.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n const initialData = [{id: '1', name: 'Old'}];\n\n dmWithOptimistic.queryClient.setQueryData(queryKey, initialData);\n dmWithOptimistic.normalizer!.setQuery(JSON.stringify(queryKey), initialData);\n\n // Manual optimistic update via setNormalizedData\n dmWithOptimistic.queryNormalizer!.setNormalizedData({id: '1', name: 'New'});\n\n const data = dmWithOptimistic.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('New');\n\n dmWithOptimistic.queryNormalizer!.unsubscribe();\n dmWithOptimistic.queryClient.clear();\n });\n\n it('should work with optimistic config object', async () => {\n const dmWithOptimisticConfig = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n optimistic: {\n autoCalculateRollback: true,\n devLogging: false,\n },\n },\n });\n\n expect(dmWithOptimisticConfig.queryNormalizer).toBeDefined();\n expect(dmWithOptimisticConfig.normalizer).toBeDefined();\n\n dmWithOptimisticConfig.queryClient.clear();\n });\n });\n\n describe('Invalidate configuration', () => {\n it('should support invalidate option in global config', async () => {\n const dmWithInvalidate = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n invalidate: true,\n },\n });\n\n expect(dmWithInvalidate.queryNormalizer).toBeDefined();\n expect(dmWithInvalidate.normalizer).toBeDefined();\n\n dmWithInvalidate.queryClient.clear();\n });\n\n it('should support both optimistic and invalidate options', async () => {\n const dmWithBoth = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n optimistic: true,\n invalidate: true,\n },\n });\n\n expect(dmWithBoth.queryNormalizer).toBeDefined();\n expect(dmWithBoth.normalizer).toBeDefined();\n\n dmWithBoth.queryClient.clear();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_react2","_ClientDataManager","_DataSourceProvider","_useQueryData","_factory","_jsxRuntime","e","__esModule","default","describe","queryClient","dataManager","beforeEach","ClientDataManager","normalizerConfig","devLogging","afterEach","_dataManager$queryNor","queryNormalizer","unsubscribe","clear","it","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","customGetKey","customDataManager","queryKey","normalized","wrap","_callee2$","_context2","prev","next","jest","fn","obj","concat","id","getNormalizationObjectKey","subscribe","fetchQuery","queryFn","_queryFn","_callee","_callee$","_context","abrupt","name","stop","apply","arguments","normalize","getNormalizedData","expect","objects","toBeDefined","toHaveBeenCalled","_callee4","customGetArrayType","_callee4$","_context4","_ref3","arrayKey","getArrayType","_queryFn2","_callee3","_callee3$","_context3","items","_callee6","_callee6$","_context6","_queryFn3","_callee5","_callee5$","_context5","_callee8","_callee8$","_context8","_queryFn4","_callee7","_callee7$","_context7","toBeUndefined","_callee10","_callee10$","_context10","_queryFn5","_callee9","_callee9$","_context9","_callee12","wrapper","dataSource","_renderHook","result","_callee12$","_context12","_ref8","children","_jsx","DataSourceProvider","makePlainQueryDataSource","fetch","_fetch","_callee11","_callee11$","_context11","options","renderHook","useQueryData","waitFor","current","status","toBe","_callee15","dataSource1","dataSource2","_renderHook2","result1","_renderHook3","result2","_callee15$","_context15","_ref10","_fetch2","_callee13","_callee13$","_context13","_fetch3","_callee14","_callee14$","_context14","title","_callee16","dmWithOptimistic","initialData","data","_callee16$","_context16","optimistic","setQueryData","normalizer","setQuery","JSON","stringify","setNormalizedData","getQueryData","_callee17","dmWithOptimisticConfig","_callee17$","_context17","autoCalculateRollback","_callee18","dmWithInvalidate","_callee18$","_context18","invalidate","_callee19","dmWithBoth","_callee19$","_context19","_callee20","dm","_callee20$","_context20","update","_callee21","cache","invalidateSpy","_callee21$","_context21","getQueryCache","find","setState","fetchStatus","isInvalidated","spyOn","mockRestore","_callee22","originalGetQueriesToUpdate","_callee22$","_context22","email","age","getQueriesToUpdate","mockReturnValue"],"sources":["threeLevelIntegration.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {QueryClient} from '@tanstack/react-query';\nimport {renderHook, waitFor} from '@testing-library/react';\n\nimport {ClientDataManager} from '../ClientDataManager';\nimport {DataSourceProvider} from '../DataSourceProvider';\nimport {useQueryData} from '../hooks/useQueryData';\nimport {makePlainQueryDataSource} from '../impl/plain/factory';\n\ndescribe('Normalization Configuration Integration', () => {\n let queryClient: QueryClient;\n let dataManager: ClientDataManager;\n\n beforeEach(() => {\n dataManager = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n },\n });\n queryClient = dataManager.queryClient;\n });\n\n afterEach(() => {\n dataManager.queryNormalizer?.unsubscribe();\n queryClient.clear();\n });\n\n describe('ClientDataManager configuration', () => {\n it('should use custom getNormalizationObjectKey from config', async () => {\n const customGetKey = jest.fn((obj) => `custom:${obj.id}`);\n\n const customDataManager = new ClientDataManager({\n normalizerConfig: {\n getNormalizationObjectKey: customGetKey,\n devLogging: false,\n },\n });\n\n customDataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n\n await customDataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'User 1'}],\n normalize: true,\n } as Parameters<typeof customDataManager.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n const normalized = customDataManager.queryNormalizer!.getNormalizedData();\n\n expect(normalized.objects['@@custom:1']).toBeDefined();\n expect(customGetKey).toHaveBeenCalled();\n\n customDataManager.queryNormalizer!.unsubscribe();\n customDataManager.queryClient.clear();\n });\n\n it('should use custom getArrayType from config', async () => {\n const customGetArrayType = jest.fn(({arrayKey}) => `custom:${arrayKey}`);\n\n const customDataManager = new ClientDataManager({\n normalizerConfig: {\n getArrayType: customGetArrayType,\n devLogging: false,\n },\n });\n\n customDataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['items'];\n\n await customDataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => ({\n items: [{id: '1', name: 'Item 1'}],\n }),\n normalize: true,\n } as Parameters<typeof customDataManager.queryClient.fetchQuery>[0] & {\n normalize: boolean;\n });\n\n expect(customGetArrayType).toHaveBeenCalled();\n\n customDataManager.queryNormalizer!.unsubscribe();\n customDataManager.queryClient.clear();\n });\n });\n\n describe('Query-level normalization control', () => {\n it('should normalize when query has normalize: true', async () => {\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users-normalized'];\n\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '1', name: 'User 1'}],\n normalize: true,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data SHOULD be normalized\n expect(normalized.objects['@@1']).toBeDefined();\n });\n\n it('should NOT normalize when query has normalize: false', async () => {\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users-not-normalized'];\n\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '2', name: 'User 2'}],\n normalize: false,\n } as Parameters<typeof dataManager.queryClient.fetchQuery>[0] & {normalize: boolean});\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data should NOT be normalized\n expect(normalized.objects['@@2']).toBeUndefined();\n });\n\n it('should normalize by default when normalize option is not provided', async () => {\n dataManager.queryNormalizer!.subscribe();\n\n const queryKey = ['users-default'];\n\n await dataManager.queryClient.fetchQuery({\n queryKey,\n queryFn: async () => [{id: '3', name: 'User 3'}],\n });\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data SHOULD be normalized (default behavior is now true)\n expect(normalized.objects['@@3']).toBeDefined();\n });\n });\n\n describe('DataSourceProvider integration', () => {\n it('should auto-subscribe queryNormalizer on mount', async () => {\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManager}>{children}</DataSourceProvider>\n );\n\n const dataSource = makePlainQueryDataSource({\n name: 'users',\n fetch: async () => [{id: '1', name: 'User 1'}],\n options: {\n normalize: true,\n },\n });\n\n const {result} = renderHook(() => useQueryData(dataSource, {}), {wrapper});\n\n await waitFor(() => expect(result.current.status).toBe('success'));\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n // Data should be normalized because DataSourceProvider subscribes automatically\n expect(normalized.objects['@@1']).toBeDefined();\n });\n\n it('should work with multiple queries', async () => {\n const wrapper = ({children}: {children: React.ReactNode}) => (\n <DataSourceProvider dataManager={dataManager}>{children}</DataSourceProvider>\n );\n\n const dataSource1 = makePlainQueryDataSource({\n name: 'users',\n fetch: async () => [{id: '1', name: 'User 1'}],\n options: {\n normalize: true,\n },\n });\n\n const dataSource2 = makePlainQueryDataSource({\n name: 'posts',\n fetch: async () => [{id: '2', title: 'Post 1'}],\n options: {\n normalize: true,\n },\n });\n\n const {result: result1} = renderHook(() => useQueryData(dataSource1, {}), {wrapper});\n const {result: result2} = renderHook(() => useQueryData(dataSource2, {}), {wrapper});\n\n await waitFor(() => {\n expect(result1.current.status).toBe('success');\n expect(result2.current.status).toBe('success');\n });\n\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n\n expect(normalized.objects['@@1']).toBeDefined();\n expect(normalized.objects['@@2']).toBeDefined();\n });\n });\n\n describe('Optimistic updates configuration', () => {\n it('should enable optimistic updates when configured', async () => {\n const dmWithOptimistic = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n optimistic: true,\n },\n });\n\n expect(dmWithOptimistic.queryNormalizer).toBeDefined();\n\n dmWithOptimistic.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n const initialData = [{id: '1', name: 'Old'}];\n\n dmWithOptimistic.queryClient.setQueryData(queryKey, initialData);\n dmWithOptimistic.normalizer!.setQuery(JSON.stringify(queryKey), initialData);\n\n // Manual optimistic update via setNormalizedData\n dmWithOptimistic.queryNormalizer!.setNormalizedData({id: '1', name: 'New'});\n\n const data = dmWithOptimistic.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('New');\n\n dmWithOptimistic.queryNormalizer!.unsubscribe();\n dmWithOptimistic.queryClient.clear();\n });\n\n it('should work with optimistic config object', async () => {\n const dmWithOptimisticConfig = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n optimistic: {\n autoCalculateRollback: true,\n devLogging: false,\n },\n },\n });\n\n expect(dmWithOptimisticConfig.queryNormalizer).toBeDefined();\n expect(dmWithOptimisticConfig.normalizer).toBeDefined();\n\n dmWithOptimisticConfig.queryClient.clear();\n });\n });\n\n describe('Invalidate configuration', () => {\n it('should support invalidate option in global config', async () => {\n const dmWithInvalidate = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n invalidate: true,\n },\n });\n\n expect(dmWithInvalidate.queryNormalizer).toBeDefined();\n expect(dmWithInvalidate.normalizer).toBeDefined();\n\n dmWithInvalidate.queryClient.clear();\n });\n\n it('should support both optimistic and invalidate options', async () => {\n const dmWithBoth = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n optimistic: true,\n invalidate: true,\n },\n });\n\n expect(dmWithBoth.queryNormalizer).toBeDefined();\n expect(dmWithBoth.normalizer).toBeDefined();\n\n dmWithBoth.queryClient.clear();\n });\n });\n\n describe('ClientDataManager.update()', () => {\n it('should work with array of objects for optimistic update', async () => {\n const dm = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n optimistic: true,\n },\n });\n\n dm.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n const initialData = [\n {id: '1', name: 'User 1'},\n {id: '2', name: 'User 2'},\n ];\n\n dm.queryClient.setQueryData(queryKey, initialData);\n dm.normalizer!.setQuery(JSON.stringify(queryKey), initialData);\n\n // Update both objects\n dm.update([\n {id: '1', name: 'Updated 1'},\n {id: '2', name: 'Updated 2'},\n ]);\n\n const data = dm.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n\n expect(data[0].name).toBe('Updated 1');\n expect(data[1].name).toBe('Updated 2');\n\n dm.queryNormalizer!.unsubscribe();\n dm.queryClient.clear();\n });\n\n it('should call invalidateData when invalidate option is enabled', async () => {\n const dm = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n invalidate: true,\n },\n });\n\n dm.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n const initialData = [{id: '1', name: 'User 1'}];\n\n dm.queryClient.setQueryData(queryKey, initialData);\n dm.normalizer!.setQuery(JSON.stringify(queryKey), initialData);\n\n // Set query state to success so it can be invalidated\n const cache = dm.queryClient.getQueryCache().find({queryKey});\n cache?.setState({status: 'success', fetchStatus: 'idle', isInvalidated: false});\n\n const invalidateSpy = jest.spyOn(dm, 'invalidateData');\n\n dm.update({id: '1', name: 'Updated'});\n\n expect(invalidateSpy).toHaveBeenCalled();\n\n invalidateSpy.mockRestore();\n dm.queryNormalizer!.unsubscribe();\n dm.queryClient.clear();\n });\n\n it('should trigger refetch when mutation has fewer keys and normy returns empty queriesToUpdate', async () => {\n // checkMutationObjectsKeys is called only when getQueriesToUpdate returns []\n // This happens when normy can't compute a diff (e.g., structure mismatch)\n const dm = new ClientDataManager({\n normalizerConfig: {\n devLogging: false,\n invalidate: true, // Need to enable invalidate for refetch to work\n },\n });\n\n dm.queryNormalizer!.subscribe();\n\n const queryKey = ['users'];\n // Store data with more keys\n const initialData = [{id: '1', name: 'User 1', email: 'user@test.com', age: 25}];\n\n dm.queryClient.setQueryData(queryKey, initialData);\n dm.normalizer!.setQuery(JSON.stringify(queryKey), initialData);\n\n // Set query state to success so it can be invalidated\n const cache = dm.queryClient.getQueryCache().find({queryKey});\n cache?.setState({status: 'success', fetchStatus: 'idle', isInvalidated: false});\n\n // Mock getQueriesToUpdate to return empty array (simulating normy can't compute diff)\n const originalGetQueriesToUpdate = dm.normalizer!.getQueriesToUpdate;\n dm.normalizer!.getQueriesToUpdate = jest.fn().mockReturnValue([]);\n\n const invalidateSpy = jest.spyOn(dm.queryClient, 'invalidateQueries');\n\n // Update with fewer keys - should trigger refetch via checkMutationObjectsKeys\n dm.update({id: '1', name: 'Updated'});\n\n // Check if invalidation was triggered due to fewer keys\n expect(invalidateSpy).toHaveBeenCalled();\n\n // Restore mocks\n dm.normalizer!.getQueriesToUpdate = originalGetQueriesToUpdate;\n invalidateSpy.mockRestore();\n dm.queryNormalizer!.unsubscribe();\n dm.queryClient.clear();\n });\n });\n});\n"],"mappings":";;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,kBAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAA+D,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE/DG,QAAQ,CAAC,yCAAyC,EAAE,YAAM;EACtD,IAAIC,WAAwB;EAC5B,IAAIC,WAA8B;EAElCC,UAAU,CAAC,YAAM;IACbD,WAAW,GAAG,IAAIE,oCAAiB,CAAC;MAChCC,gBAAgB,EAAE;QACdC,UAAU,EAAE;MAChB;IACJ,CAAC,CAAC;IACFL,WAAW,GAAGC,WAAW,CAACD,WAAW;EACzC,CAAC,CAAC;EAEFM,SAAS,CAAC,YAAM;IAAA,IAAAC,qBAAA;IACZ,CAAAA,qBAAA,GAAAN,WAAW,CAACO,eAAe,cAAAD,qBAAA,eAA3BA,qBAAA,CAA6BE,WAAW,CAAC,CAAC;IAC1CT,WAAW,CAACU,KAAK,CAAC,CAAC;EACvB,CAAC,CAAC;EAEFX,QAAQ,CAAC,iCAAiC,EAAE,YAAM;IAC9CY,EAAE,CAAC,yDAAyD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAC,SAAA;MAAA,IAAAC,YAAA,EAAAC,iBAAA,EAAAC,QAAA,EAAAC,UAAA;MAAA,WAAAN,4BAAA,IAAAO,IAAA,UAAAC,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;UAAA;YACpDR,YAAY,GAAGS,IAAI,CAACC,EAAE,CAAC,UAACC,GAAG;cAAA,iBAAAC,MAAA,CAAeD,GAAG,CAACE,EAAE;YAAA,CAAE,CAAC;YAEnDZ,iBAAiB,GAAG,IAAId,oCAAiB,CAAC;cAC5CC,gBAAgB,EAAE;gBACd0B,yBAAyB,EAAEd,YAAY;gBACvCX,UAAU,EAAE;cAChB;YACJ,CAAC,CAAC;YAEFY,iBAAiB,CAACT,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAExCb,QAAQ,GAAG,CAAC,OAAO,CAAC;YAAAI,SAAA,CAAAE,IAAA;YAAA,OAEpBP,iBAAiB,CAACjB,WAAW,CAACgC,UAAU,CAAC;cAC3Cd,QAAQ,EAARA,QAAQ;cACRe,OAAO;gBAAA,IAAAC,QAAA,OAAAtB,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAqB,QAAA;kBAAA,WAAAtB,4BAAA,IAAAO,IAAA,UAAAgB,SAAAC,QAAA;oBAAA,kBAAAA,QAAA,CAAAd,IAAA,GAAAc,QAAA,CAAAb,IAAA;sBAAA;wBAAA,OAAAa,QAAA,CAAAC,MAAA,WAAY,CAAC;0BAACT,EAAE,EAAE,GAAG;0BAAEU,IAAI,EAAE;wBAAQ,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAAF,QAAA,CAAAG,IAAA;oBAAA;kBAAA,GAAAL,OAAA;gBAAA;gBAAA,SAAhDF,OAAOA,CAAA;kBAAA,OAAAC,QAAA,CAAAO,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAAPT,OAAO;cAAA,GAAyC;cAChDU,SAAS,EAAE;YACf,CAEC,CAAC;UAAA;YAEIxB,UAAU,GAAGF,iBAAiB,CAACT,eAAe,CAAEoC,iBAAiB,CAAC,CAAC;YAEzEC,MAAM,CAAC1B,UAAU,CAAC2B,OAAO,CAAC,YAAY,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;YACtDF,MAAM,CAAC7B,YAAY,CAAC,CAACgC,gBAAgB,CAAC,CAAC;YAEvC/B,iBAAiB,CAACT,eAAe,CAAEC,WAAW,CAAC,CAAC;YAChDQ,iBAAiB,CAACjB,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAY,SAAA,CAAAkB,IAAA;QAAA;MAAA,GAAAzB,QAAA;IAAA,CACzC,GAAC;IAEFJ,EAAE,CAAC,4CAA4C,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAmC,SAAA;MAAA,IAAAC,kBAAA,EAAAjC,iBAAA,EAAAC,QAAA;MAAA,WAAAL,4BAAA,IAAAO,IAAA,UAAA+B,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA7B,IAAA,GAAA6B,SAAA,CAAA5B,IAAA;UAAA;YACvC0B,kBAAkB,GAAGzB,IAAI,CAACC,EAAE,CAAC,UAAA2B,KAAA;cAAA,IAAEC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;cAAA,iBAAA1B,MAAA,CAAgB0B,QAAQ;YAAA,CAAE,CAAC;YAElErC,iBAAiB,GAAG,IAAId,oCAAiB,CAAC;cAC5CC,gBAAgB,EAAE;gBACdmD,YAAY,EAAEL,kBAAkB;gBAChC7C,UAAU,EAAE;cAChB;YACJ,CAAC,CAAC;YAEFY,iBAAiB,CAACT,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAExCb,QAAQ,GAAG,CAAC,OAAO,CAAC;YAAAkC,SAAA,CAAA5B,IAAA;YAAA,OAEpBP,iBAAiB,CAACjB,WAAW,CAACgC,UAAU,CAAC;cAC3Cd,QAAQ,EAARA,QAAQ;cACRe,OAAO;gBAAA,IAAAuB,SAAA,OAAA5C,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA2C,SAAA;kBAAA,WAAA5C,4BAAA,IAAAO,IAAA,UAAAsC,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAApC,IAAA,GAAAoC,SAAA,CAAAnC,IAAA;sBAAA;wBAAA,OAAAmC,SAAA,CAAArB,MAAA,WAAa;0BAClBsB,KAAK,EAAE,CAAC;4BAAC/B,EAAE,EAAE,GAAG;4BAAEU,IAAI,EAAE;0BAAQ,CAAC;wBACrC,CAAC;sBAAA;sBAAA;wBAAA,OAAAoB,SAAA,CAAAnB,IAAA;oBAAA;kBAAA,GAAAiB,QAAA;gBAAA,CAAC;gBAAA,SAFFxB,OAAOA,CAAA;kBAAA,OAAAuB,SAAA,CAAAf,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAAPT,OAAO;cAAA,GAEL;cACFU,SAAS,EAAE;YACf,CAEC,CAAC;UAAA;YAEFE,MAAM,CAACK,kBAAkB,CAAC,CAACF,gBAAgB,CAAC,CAAC;YAE7C/B,iBAAiB,CAACT,eAAe,CAAEC,WAAW,CAAC,CAAC;YAChDQ,iBAAiB,CAACjB,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA0C,SAAA,CAAAZ,IAAA;QAAA;MAAA,GAAAS,QAAA;IAAA,CACzC,GAAC;EACN,CAAC,CAAC;EAEFlD,QAAQ,CAAC,mCAAmC,EAAE,YAAM;IAChDY,EAAE,CAAC,iDAAiD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA+C,SAAA;MAAA,IAAA3C,QAAA,EAAAC,UAAA;MAAA,WAAAN,4BAAA,IAAAO,IAAA,UAAA0C,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAxC,IAAA,GAAAwC,SAAA,CAAAvC,IAAA;UAAA;YAClDvB,WAAW,CAACO,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAElCb,QAAQ,GAAG,CAAC,kBAAkB,CAAC;YAAA6C,SAAA,CAAAvC,IAAA;YAAA,OAE/BvB,WAAW,CAACD,WAAW,CAACgC,UAAU,CAAC;cACrCd,QAAQ,EAARA,QAAQ;cACRe,OAAO;gBAAA,IAAA+B,SAAA,OAAApD,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAmD,SAAA;kBAAA,WAAApD,4BAAA,IAAAO,IAAA,UAAA8C,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAA5C,IAAA,GAAA4C,SAAA,CAAA3C,IAAA;sBAAA;wBAAA,OAAA2C,SAAA,CAAA7B,MAAA,WAAY,CAAC;0BAACT,EAAE,EAAE,GAAG;0BAAEU,IAAI,EAAE;wBAAQ,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAA4B,SAAA,CAAA3B,IAAA;oBAAA;kBAAA,GAAAyB,QAAA;gBAAA;gBAAA,SAAhDhC,OAAOA,CAAA;kBAAA,OAAA+B,SAAA,CAAAvB,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAAPT,OAAO;cAAA,GAAyC;cAChDU,SAAS,EAAE;YACf,CAAoF,CAAC;UAAA;YAE/ExB,UAAU,GAAGlB,WAAW,CAACO,eAAe,CAAEoC,iBAAiB,CAAC,CAAC,EAEnE;YACAC,MAAM,CAAC1B,UAAU,CAAC2B,OAAO,CAAC,KAAK,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAgB,SAAA,CAAAvB,IAAA;QAAA;MAAA,GAAAqB,QAAA;IAAA,CACnD,GAAC;IAEFlD,EAAE,CAAC,sDAAsD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAsD,SAAA;MAAA,IAAAlD,QAAA,EAAAC,UAAA;MAAA,WAAAN,4BAAA,IAAAO,IAAA,UAAAiD,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA/C,IAAA,GAAA+C,SAAA,CAAA9C,IAAA;UAAA;YACvDvB,WAAW,CAACO,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAElCb,QAAQ,GAAG,CAAC,sBAAsB,CAAC;YAAAoD,SAAA,CAAA9C,IAAA;YAAA,OAEnCvB,WAAW,CAACD,WAAW,CAACgC,UAAU,CAAC;cACrCd,QAAQ,EAARA,QAAQ;cACRe,OAAO;gBAAA,IAAAsC,SAAA,OAAA3D,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA0D,SAAA;kBAAA,WAAA3D,4BAAA,IAAAO,IAAA,UAAAqD,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAAnD,IAAA,GAAAmD,SAAA,CAAAlD,IAAA;sBAAA;wBAAA,OAAAkD,SAAA,CAAApC,MAAA,WAAY,CAAC;0BAACT,EAAE,EAAE,GAAG;0BAAEU,IAAI,EAAE;wBAAQ,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAAmC,SAAA,CAAAlC,IAAA;oBAAA;kBAAA,GAAAgC,QAAA;gBAAA;gBAAA,SAAhDvC,OAAOA,CAAA;kBAAA,OAAAsC,SAAA,CAAA9B,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAAPT,OAAO;cAAA,GAAyC;cAChDU,SAAS,EAAE;YACf,CAAoF,CAAC;UAAA;YAE/ExB,UAAU,GAAGlB,WAAW,CAACO,eAAe,CAAEoC,iBAAiB,CAAC,CAAC,EAEnE;YACAC,MAAM,CAAC1B,UAAU,CAAC2B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC6B,aAAa,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAL,SAAA,CAAA9B,IAAA;QAAA;MAAA,GAAA4B,QAAA;IAAA,CACrD,GAAC;IAEFzD,EAAE,CAAC,mEAAmE,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA8D,UAAA;MAAA,IAAA1D,QAAA,EAAAC,UAAA;MAAA,WAAAN,4BAAA,IAAAO,IAAA,UAAAyD,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAvD,IAAA,GAAAuD,UAAA,CAAAtD,IAAA;UAAA;YACpEvB,WAAW,CAACO,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAElCb,QAAQ,GAAG,CAAC,eAAe,CAAC;YAAA4D,UAAA,CAAAtD,IAAA;YAAA,OAE5BvB,WAAW,CAACD,WAAW,CAACgC,UAAU,CAAC;cACrCd,QAAQ,EAARA,QAAQ;cACRe,OAAO;gBAAA,IAAA8C,SAAA,OAAAnE,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAkE,SAAA;kBAAA,WAAAnE,4BAAA,IAAAO,IAAA,UAAA6D,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAA3D,IAAA,GAAA2D,SAAA,CAAA1D,IAAA;sBAAA;wBAAA,OAAA0D,SAAA,CAAA5C,MAAA,WAAY,CAAC;0BAACT,EAAE,EAAE,GAAG;0BAAEU,IAAI,EAAE;wBAAQ,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAA2C,SAAA,CAAA1C,IAAA;oBAAA;kBAAA,GAAAwC,QAAA;gBAAA;gBAAA,SAAhD/C,OAAOA,CAAA;kBAAA,OAAA8C,SAAA,CAAAtC,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAAPT,OAAO;cAAA;YACX,CAAC,CAAC;UAAA;YAEId,UAAU,GAAGlB,WAAW,CAACO,eAAe,CAAEoC,iBAAiB,CAAC,CAAC,EAEnE;YACAC,MAAM,CAAC1B,UAAU,CAAC2B,OAAO,CAAC,KAAK,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA+B,UAAA,CAAAtC,IAAA;QAAA;MAAA,GAAAoC,SAAA;IAAA,CACnD,GAAC;EACN,CAAC,CAAC;EAEF7E,QAAQ,CAAC,gCAAgC,EAAE,YAAM;IAC7CY,EAAE,CAAC,gDAAgD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAqE,UAAA;MAAA,IAAAC,OAAA,EAAAC,UAAA,EAAAC,WAAA,EAAAC,MAAA,EAAApE,UAAA;MAAA,WAAAN,4BAAA,IAAAO,IAAA,UAAAoE,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAlE,IAAA,GAAAkE,UAAA,CAAAjE,IAAA;UAAA;YAC3C4D,OAAO,GAAG,SAAVA,OAAOA,CAAAM,KAAA;cAAA,IAAKC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;cAAA,oBACtB,IAAAC,eAAA,EAACC,sCAAkB;gBAAC5F,WAAW,EAAEA,WAAY;gBAAA0F,QAAA,EAAEA;cAAQ,CAAqB,CAAC;YAAA,CAChF;YAEKN,UAAU,GAAG,IAAAS,iCAAwB,EAAC;cACxCvD,IAAI,EAAE,OAAO;cACbwD,KAAK;gBAAA,IAAAC,MAAA,OAAApF,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAmF,UAAA;kBAAA,WAAApF,4BAAA,IAAAO,IAAA,UAAA8E,WAAAC,UAAA;oBAAA,kBAAAA,UAAA,CAAA5E,IAAA,GAAA4E,UAAA,CAAA3E,IAAA;sBAAA;wBAAA,OAAA2E,UAAA,CAAA7D,MAAA,WAAY,CAAC;0BAACT,EAAE,EAAE,GAAG;0BAAEU,IAAI,EAAE;wBAAQ,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAA4D,UAAA,CAAA3D,IAAA;oBAAA;kBAAA,GAAAyD,SAAA;gBAAA;gBAAA,SAA9CF,KAAKA,CAAA;kBAAA,OAAAC,MAAA,CAAAvD,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAALqD,KAAK;cAAA,GAAyC;cAC9CK,OAAO,EAAE;gBACLzD,SAAS,EAAE;cACf;YACJ,CAAC,CAAC;YAAA2C,WAAA,GAEe,IAAAe,kBAAU,EAAC;cAAA,OAAM,IAAAC,0BAAY,EAACjB,UAAU,EAAE,CAAC,CAAC,CAAC;YAAA,GAAE;cAACD,OAAO,EAAPA;YAAO,CAAC,CAAC,EAAnEG,MAAM,GAAAD,WAAA,CAANC,MAAM;YAAAE,UAAA,CAAAjE,IAAA;YAAA,OAEP,IAAA+E,eAAO,EAAC;cAAA,OAAM1D,MAAM,CAAC0C,MAAM,CAACiB,OAAO,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,SAAS,CAAC;YAAA,EAAC;UAAA;YAE5DvF,UAAU,GAAGlB,WAAW,CAACO,eAAe,CAAEoC,iBAAiB,CAAC,CAAC,EAEnE;YACAC,MAAM,CAAC1B,UAAU,CAAC2B,OAAO,CAAC,KAAK,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA0C,UAAA,CAAAjD,IAAA;QAAA;MAAA,GAAA2C,SAAA;IAAA,CACnD,GAAC;IAEFxE,EAAE,CAAC,mCAAmC,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA6F,UAAA;MAAA,IAAAvB,OAAA,EAAAwB,WAAA,EAAAC,WAAA,EAAAC,YAAA,EAAAC,OAAA,EAAAC,YAAA,EAAAC,OAAA,EAAA9F,UAAA;MAAA,WAAAN,4BAAA,IAAAO,IAAA,UAAA8F,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA5F,IAAA,GAAA4F,UAAA,CAAA3F,IAAA;UAAA;YAC9B4D,OAAO,GAAG,SAAVA,OAAOA,CAAAgC,MAAA;cAAA,IAAKzB,QAAQ,GAAAyB,MAAA,CAARzB,QAAQ;cAAA,oBACtB,IAAAC,eAAA,EAACC,sCAAkB;gBAAC5F,WAAW,EAAEA,WAAY;gBAAA0F,QAAA,EAAEA;cAAQ,CAAqB,CAAC;YAAA,CAChF;YAEKiB,WAAW,GAAG,IAAAd,iCAAwB,EAAC;cACzCvD,IAAI,EAAE,OAAO;cACbwD,KAAK;gBAAA,IAAAsB,OAAA,OAAAzG,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAwG,UAAA;kBAAA,WAAAzG,4BAAA,IAAAO,IAAA,UAAAmG,WAAAC,UAAA;oBAAA,kBAAAA,UAAA,CAAAjG,IAAA,GAAAiG,UAAA,CAAAhG,IAAA;sBAAA;wBAAA,OAAAgG,UAAA,CAAAlF,MAAA,WAAY,CAAC;0BAACT,EAAE,EAAE,GAAG;0BAAEU,IAAI,EAAE;wBAAQ,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAAiF,UAAA,CAAAhF,IAAA;oBAAA;kBAAA,GAAA8E,SAAA;gBAAA;gBAAA,SAA9CvB,KAAKA,CAAA;kBAAA,OAAAsB,OAAA,CAAA5E,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAALqD,KAAK;cAAA,GAAyC;cAC9CK,OAAO,EAAE;gBACLzD,SAAS,EAAE;cACf;YACJ,CAAC,CAAC;YAEIkE,WAAW,GAAG,IAAAf,iCAAwB,EAAC;cACzCvD,IAAI,EAAE,OAAO;cACbwD,KAAK;gBAAA,IAAA0B,OAAA,OAAA7G,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA4G,UAAA;kBAAA,WAAA7G,4BAAA,IAAAO,IAAA,UAAAuG,WAAAC,UAAA;oBAAA,kBAAAA,UAAA,CAAArG,IAAA,GAAAqG,UAAA,CAAApG,IAAA;sBAAA;wBAAA,OAAAoG,UAAA,CAAAtF,MAAA,WAAY,CAAC;0BAACT,EAAE,EAAE,GAAG;0BAAEgG,KAAK,EAAE;wBAAQ,CAAC,CAAC;sBAAA;sBAAA;wBAAA,OAAAD,UAAA,CAAApF,IAAA;oBAAA;kBAAA,GAAAkF,SAAA;gBAAA;gBAAA,SAA/C3B,KAAKA,CAAA;kBAAA,OAAA0B,OAAA,CAAAhF,KAAA,OAAAC,SAAA;gBAAA;gBAAA,OAALqD,KAAK;cAAA,GAA0C;cAC/CK,OAAO,EAAE;gBACLzD,SAAS,EAAE;cACf;YACJ,CAAC,CAAC;YAAAmE,YAAA,GAEwB,IAAAT,kBAAU,EAAC;cAAA,OAAM,IAAAC,0BAAY,EAACM,WAAW,EAAE,CAAC,CAAC,CAAC;YAAA,GAAE;cAACxB,OAAO,EAAPA;YAAO,CAAC,CAAC,EAArE2B,OAAO,GAAAD,YAAA,CAAfvB,MAAM;YAAAyB,YAAA,GACa,IAAAX,kBAAU,EAAC;cAAA,OAAM,IAAAC,0BAAY,EAACO,WAAW,EAAE,CAAC,CAAC,CAAC;YAAA,GAAE;cAACzB,OAAO,EAAPA;YAAO,CAAC,CAAC,EAArE6B,OAAO,GAAAD,YAAA,CAAfzB,MAAM;YAAA4B,UAAA,CAAA3F,IAAA;YAAA,OAEP,IAAA+E,eAAO,EAAC,YAAM;cAChB1D,MAAM,CAACkE,OAAO,CAACP,OAAO,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,SAAS,CAAC;cAC9C7D,MAAM,CAACoE,OAAO,CAACT,OAAO,CAACC,MAAM,CAAC,CAACC,IAAI,CAAC,SAAS,CAAC;YAClD,CAAC,CAAC;UAAA;YAEIvF,UAAU,GAAGlB,WAAW,CAACO,eAAe,CAAEoC,iBAAiB,CAAC,CAAC;YAEnEC,MAAM,CAAC1B,UAAU,CAAC2B,OAAO,CAAC,KAAK,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;YAC/CF,MAAM,CAAC1B,UAAU,CAAC2B,OAAO,CAAC,KAAK,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAoE,UAAA,CAAA3E,IAAA;QAAA;MAAA,GAAAmE,SAAA;IAAA,CACnD,GAAC;EACN,CAAC,CAAC;EAEF5G,QAAQ,CAAC,kCAAkC,EAAE,YAAM;IAC/CY,EAAE,CAAC,kDAAkD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAgH,UAAA;MAAA,IAAAC,gBAAA,EAAA7G,QAAA,EAAA8G,WAAA,EAAAC,IAAA;MAAA,WAAApH,4BAAA,IAAAO,IAAA,UAAA8G,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA5G,IAAA,GAAA4G,UAAA,CAAA3G,IAAA;UAAA;YAC7CuG,gBAAgB,GAAG,IAAI5H,oCAAiB,CAAC;cAC3CC,gBAAgB,EAAE;gBACdC,UAAU,EAAE,KAAK;gBACjB+H,UAAU,EAAE;cAChB;YACJ,CAAC,CAAC;YAEFvF,MAAM,CAACkF,gBAAgB,CAACvH,eAAe,CAAC,CAACuC,WAAW,CAAC,CAAC;YAEtDgF,gBAAgB,CAACvH,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAEvCb,QAAQ,GAAG,CAAC,OAAO,CAAC;YACpB8G,WAAW,GAAG,CAAC;cAACnG,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAK,CAAC,CAAC;YAE5CwF,gBAAgB,CAAC/H,WAAW,CAACqI,YAAY,CAACnH,QAAQ,EAAE8G,WAAW,CAAC;YAChED,gBAAgB,CAACO,UAAU,CAAEC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACvH,QAAQ,CAAC,EAAE8G,WAAW,CAAC;;YAE5E;YACAD,gBAAgB,CAACvH,eAAe,CAAEkI,iBAAiB,CAAC;cAAC7G,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAK,CAAC,CAAC;YAErE0F,IAAI,GAAGF,gBAAgB,CAAC/H,WAAW,CAAC2I,YAAY,CAACzH,QAAQ,CAAC;YAIhE2B,MAAM,CAACoF,IAAI,CAAC,CAAC,CAAC,CAAC1F,IAAI,CAAC,CAACmE,IAAI,CAAC,KAAK,CAAC;YAEhCqB,gBAAgB,CAACvH,eAAe,CAAEC,WAAW,CAAC,CAAC;YAC/CsH,gBAAgB,CAAC/H,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAyH,UAAA,CAAA3F,IAAA;QAAA;MAAA,GAAAsF,SAAA;IAAA,CACxC,GAAC;IAEFnH,EAAE,CAAC,2CAA2C,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA8H,UAAA;MAAA,IAAAC,sBAAA;MAAA,WAAAhI,4BAAA,IAAAO,IAAA,UAAA0H,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAxH,IAAA,GAAAwH,UAAA,CAAAvH,IAAA;UAAA;YACtCqH,sBAAsB,GAAG,IAAI1I,oCAAiB,CAAC;cACjDC,gBAAgB,EAAE;gBACdC,UAAU,EAAE,KAAK;gBACjB+H,UAAU,EAAE;kBACRY,qBAAqB,EAAE,IAAI;kBAC3B3I,UAAU,EAAE;gBAChB;cACJ;YACJ,CAAC,CAAC;YAEFwC,MAAM,CAACgG,sBAAsB,CAACrI,eAAe,CAAC,CAACuC,WAAW,CAAC,CAAC;YAC5DF,MAAM,CAACgG,sBAAsB,CAACP,UAAU,CAAC,CAACvF,WAAW,CAAC,CAAC;YAEvD8F,sBAAsB,CAAC7I,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAqI,UAAA,CAAAvG,IAAA;QAAA;MAAA,GAAAoG,SAAA;IAAA,CAC9C,GAAC;EACN,CAAC,CAAC;EAEF7I,QAAQ,CAAC,0BAA0B,EAAE,YAAM;IACvCY,EAAE,CAAC,mDAAmD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAmI,UAAA;MAAA,IAAAC,gBAAA;MAAA,WAAArI,4BAAA,IAAAO,IAAA,UAAA+H,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA7H,IAAA,GAAA6H,UAAA,CAAA5H,IAAA;UAAA;YAC9C0H,gBAAgB,GAAG,IAAI/I,oCAAiB,CAAC;cAC3CC,gBAAgB,EAAE;gBACdC,UAAU,EAAE,KAAK;gBACjBgJ,UAAU,EAAE;cAChB;YACJ,CAAC,CAAC;YAEFxG,MAAM,CAACqG,gBAAgB,CAAC1I,eAAe,CAAC,CAACuC,WAAW,CAAC,CAAC;YACtDF,MAAM,CAACqG,gBAAgB,CAACZ,UAAU,CAAC,CAACvF,WAAW,CAAC,CAAC;YAEjDmG,gBAAgB,CAAClJ,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA0I,UAAA,CAAA5G,IAAA;QAAA;MAAA,GAAAyG,SAAA;IAAA,CACxC,GAAC;IAEFtI,EAAE,CAAC,uDAAuD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAwI,UAAA;MAAA,IAAAC,UAAA;MAAA,WAAA1I,4BAAA,IAAAO,IAAA,UAAAoI,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAlI,IAAA,GAAAkI,UAAA,CAAAjI,IAAA;UAAA;YAClD+H,UAAU,GAAG,IAAIpJ,oCAAiB,CAAC;cACrCC,gBAAgB,EAAE;gBACdC,UAAU,EAAE,KAAK;gBACjB+H,UAAU,EAAE,IAAI;gBAChBiB,UAAU,EAAE;cAChB;YACJ,CAAC,CAAC;YAEFxG,MAAM,CAAC0G,UAAU,CAAC/I,eAAe,CAAC,CAACuC,WAAW,CAAC,CAAC;YAChDF,MAAM,CAAC0G,UAAU,CAACjB,UAAU,CAAC,CAACvF,WAAW,CAAC,CAAC;YAE3CwG,UAAU,CAACvJ,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA+I,UAAA,CAAAjH,IAAA;QAAA;MAAA,GAAA8G,SAAA;IAAA,CAClC,GAAC;EACN,CAAC,CAAC;EAEFvJ,QAAQ,CAAC,4BAA4B,EAAE,YAAM;IACzCY,EAAE,CAAC,yDAAyD,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA4I,UAAA;MAAA,IAAAC,EAAA,EAAAzI,QAAA,EAAA8G,WAAA,EAAAC,IAAA;MAAA,WAAApH,4BAAA,IAAAO,IAAA,UAAAwI,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAtI,IAAA,GAAAsI,UAAA,CAAArI,IAAA;UAAA;YACpDmI,EAAE,GAAG,IAAIxJ,oCAAiB,CAAC;cAC7BC,gBAAgB,EAAE;gBACdC,UAAU,EAAE,KAAK;gBACjB+H,UAAU,EAAE;cAChB;YACJ,CAAC,CAAC;YAEFuB,EAAE,CAACnJ,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAEzBb,QAAQ,GAAG,CAAC,OAAO,CAAC;YACpB8G,WAAW,GAAG,CAChB;cAACnG,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAQ,CAAC,EACzB;cAACV,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAQ,CAAC,CAC5B;YAEDoH,EAAE,CAAC3J,WAAW,CAACqI,YAAY,CAACnH,QAAQ,EAAE8G,WAAW,CAAC;YAClD2B,EAAE,CAACrB,UAAU,CAAEC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACvH,QAAQ,CAAC,EAAE8G,WAAW,CAAC;;YAE9D;YACA2B,EAAE,CAACG,MAAM,CAAC,CACN;cAACjI,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAW,CAAC,EAC5B;cAACV,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAW,CAAC,CAC/B,CAAC;YAEI0F,IAAI,GAAG0B,EAAE,CAAC3J,WAAW,CAAC2I,YAAY,CAACzH,QAAQ,CAAC;YAKlD2B,MAAM,CAACoF,IAAI,CAAC,CAAC,CAAC,CAAC1F,IAAI,CAAC,CAACmE,IAAI,CAAC,WAAW,CAAC;YACtC7D,MAAM,CAACoF,IAAI,CAAC,CAAC,CAAC,CAAC1F,IAAI,CAAC,CAACmE,IAAI,CAAC,WAAW,CAAC;YAEtCiD,EAAE,CAACnJ,eAAe,CAAEC,WAAW,CAAC,CAAC;YACjCkJ,EAAE,CAAC3J,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAmJ,UAAA,CAAArH,IAAA;QAAA;MAAA,GAAAkH,SAAA;IAAA,CAC1B,GAAC;IAEF/I,EAAE,CAAC,8DAA8D,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAAiJ,UAAA;MAAA,IAAAJ,EAAA,EAAAzI,QAAA,EAAA8G,WAAA,EAAAgC,KAAA,EAAAC,aAAA;MAAA,WAAApJ,4BAAA,IAAAO,IAAA,UAAA8I,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA5I,IAAA,GAAA4I,UAAA,CAAA3I,IAAA;UAAA;YACzDmI,EAAE,GAAG,IAAIxJ,oCAAiB,CAAC;cAC7BC,gBAAgB,EAAE;gBACdC,UAAU,EAAE,KAAK;gBACjBgJ,UAAU,EAAE;cAChB;YACJ,CAAC,CAAC;YAEFM,EAAE,CAACnJ,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAEzBb,QAAQ,GAAG,CAAC,OAAO,CAAC;YACpB8G,WAAW,GAAG,CAAC;cAACnG,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAQ,CAAC,CAAC;YAE/CoH,EAAE,CAAC3J,WAAW,CAACqI,YAAY,CAACnH,QAAQ,EAAE8G,WAAW,CAAC;YAClD2B,EAAE,CAACrB,UAAU,CAAEC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACvH,QAAQ,CAAC,EAAE8G,WAAW,CAAC;;YAE9D;YACMgC,KAAK,GAAGL,EAAE,CAAC3J,WAAW,CAACoK,aAAa,CAAC,CAAC,CAACC,IAAI,CAAC;cAACnJ,QAAQ,EAARA;YAAQ,CAAC,CAAC;YAC7D8I,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEM,QAAQ,CAAC;cAAC7D,MAAM,EAAE,SAAS;cAAE8D,WAAW,EAAE,MAAM;cAAEC,aAAa,EAAE;YAAK,CAAC,CAAC;YAEzEP,aAAa,GAAGxI,IAAI,CAACgJ,KAAK,CAACd,EAAE,EAAE,gBAAgB,CAAC;YAEtDA,EAAE,CAACG,MAAM,CAAC;cAACjI,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAS,CAAC,CAAC;YAErCM,MAAM,CAACoH,aAAa,CAAC,CAACjH,gBAAgB,CAAC,CAAC;YAExCiH,aAAa,CAACS,WAAW,CAAC,CAAC;YAC3Bf,EAAE,CAACnJ,eAAe,CAAEC,WAAW,CAAC,CAAC;YACjCkJ,EAAE,CAAC3J,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAyJ,UAAA,CAAA3H,IAAA;QAAA;MAAA,GAAAuH,SAAA;IAAA,CAC1B,GAAC;IAEFpJ,EAAE,CAAC,6FAA6F,mBAAAC,0BAAA,mBAAAC,4BAAA,IAAAC,IAAA,CAAE,SAAA6J,UAAA;MAAA,IAAAhB,EAAA,EAAAzI,QAAA,EAAA8G,WAAA,EAAAgC,KAAA,EAAAY,0BAAA,EAAAX,aAAA;MAAA,WAAApJ,4BAAA,IAAAO,IAAA,UAAAyJ,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAvJ,IAAA,GAAAuJ,UAAA,CAAAtJ,IAAA;UAAA;YAC9F;YACA;YACMmI,EAAE,GAAG,IAAIxJ,oCAAiB,CAAC;cAC7BC,gBAAgB,EAAE;gBACdC,UAAU,EAAE,KAAK;gBACjBgJ,UAAU,EAAE,IAAI,CAAE;cACtB;YACJ,CAAC,CAAC;YAEFM,EAAE,CAACnJ,eAAe,CAAEuB,SAAS,CAAC,CAAC;YAEzBb,QAAQ,GAAG,CAAC,OAAO,CAAC,EAC1B;YACM8G,WAAW,GAAG,CAAC;cAACnG,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE,QAAQ;cAAEwI,KAAK,EAAE,eAAe;cAAEC,GAAG,EAAE;YAAE,CAAC,CAAC;YAEhFrB,EAAE,CAAC3J,WAAW,CAACqI,YAAY,CAACnH,QAAQ,EAAE8G,WAAW,CAAC;YAClD2B,EAAE,CAACrB,UAAU,CAAEC,QAAQ,CAACC,IAAI,CAACC,SAAS,CAACvH,QAAQ,CAAC,EAAE8G,WAAW,CAAC;;YAE9D;YACMgC,KAAK,GAAGL,EAAE,CAAC3J,WAAW,CAACoK,aAAa,CAAC,CAAC,CAACC,IAAI,CAAC;cAACnJ,QAAQ,EAARA;YAAQ,CAAC,CAAC;YAC7D8I,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEM,QAAQ,CAAC;cAAC7D,MAAM,EAAE,SAAS;cAAE8D,WAAW,EAAE,MAAM;cAAEC,aAAa,EAAE;YAAK,CAAC,CAAC;;YAE/E;YACMI,0BAA0B,GAAGjB,EAAE,CAACrB,UAAU,CAAE2C,kBAAkB;YACpEtB,EAAE,CAACrB,UAAU,CAAE2C,kBAAkB,GAAGxJ,IAAI,CAACC,EAAE,CAAC,CAAC,CAACwJ,eAAe,CAAC,EAAE,CAAC;YAE3DjB,aAAa,GAAGxI,IAAI,CAACgJ,KAAK,CAACd,EAAE,CAAC3J,WAAW,EAAE,mBAAmB,CAAC,EAErE;YACA2J,EAAE,CAACG,MAAM,CAAC;cAACjI,EAAE,EAAE,GAAG;cAAEU,IAAI,EAAE;YAAS,CAAC,CAAC;;YAErC;YACAM,MAAM,CAACoH,aAAa,CAAC,CAACjH,gBAAgB,CAAC,CAAC;;YAExC;YACA2G,EAAE,CAACrB,UAAU,CAAE2C,kBAAkB,GAAGL,0BAA0B;YAC9DX,aAAa,CAACS,WAAW,CAAC,CAAC;YAC3Bf,EAAE,CAACnJ,eAAe,CAAEC,WAAW,CAAC,CAAC;YACjCkJ,EAAE,CAAC3J,WAAW,CAACU,KAAK,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAoK,UAAA,CAAAtI,IAAA;QAAA;MAAA,GAAAmI,SAAA;IAAA,CAC1B,GAAC;EACN,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}