@gravity-ui/data-source 0.7.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 (148) 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 +16 -3
  20. package/build/cjs/react-query/ClientDataManager.js +158 -13
  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 +659 -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/infinite/utils.js +6 -1
  42. package/build/cjs/react-query/impl/infinite/utils.js.map +1 -1
  43. package/build/cjs/react-query/impl/plain/hooks.js +4 -1
  44. package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
  45. package/build/cjs/react-query/impl/plain/types.d.ts +2 -2
  46. package/build/cjs/react-query/impl/plain/types.js.map +1 -1
  47. package/build/cjs/react-query/impl/plain/utils.js +6 -1
  48. package/build/cjs/react-query/impl/plain/utils.js.map +1 -1
  49. package/build/cjs/react-query/index.d.ts +2 -0
  50. package/build/cjs/react-query/index.js +7 -0
  51. package/build/cjs/react-query/index.js.map +1 -1
  52. package/build/cjs/react-query/types/normalizer.d.ts +21 -0
  53. package/build/cjs/react-query/types/normalizer.js +6 -0
  54. package/build/cjs/react-query/types/normalizer.js.map +1 -0
  55. package/build/cjs/react-query/types/options.d.ts +12 -0
  56. package/build/cjs/react-query/types/options.js.map +1 -1
  57. package/build/cjs/react-query/types/query-meta.d.ts +12 -0
  58. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +295 -0
  59. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  60. package/build/cjs/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  61. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js +88 -0
  62. package/build/cjs/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  63. package/build/cjs/react-query/utils/normalize.d.ts +22 -0
  64. package/build/cjs/react-query/utils/normalize.js +150 -0
  65. package/build/cjs/react-query/utils/normalize.js.map +1 -0
  66. package/build/cjs/react-query/utils/parseQueryKey.d.ts +2 -0
  67. package/build/cjs/react-query/utils/parseQueryKey.js +10 -0
  68. package/build/cjs/react-query/utils/parseQueryKey.js.map +1 -0
  69. package/build/cjs/react-query/utils/warn.d.ts +1 -0
  70. package/build/cjs/react-query/utils/warn.js +15 -0
  71. package/build/cjs/react-query/utils/warn.js.map +1 -0
  72. package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  73. package/build/cjs/react-query/utils/warnDisabledRefetch.js +11 -0
  74. package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
  75. package/build/esm/core/index.d.ts +1 -0
  76. package/build/esm/core/index.js.map +1 -1
  77. package/build/esm/core/types/DataManager.d.ts +5 -0
  78. package/build/esm/core/types/DataManager.js.map +1 -1
  79. package/build/esm/core/types/Normalizer.d.ts +29 -0
  80. package/build/esm/core/types/Normalizer.js +2 -0
  81. package/build/esm/core/types/Normalizer.js.map +1 -0
  82. package/build/esm/react/DataManagerProvider.d.ts +7 -0
  83. package/build/esm/react/DataManagerProvider.js +12 -0
  84. package/build/esm/react/DataManagerProvider.js.map +1 -0
  85. package/build/esm/react/__tests__/DataManagerContext.test.js +7 -6
  86. package/build/esm/react/__tests__/DataManagerContext.test.js.map +1 -1
  87. package/build/esm/react/__tests__/withDataManager.test.js +3 -0
  88. package/build/esm/react/__tests__/withDataManager.test.js.map +1 -1
  89. package/build/esm/react/index.d.ts +2 -0
  90. package/build/esm/react/index.js +1 -0
  91. package/build/esm/react/index.js.map +1 -1
  92. package/build/esm/react-query/ClientDataManager.d.ts +16 -3
  93. package/build/esm/react-query/ClientDataManager.js +152 -7
  94. package/build/esm/react-query/ClientDataManager.js.map +1 -1
  95. package/build/esm/react-query/DataSourceProvider.d.ts +7 -0
  96. package/build/esm/react-query/DataSourceProvider.js +28 -0
  97. package/build/esm/react-query/DataSourceProvider.js.map +1 -0
  98. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +174 -0
  99. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +1 -0
  100. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +98 -0
  101. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +1 -0
  102. package/build/esm/react-query/__tests__/subscriptions.test.js +1176 -0
  103. package/build/esm/react-query/__tests__/subscriptions.test.js.map +1 -0
  104. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +656 -0
  105. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +1 -0
  106. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +227 -0
  107. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +1 -0
  108. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js +192 -0
  109. package/build/esm/react-query/hooks/__tests__/useQueryData.refetch.test.js.map +1 -0
  110. package/build/esm/react-query/impl/infinite/hooks.js +5 -2
  111. package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
  112. package/build/esm/react-query/impl/infinite/types.d.ts +2 -2
  113. package/build/esm/react-query/impl/infinite/types.js.map +1 -1
  114. package/build/esm/react-query/impl/infinite/utils.js +6 -1
  115. package/build/esm/react-query/impl/infinite/utils.js.map +1 -1
  116. package/build/esm/react-query/impl/plain/hooks.js +5 -2
  117. package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
  118. package/build/esm/react-query/impl/plain/types.d.ts +2 -2
  119. package/build/esm/react-query/impl/plain/types.js.map +1 -1
  120. package/build/esm/react-query/impl/plain/utils.js +6 -1
  121. package/build/esm/react-query/impl/plain/utils.js.map +1 -1
  122. package/build/esm/react-query/index.d.ts +2 -0
  123. package/build/esm/react-query/index.js +1 -0
  124. package/build/esm/react-query/index.js.map +1 -1
  125. package/build/esm/react-query/types/normalizer.d.ts +21 -0
  126. package/build/esm/react-query/types/normalizer.js +2 -0
  127. package/build/esm/react-query/types/normalizer.js.map +1 -0
  128. package/build/esm/react-query/types/options.d.ts +12 -0
  129. package/build/esm/react-query/types/options.js.map +1 -1
  130. package/build/esm/react-query/types/query-meta.d.ts +12 -0
  131. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +292 -0
  132. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +1 -0
  133. package/build/esm/react-query/utils/checkMutationObjectsKeys.d.ts +17 -0
  134. package/build/esm/react-query/utils/checkMutationObjectsKeys.js +81 -0
  135. package/build/esm/react-query/utils/checkMutationObjectsKeys.js.map +1 -0
  136. package/build/esm/react-query/utils/normalize.d.ts +22 -0
  137. package/build/esm/react-query/utils/normalize.js +143 -0
  138. package/build/esm/react-query/utils/normalize.js.map +1 -0
  139. package/build/esm/react-query/utils/parseQueryKey.d.ts +2 -0
  140. package/build/esm/react-query/utils/parseQueryKey.js +4 -0
  141. package/build/esm/react-query/utils/parseQueryKey.js.map +1 -0
  142. package/build/esm/react-query/utils/warn.d.ts +1 -0
  143. package/build/esm/react-query/utils/warn.js +9 -0
  144. package/build/esm/react-query/utils/warn.js.map +1 -0
  145. package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  146. package/build/esm/react-query/utils/warnDisabledRefetch.js +5 -0
  147. package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
  148. package/package.json +2 -1
@@ -0,0 +1,98 @@
1
+ import { ClientDataManager } from '../ClientDataManager';
2
+ describe('normalization edge cases', function () {
3
+ var dataManager;
4
+ beforeEach(function () {
5
+ dataManager = new ClientDataManager({
6
+ defaultOptions: {
7
+ queries: {
8
+ retry: false
9
+ },
10
+ mutations: {
11
+ retry: false
12
+ }
13
+ },
14
+ normalizerConfig: {
15
+ devLogging: false
16
+ }
17
+ });
18
+ });
19
+ afterEach(function () {
20
+ dataManager.queryClient.clear();
21
+ });
22
+ it('should work correctly with empty data', function () {
23
+ expect(dataManager.normalizer).toBeDefined();
24
+ var queryKey = ['empty'];
25
+ dataManager.queryClient.setQueryData(queryKey, []);
26
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), []);
27
+ var mutationData = {
28
+ id: '1',
29
+ name: 'New'
30
+ };
31
+ expect(function () {
32
+ dataManager.optimisticUpdate(mutationData);
33
+ }).not.toThrow();
34
+ });
35
+ it('should work correctly with null data', function () {
36
+ expect(dataManager.normalizer).toBeDefined();
37
+ var queryKey = ['null'];
38
+ dataManager.queryClient.setQueryData(queryKey, null);
39
+ var mutationData = {
40
+ id: '1',
41
+ name: 'New'
42
+ };
43
+ expect(function () {
44
+ dataManager.optimisticUpdate(mutationData);
45
+ }).not.toThrow();
46
+ });
47
+ it('should work correctly with undefined data', function () {
48
+ expect(dataManager.normalizer).toBeDefined();
49
+ var queryKey = ['undefined'];
50
+ dataManager.queryClient.setQueryData(queryKey, undefined);
51
+ var mutationData = {
52
+ id: '1',
53
+ name: 'New'
54
+ };
55
+ expect(function () {
56
+ dataManager.optimisticUpdate(mutationData);
57
+ }).not.toThrow();
58
+ });
59
+ it('should work correctly with arrays of objects', function () {
60
+ expect(dataManager.normalizer).toBeDefined();
61
+ var queryKey = ['array'];
62
+ var data = [{
63
+ id: '1',
64
+ name: 'Item 1'
65
+ }, {
66
+ id: '2',
67
+ name: 'Item 2'
68
+ }];
69
+ dataManager.queryClient.setQueryData(queryKey, data);
70
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), data);
71
+ var mutationData = {
72
+ id: '1',
73
+ name: 'Updated Item 1'
74
+ };
75
+ dataManager.optimisticUpdate(mutationData);
76
+ var updatedData = dataManager.queryClient.getQueryData(queryKey);
77
+ expect(updatedData[0].name).toBe('Updated Item 1');
78
+ expect(updatedData[1].name).toBe('Item 2');
79
+ });
80
+ it('should work correctly with single objects', function () {
81
+ expect(dataManager.normalizer).toBeDefined();
82
+ var queryKey = ['single'];
83
+ var data = {
84
+ id: '1',
85
+ name: 'Item'
86
+ };
87
+ dataManager.queryClient.setQueryData(queryKey, data);
88
+ dataManager.normalizer.setQuery(JSON.stringify(queryKey), data);
89
+ var mutationData = {
90
+ id: '1',
91
+ name: 'Updated Item'
92
+ };
93
+ dataManager.optimisticUpdate(mutationData);
94
+ var updatedData = dataManager.queryClient.getQueryData(queryKey);
95
+ expect(updatedData.name).toBe('Updated Item');
96
+ });
97
+ });
98
+ // #sourceMappingURL=normalizationEdgeCases.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ClientDataManager","describe","dataManager","beforeEach","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":[]}