@gravity-ui/data-source 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) 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/utils.js +6 -1
  7. package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
  8. package/build/cjs/react-query/impl/plain/utils.js +6 -1
  9. package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
  10. package/build/cjs/react-query/types/query-meta.d.ts +12 -0
  11. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +295 -0
  12. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  13. package/build/cjs/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  14. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js +88 -0
  15. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  16. package/build/cjs/react-query/utils/parseQueryKey.d.ts +2 -0
  17. package/build/cjs/react-query/utils/parseQueryKey.js +10 -0
  18. package/build/cjs/react-query/utils/parseQueryKey.js.map +1 -0
  19. package/build/esm/react-query/ClientDataManager.d.ts +7 -3
  20. package/build/esm/react-query/ClientDataManager.js +107 -29
  21. package/build/esm/react-query/ClientDataManager.js.map +1 -1
  22. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +145 -0
  23. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -1
  24. package/build/esm/react-query/impl/infinite/utils.js +6 -1
  25. package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
  26. package/build/esm/react-query/impl/plain/utils.js +6 -1
  27. package/build/esm/react-query/impl/plain/utils.js.map +1 -1
  28. package/build/esm/react-query/types/query-meta.d.ts +12 -0
  29. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +292 -0
  30. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  31. package/build/esm/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  32. package/build/esm/react-query/utils/checkMutationObjectsKeys.js +81 -0
  33. package/build/esm/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  34. package/build/esm/react-query/utils/parseQueryKey.d.ts +2 -0
  35. package/build/esm/react-query/utils/parseQueryKey.js +4 -0
  36. package/build/esm/react-query/utils/parseQueryKey.js.map +1 -0
  37. package/package.json +1 -1
@@ -1,10 +1,13 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
1
2
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
3
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
4
  import _createClass from "@babel/runtime/helpers/createClass";
4
5
  import { createNormalizer } from '@normy/core';
5
6
  import { QueryClient } from '@tanstack/react-query';
6
7
  import { composeFullKey, hasTag } from '../core';
8
+ import { checkMutationObjectsKeys } from './utils/checkMutationObjectsKeys';
7
9
  import { createQueryNormalizer } from './utils/normalize';
10
+ import { parseQueryKey } from './utils/parseQueryKey';
8
11
  export var ClientDataManager = /*#__PURE__*/function () {
9
12
  function ClientDataManager() {
10
13
  var _config$defaultOption,
@@ -15,6 +18,8 @@ export var ClientDataManager = /*#__PURE__*/function () {
15
18
  this.queryClient = void 0;
16
19
  this.normalizer = void 0;
17
20
  this.queryNormalizer = void 0;
21
+ this.normalizerConfig = void 0;
22
+ this.normalizerConfig = config.normalizerConfig;
18
23
  this.queryClient = new QueryClient(_objectSpread(_objectSpread({}, config), {}, {
19
24
  defaultOptions: _objectSpread(_objectSpread({}, config.defaultOptions), {}, {
20
25
  queries: _objectSpread({
@@ -34,54 +39,94 @@ export var ClientDataManager = /*#__PURE__*/function () {
34
39
  }
35
40
  return _createClass(ClientDataManager, [{
36
41
  key: "optimisticUpdate",
37
- value: function optimisticUpdate(mutationData) {
42
+ value: function optimisticUpdate(mutationData, queryKey, queryData) {
38
43
  var _this2 = this;
39
44
  if (!this.normalizer) {
40
45
  return;
41
46
  }
47
+ if (queryKey && queryData) {
48
+ this.optimisticUpdateQuery(queryKey, queryData);
49
+ return;
50
+ }
42
51
  var queriesToUpdate = this.normalizer.getQueriesToUpdate(mutationData);
43
52
  queriesToUpdate.forEach(function (query) {
44
- var queryKey = JSON.parse(query.queryKey);
45
- var cachedQuery = _this2.queryClient.getQueryCache().find({
46
- queryKey: queryKey
47
- });
48
- var dataUpdatedAt = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.dataUpdatedAt;
49
- var isInvalidated = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.isInvalidated;
50
- var error = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.error;
51
- var status = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.status;
52
- _this2.queryClient.setQueryData(queryKey, function () {
53
- return query.data;
54
- }, {
55
- updatedAt: dataUpdatedAt
56
- });
57
- cachedQuery === null || cachedQuery === void 0 || cachedQuery.setState({
58
- isInvalidated: isInvalidated,
59
- error: error,
60
- status: status
61
- });
53
+ var parsedQueryKey = parseQueryKey(query.queryKey);
54
+ _this2.optimisticUpdateQuery(parsedQueryKey, query.data);
62
55
  });
63
56
  }
64
57
  }, {
65
58
  key: "invalidateData",
66
- value: function invalidateData(data) {
59
+ value: function invalidateData(data, queryKey) {
67
60
  var _this3 = this;
68
61
  if (!this.normalizer) {
69
62
  return;
70
63
  }
64
+ if (queryKey) {
65
+ this.invalidateQuery(queryKey);
66
+ return;
67
+ }
71
68
  var queriesToUpdate = this.normalizer.getQueriesToUpdate(data);
72
69
  queriesToUpdate.forEach(function (query) {
73
- var queryKey = JSON.parse(query.queryKey);
74
- _this3.queryClient.invalidateQueries({
75
- queryKey: queryKey
70
+ var parsedQueryKey = parseQueryKey(query.queryKey);
71
+ _this3.invalidateQuery(parsedQueryKey);
72
+ });
73
+ }
74
+ }, {
75
+ key: "update",
76
+ value: function update(data) {
77
+ var _this4 = this;
78
+ if (!this.normalizer) {
79
+ return;
80
+ }
81
+ var _ref = _typeof(this.normalizerConfig) === 'object' ? this.normalizerConfig : {
82
+ optimistic: false,
83
+ invalidate: false
84
+ },
85
+ globalOptimistic = _ref.optimistic,
86
+ globalInvalidate = _ref.invalidate;
87
+ var queriesToUpdate = this.normalizer.getQueriesToUpdate(data);
88
+ if (queriesToUpdate.length === 0) {
89
+ var completeness = checkMutationObjectsKeys(data, this.normalizer);
90
+ var dependentQueries = this.normalizer.getDependentQueries(data);
91
+ if (completeness.needsRefetch) {
92
+ dependentQueries.forEach(function (queryKeyString) {
93
+ var _cachedQuery$meta;
94
+ var parsedQueryKey = parseQueryKey(queryKeyString);
95
+ var cachedQuery = _this4.queryClient.getQueryCache().find({
96
+ queryKey: parsedQueryKey
97
+ });
98
+ var _ref2 = (_cachedQuery$meta = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.meta) !== null && _cachedQuery$meta !== void 0 ? _cachedQuery$meta : {},
99
+ invalidate = _ref2.invalidate;
100
+ if (invalidate === true || invalidate === undefined && globalInvalidate === true) {
101
+ _this4.invalidateData(data, parsedQueryKey);
102
+ }
103
+ });
104
+ }
105
+ return;
106
+ }
107
+ queriesToUpdate.forEach(function (query) {
108
+ var _cachedQuery$meta2;
109
+ var parsedQueryKey = parseQueryKey(query.queryKey);
110
+ var cachedQuery = _this4.queryClient.getQueryCache().find({
111
+ queryKey: parsedQueryKey
76
112
  });
113
+ var _ref3 = (_cachedQuery$meta2 = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.meta) !== null && _cachedQuery$meta2 !== void 0 ? _cachedQuery$meta2 : {},
114
+ optimistic = _ref3.optimistic,
115
+ invalidate = _ref3.invalidate;
116
+ if (optimistic === true || optimistic === undefined && globalOptimistic === true) {
117
+ _this4.optimisticUpdate(data, parsedQueryKey, query.data);
118
+ }
119
+ if (invalidate === true || invalidate === undefined && globalInvalidate === true) {
120
+ _this4.invalidateData(data, parsedQueryKey);
121
+ }
77
122
  });
78
123
  }
79
124
  }, {
80
125
  key: "invalidateTag",
81
126
  value: function invalidateTag(tag, invalidateOptions) {
82
127
  return this.invalidateQueries({
83
- predicate: function predicate(_ref) {
84
- var queryKey = _ref.queryKey;
128
+ predicate: function predicate(_ref4) {
129
+ var queryKey = _ref4.queryKey;
85
130
  return hasTag(queryKey, tag);
86
131
  }
87
132
  }, invalidateOptions);
@@ -90,8 +135,8 @@ export var ClientDataManager = /*#__PURE__*/function () {
90
135
  key: "invalidateTags",
91
136
  value: function invalidateTags(tags, invalidateOptions) {
92
137
  return this.invalidateQueries({
93
- predicate: function predicate(_ref2) {
94
- var queryKey = _ref2.queryKey;
138
+ predicate: function predicate(_ref5) {
139
+ var queryKey = _ref5.queryKey;
95
140
  return tags.every(function (tag) {
96
141
  return hasTag(queryKey, tag);
97
142
  });
@@ -141,9 +186,9 @@ export var ClientDataManager = /*#__PURE__*/function () {
141
186
  }, {
142
187
  key: "invalidateQueries",
143
188
  value: function invalidateQueries(filters, invalidateOptions) {
144
- var _this4 = this;
189
+ var _this5 = this;
145
190
  var invalidate = function invalidate() {
146
- return _this4.queryClient.invalidateQueries(filters);
191
+ return _this5.queryClient.invalidateQueries(filters);
147
192
  };
148
193
  this.repeatInvalidate(invalidate, invalidateOptions === null || invalidateOptions === void 0 ? void 0 : invalidateOptions.repeat);
149
194
  return invalidate();
@@ -169,6 +214,39 @@ export var ClientDataManager = /*#__PURE__*/function () {
169
214
  }
170
215
  return createNormalizer(config);
171
216
  }
217
+ }, {
218
+ key: "invalidateQuery",
219
+ value: function invalidateQuery(queryKey) {
220
+ var cachedQuery = this.queryClient.getQueryCache().find({
221
+ queryKey: queryKey
222
+ });
223
+ 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)) {
224
+ this.queryClient.invalidateQueries({
225
+ queryKey: queryKey
226
+ });
227
+ }
228
+ }
229
+ }, {
230
+ key: "optimisticUpdateQuery",
231
+ value: function optimisticUpdateQuery(queryKey, queryData) {
232
+ var cachedQuery = this.queryClient.getQueryCache().find({
233
+ queryKey: queryKey
234
+ });
235
+ var dataUpdatedAt = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.dataUpdatedAt;
236
+ var isInvalidated = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.isInvalidated;
237
+ var error = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.error;
238
+ var status = cachedQuery === null || cachedQuery === void 0 ? void 0 : cachedQuery.state.status;
239
+ this.queryClient.setQueryData(queryKey, function () {
240
+ return queryData;
241
+ }, {
242
+ updatedAt: dataUpdatedAt
243
+ });
244
+ cachedQuery === null || cachedQuery === void 0 || cachedQuery.setState({
245
+ isInvalidated: isInvalidated,
246
+ error: error,
247
+ status: status
248
+ });
249
+ }
172
250
  }]);
173
251
  }();
174
252
  // #sourceMappingURL=ClientDataManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createNormalizer","QueryClient","composeFullKey","hasTag","createQueryNormalizer","ClientDataManager","_config$defaultOption","_config$defaultOption2","_this","config","arguments","length","undefined","_classCallCheck","queryClient","normalizer","queryNormalizer","_objectSpread","defaultOptions","queries","networkMode","mutations","createNormalize","normalizerConfig","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","invalidateTags","tags","_ref2","every","invalidateSource","dataSource","name","resetSource","resetQueries","invalidateParams","params","exact","resetParams","invalidateSourceTags","slice","filters","_this4","invalidate","repeatInvalidate","repeat","i","count","setTimeout","interval"],"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,SAAQA,gBAAgB,QAAO,aAAa;AAE5C,SAAQC,WAAW,QAAO,uBAAuB;AAEjD,SAOIC,cAAc,EACdC,MAAM,QACH,SAAS;AAIhB,SAAQC,qBAAqB,QAAO,mBAAmB;AAMvD,WAAaC,iBAAiB;EAK1B,SAAAA,kBAAA,EAAkD;IAAA,IAAAC,qBAAA;MAAAC,sBAAA;MAAAC,KAAA;IAAA,IAAtCC,MAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAAG,eAAA,OAAAR,iBAAA;IAAA,KAJvCS,WAAW;IAAA,KACXC,UAAU;IAAA,KACVC,eAAe;IAGpB,IAAI,CAACF,WAAW,GAAG,IAAIb,WAAW,CAAAgB,aAAA,CAAAA,aAAA,KAC3BR,MAAM;MACTS,cAAc,EAAAD,aAAA,CAAAA,aAAA,KACPR,MAAM,CAACS,cAAc;QACxBC,OAAO,EAAAF,aAAA;UACHG,WAAW,EAAE;QAAQ,IAAAd,qBAAA,GAClBG,MAAM,CAACS,cAAc,cAAAZ,qBAAA,uBAArBA,qBAAA,CAAuBa,OAAO,CACpC;QACDE,SAAS,EAAAJ,aAAA;UACLG,WAAW,EAAE;QAAQ,IAAAb,sBAAA,GAClBE,MAAM,CAACS,cAAc,cAAAX,sBAAA,uBAArBA,sBAAA,CAAuBc,SAAS;MACtC;IACJ,EACJ,CAAC;IAEF,IAAI,CAACN,UAAU,GAAG,IAAI,CAACO,eAAe,CAACb,MAAM,CAACc,gBAAgB,CAAC;IAC/D,IAAI,CAACP,eAAe,GAAGZ,qBAAqB,CACxC,IAAI,CAACW,UAAU,EACf,IAAI,CAACD,WAAW,EAChBL,MAAM,CAACc,gBAAgB,EACvB,UAACC,IAAI;MAAA,OAAKhB,KAAI,CAACiB,gBAAgB,CAACD,IAAI,CAAC;IAAA,GACrC,UAACA,IAAI;MAAA,OAAKhB,KAAI,CAACkB,cAAc,CAACF,IAAI,CAAC;IAAA,CACvC,CAAC;EACL;EAAC,OAAAG,YAAA,CAAAtB,iBAAA;IAAAuB,GAAA;IAAAC,KAAA,EAED,SAAAJ,gBAAgBA,CAACK,YAAkB,EAAE;MAAA,IAAAC,MAAA;MACjC,IAAI,CAAC,IAAI,CAAChB,UAAU,EAAE;QAClB;MACJ;MAEA,IAAMiB,eAAe,GAAG,IAAI,CAACjB,UAAU,CAACkB,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,CAACjB,WAAW,CAAC0B,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,CAACjB,WAAW,CAACiC,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,CAACnC,UAAU,EAAE;QAClB;MACJ;MAEA,IAAMiB,eAAe,GAAG,IAAI,CAACjB,UAAU,CAACkB,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,CAACpC,WAAW,CAACqC,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,OAAMjC,MAAM,CAACiC,QAAQ,EAAEiB,GAAG,CAAC;QAAA;MACpD,CAAC,EACDC,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAA4B,cAAcA,CAACC,IAAqB,EAAEJ,iBAAqC,EAAE;MACzE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACII,SAAS,EAAE,SAAXA,SAASA,CAAAI,KAAA;UAAA,IAAIvB,QAAQ,GAAAuB,KAAA,CAARvB,QAAQ;UAAA,OAAMsB,IAAI,CAACE,KAAK,CAAC,UAACP,GAAG;YAAA,OAAKlD,MAAM,CAACiC,QAAQ,EAAEiB,GAAG,CAAC;UAAA,EAAC;QAAA;MACzE,CAAC,EACDC,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAAgC,gBAAgBA,CACZC,UAAuB,EACvBR,iBAAqC,EACvC;MACE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACI;QACAf,QAAQ,EAAE,CAAC0B,UAAU,CAACC,IAAI;MAC9B,CAAC,EACDT,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAAmC,WAAWA,CAAoCF,UAAuB,EAAE;MACpE,OAAO,IAAI,CAAChD,WAAW,CAACmD,YAAY,CAAC;QACjC;QACA7B,QAAQ,EAAE,CAAC0B,UAAU,CAACC,IAAI;MAC9B,CAAC,CAAC;IACN;EAAC;IAAAnC,GAAA;IAAAC,KAAA,EAED,SAAAqC,gBAAgBA,CACZJ,UAAuB,EACvBK,MAAqC,EACrCb,iBAAqC,EACvC;MACE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACIf,QAAQ,EAAElC,cAAc,CAAC4D,UAAU,EAAEK,MAAM,CAAC;QAC5CC,KAAK,EAAE;MACX,CAAC,EACDd,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAAwC,WAAWA,CACPP,UAAuB,EACvBK,MAAqC,EACvC;MACE,OAAO,IAAI,CAACrD,WAAW,CAACmD,YAAY,CAAC;QACjC7B,QAAQ,EAAElC,cAAc,CAAC4D,UAAU,EAAEK,MAAM,CAAC;QAC5CC,KAAK,EAAE;MACX,CAAC,CAAC;IACN;EAAC;IAAAxC,GAAA;IAAAC,KAAA,EAED,SAAAyC,oBAAoBA,CAChBR,UAAuB,EACvBK,MAAqC,EACrCb,iBAAqC,EACvC;MACE,OAAO,IAAI,CAACH,iBAAiB,CACzB;QACI;QACAf,QAAQ,EAAElC,cAAc,CAAC4D,UAAU,EAAEK,MAAM,CAAC,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;MAC5D,CAAC,EACDjB,iBACJ,CAAC;IACL;EAAC;IAAA1B,GAAA;IAAAC,KAAA,EAED,SAAUsB,iBAAiBA,CACvBqB,OAA+B,EAC/BlB,iBAAqC,EACvC;MAAA,IAAAmB,MAAA;MACE,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAA;QAAA,OAASD,MAAI,CAAC3D,WAAW,CAACqC,iBAAiB,CAACqB,OAAO,CAAC;MAAA;MAEpE,IAAI,CAACG,gBAAgB,CAACD,UAAU,EAAEpB,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEsB,MAAM,CAAC;MAE5D,OAAOF,UAAU,CAAC,CAAC;IACvB;EAAC;IAAA9C,GAAA;IAAAC,KAAA,EAED,SAAU8C,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;IAAAjD,GAAA;IAAAC,KAAA,EAED,SAAQP,eAAeA,CACnBb,MAA8C,EACxB;MACtB,IAAI,CAACA,MAAM,EAAE;QACT,OAAOG,SAAS;MACpB;MAEA,IAAIH,MAAM,KAAK,IAAI,EAAE;QACjB,OAAOT,gBAAgB,CAAC,CAAC,CAAC,CAAC;MAC/B;MAEA,OAAOA,gBAAgB,CAACS,MAAM,CAAC;IACnC;EAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["createNormalizer","QueryClient","composeFullKey","hasTag","checkMutationObjectsKeys","createQueryNormalizer","parseQueryKey","ClientDataManager","_config$defaultOption","_config$defaultOption2","_this","config","arguments","length","undefined","_classCallCheck","queryClient","normalizer","queryNormalizer","normalizerConfig","_objectSpread","defaultOptions","queries","networkMode","mutations","createNormalize","data","optimisticUpdate","invalidateData","_createClass","key","value","mutationData","queryKey","queryData","_this2","optimisticUpdateQuery","queriesToUpdate","getQueriesToUpdate","forEach","query","parsedQueryKey","_this3","invalidateQuery","update","_this4","_ref","_typeof","optimistic","invalidate","globalOptimistic","globalInvalidate","completeness","dependentQueries","getDependentQueries","needsRefetch","queryKeyString","_cachedQuery$meta","cachedQuery","getQueryCache","find","_ref2","meta","_cachedQuery$meta2","_ref3","invalidateTag","tag","invalidateOptions","invalidateQueries","predicate","_ref4","invalidateTags","tags","_ref5","every","invalidateSource","dataSource","name","resetSource","resetQueries","invalidateParams","params","exact","resetParams","invalidateSourceTags","slice","filters","_this5","repeatInvalidate","repeat","i","count","setTimeout","interval","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":[]}
@@ -507,5 +507,150 @@ describe('Normalization Configuration Integration', function () {
507
507
  }, _callee19);
508
508
  })));
509
509
  });
510
+ describe('ClientDataManager.update()', function () {
511
+ it('should work with array of objects for optimistic update', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {
512
+ var dm, queryKey, initialData, data;
513
+ return _regeneratorRuntime().wrap(function _callee20$(_context20) {
514
+ while (1) switch (_context20.prev = _context20.next) {
515
+ case 0:
516
+ dm = new ClientDataManager({
517
+ normalizerConfig: {
518
+ devLogging: false,
519
+ optimistic: true
520
+ }
521
+ });
522
+ dm.queryNormalizer.subscribe();
523
+ queryKey = ['users'];
524
+ initialData = [{
525
+ id: '1',
526
+ name: 'User 1'
527
+ }, {
528
+ id: '2',
529
+ name: 'User 2'
530
+ }];
531
+ dm.queryClient.setQueryData(queryKey, initialData);
532
+ dm.normalizer.setQuery(JSON.stringify(queryKey), initialData);
533
+
534
+ // Update both objects
535
+ dm.update([{
536
+ id: '1',
537
+ name: 'Updated 1'
538
+ }, {
539
+ id: '2',
540
+ name: 'Updated 2'
541
+ }]);
542
+ data = dm.queryClient.getQueryData(queryKey);
543
+ expect(data[0].name).toBe('Updated 1');
544
+ expect(data[1].name).toBe('Updated 2');
545
+ dm.queryNormalizer.unsubscribe();
546
+ dm.queryClient.clear();
547
+ case 12:
548
+ case "end":
549
+ return _context20.stop();
550
+ }
551
+ }, _callee20);
552
+ })));
553
+ it('should call invalidateData when invalidate option is enabled', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {
554
+ var dm, queryKey, initialData, cache, invalidateSpy;
555
+ return _regeneratorRuntime().wrap(function _callee21$(_context21) {
556
+ while (1) switch (_context21.prev = _context21.next) {
557
+ case 0:
558
+ dm = new ClientDataManager({
559
+ normalizerConfig: {
560
+ devLogging: false,
561
+ invalidate: true
562
+ }
563
+ });
564
+ dm.queryNormalizer.subscribe();
565
+ queryKey = ['users'];
566
+ initialData = [{
567
+ id: '1',
568
+ name: 'User 1'
569
+ }];
570
+ dm.queryClient.setQueryData(queryKey, initialData);
571
+ dm.normalizer.setQuery(JSON.stringify(queryKey), initialData);
572
+
573
+ // Set query state to success so it can be invalidated
574
+ cache = dm.queryClient.getQueryCache().find({
575
+ queryKey: queryKey
576
+ });
577
+ cache === null || cache === void 0 || cache.setState({
578
+ status: 'success',
579
+ fetchStatus: 'idle',
580
+ isInvalidated: false
581
+ });
582
+ invalidateSpy = jest.spyOn(dm, 'invalidateData');
583
+ dm.update({
584
+ id: '1',
585
+ name: 'Updated'
586
+ });
587
+ expect(invalidateSpy).toHaveBeenCalled();
588
+ invalidateSpy.mockRestore();
589
+ dm.queryNormalizer.unsubscribe();
590
+ dm.queryClient.clear();
591
+ case 14:
592
+ case "end":
593
+ return _context21.stop();
594
+ }
595
+ }, _callee21);
596
+ })));
597
+ it('should trigger refetch when mutation has fewer keys and normy returns empty queriesToUpdate', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {
598
+ var dm, queryKey, initialData, cache, originalGetQueriesToUpdate, invalidateSpy;
599
+ return _regeneratorRuntime().wrap(function _callee22$(_context22) {
600
+ while (1) switch (_context22.prev = _context22.next) {
601
+ case 0:
602
+ // checkMutationObjectsKeys is called only when getQueriesToUpdate returns []
603
+ // This happens when normy can't compute a diff (e.g., structure mismatch)
604
+ dm = new ClientDataManager({
605
+ normalizerConfig: {
606
+ devLogging: false,
607
+ invalidate: true // Need to enable invalidate for refetch to work
608
+ }
609
+ });
610
+ dm.queryNormalizer.subscribe();
611
+ queryKey = ['users']; // Store data with more keys
612
+ initialData = [{
613
+ id: '1',
614
+ name: 'User 1',
615
+ email: 'user@test.com',
616
+ age: 25
617
+ }];
618
+ dm.queryClient.setQueryData(queryKey, initialData);
619
+ dm.normalizer.setQuery(JSON.stringify(queryKey), initialData);
620
+
621
+ // Set query state to success so it can be invalidated
622
+ cache = dm.queryClient.getQueryCache().find({
623
+ queryKey: queryKey
624
+ });
625
+ cache === null || cache === void 0 || cache.setState({
626
+ status: 'success',
627
+ fetchStatus: 'idle',
628
+ isInvalidated: false
629
+ });
630
+
631
+ // Mock getQueriesToUpdate to return empty array (simulating normy can't compute diff)
632
+ originalGetQueriesToUpdate = dm.normalizer.getQueriesToUpdate;
633
+ dm.normalizer.getQueriesToUpdate = jest.fn().mockReturnValue([]);
634
+ invalidateSpy = jest.spyOn(dm.queryClient, 'invalidateQueries'); // Update with fewer keys - should trigger refetch via checkMutationObjectsKeys
635
+ dm.update({
636
+ id: '1',
637
+ name: 'Updated'
638
+ });
639
+
640
+ // Check if invalidation was triggered due to fewer keys
641
+ expect(invalidateSpy).toHaveBeenCalled();
642
+
643
+ // Restore mocks
644
+ dm.normalizer.getQueriesToUpdate = originalGetQueriesToUpdate;
645
+ invalidateSpy.mockRestore();
646
+ dm.queryNormalizer.unsubscribe();
647
+ dm.queryClient.clear();
648
+ case 17:
649
+ case "end":
650
+ return _context22.stop();
651
+ }
652
+ }, _callee22);
653
+ })));
654
+ });
510
655
  });
511
656
  // #sourceMappingURL=threeLevelIntegration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","renderHook","waitFor","ClientDataManager","DataSourceProvider","useQueryData","makePlainQueryDataSource","jsx","_jsx","describe","queryClient","dataManager","beforeEach","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","fetch","_fetch","_callee11","_callee11$","_context11","options","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","renderHook","waitFor","ClientDataManager","DataSourceProvider","useQueryData","makePlainQueryDataSource","jsx","_jsx","describe","queryClient","dataManager","beforeEach","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","fetch","_fetch","_callee11","_callee11$","_context11","options","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":"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","ignoreList":[]}
@@ -38,6 +38,10 @@ export var composeOptions = function composeOptions(context, dataSource, params,
38
38
  var actualResponse = parseNullableValue(response);
39
39
  return transformResponse ? transformResponse(actualResponse) : actualResponse;
40
40
  };
41
+ var meta = {
42
+ invalidate: options === null || options === void 0 ? void 0 : options.invalidate,
43
+ optimistic: options === null || options === void 0 ? void 0 : options.optimistic
44
+ };
41
45
  return _objectSpread(_objectSpread({
42
46
  queryKey: composeFullKey(dataSource, params),
43
47
  queryFn: params === idle ? skipToken : queryFn,
@@ -48,7 +52,8 @@ export var composeOptions = function composeOptions(context, dataSource, params,
48
52
  },
49
53
  initialPageParam: EMPTY_OBJECT,
50
54
  getNextPageParam: next,
51
- getPreviousPageParam: prev
55
+ getPreviousPageParam: prev,
56
+ meta: meta
52
57
  }, dataSource.options), options);
53
58
  };
54
59
  // #sourceMappingURL=utils.js.map