@isograph/react 0.0.0-main-3de26263 → 0.0.0-main-709dc2bb

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 (260) hide show
  1. package/.turbo/turbo-compile-libs.log +9 -2
  2. package/dist/_virtual/rolldown_runtime.js +25 -0
  3. package/dist/core/FragmentReference.d.mts +38 -0
  4. package/dist/core/FragmentReference.d.mts.map +1 -0
  5. package/dist/core/FragmentReference.d.ts +31 -29
  6. package/dist/core/FragmentReference.d.ts.map +1 -1
  7. package/dist/core/FragmentReference.js +7 -5
  8. package/dist/core/FragmentReference.mjs +10 -0
  9. package/dist/core/FragmentReference.mjs.map +1 -0
  10. package/dist/core/IsographEnvironment.d.mts +89 -0
  11. package/dist/core/IsographEnvironment.d.mts.map +1 -0
  12. package/dist/core/IsographEnvironment.d.ts +76 -81
  13. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  14. package/dist/core/IsographEnvironment.js +59 -82
  15. package/dist/core/IsographEnvironment.mjs +67 -0
  16. package/dist/core/IsographEnvironment.mjs.map +1 -0
  17. package/dist/core/PromiseWrapper.d.mts +36 -0
  18. package/dist/core/PromiseWrapper.d.mts.map +1 -0
  19. package/dist/core/PromiseWrapper.d.ts +26 -23
  20. package/dist/core/PromiseWrapper.d.ts.map +1 -1
  21. package/dist/core/PromiseWrapper.js +45 -43
  22. package/dist/core/PromiseWrapper.mjs +49 -0
  23. package/dist/core/PromiseWrapper.mjs.map +1 -0
  24. package/dist/core/areEqualWithDeepComparison.js +56 -93
  25. package/dist/core/areEqualWithDeepComparison.mjs +62 -0
  26. package/dist/core/areEqualWithDeepComparison.mjs.map +1 -0
  27. package/dist/core/brand.d.mts +19 -0
  28. package/dist/core/brand.d.mts.map +1 -0
  29. package/dist/core/brand.d.ts +6 -6
  30. package/dist/core/brand.d.ts.map +1 -1
  31. package/dist/core/cache.d.mts +20 -0
  32. package/dist/core/cache.d.mts.map +1 -0
  33. package/dist/core/cache.d.ts +18 -24
  34. package/dist/core/cache.d.ts.map +1 -1
  35. package/dist/core/cache.js +203 -306
  36. package/dist/core/cache.mjs +237 -0
  37. package/dist/core/cache.mjs.map +1 -0
  38. package/dist/core/check.d.mts +28 -0
  39. package/dist/core/check.d.mts.map +1 -0
  40. package/dist/core/check.d.ts +21 -19
  41. package/dist/core/check.d.ts.map +1 -1
  42. package/dist/core/check.js +80 -122
  43. package/dist/core/check.mjs +84 -0
  44. package/dist/core/check.mjs.map +1 -0
  45. package/dist/core/componentCache.js +9 -10
  46. package/dist/core/componentCache.mjs +12 -0
  47. package/dist/core/componentCache.mjs.map +1 -0
  48. package/dist/core/entrypoint.d.mts +99 -0
  49. package/dist/core/entrypoint.d.mts.map +1 -0
  50. package/dist/core/entrypoint.d.ts +83 -80
  51. package/dist/core/entrypoint.d.ts.map +1 -1
  52. package/dist/core/entrypoint.js +6 -5
  53. package/dist/core/entrypoint.mjs +8 -0
  54. package/dist/core/entrypoint.mjs.map +1 -0
  55. package/dist/core/garbageCollection.d.mts +18 -0
  56. package/dist/core/garbageCollection.d.mts.map +1 -0
  57. package/dist/core/garbageCollection.d.ts +15 -16
  58. package/dist/core/garbageCollection.d.ts.map +1 -1
  59. package/dist/core/garbageCollection.js +76 -120
  60. package/dist/core/garbageCollection.mjs +89 -0
  61. package/dist/core/garbageCollection.mjs.map +1 -0
  62. package/dist/core/getOrCreateCacheForArtifact.js +35 -38
  63. package/dist/core/getOrCreateCacheForArtifact.mjs +38 -0
  64. package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -0
  65. package/dist/core/logging.d.mts +95 -0
  66. package/dist/core/logging.d.mts.map +1 -0
  67. package/dist/core/logging.d.ts +66 -61
  68. package/dist/core/logging.d.ts.map +1 -1
  69. package/dist/core/logging.js +17 -18
  70. package/dist/core/logging.mjs +20 -0
  71. package/dist/core/logging.mjs.map +1 -0
  72. package/dist/core/makeNetworkRequest.d.mts +13 -0
  73. package/dist/core/makeNetworkRequest.d.mts.map +1 -0
  74. package/dist/core/makeNetworkRequest.d.ts +12 -10
  75. package/dist/core/makeNetworkRequest.d.ts.map +1 -1
  76. package/dist/core/makeNetworkRequest.js +180 -260
  77. package/dist/core/makeNetworkRequest.mjs +195 -0
  78. package/dist/core/makeNetworkRequest.mjs.map +1 -0
  79. package/dist/core/optimisticProxy.d.mts +43 -0
  80. package/dist/core/optimisticProxy.d.mts.map +1 -0
  81. package/dist/core/optimisticProxy.d.ts +37 -53
  82. package/dist/core/optimisticProxy.d.ts.map +1 -1
  83. package/dist/core/optimisticProxy.js +245 -353
  84. package/dist/core/optimisticProxy.mjs +268 -0
  85. package/dist/core/optimisticProxy.mjs.map +1 -0
  86. package/dist/core/read.d.mts +29 -0
  87. package/dist/core/read.d.mts.map +1 -0
  88. package/dist/core/read.d.ts +23 -29
  89. package/dist/core/read.d.ts.map +1 -1
  90. package/dist/core/read.js +435 -634
  91. package/dist/core/read.mjs +456 -0
  92. package/dist/core/read.mjs.map +1 -0
  93. package/dist/core/reader.d.mts +89 -0
  94. package/dist/core/reader.d.mts.map +1 -0
  95. package/dist/core/reader.d.ts +78 -79
  96. package/dist/core/reader.d.ts.map +1 -1
  97. package/dist/core/startUpdate.js +115 -149
  98. package/dist/core/startUpdate.mjs +125 -0
  99. package/dist/core/startUpdate.mjs.map +1 -0
  100. package/dist/core/subscribe.d.mts +12 -0
  101. package/dist/core/subscribe.d.mts.map +1 -0
  102. package/dist/core/subscribe.d.ts +11 -7
  103. package/dist/core/subscribe.d.ts.map +1 -1
  104. package/dist/core/subscribe.js +67 -109
  105. package/dist/core/subscribe.mjs +79 -0
  106. package/dist/core/subscribe.mjs.map +1 -0
  107. package/dist/core/util.d.mts +27 -0
  108. package/dist/core/util.d.mts.map +1 -0
  109. package/dist/core/util.d.ts +21 -24
  110. package/dist/core/util.d.ts.map +1 -1
  111. package/dist/core/util.js +17 -23
  112. package/dist/core/util.mjs +21 -0
  113. package/dist/core/util.mjs.map +1 -0
  114. package/dist/core/writeData.d.mts +11 -0
  115. package/dist/core/writeData.d.mts.map +1 -0
  116. package/dist/core/writeData.d.ts +10 -6
  117. package/dist/core/writeData.d.ts.map +1 -1
  118. package/dist/core/writeData.js +39 -34
  119. package/dist/core/writeData.mjs +42 -0
  120. package/dist/core/writeData.mjs.map +1 -0
  121. package/dist/index.d.mts +32 -0
  122. package/dist/index.d.ts +32 -32
  123. package/dist/index.js +70 -72
  124. package/dist/index.mjs +31 -0
  125. package/dist/loadable-hooks/useClientSideDefer.d.mts +12 -0
  126. package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -0
  127. package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -13
  128. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
  129. package/dist/loadable-hooks/useClientSideDefer.js +13 -44
  130. package/dist/loadable-hooks/useClientSideDefer.mjs +14 -0
  131. package/dist/loadable-hooks/useClientSideDefer.mjs.map +1 -0
  132. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts +33 -0
  133. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -0
  134. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +26 -22
  135. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  136. package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -176
  137. package/dist/loadable-hooks/useConnectionSpecPagination.mjs +134 -0
  138. package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -0
  139. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts +8 -0
  140. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -0
  141. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +6 -3
  142. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
  143. package/dist/loadable-hooks/useImperativeExposedMutationField.js +9 -12
  144. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs +11 -0
  145. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs.map +1 -0
  146. package/dist/loadable-hooks/useImperativeLoadableField.d.mts +19 -0
  147. package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -0
  148. package/dist/loadable-hooks/useImperativeLoadableField.d.ts +15 -11
  149. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
  150. package/dist/loadable-hooks/useImperativeLoadableField.js +16 -12
  151. package/dist/loadable-hooks/useImperativeLoadableField.mjs +17 -0
  152. package/dist/loadable-hooks/useImperativeLoadableField.mjs.map +1 -0
  153. package/dist/loadable-hooks/useSkipLimitPagination.d.mts +24 -0
  154. package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -0
  155. package/dist/loadable-hooks/useSkipLimitPagination.d.ts +19 -15
  156. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
  157. package/dist/loadable-hooks/useSkipLimitPagination.js +118 -164
  158. package/dist/loadable-hooks/useSkipLimitPagination.mjs +119 -0
  159. package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -0
  160. package/dist/react/FragmentReader.d.mts +18 -0
  161. package/dist/react/FragmentReader.d.mts.map +1 -0
  162. package/dist/react/FragmentReader.d.ts +16 -8
  163. package/dist/react/FragmentReader.d.ts.map +1 -1
  164. package/dist/react/FragmentReader.js +8 -7
  165. package/dist/react/FragmentReader.mjs +10 -0
  166. package/dist/react/FragmentReader.mjs.map +1 -0
  167. package/dist/react/FragmentRenderer.d.mts +20 -0
  168. package/dist/react/FragmentRenderer.d.mts.map +1 -0
  169. package/dist/react/FragmentRenderer.d.ts +18 -14
  170. package/dist/react/FragmentRenderer.d.ts.map +1 -1
  171. package/dist/react/FragmentRenderer.js +11 -33
  172. package/dist/react/FragmentRenderer.mjs +12 -0
  173. package/dist/react/FragmentRenderer.mjs.map +1 -0
  174. package/dist/react/IsographEnvironmentProvider.d.mts +17 -0
  175. package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -0
  176. package/dist/react/IsographEnvironmentProvider.d.ts +15 -9
  177. package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
  178. package/dist/react/IsographEnvironmentProvider.js +15 -39
  179. package/dist/react/IsographEnvironmentProvider.mjs +17 -0
  180. package/dist/react/IsographEnvironmentProvider.mjs.map +1 -0
  181. package/dist/react/LoadableFieldReader.d.mts +21 -0
  182. package/dist/react/LoadableFieldReader.d.mts.map +1 -0
  183. package/dist/react/LoadableFieldReader.d.ts +15 -13
  184. package/dist/react/LoadableFieldReader.d.ts.map +1 -1
  185. package/dist/react/LoadableFieldReader.js +13 -47
  186. package/dist/react/LoadableFieldReader.mjs +14 -0
  187. package/dist/react/LoadableFieldReader.mjs.map +1 -0
  188. package/dist/react/LoadableFieldRenderer.d.mts +22 -0
  189. package/dist/react/LoadableFieldRenderer.d.mts.map +1 -0
  190. package/dist/react/LoadableFieldRenderer.d.ts +16 -14
  191. package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
  192. package/dist/react/LoadableFieldRenderer.js +13 -70
  193. package/dist/react/LoadableFieldRenderer.mjs +14 -0
  194. package/dist/react/LoadableFieldRenderer.mjs.map +1 -0
  195. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +18 -0
  196. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -0
  197. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +11 -3
  198. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -1
  199. package/dist/react/RenderAfterCommit__DO_NOT_USE.js +17 -13
  200. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs +18 -0
  201. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs.map +1 -0
  202. package/dist/react/createIsographEnvironment.d.mts +9 -0
  203. package/dist/react/createIsographEnvironment.d.mts.map +1 -0
  204. package/dist/react/createIsographEnvironment.d.ts +7 -3
  205. package/dist/react/createIsographEnvironment.d.ts.map +1 -1
  206. package/dist/react/createIsographEnvironment.js +8 -6
  207. package/dist/react/createIsographEnvironment.mjs +11 -0
  208. package/dist/react/createIsographEnvironment.mjs.map +1 -0
  209. package/dist/react/maybeUnwrapNetworkRequest.js +9 -12
  210. package/dist/react/maybeUnwrapNetworkRequest.mjs +12 -0
  211. package/dist/react/maybeUnwrapNetworkRequest.mjs.map +1 -0
  212. package/dist/react/useImperativeReference.d.mts +15 -0
  213. package/dist/react/useImperativeReference.d.mts.map +1 -0
  214. package/dist/react/useImperativeReference.d.ts +13 -11
  215. package/dist/react/useImperativeReference.d.ts.map +1 -1
  216. package/dist/react/useImperativeReference.js +34 -30
  217. package/dist/react/useImperativeReference.mjs +35 -0
  218. package/dist/react/useImperativeReference.mjs.map +1 -0
  219. package/dist/react/useLazyReference.d.mts +13 -0
  220. package/dist/react/useLazyReference.d.mts.map +1 -0
  221. package/dist/react/useLazyReference.d.ts +11 -9
  222. package/dist/react/useLazyReference.d.ts.map +1 -1
  223. package/dist/react/useLazyReference.js +17 -40
  224. package/dist/react/useLazyReference.mjs +18 -0
  225. package/dist/react/useLazyReference.mjs.map +1 -0
  226. package/dist/react/useReadAndSubscribe.d.mts +20 -0
  227. package/dist/react/useReadAndSubscribe.d.mts.map +1 -0
  228. package/dist/react/useReadAndSubscribe.d.ts +14 -11
  229. package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
  230. package/dist/react/useReadAndSubscribe.js +54 -63
  231. package/dist/react/useReadAndSubscribe.mjs +59 -0
  232. package/dist/react/useReadAndSubscribe.mjs.map +1 -0
  233. package/dist/react/useRerenderOnChange.d.mts +12 -0
  234. package/dist/react/useRerenderOnChange.d.mts.map +1 -0
  235. package/dist/react/useRerenderOnChange.d.ts +10 -6
  236. package/dist/react/useRerenderOnChange.d.ts.map +1 -1
  237. package/dist/react/useRerenderOnChange.js +16 -20
  238. package/dist/react/useRerenderOnChange.mjs +17 -0
  239. package/dist/react/useRerenderOnChange.mjs.map +1 -0
  240. package/dist/react/useResult.d.mts +8 -0
  241. package/dist/react/useResult.d.mts.map +1 -0
  242. package/dist/react/useResult.d.ts +7 -3
  243. package/dist/react/useResult.d.ts.map +1 -1
  244. package/dist/react/useResult.js +27 -30
  245. package/dist/react/useResult.mjs +30 -0
  246. package/dist/react/useResult.mjs.map +1 -0
  247. package/package.json +16 -8
  248. package/dist/core/areEqualWithDeepComparison.d.ts +0 -3
  249. package/dist/core/areEqualWithDeepComparison.d.ts.map +0 -1
  250. package/dist/core/brand.js +0 -2
  251. package/dist/core/componentCache.d.ts +0 -5
  252. package/dist/core/componentCache.d.ts.map +0 -1
  253. package/dist/core/getOrCreateCacheForArtifact.d.ts +0 -8
  254. package/dist/core/getOrCreateCacheForArtifact.d.ts.map +0 -1
  255. package/dist/core/reader.js +0 -2
  256. package/dist/core/startUpdate.d.ts +0 -9
  257. package/dist/core/startUpdate.d.ts.map +0 -1
  258. package/dist/index.d.ts.map +0 -1
  259. package/dist/react/maybeUnwrapNetworkRequest.d.ts +0 -4
  260. package/dist/react/maybeUnwrapNetworkRequest.d.ts.map +0 -1
@@ -1,347 +1,244 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.THIRD_SPLIT_KEY = exports.SECOND_SPLIT_KEY = exports.FIRST_SPLIT_KEY = exports.TYPENAME_FIELD_NAME = void 0;
4
- exports.getOrCreateItemInSuspenseCache = getOrCreateItemInSuspenseCache;
5
- exports.normalizeData = normalizeData;
6
- exports.subscribeToAnyChange = subscribeToAnyChange;
7
- exports.subscribeToAnyChangesToRecord = subscribeToAnyChangesToRecord;
8
- exports.onNextChangeToRecord = onNextChangeToRecord;
9
- exports.insertEmptySetIfMissing = insertEmptySetIfMissing;
10
- exports.getParentRecordKey = getParentRecordKey;
11
- const react_disposable_state_1 = require("@isograph/react-disposable-state");
12
- const IsographEnvironment_1 = require("./IsographEnvironment");
13
- const logging_1 = require("./logging");
14
- const optimisticProxy_1 = require("./optimisticProxy");
15
- const util_1 = require("./util");
16
- exports.TYPENAME_FIELD_NAME = '__typename';
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
2
+ const require_util = require('./util.js');
3
+ const require_IsographEnvironment = require('./IsographEnvironment.js');
4
+ const require_logging = require('./logging.js');
5
+ const require_optimisticProxy = require('./optimisticProxy.js');
6
+ let __isograph_react_disposable_state = require("@isograph/react-disposable-state");
7
+ __isograph_react_disposable_state = require_rolldown_runtime.__toESM(__isograph_react_disposable_state);
8
+
9
+ //#region src/core/cache.ts
10
+ const TYPENAME_FIELD_NAME = "__typename";
17
11
  function getOrCreateItemInSuspenseCache(environment, index, factory) {
18
- if (environment.fragmentCache[index] == null) {
19
- environment.fragmentCache[index] = new react_disposable_state_1.ParentCache(factory);
20
- }
21
- return environment.fragmentCache[index];
12
+ if (environment.fragmentCache[index] == null) environment.fragmentCache[index] = new __isograph_react_disposable_state.ParentCache(factory);
13
+ return environment.fragmentCache[index];
22
14
  }
23
15
  function normalizeData(environment, storeLayer, normalizationAst, networkResponse, variables, root, encounteredIds) {
24
- (0, logging_1.logMessage)(environment, () => ({
25
- kind: 'AboutToNormalize',
26
- normalizationAst,
27
- networkResponse,
28
- variables,
29
- }));
30
- const newStoreRecord = (0, optimisticProxy_1.getMutableStoreRecordProxy)(storeLayer, root);
31
- normalizeDataIntoRecord(environment, storeLayer, normalizationAst, networkResponse, newStoreRecord, root, variables, encounteredIds);
32
- return encounteredIds;
16
+ require_logging.logMessage(environment, () => ({
17
+ kind: "AboutToNormalize",
18
+ normalizationAst,
19
+ networkResponse,
20
+ variables
21
+ }));
22
+ normalizeDataIntoRecord(environment, storeLayer, normalizationAst, networkResponse, require_optimisticProxy.getMutableStoreRecordProxy(storeLayer, root), root, variables, encounteredIds);
23
+ return encounteredIds;
33
24
  }
34
25
  function subscribeToAnyChange(environment, callback) {
35
- const subscription = {
36
- kind: 'AnyRecords',
37
- callback,
38
- };
39
- environment.subscriptions.add(subscription);
40
- return () => environment.subscriptions.delete(subscription);
26
+ const subscription = {
27
+ kind: "AnyRecords",
28
+ callback
29
+ };
30
+ environment.subscriptions.add(subscription);
31
+ return () => environment.subscriptions.delete(subscription);
41
32
  }
42
33
  function subscribeToAnyChangesToRecord(environment, recordLink, callback) {
43
- const subscription = {
44
- kind: 'AnyChangesToRecord',
45
- recordLink,
46
- callback,
47
- };
48
- environment.subscriptions.add(subscription);
49
- return () => environment.subscriptions.delete(subscription);
34
+ const subscription = {
35
+ kind: "AnyChangesToRecord",
36
+ recordLink,
37
+ callback
38
+ };
39
+ environment.subscriptions.add(subscription);
40
+ return () => environment.subscriptions.delete(subscription);
50
41
  }
51
42
  function onNextChangeToRecord(environment, recordLink) {
52
- return new Promise((resolve) => {
53
- const unsubscribe = subscribeToAnyChangesToRecord(environment, recordLink, () => {
54
- unsubscribe();
55
- resolve();
56
- });
57
- });
43
+ return new Promise((resolve) => {
44
+ const unsubscribe = subscribeToAnyChangesToRecord(environment, recordLink, () => {
45
+ unsubscribe();
46
+ resolve();
47
+ });
48
+ });
58
49
  }
59
50
  /**
60
- * Mutate targetParentRecord according to the normalizationAst and networkResponseParentRecord.
61
- */
51
+ * Mutate targetParentRecord according to the normalizationAst and networkResponseParentRecord.
52
+ */
62
53
  function normalizeDataIntoRecord(environment, storeLayer, normalizationAst, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds) {
63
- let recordHasBeenUpdated = false;
64
- for (const normalizationNode of normalizationAst) {
65
- switch (normalizationNode.kind) {
66
- case 'Scalar': {
67
- const scalarFieldResultedInChange = normalizeScalarField(normalizationNode, networkResponseParentRecord, targetParentRecord, variables);
68
- recordHasBeenUpdated =
69
- recordHasBeenUpdated || scalarFieldResultedInChange;
70
- break;
71
- }
72
- case 'Linked': {
73
- const linkedFieldResultedInChange = normalizeLinkedField(environment, storeLayer, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
74
- recordHasBeenUpdated =
75
- recordHasBeenUpdated || linkedFieldResultedInChange;
76
- break;
77
- }
78
- case 'InlineFragment': {
79
- const inlineFragmentResultedInChange = normalizeInlineFragment(environment, storeLayer, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
80
- recordHasBeenUpdated =
81
- recordHasBeenUpdated || inlineFragmentResultedInChange;
82
- break;
83
- }
84
- }
85
- }
86
- if (recordHasBeenUpdated) {
87
- let encounteredRecordsIds = insertEmptySetIfMissing(mutableEncounteredIds, targetParentRecordLink.__typename);
88
- encounteredRecordsIds.add(targetParentRecordLink.__link);
89
- }
90
- return recordHasBeenUpdated;
54
+ let recordHasBeenUpdated = false;
55
+ for (const normalizationNode of normalizationAst) switch (normalizationNode.kind) {
56
+ case "Scalar": {
57
+ const scalarFieldResultedInChange = normalizeScalarField(normalizationNode, networkResponseParentRecord, targetParentRecord, variables);
58
+ recordHasBeenUpdated = recordHasBeenUpdated || scalarFieldResultedInChange;
59
+ break;
60
+ }
61
+ case "Linked": {
62
+ const linkedFieldResultedInChange = normalizeLinkedField(environment, storeLayer, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
63
+ recordHasBeenUpdated = recordHasBeenUpdated || linkedFieldResultedInChange;
64
+ break;
65
+ }
66
+ case "InlineFragment": {
67
+ const inlineFragmentResultedInChange = normalizeInlineFragment(environment, storeLayer, normalizationNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
68
+ recordHasBeenUpdated = recordHasBeenUpdated || inlineFragmentResultedInChange;
69
+ break;
70
+ }
71
+ }
72
+ if (recordHasBeenUpdated) insertEmptySetIfMissing(mutableEncounteredIds, targetParentRecordLink.__typename).add(targetParentRecordLink.__link);
73
+ return recordHasBeenUpdated;
91
74
  }
92
75
  function insertEmptySetIfMissing(map, key) {
93
- let result = map.get(key);
94
- if (result === undefined) {
95
- result = new Set();
96
- map.set(key, result);
97
- }
98
- return result;
76
+ let result = map.get(key);
77
+ if (result === void 0) {
78
+ result = /* @__PURE__ */ new Set();
79
+ map.set(key, result);
80
+ }
81
+ return result;
99
82
  }
100
83
  function normalizeScalarField(astNode, networkResponseParentRecord, targetStoreRecord, variables) {
101
- const networkResponseKey = getNetworkResponseKey(astNode);
102
- const networkResponseData = networkResponseParentRecord[networkResponseKey];
103
- const parentRecordKey = getParentRecordKey(astNode, variables);
104
- const existingValue = targetStoreRecord[parentRecordKey];
105
- if (networkResponseData == null) {
106
- targetStoreRecord[parentRecordKey] = null;
107
- return existingValue === undefined || existingValue != null;
108
- }
109
- if (isScalarOrEmptyArray(networkResponseData)) {
110
- targetStoreRecord[parentRecordKey] = networkResponseData;
111
- return existingValue !== networkResponseData;
112
- }
113
- else {
114
- throw new Error('Unexpected object array when normalizing scalar');
115
- }
84
+ const networkResponseData = networkResponseParentRecord[getNetworkResponseKey(astNode)];
85
+ const parentRecordKey = getParentRecordKey(astNode, variables);
86
+ const existingValue = targetStoreRecord[parentRecordKey];
87
+ if (networkResponseData == null) {
88
+ targetStoreRecord[parentRecordKey] = null;
89
+ return existingValue === void 0 || existingValue != null;
90
+ }
91
+ if (isScalarOrEmptyArray(networkResponseData)) {
92
+ targetStoreRecord[parentRecordKey] = networkResponseData;
93
+ return existingValue !== networkResponseData;
94
+ } else throw new Error("Unexpected object array when normalizing scalar");
116
95
  }
117
96
  /**
118
- * Mutate targetParentRecord with a given linked field ast node.
119
- */
97
+ * Mutate targetParentRecord with a given linked field ast node.
98
+ */
120
99
  function normalizeLinkedField(environment, storeLayer, astNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds) {
121
- var _a, _b;
122
- const networkResponseKey = getNetworkResponseKey(astNode);
123
- const networkResponseData = networkResponseParentRecord[networkResponseKey];
124
- const parentRecordKey = getParentRecordKey(astNode, variables);
125
- const existingValue = targetParentRecord[parentRecordKey];
126
- if (networkResponseData == null) {
127
- targetParentRecord[parentRecordKey] = null;
128
- return existingValue === undefined || existingValue != null;
129
- }
130
- if (isScalarOrEmptyArray(networkResponseData) &&
131
- !isNullOrEmptyArray(networkResponseData)) {
132
- throw new Error('Unexpected scalar network response when normalizing a linked field');
133
- }
134
- if ((0, util_1.isArray)(networkResponseData)) {
135
- // TODO check astNode.plural or the like
136
- const dataIds = [];
137
- for (let i = 0; i < networkResponseData.length; i++) {
138
- const networkResponseObject = networkResponseData[i];
139
- if (networkResponseObject == null) {
140
- dataIds.push(null);
141
- continue;
142
- }
143
- const newStoreRecordId = normalizeNetworkResponseObject(environment, storeLayer, astNode, networkResponseObject, targetParentRecordLink, variables, i, mutableEncounteredIds);
144
- const __typename = (_a = astNode.concreteType) !== null && _a !== void 0 ? _a : networkResponseObject[exports.TYPENAME_FIELD_NAME];
145
- if (__typename == null) {
146
- throw new Error('Unexpected missing __typename in network response when normalizing a linked field. ' +
147
- 'This is indicative of a bug in Isograph.');
148
- }
149
- dataIds.push({
150
- __link: newStoreRecordId,
151
- __typename,
152
- });
153
- }
154
- targetParentRecord[parentRecordKey] = dataIds;
155
- return !dataIdsAreTheSame(existingValue, dataIds);
156
- }
157
- else {
158
- const newStoreRecordId = normalizeNetworkResponseObject(environment, storeLayer, astNode, networkResponseData, targetParentRecordLink, variables, null, mutableEncounteredIds);
159
- let __typename = (_b = astNode.concreteType) !== null && _b !== void 0 ? _b : networkResponseData[exports.TYPENAME_FIELD_NAME];
160
- if (__typename == null) {
161
- throw new Error('Unexpected missing __typename in network response when normalizing a linked field. ' +
162
- 'This is indicative of a bug in Isograph.');
163
- }
164
- targetParentRecord[parentRecordKey] = {
165
- __link: newStoreRecordId,
166
- __typename,
167
- };
168
- const link = (0, IsographEnvironment_1.getLink)(existingValue);
169
- return (link === null || link === void 0 ? void 0 : link.__link) !== newStoreRecordId || link.__typename !== __typename;
170
- }
100
+ const networkResponseData = networkResponseParentRecord[getNetworkResponseKey(astNode)];
101
+ const parentRecordKey = getParentRecordKey(astNode, variables);
102
+ const existingValue = targetParentRecord[parentRecordKey];
103
+ if (networkResponseData == null) {
104
+ targetParentRecord[parentRecordKey] = null;
105
+ return existingValue === void 0 || existingValue != null;
106
+ }
107
+ if (isScalarOrEmptyArray(networkResponseData) && !isNullOrEmptyArray(networkResponseData)) throw new Error("Unexpected scalar network response when normalizing a linked field");
108
+ if (require_util.isArray(networkResponseData)) {
109
+ const dataIds = [];
110
+ for (let i = 0; i < networkResponseData.length; i++) {
111
+ const networkResponseObject = networkResponseData[i];
112
+ if (networkResponseObject == null) {
113
+ dataIds.push(null);
114
+ continue;
115
+ }
116
+ const newStoreRecordId = normalizeNetworkResponseObject(environment, storeLayer, astNode, networkResponseObject, targetParentRecordLink, variables, i, mutableEncounteredIds);
117
+ const __typename = astNode.concreteType ?? networkResponseObject[TYPENAME_FIELD_NAME];
118
+ if (__typename == null) throw new Error("Unexpected missing __typename in network response when normalizing a linked field. This is indicative of a bug in Isograph.");
119
+ dataIds.push({
120
+ __link: newStoreRecordId,
121
+ __typename
122
+ });
123
+ }
124
+ targetParentRecord[parentRecordKey] = dataIds;
125
+ return !dataIdsAreTheSame(existingValue, dataIds);
126
+ } else {
127
+ const newStoreRecordId = normalizeNetworkResponseObject(environment, storeLayer, astNode, networkResponseData, targetParentRecordLink, variables, null, mutableEncounteredIds);
128
+ let __typename = astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];
129
+ if (__typename == null) throw new Error("Unexpected missing __typename in network response when normalizing a linked field. This is indicative of a bug in Isograph.");
130
+ targetParentRecord[parentRecordKey] = {
131
+ __link: newStoreRecordId,
132
+ __typename
133
+ };
134
+ const link = require_IsographEnvironment.getLink(existingValue);
135
+ return link?.__link !== newStoreRecordId || link.__typename !== __typename;
136
+ }
171
137
  }
172
138
  /**
173
- * Mutate targetParentRecord with a given linked field ast node.
174
- */
139
+ * Mutate targetParentRecord with a given linked field ast node.
140
+ */
175
141
  function normalizeInlineFragment(environment, storeLayer, astNode, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds) {
176
- const typeToRefineTo = astNode.type;
177
- if (networkResponseParentRecord[exports.TYPENAME_FIELD_NAME] === typeToRefineTo) {
178
- const hasBeenModified = normalizeDataIntoRecord(environment, storeLayer, astNode.selections, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
179
- return hasBeenModified;
180
- }
181
- return false;
142
+ const typeToRefineTo = astNode.type;
143
+ if (networkResponseParentRecord[TYPENAME_FIELD_NAME] === typeToRefineTo) return normalizeDataIntoRecord(environment, storeLayer, astNode.selections, networkResponseParentRecord, targetParentRecord, targetParentRecordLink, variables, mutableEncounteredIds);
144
+ return false;
182
145
  }
183
146
  function dataIdsAreTheSame(existingValue, newDataIds) {
184
- var _a, _b;
185
- if ((0, util_1.isArray)(existingValue)) {
186
- if (newDataIds.length !== existingValue.length) {
187
- return false;
188
- }
189
- for (let i = 0; i < newDataIds.length; i++) {
190
- const maybeLink = (0, IsographEnvironment_1.getLink)(existingValue[i]);
191
- if (((_a = newDataIds[i]) === null || _a === void 0 ? void 0 : _a.__link) !== (maybeLink === null || maybeLink === void 0 ? void 0 : maybeLink.__link) ||
192
- ((_b = newDataIds[i]) === null || _b === void 0 ? void 0 : _b.__typename) !== (maybeLink === null || maybeLink === void 0 ? void 0 : maybeLink.__typename)) {
193
- return false;
194
- }
195
- }
196
- return true;
197
- }
198
- else {
199
- return false;
200
- }
147
+ if (require_util.isArray(existingValue)) {
148
+ if (newDataIds.length !== existingValue.length) return false;
149
+ for (let i = 0; i < newDataIds.length; i++) {
150
+ const maybeLink = require_IsographEnvironment.getLink(existingValue[i]);
151
+ if (newDataIds[i]?.__link !== maybeLink?.__link || newDataIds[i]?.__typename !== maybeLink?.__typename) return false;
152
+ }
153
+ return true;
154
+ } else return false;
201
155
  }
202
156
  function normalizeNetworkResponseObject(environment, storeLayer, astNode, networkResponseData, targetParentRecordLink, variables, index, mutableEncounteredIds) {
203
- var _a;
204
- const newStoreRecordId = getDataIdOfNetworkResponse(targetParentRecordLink, networkResponseData, astNode, variables, index);
205
- const __typename = (_a = astNode.concreteType) !== null && _a !== void 0 ? _a : networkResponseData[exports.TYPENAME_FIELD_NAME];
206
- if (__typename == null) {
207
- throw new Error('Unexpected missing __typename in network response object. ' +
208
- 'This is indicative of a bug in Isograph.');
209
- }
210
- const link = { __link: newStoreRecordId, __typename };
211
- const newStoreRecord = (0, optimisticProxy_1.getMutableStoreRecordProxy)(storeLayer, link);
212
- normalizeDataIntoRecord(environment, storeLayer, astNode.selections, networkResponseData, newStoreRecord, link, variables, mutableEncounteredIds);
213
- return newStoreRecordId;
157
+ const newStoreRecordId = getDataIdOfNetworkResponse(targetParentRecordLink, networkResponseData, astNode, variables, index);
158
+ const __typename = astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];
159
+ if (__typename == null) throw new Error("Unexpected missing __typename in network response object. This is indicative of a bug in Isograph.");
160
+ const link = {
161
+ __link: newStoreRecordId,
162
+ __typename
163
+ };
164
+ const newStoreRecord = require_optimisticProxy.getMutableStoreRecordProxy(storeLayer, link);
165
+ normalizeDataIntoRecord(environment, storeLayer, astNode.selections, networkResponseData, newStoreRecord, link, variables, mutableEncounteredIds);
166
+ return newStoreRecordId;
214
167
  }
215
168
  function isScalarOrEmptyArray(data) {
216
- // N.B. empty arrays count as empty arrays of scalar fields.
217
- if ((0, util_1.isArray)(data)) {
218
- return data.every((x) => isScalarOrEmptyArray(x));
219
- }
220
- const isScalarValue = data == null ||
221
- typeof data === 'string' ||
222
- typeof data === 'number' ||
223
- typeof data === 'boolean';
224
- return isScalarValue;
169
+ if (require_util.isArray(data)) return data.every((x) => isScalarOrEmptyArray(x));
170
+ return data == null || typeof data === "string" || typeof data === "number" || typeof data === "boolean";
225
171
  }
226
172
  function isNullOrEmptyArray(data) {
227
- if ((0, util_1.isArray)(data)) {
228
- if (data.length === 0) {
229
- return true;
230
- }
231
- return data.every((x) => isNullOrEmptyArray(x));
232
- }
233
- return data == null;
173
+ if (require_util.isArray(data)) {
174
+ if (data.length === 0) return true;
175
+ return data.every((x) => isNullOrEmptyArray(x));
176
+ }
177
+ return data == null;
234
178
  }
235
179
  function getParentRecordKey(astNode, variables) {
236
- let parentRecordKey = astNode.fieldName;
237
- const fieldParameters = astNode.arguments;
238
- if (fieldParameters != null) {
239
- for (const fieldParameter of fieldParameters) {
240
- parentRecordKey += getStoreKeyChunkForArgument(fieldParameter, variables);
241
- }
242
- }
243
- return parentRecordKey;
180
+ let parentRecordKey = astNode.fieldName;
181
+ const fieldParameters = astNode.arguments;
182
+ if (fieldParameters != null) for (const fieldParameter of fieldParameters) parentRecordKey += getStoreKeyChunkForArgument(fieldParameter, variables);
183
+ return parentRecordKey;
244
184
  }
245
185
  function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
246
- var _a;
247
- switch (argumentValue.kind) {
248
- case 'Object': {
249
- return Object.fromEntries(argumentValue.value.map(([argumentName, argumentValue]) => {
250
- return [
251
- argumentName,
252
- // substitute variables
253
- getStoreKeyChunkForArgumentValue(argumentValue, variables),
254
- ];
255
- }));
256
- }
257
- case 'Literal': {
258
- return argumentValue.value;
259
- }
260
- case 'Variable': {
261
- return (_a = variables[argumentValue.name]) !== null && _a !== void 0 ? _a : 'null';
262
- }
263
- case 'String': {
264
- return argumentValue.value;
265
- }
266
- case 'Enum': {
267
- return argumentValue.value;
268
- }
269
- }
186
+ switch (argumentValue.kind) {
187
+ case "Object": return Object.fromEntries(argumentValue.value.map(([argumentName, argumentValue$1]) => {
188
+ return [argumentName, getStoreKeyChunkForArgumentValue(argumentValue$1, variables)];
189
+ }));
190
+ case "Literal": return argumentValue.value;
191
+ case "Variable": return variables[argumentValue.name] ?? "null";
192
+ case "String": return argumentValue.value;
193
+ case "Enum": return argumentValue.value;
194
+ }
270
195
  }
271
196
  function getStoreKeyChunkForArgument(argument, variables) {
272
- const [argumentName, argumentValue] = argument;
273
- let chunk = getStoreKeyChunkForArgumentValue(argumentValue, variables);
274
- if (typeof chunk === 'object') {
275
- chunk = JSON.stringify((0, util_1.stableCopy)(chunk));
276
- }
277
- return `${exports.FIRST_SPLIT_KEY}${argumentName}${exports.SECOND_SPLIT_KEY}${chunk}`;
197
+ const [argumentName, argumentValue] = argument;
198
+ let chunk = getStoreKeyChunkForArgumentValue(argumentValue, variables);
199
+ if (typeof chunk === "object") chunk = JSON.stringify(require_util.stableCopy(chunk));
200
+ return `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${chunk}`;
278
201
  }
279
202
  function getNetworkResponseKey(astNode) {
280
- let networkResponseKey = astNode.fieldName;
281
- const fieldParameters = astNode.arguments;
282
- if (fieldParameters != null) {
283
- for (const [argumentName, argumentValue] of fieldParameters) {
284
- let argumentValueChunk = getArgumentValueChunk(argumentValue);
285
- networkResponseKey += `${exports.FIRST_SPLIT_KEY}${argumentName}${exports.SECOND_SPLIT_KEY}${argumentValueChunk}`;
286
- }
287
- }
288
- return networkResponseKey;
203
+ let networkResponseKey = astNode.fieldName;
204
+ const fieldParameters = astNode.arguments;
205
+ if (fieldParameters != null) for (const [argumentName, argumentValue] of fieldParameters) {
206
+ let argumentValueChunk = getArgumentValueChunk(argumentValue);
207
+ networkResponseKey += `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${argumentValueChunk}`;
208
+ }
209
+ return networkResponseKey;
289
210
  }
290
211
  function getArgumentValueChunk(argumentValue) {
291
- switch (argumentValue.kind) {
292
- case 'Object': {
293
- return ('o_' +
294
- argumentValue.value
295
- .map(([argumentName, argumentValue]) => {
296
- return (argumentName +
297
- exports.THIRD_SPLIT_KEY +
298
- getArgumentValueChunk(argumentValue));
299
- })
300
- .join('_') +
301
- '_c');
302
- }
303
- case 'Literal': {
304
- return 'l_' + argumentValue.value;
305
- }
306
- case 'Variable': {
307
- return 'v_' + argumentValue.name;
308
- }
309
- case 'String': {
310
- // replace all non-word characters (alphanumeric & underscore) with underscores
311
- return 's_' + argumentValue.value.replaceAll(/\W/g, '_');
312
- }
313
- case 'Enum': {
314
- return 'e_' + argumentValue.value;
315
- }
316
- }
317
- }
318
- // an alias might be pullRequests____first___first____after___cursor
319
- exports.FIRST_SPLIT_KEY = '____';
320
- exports.SECOND_SPLIT_KEY = '___';
321
- exports.THIRD_SPLIT_KEY = '__';
322
- // Returns a key to look up an item in the store
212
+ switch (argumentValue.kind) {
213
+ case "Object": return "o_" + argumentValue.value.map(([argumentName, argumentValue$1]) => {
214
+ return argumentName + THIRD_SPLIT_KEY + getArgumentValueChunk(argumentValue$1);
215
+ }).join("_") + "_c";
216
+ case "Literal": return "l_" + argumentValue.value;
217
+ case "Variable": return "v_" + argumentValue.name;
218
+ case "String": return "s_" + argumentValue.value.replaceAll(/\W/g, "_");
219
+ case "Enum": return "e_" + argumentValue.value;
220
+ }
221
+ }
222
+ const FIRST_SPLIT_KEY = "____";
223
+ const SECOND_SPLIT_KEY = "___";
224
+ const THIRD_SPLIT_KEY = "__";
323
225
  function getDataIdOfNetworkResponse(parentRecordLink, dataToNormalize, astNode, variables, index) {
324
- // If we are dealing with nested Query, use __ROOT as id
325
- // TODO do not hard code this value here
326
- if (astNode.concreteType === 'Query') {
327
- return IsographEnvironment_1.ROOT_ID;
328
- }
329
- // Check whether the dataToNormalize has an id field. If so, that is the key.
330
- // If not, we construct an id from the parentRecordId and the field parameters.
331
- const dataId = dataToNormalize.id;
332
- if (dataId != null) {
333
- return dataId;
334
- }
335
- let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;
336
- if (index != null) {
337
- storeKey += `.${index}`;
338
- }
339
- const fieldParameters = astNode.arguments;
340
- if (fieldParameters == null) {
341
- return storeKey;
342
- }
343
- for (const fieldParameter of fieldParameters) {
344
- storeKey += getStoreKeyChunkForArgument(fieldParameter, variables);
345
- }
346
- return storeKey;
347
- }
226
+ if (astNode.concreteType === "Query") return require_IsographEnvironment.ROOT_ID;
227
+ const dataId = dataToNormalize.id;
228
+ if (dataId != null) return dataId;
229
+ let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;
230
+ if (index != null) storeKey += `.${index}`;
231
+ const fieldParameters = astNode.arguments;
232
+ if (fieldParameters == null) return storeKey;
233
+ for (const fieldParameter of fieldParameters) storeKey += getStoreKeyChunkForArgument(fieldParameter, variables);
234
+ return storeKey;
235
+ }
236
+
237
+ //#endregion
238
+ exports.TYPENAME_FIELD_NAME = TYPENAME_FIELD_NAME;
239
+ exports.getOrCreateItemInSuspenseCache = getOrCreateItemInSuspenseCache;
240
+ exports.getParentRecordKey = getParentRecordKey;
241
+ exports.insertEmptySetIfMissing = insertEmptySetIfMissing;
242
+ exports.normalizeData = normalizeData;
243
+ exports.onNextChangeToRecord = onNextChangeToRecord;
244
+ exports.subscribeToAnyChange = subscribeToAnyChange;