@gravity-ui/data-source 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +752 -15
  2. package/build/cjs/core/index.d.ts +1 -0
  3. package/build/cjs/core/index.js.map +1 -1
  4. package/build/cjs/core/types/DataManager.d.ts +5 -0
  5. package/build/cjs/core/types/DataManager.js.map +1 -1
  6. package/build/cjs/core/types/Normalizer.d.ts +29 -0
  7. package/build/cjs/core/types/Normalizer.js +6 -0
  8. package/build/cjs/core/types/Normalizer.js.map +1 -0
  9. package/build/cjs/react/DataManagerProvider.d.ts +7 -0
  10. package/build/cjs/react/DataManagerProvider.js +19 -0
  11. package/build/cjs/react/DataManagerProvider.js.map +1 -0
  12. package/build/cjs/react/__tests__/DataManagerContext.test.js +7 -6
  13. package/build/cjs/react/__tests__/DataManagerContext.test.js.map +1 -1
  14. package/build/cjs/react/__tests__/withDataManager.test.js +3 -0
  15. package/build/cjs/react/__tests__/withDataManager.test.js.map +1 -1
  16. package/build/cjs/react/index.d.ts +2 -0
  17. package/build/cjs/react/index.js +8 -0
  18. package/build/cjs/react/index.js.map +1 -1
  19. package/build/cjs/react-query/ClientDataManager.d.ts +11 -2
  20. package/build/cjs/react-query/ClientDataManager.js +76 -9
  21. package/build/cjs/react-query/ClientDataManager.js.map +1 -1
  22. package/build/cjs/react-query/DataSourceProvider.d.ts +7 -0
  23. package/build/cjs/react-query/DataSourceProvider.js +35 -0
  24. package/build/cjs/react-query/DataSourceProvider.js.map +1 -0
  25. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js +177 -0
  26. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  27. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js +100 -0
  28. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  29. package/build/cjs/react-query/__tests__/subscriptions.test.js +1180 -0
  30. package/build/cjs/react-query/__tests__/subscriptions.test.js.map +1 -0
  31. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +514 -0
  32. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  33. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js +229 -0
  34. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  35. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js +195 -0
  36. package/build/cjs/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  37. package/build/cjs/react-query/impl/infinite/hooks.js +4 -1
  38. package/build/cjs/react-query/impl/infinite/hooks.js.map +1 -1
  39. package/build/cjs/react-query/impl/infinite/types.d.ts +2 -2
  40. package/build/cjs/react-query/impl/infinite/types.js.map +1 -1
  41. package/build/cjs/react-query/impl/plain/hooks.js +4 -1
  42. package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
  43. package/build/cjs/react-query/impl/plain/types.d.ts +2 -2
  44. package/build/cjs/react-query/impl/plain/types.js.map +1 -1
  45. package/build/cjs/react-query/index.d.ts +2 -0
  46. package/build/cjs/react-query/index.js +7 -0
  47. package/build/cjs/react-query/index.js.map +1 -1
  48. package/build/cjs/react-query/types/normalizer.d.ts +21 -0
  49. package/build/cjs/react-query/types/normalizer.js +6 -0
  50. package/build/cjs/react-query/types/normalizer.js.map +1 -0
  51. package/build/cjs/react-query/types/options.d.ts +12 -0
  52. package/build/cjs/react-query/types/options.js.map +1 -1
  53. package/build/cjs/react-query/utils/normalize.d.ts +22 -0
  54. package/build/cjs/react-query/utils/normalize.js +150 -0
  55. package/build/cjs/react-query/utils/normalize.js.map +1 -0
  56. package/build/cjs/react-query/utils/warn.d.ts +1 -0
  57. package/build/cjs/react-query/utils/warn.js +15 -0
  58. package/build/cjs/react-query/utils/warn.js.map +1 -0
  59. package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  60. package/build/cjs/react-query/utils/warnDisabledRefetch.js +11 -0
  61. package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
  62. package/build/esm/core/index.d.ts +1 -0
  63. package/build/esm/core/index.js.map +1 -1
  64. package/build/esm/core/types/DataManager.d.ts +5 -0
  65. package/build/esm/core/types/DataManager.js.map +1 -1
  66. package/build/esm/core/types/Normalizer.d.ts +29 -0
  67. package/build/esm/core/types/Normalizer.js +2 -0
  68. package/build/esm/core/types/Normalizer.js.map +1 -0
  69. package/build/esm/react/DataManagerProvider.d.ts +7 -0
  70. package/build/esm/react/DataManagerProvider.js +12 -0
  71. package/build/esm/react/DataManagerProvider.js.map +1 -0
  72. package/build/esm/react/__tests__/DataManagerContext.test.js +7 -6
  73. package/build/esm/react/__tests__/DataManagerContext.test.js.map +1 -1
  74. package/build/esm/react/__tests__/withDataManager.test.js +3 -0
  75. package/build/esm/react/__tests__/withDataManager.test.js.map +1 -1
  76. package/build/esm/react/index.d.ts +2 -0
  77. package/build/esm/react/index.js +1 -0
  78. package/build/esm/react/index.js.map +1 -1
  79. package/build/esm/react-query/ClientDataManager.d.ts +11 -2
  80. package/build/esm/react-query/ClientDataManager.js +70 -3
  81. package/build/esm/react-query/ClientDataManager.js.map +1 -1
  82. package/build/esm/react-query/DataSourceProvider.d.ts +7 -0
  83. package/build/esm/react-query/DataSourceProvider.js +28 -0
  84. package/build/esm/react-query/DataSourceProvider.js.map +1 -0
  85. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +174 -0
  86. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  87. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +98 -0
  88. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  89. package/build/esm/react-query/__tests__/subscriptions.test.js +1176 -0
  90. package/build/esm/react-query/__tests__/subscriptions.test.js.map +1 -0
  91. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +511 -0
  92. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  93. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +227 -0
  94. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  95. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +192 -0
  96. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  97. package/build/esm/react-query/impl/infinite/hooks.js +5 -2
  98. package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
  99. package/build/esm/react-query/impl/infinite/types.d.ts +2 -2
  100. package/build/esm/react-query/impl/infinite/types.js.map +1 -1
  101. package/build/esm/react-query/impl/plain/hooks.js +5 -2
  102. package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
  103. package/build/esm/react-query/impl/plain/types.d.ts +2 -2
  104. package/build/esm/react-query/impl/plain/types.js.map +1 -1
  105. package/build/esm/react-query/index.d.ts +2 -0
  106. package/build/esm/react-query/index.js +1 -0
  107. package/build/esm/react-query/index.js.map +1 -1
  108. package/build/esm/react-query/types/normalizer.d.ts +21 -0
  109. package/build/esm/react-query/types/normalizer.js +2 -0
  110. package/build/esm/react-query/types/normalizer.js.map +1 -0
  111. package/build/esm/react-query/types/options.d.ts +12 -0
  112. package/build/esm/react-query/types/options.js.map +1 -1
  113. package/build/esm/react-query/utils/normalize.d.ts +22 -0
  114. package/build/esm/react-query/utils/normalize.js +143 -0
  115. package/build/esm/react-query/utils/normalize.js.map +1 -0
  116. package/build/esm/react-query/utils/warn.d.ts +1 -0
  117. package/build/esm/react-query/utils/warn.js +9 -0
  118. package/build/esm/react-query/utils/warn.js.map +1 -0
  119. package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  120. package/build/esm/react-query/utils/warnDisabledRefetch.js +5 -0
  121. package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
  122. package/package.json +2 -1
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+
3
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
4
+ var _ClientDataManager = require("../ClientDataManager");
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
6
+ describe('QueryNormalizer API', function () {
7
+ var dataManager;
8
+ beforeEach(function () {
9
+ dataManager = new _ClientDataManager.ClientDataManager({
10
+ defaultOptions: {
11
+ queries: {
12
+ retry: false
13
+ },
14
+ mutations: {
15
+ retry: false
16
+ }
17
+ },
18
+ normalizerConfig: {
19
+ devLogging: false
20
+ }
21
+ });
22
+ });
23
+ afterEach(function () {
24
+ dataManager.queryClient.clear();
25
+ });
26
+ it('should create queryNormalizer with required methods', function () {
27
+ var _dataManager$queryNor, _dataManager$queryNor2, _dataManager$queryNor3, _dataManager$queryNor4, _dataManager$queryNor5, _dataManager$queryNor6, _dataManager$queryNor7, _dataManager$queryNor8, _dataManager$queryNor9;
28
+ expect(dataManager.queryNormalizer).toBeDefined();
29
+ expect((_dataManager$queryNor = dataManager.queryNormalizer) === null || _dataManager$queryNor === void 0 ? void 0 : _dataManager$queryNor.getNormalizedData).toBeDefined();
30
+ expect((_dataManager$queryNor2 = dataManager.queryNormalizer) === null || _dataManager$queryNor2 === void 0 ? void 0 : _dataManager$queryNor2.setNormalizedData).toBeDefined();
31
+ expect((_dataManager$queryNor3 = dataManager.queryNormalizer) === null || _dataManager$queryNor3 === void 0 ? void 0 : _dataManager$queryNor3.clear).toBeDefined();
32
+ expect((_dataManager$queryNor4 = dataManager.queryNormalizer) === null || _dataManager$queryNor4 === void 0 ? void 0 : _dataManager$queryNor4.getObjectById).toBeDefined();
33
+ expect((_dataManager$queryNor5 = dataManager.queryNormalizer) === null || _dataManager$queryNor5 === void 0 ? void 0 : _dataManager$queryNor5.getQueryFragment).toBeDefined();
34
+ expect((_dataManager$queryNor6 = dataManager.queryNormalizer) === null || _dataManager$queryNor6 === void 0 ? void 0 : _dataManager$queryNor6.getDependentQueries).toBeDefined();
35
+ expect((_dataManager$queryNor7 = dataManager.queryNormalizer) === null || _dataManager$queryNor7 === void 0 ? void 0 : _dataManager$queryNor7.getDependentQueriesByIds).toBeDefined();
36
+ expect((_dataManager$queryNor8 = dataManager.queryNormalizer) === null || _dataManager$queryNor8 === void 0 ? void 0 : _dataManager$queryNor8.subscribe).toBeDefined();
37
+ expect((_dataManager$queryNor9 = dataManager.queryNormalizer) === null || _dataManager$queryNor9 === void 0 ? void 0 : _dataManager$queryNor9.unsubscribe).toBeDefined();
38
+ });
39
+ it('getNormalizedData should return normalized data', function () {
40
+ expect(dataManager.queryNormalizer).toBeDefined();
41
+ var data = dataManager.queryNormalizer.getNormalizedData();
42
+ expect(data).toBeDefined();
43
+ expect(data.objects).toBeDefined();
44
+ expect(data.queries).toBeDefined();
45
+ });
46
+ it('setNormalizedData should update queries', function () {
47
+ expect(dataManager.normalizer).toBeDefined();
48
+ expect(dataManager.queryNormalizer).toBeDefined();
49
+ var queryKey = ['users'];
50
+ dataManager.queryClient.setQueryData(queryKey, [{
51
+ id: '1',
52
+ name: 'Old'
53
+ }]);
54
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), [{
55
+ id: '1',
56
+ name: 'Old'
57
+ }]);
58
+ dataManager.queryNormalizer.setNormalizedData({
59
+ id: '1',
60
+ name: 'New'
61
+ });
62
+ var data = dataManager.queryClient.getQueryData(queryKey);
63
+ expect(data[0].name).toBe('New');
64
+ });
65
+ it('clear should clear normalized data', function () {
66
+ expect(dataManager.normalizer).toBeDefined();
67
+ expect(dataManager.queryNormalizer).toBeDefined();
68
+ var queryKey = ['users'];
69
+ dataManager.queryClient.setQueryData(queryKey, [{
70
+ id: '1',
71
+ name: 'User'
72
+ }]);
73
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), [{
74
+ id: '1',
75
+ name: 'User'
76
+ }]);
77
+ dataManager.queryNormalizer.clear();
78
+ var data = dataManager.queryNormalizer.getNormalizedData();
79
+ expect(Object.keys(data.objects)).toHaveLength(0);
80
+ });
81
+ it('getObjectById should return object by ID', function () {
82
+ expect(dataManager.normalizer).toBeDefined();
83
+ expect(dataManager.queryNormalizer).toBeDefined();
84
+ var queryKey = ['users'];
85
+ var userData = [{
86
+ id: '1',
87
+ name: 'User 1'
88
+ }];
89
+
90
+ // Add to normalizer
91
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), userData);
92
+
93
+ // Get normalized data
94
+ var normalized = dataManager.queryNormalizer.getNormalizedData();
95
+ expect(Object.keys(normalized.objects).length).toBeGreaterThan(0);
96
+
97
+ // getObjectById should be defined and available
98
+ expect(dataManager.queryNormalizer.getObjectById).toBeDefined();
99
+ expect((0, _typeof2.default)(dataManager.queryNormalizer.getObjectById)).toBe('function');
100
+ });
101
+ it('getDependentQueries should return dependent queries', function () {
102
+ expect(dataManager.normalizer).toBeDefined();
103
+ expect(dataManager.queryNormalizer).toBeDefined();
104
+ var queryKey1 = ['users'];
105
+ var queryKey2 = ['user', '1'];
106
+ dataManager.queryClient.setQueryData(queryKey1, [{
107
+ id: '1',
108
+ name: 'User'
109
+ }]);
110
+ dataManager.queryClient.setQueryData(queryKey2, {
111
+ id: '1',
112
+ name: 'User'
113
+ });
114
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey1), [{
115
+ id: '1',
116
+ name: 'User'
117
+ }]);
118
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey2), {
119
+ id: '1',
120
+ name: 'User'
121
+ });
122
+ var dependentQueries = dataManager.queryNormalizer.getDependentQueries({
123
+ id: '1',
124
+ name: 'Updated'
125
+ });
126
+ expect(dependentQueries.length).toBeGreaterThan(0);
127
+ });
128
+ it('getDependentQueriesByIds should be available', function () {
129
+ expect(dataManager.queryNormalizer).toBeDefined();
130
+
131
+ // getDependentQueriesByIds should be defined and available
132
+ expect(dataManager.queryNormalizer.getDependentQueriesByIds).toBeDefined();
133
+ expect((0, _typeof2.default)(dataManager.queryNormalizer.getDependentQueriesByIds)).toBe('function');
134
+
135
+ // Call with empty array should not throw
136
+ var result = dataManager.queryNormalizer.getDependentQueriesByIds([]);
137
+ expect(Array.isArray(result)).toBe(true);
138
+ });
139
+ it('should not create queryNormalizer when normalizerConfig is false', function () {
140
+ var dmWithoutNormalizer = new _ClientDataManager.ClientDataManager({
141
+ normalizerConfig: false
142
+ });
143
+ expect(dmWithoutNormalizer.normalizer).toBeUndefined();
144
+ expect(dmWithoutNormalizer.queryNormalizer).toBeUndefined();
145
+ });
146
+ it('should not create queryNormalizer when normalizerConfig is undefined', function () {
147
+ var dmWithoutNormalizer = new _ClientDataManager.ClientDataManager({});
148
+ expect(dmWithoutNormalizer.normalizer).toBeUndefined();
149
+ expect(dmWithoutNormalizer.queryNormalizer).toBeUndefined();
150
+ });
151
+ it('should create queryNormalizer when normalizerConfig is true', function () {
152
+ var dmWithNormalizer = new _ClientDataManager.ClientDataManager({
153
+ normalizerConfig: true
154
+ });
155
+ expect(dmWithNormalizer.normalizer).toBeDefined();
156
+ expect(dmWithNormalizer.queryNormalizer).toBeDefined();
157
+ });
158
+ it('should work correctly with optimisticUpdate via setNormalizedData', function () {
159
+ expect(dataManager.normalizer).toBeDefined();
160
+ expect(dataManager.queryNormalizer).toBeDefined();
161
+ var queryKey = ['users'];
162
+ var initialData = [{
163
+ id: '1',
164
+ name: 'Old Name'
165
+ }];
166
+ dataManager.queryClient.setQueryData(queryKey, initialData);
167
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), initialData);
168
+ var mutationData = {
169
+ id: '1',
170
+ name: 'New Name'
171
+ };
172
+ dataManager.queryNormalizer.setNormalizedData(mutationData);
173
+ var updatedData = dataManager.queryClient.getQueryData(queryKey);
174
+ expect(updatedData[0].name).toBe('New Name');
175
+ });
176
+ });
177
+ // #sourceMappingURL=createQueryNormalizer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ClientDataManager","require","_interopRequireDefault","e","__esModule","default","describe","dataManager","beforeEach","ClientDataManager","defaultOptions","queries","retry","mutations","normalizerConfig","devLogging","afterEach","queryClient","clear","it","_dataManager$queryNor","_dataManager$queryNor2","_dataManager$queryNor3","_dataManager$queryNor4","_dataManager$queryNor5","_dataManager$queryNor6","_dataManager$queryNor7","_dataManager$queryNor8","_dataManager$queryNor9","expect","queryNormalizer","toBeDefined","getNormalizedData","setNormalizedData","getObjectById","getQueryFragment","getDependentQueries","getDependentQueriesByIds","subscribe","unsubscribe","data","objects","normalizer","queryKey","setQueryData","id","name","setQuery","JSON","stringify","getQueryData","toBe","Object","keys","toHaveLength","userData","normalized","length","toBeGreaterThan","_typeof","queryKey1","queryKey2","dependentQueries","result","Array","isArray","dmWithoutNormalizer","toBeUndefined","dmWithNormalizer","initialData","mutationData","updatedData"],"sources":["createQueryNormalizer.test.tsx"],"sourcesContent":["import type {Data} from '@normy/core';\n\nimport {ClientDataManager} from '../ClientDataManager';\n\ndescribe('QueryNormalizer API', () => {\n let dataManager: ClientDataManager;\n\n beforeEach(() => {\n dataManager = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n },\n });\n });\n\n afterEach(() => {\n dataManager.queryClient.clear();\n });\n\n it('should create queryNormalizer with required methods', () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n expect(dataManager.queryNormalizer?.getNormalizedData).toBeDefined();\n expect(dataManager.queryNormalizer?.setNormalizedData).toBeDefined();\n expect(dataManager.queryNormalizer?.clear).toBeDefined();\n expect(dataManager.queryNormalizer?.getObjectById).toBeDefined();\n expect(dataManager.queryNormalizer?.getQueryFragment).toBeDefined();\n expect(dataManager.queryNormalizer?.getDependentQueries).toBeDefined();\n expect(dataManager.queryNormalizer?.getDependentQueriesByIds).toBeDefined();\n expect(dataManager.queryNormalizer?.subscribe).toBeDefined();\n expect(dataManager.queryNormalizer?.unsubscribe).toBeDefined();\n });\n\n it('getNormalizedData should return normalized data', () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n const data = dataManager.queryNormalizer!.getNormalizedData();\n expect(data).toBeDefined();\n expect(data.objects).toBeDefined();\n expect(data.queries).toBeDefined();\n });\n\n it('setNormalizedData should update queries', () => {\n expect(dataManager.normalizer).toBeDefined();\n expect(dataManager.queryNormalizer).toBeDefined();\n\n const queryKey = ['users'];\n dataManager.queryClient.setQueryData(queryKey, [{id: '1', name: 'Old'}]);\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey), [{id: '1', name: 'Old'}]);\n\n dataManager.queryNormalizer!.setNormalizedData({id: '1', name: 'New'});\n\n const data = dataManager.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(data[0].name).toBe('New');\n });\n\n it('clear should clear normalized data', () => {\n expect(dataManager.normalizer).toBeDefined();\n expect(dataManager.queryNormalizer).toBeDefined();\n\n const queryKey = ['users'];\n dataManager.queryClient.setQueryData(queryKey, [{id: '1', name: 'User'}]);\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey), [{id: '1', name: 'User'}]);\n\n dataManager.queryNormalizer!.clear();\n\n const data = dataManager.queryNormalizer!.getNormalizedData();\n expect(Object.keys(data.objects)).toHaveLength(0);\n });\n\n it('getObjectById should return object by ID', () => {\n expect(dataManager.normalizer).toBeDefined();\n expect(dataManager.queryNormalizer).toBeDefined();\n\n const queryKey = ['users'];\n const userData = [{id: '1', name: 'User 1'}];\n\n // Add to normalizer\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey), userData);\n\n // Get normalized data\n const normalized = dataManager.queryNormalizer!.getNormalizedData();\n expect(Object.keys(normalized.objects).length).toBeGreaterThan(0);\n\n // getObjectById should be defined and available\n expect(dataManager.queryNormalizer!.getObjectById).toBeDefined();\n expect(typeof dataManager.queryNormalizer!.getObjectById).toBe('function');\n });\n\n it('getDependentQueries should return dependent queries', () => {\n expect(dataManager.normalizer).toBeDefined();\n expect(dataManager.queryNormalizer).toBeDefined();\n\n const queryKey1 = ['users'];\n const queryKey2 = ['user', '1'];\n\n dataManager.queryClient.setQueryData(queryKey1, [{id: '1', name: 'User'}]);\n dataManager.queryClient.setQueryData(queryKey2, {id: '1', name: 'User'});\n\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey1), [{id: '1', name: 'User'}]);\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey2), {id: '1', name: 'User'});\n\n const dependentQueries = dataManager.queryNormalizer!.getDependentQueries({\n id: '1',\n name: 'Updated',\n });\n expect(dependentQueries.length).toBeGreaterThan(0);\n });\n\n it('getDependentQueriesByIds should be available', () => {\n expect(dataManager.queryNormalizer).toBeDefined();\n\n // getDependentQueriesByIds should be defined and available\n expect(dataManager.queryNormalizer!.getDependentQueriesByIds).toBeDefined();\n expect(typeof dataManager.queryNormalizer!.getDependentQueriesByIds).toBe('function');\n\n // Call with empty array should not throw\n const result = dataManager.queryNormalizer!.getDependentQueriesByIds([]);\n expect(Array.isArray(result)).toBe(true);\n });\n\n it('should not create queryNormalizer when normalizerConfig is false', () => {\n const dmWithoutNormalizer = new ClientDataManager({\n normalizerConfig: false,\n });\n\n expect(dmWithoutNormalizer.normalizer).toBeUndefined();\n expect(dmWithoutNormalizer.queryNormalizer).toBeUndefined();\n });\n\n it('should not create queryNormalizer when normalizerConfig is undefined', () => {\n const dmWithoutNormalizer = new ClientDataManager({});\n\n expect(dmWithoutNormalizer.normalizer).toBeUndefined();\n expect(dmWithoutNormalizer.queryNormalizer).toBeUndefined();\n });\n\n it('should create queryNormalizer when normalizerConfig is true', () => {\n const dmWithNormalizer = new ClientDataManager({\n normalizerConfig: true,\n });\n\n expect(dmWithNormalizer.normalizer).toBeDefined();\n expect(dmWithNormalizer.queryNormalizer).toBeDefined();\n });\n\n it('should work correctly with optimisticUpdate via setNormalizedData', () => {\n expect(dataManager.normalizer).toBeDefined();\n expect(dataManager.queryNormalizer).toBeDefined();\n\n const queryKey = ['users'];\n const initialData = [{id: '1', name: 'Old Name'}];\n\n dataManager.queryClient.setQueryData(queryKey, initialData);\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey), initialData);\n\n const mutationData: Data = {id: '1', name: 'New Name'};\n dataManager.queryNormalizer!.setNormalizedData(mutationData);\n\n const updatedData = dataManager.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(updatedData[0].name).toBe('New Name');\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ var _ClientDataManager = require("../ClientDataManager");
4
+ describe('normalization edge cases', function () {
5
+ var dataManager;
6
+ beforeEach(function () {
7
+ dataManager = new _ClientDataManager.ClientDataManager({
8
+ defaultOptions: {
9
+ queries: {
10
+ retry: false
11
+ },
12
+ mutations: {
13
+ retry: false
14
+ }
15
+ },
16
+ normalizerConfig: {
17
+ devLogging: false
18
+ }
19
+ });
20
+ });
21
+ afterEach(function () {
22
+ dataManager.queryClient.clear();
23
+ });
24
+ it('should work correctly with empty data', function () {
25
+ expect(dataManager.normalizer).toBeDefined();
26
+ var queryKey = ['empty'];
27
+ dataManager.queryClient.setQueryData(queryKey, []);
28
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), []);
29
+ var mutationData = {
30
+ id: '1',
31
+ name: 'New'
32
+ };
33
+ expect(function () {
34
+ dataManager.optimisticUpdate(mutationData);
35
+ }).not.toThrow();
36
+ });
37
+ it('should work correctly with null data', function () {
38
+ expect(dataManager.normalizer).toBeDefined();
39
+ var queryKey = ['null'];
40
+ dataManager.queryClient.setQueryData(queryKey, null);
41
+ var mutationData = {
42
+ id: '1',
43
+ name: 'New'
44
+ };
45
+ expect(function () {
46
+ dataManager.optimisticUpdate(mutationData);
47
+ }).not.toThrow();
48
+ });
49
+ it('should work correctly with undefined data', function () {
50
+ expect(dataManager.normalizer).toBeDefined();
51
+ var queryKey = ['undefined'];
52
+ dataManager.queryClient.setQueryData(queryKey, undefined);
53
+ var mutationData = {
54
+ id: '1',
55
+ name: 'New'
56
+ };
57
+ expect(function () {
58
+ dataManager.optimisticUpdate(mutationData);
59
+ }).not.toThrow();
60
+ });
61
+ it('should work correctly with arrays of objects', function () {
62
+ expect(dataManager.normalizer).toBeDefined();
63
+ var queryKey = ['array'];
64
+ var data = [{
65
+ id: '1',
66
+ name: 'Item 1'
67
+ }, {
68
+ id: '2',
69
+ name: 'Item 2'
70
+ }];
71
+ dataManager.queryClient.setQueryData(queryKey, data);
72
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), data);
73
+ var mutationData = {
74
+ id: '1',
75
+ name: 'Updated Item 1'
76
+ };
77
+ dataManager.optimisticUpdate(mutationData);
78
+ var updatedData = dataManager.queryClient.getQueryData(queryKey);
79
+ expect(updatedData[0].name).toBe('Updated Item 1');
80
+ expect(updatedData[1].name).toBe('Item 2');
81
+ });
82
+ it('should work correctly with single objects', function () {
83
+ expect(dataManager.normalizer).toBeDefined();
84
+ var queryKey = ['single'];
85
+ var data = {
86
+ id: '1',
87
+ name: 'Item'
88
+ };
89
+ dataManager.queryClient.setQueryData(queryKey, data);
90
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), data);
91
+ var mutationData = {
92
+ id: '1',
93
+ name: 'Updated Item'
94
+ };
95
+ dataManager.optimisticUpdate(mutationData);
96
+ var updatedData = dataManager.queryClient.getQueryData(queryKey);
97
+ expect(updatedData.name).toBe('Updated Item');
98
+ });
99
+ });
100
+ // #sourceMappingURL=normalizationEdgeCases.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ClientDataManager","require","describe","dataManager","beforeEach","ClientDataManager","defaultOptions","queries","retry","mutations","normalizerConfig","devLogging","afterEach","queryClient","clear","it","expect","normalizer","toBeDefined","queryKey","setQueryData","setQuery","JSON","stringify","mutationData","id","name","optimisticUpdate","not","toThrow","undefined","data","updatedData","getQueryData","toBe"],"sources":["normalizationEdgeCases.test.tsx"],"sourcesContent":["import type {Data} from '@normy/core';\n\nimport {ClientDataManager} from '../ClientDataManager';\n\ndescribe('normalization edge cases', () => {\n let dataManager: ClientDataManager;\n\n beforeEach(() => {\n dataManager = new ClientDataManager({\n defaultOptions: {\n queries: {retry: false},\n mutations: {retry: false},\n },\n normalizerConfig: {\n devLogging: false,\n },\n });\n });\n\n afterEach(() => {\n dataManager.queryClient.clear();\n });\n\n it('should work correctly with empty data', () => {\n expect(dataManager.normalizer).toBeDefined();\n\n const queryKey = ['empty'];\n dataManager.queryClient.setQueryData(queryKey, []);\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey), []);\n\n const mutationData: Data = {id: '1', name: 'New'};\n expect(() => {\n dataManager.optimisticUpdate(mutationData);\n }).not.toThrow();\n });\n\n it('should work correctly with null data', () => {\n expect(dataManager.normalizer).toBeDefined();\n\n const queryKey = ['null'];\n dataManager.queryClient.setQueryData(queryKey, null);\n\n const mutationData: Data = {id: '1', name: 'New'};\n expect(() => {\n dataManager.optimisticUpdate(mutationData);\n }).not.toThrow();\n });\n\n it('should work correctly with undefined data', () => {\n expect(dataManager.normalizer).toBeDefined();\n\n const queryKey = ['undefined'];\n dataManager.queryClient.setQueryData(queryKey, undefined);\n\n const mutationData: Data = {id: '1', name: 'New'};\n expect(() => {\n dataManager.optimisticUpdate(mutationData);\n }).not.toThrow();\n });\n\n it('should work correctly with arrays of objects', () => {\n expect(dataManager.normalizer).toBeDefined();\n\n const queryKey = ['array'];\n const data = [\n {id: '1', name: 'Item 1'},\n {id: '2', name: 'Item 2'},\n ];\n\n dataManager.queryClient.setQueryData(queryKey, data);\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey), data);\n\n const mutationData: Data = {id: '1', name: 'Updated Item 1'};\n dataManager.optimisticUpdate(mutationData);\n\n const updatedData = dataManager.queryClient.getQueryData(queryKey) as Array<{\n id: string;\n name: string;\n }>;\n expect(updatedData[0].name).toBe('Updated Item 1');\n expect(updatedData[1].name).toBe('Item 2');\n });\n\n it('should work correctly with single objects', () => {\n expect(dataManager.normalizer).toBeDefined();\n\n const queryKey = ['single'];\n const data = {id: '1', name: 'Item'};\n\n dataManager.queryClient.setQueryData(queryKey, data);\n dataManager.normalizer!.setQuery(JSON.stringify(queryKey), data);\n\n const mutationData: Data = {id: '1', name: 'Updated Item'};\n dataManager.optimisticUpdate(mutationData);\n\n const updatedData = dataManager.queryClient.getQueryData(queryKey) as {\n id: string;\n name: string;\n };\n expect(updatedData.name).toBe('Updated Item');\n });\n});\n"],"mappings":"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","ignoreList":[]}