@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.
- package/build/cjs/react-query/ClientDataManager.d.ts +7 -3
- package/build/cjs/react-query/ClientDataManager.js +107 -29
- package/build/cjs/react-query/ClientDataManager.js.map +1 -1
- package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +145 -0
- package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +1 -1
- package/build/cjs/react-query/impl/infinite/utils.js +6 -1
- package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
- package/build/cjs/react-query/impl/plain/utils.js +6 -1
- package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
- package/build/cjs/react-query/types/query-meta.d.ts +12 -0
- package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +295 -0
- package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
- package/build/cjs/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
- package/build/cjs/react-query/utils/checkMutationObjectsKeys.js +88 -0
- package/build/cjs/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
- package/build/cjs/react-query/utils/parseQueryKey.d.ts +2 -0
- package/build/cjs/react-query/utils/parseQueryKey.js +10 -0
- package/build/cjs/react-query/utils/parseQueryKey.js.map +1 -0
- package/build/esm/react-query/ClientDataManager.d.ts +7 -3
- package/build/esm/react-query/ClientDataManager.js +107 -29
- package/build/esm/react-query/ClientDataManager.js.map +1 -1
- package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +145 -0
- package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -1
- package/build/esm/react-query/impl/infinite/utils.js +6 -1
- package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
- package/build/esm/react-query/impl/plain/utils.js +6 -1
- package/build/esm/react-query/impl/plain/utils.js.map +1 -1
- package/build/esm/react-query/types/query-meta.d.ts +12 -0
- package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +292 -0
- package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
- package/build/esm/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
- package/build/esm/react-query/utils/checkMutationObjectsKeys.js +81 -0
- package/build/esm/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
- package/build/esm/react-query/utils/parseQueryKey.d.ts +2 -0
- package/build/esm/react-query/utils/parseQueryKey.js +4 -0
- package/build/esm/react-query/utils/parseQueryKey.js.map +1 -0
- 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
|
|
45
|
-
|
|
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
|
|
74
|
-
_this3.
|
|
75
|
-
|
|
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(
|
|
84
|
-
var 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(
|
|
94
|
-
var 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
|
|
189
|
+
var _this5 = this;
|
|
145
190
|
var invalidate = function invalidate() {
|
|
146
|
-
return
|
|
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":"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","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
|