@isograph/react 0.0.0-main-a840a70e → 0.0.0-main-c09c9dbf

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 (228) hide show
  1. package/.turbo/turbo-compile-libs.log +8 -5
  2. package/.turbo/turbo-tsc.log +2 -2
  3. package/dist/_virtual/{rolldown_runtime.js → rolldown_runtime.cjs} +10 -6
  4. package/dist/core/{FragmentReference.js → FragmentReference.cjs} +1 -1
  5. package/dist/core/{FragmentReference.d.ts → FragmentReference.d.cts} +5 -5
  6. package/dist/core/FragmentReference.d.cts.map +1 -0
  7. package/dist/core/FragmentReference.d.mts.map +1 -1
  8. package/dist/core/{IsographEnvironment.js → IsographEnvironment.cjs} +5 -5
  9. package/dist/core/{IsographEnvironment.d.ts → IsographEnvironment.d.cts} +15 -16
  10. package/dist/core/IsographEnvironment.d.cts.map +1 -0
  11. package/dist/core/IsographEnvironment.d.mts +5 -6
  12. package/dist/core/IsographEnvironment.d.mts.map +1 -1
  13. package/dist/core/IsographEnvironment.mjs +3 -3
  14. package/dist/core/IsographEnvironment.mjs.map +1 -1
  15. package/dist/core/{PromiseWrapper.d.ts → PromiseWrapper.d.cts} +1 -1
  16. package/dist/core/PromiseWrapper.d.cts.map +1 -0
  17. package/dist/core/PromiseWrapper.d.mts.map +1 -1
  18. package/dist/core/PromiseWrapper.mjs.map +1 -1
  19. package/dist/core/{areEqualWithDeepComparison.js → areEqualWithDeepComparison.cjs} +7 -7
  20. package/dist/core/areEqualWithDeepComparison.mjs +7 -7
  21. package/dist/core/areEqualWithDeepComparison.mjs.map +1 -1
  22. package/dist/core/{brand.d.ts → brand.d.cts} +2 -2
  23. package/dist/core/brand.d.cts.map +1 -0
  24. package/dist/core/brand.d.mts +1 -1
  25. package/dist/core/brand.d.mts.map +1 -1
  26. package/dist/core/{cache.js → cache.cjs} +11 -12
  27. package/dist/core/cache.d.cts +44 -0
  28. package/dist/core/cache.d.cts.map +1 -0
  29. package/dist/core/cache.d.mts +27 -19
  30. package/dist/core/cache.d.mts.map +1 -1
  31. package/dist/core/cache.mjs +4 -4
  32. package/dist/core/cache.mjs.map +1 -1
  33. package/dist/core/{check.js → check.cjs} +4 -4
  34. package/dist/core/{check.d.ts → check.d.cts} +4 -4
  35. package/dist/core/check.d.cts.map +1 -0
  36. package/dist/core/check.d.mts.map +1 -1
  37. package/dist/core/check.mjs.map +1 -1
  38. package/dist/core/{componentCache.js → componentCache.cjs} +2 -2
  39. package/dist/core/{entrypoint.d.ts → entrypoint.d.cts} +7 -7
  40. package/dist/core/entrypoint.d.cts.map +1 -0
  41. package/dist/core/entrypoint.d.mts.map +1 -1
  42. package/dist/core/{garbageCollection.js → garbageCollection.cjs} +3 -3
  43. package/dist/core/{garbageCollection.d.ts → garbageCollection.d.cts} +4 -4
  44. package/dist/core/garbageCollection.d.cts.map +1 -0
  45. package/dist/core/garbageCollection.d.mts.map +1 -1
  46. package/dist/core/garbageCollection.mjs.map +1 -1
  47. package/dist/core/{getOrCreateCacheForArtifact.js → getOrCreateCacheForArtifact.cjs} +4 -4
  48. package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -1
  49. package/dist/core/{logging.d.ts → logging.d.cts} +9 -10
  50. package/dist/core/logging.d.cts.map +1 -0
  51. package/dist/core/logging.d.mts +0 -1
  52. package/dist/core/logging.d.mts.map +1 -1
  53. package/dist/core/{makeNetworkRequest.js → makeNetworkRequest.cjs} +15 -15
  54. package/dist/core/{makeNetworkRequest.d.ts → makeNetworkRequest.d.cts} +7 -7
  55. package/dist/core/makeNetworkRequest.d.cts.map +1 -0
  56. package/dist/core/makeNetworkRequest.d.mts.map +1 -1
  57. package/dist/core/makeNetworkRequest.mjs +4 -4
  58. package/dist/core/makeNetworkRequest.mjs.map +1 -1
  59. package/dist/core/{optimisticProxy.js → optimisticProxy.cjs} +2 -2
  60. package/dist/core/{optimisticProxy.d.ts → optimisticProxy.d.cts} +2 -3
  61. package/dist/core/optimisticProxy.d.cts.map +1 -0
  62. package/dist/core/optimisticProxy.d.mts +0 -1
  63. package/dist/core/optimisticProxy.d.mts.map +1 -1
  64. package/dist/core/optimisticProxy.mjs.map +1 -1
  65. package/dist/core/{read.js → read.cjs} +47 -47
  66. package/dist/core/{read.d.ts → read.d.cts} +4 -5
  67. package/dist/core/read.d.cts.map +1 -0
  68. package/dist/core/read.d.mts.map +1 -1
  69. package/dist/core/read.mjs +39 -39
  70. package/dist/core/read.mjs.map +1 -1
  71. package/dist/core/{reader.d.ts → reader.d.cts} +6 -6
  72. package/dist/core/reader.d.cts.map +1 -0
  73. package/dist/core/reader.d.mts.map +1 -1
  74. package/dist/core/{startUpdate.js → startUpdate.cjs} +14 -14
  75. package/dist/core/startUpdate.mjs +6 -6
  76. package/dist/core/startUpdate.mjs.map +1 -1
  77. package/dist/core/{subscribe.js → subscribe.cjs} +3 -3
  78. package/dist/core/{subscribe.d.ts → subscribe.d.cts} +6 -6
  79. package/dist/core/subscribe.d.cts.map +1 -0
  80. package/dist/core/subscribe.d.mts.map +1 -1
  81. package/dist/core/subscribe.mjs.map +1 -1
  82. package/dist/core/{util.d.ts → util.d.cts} +1 -1
  83. package/dist/core/util.d.cts.map +1 -0
  84. package/dist/core/util.d.mts.map +1 -1
  85. package/dist/core/util.mjs.map +1 -1
  86. package/dist/core/{writeData.js → writeData.cjs} +6 -6
  87. package/dist/core/{writeData.d.ts → writeData.d.cts} +6 -6
  88. package/dist/core/writeData.d.cts.map +1 -0
  89. package/dist/core/writeData.d.mts +1 -1
  90. package/dist/core/writeData.d.mts.map +1 -1
  91. package/dist/core/writeData.mjs.map +1 -1
  92. package/dist/{index.js → index.cjs} +29 -29
  93. package/dist/{index.d.ts → index.d.cts} +31 -31
  94. package/dist/loadable-hooks/useClientSideDefer.cjs +14 -0
  95. package/dist/loadable-hooks/{useClientSideDefer.d.ts → useClientSideDefer.d.cts} +4 -4
  96. package/dist/loadable-hooks/useClientSideDefer.d.cts.map +1 -0
  97. package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -1
  98. package/dist/loadable-hooks/{useConnectionSpecPagination.js → useConnectionSpecPagination.cjs} +13 -16
  99. package/dist/loadable-hooks/{useConnectionSpecPagination.d.ts → useConnectionSpecPagination.d.cts} +4 -4
  100. package/dist/loadable-hooks/useConnectionSpecPagination.d.cts.map +1 -0
  101. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -1
  102. package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -1
  103. package/dist/loadable-hooks/{useImperativeExposedMutationField.d.ts → useImperativeExposedMutationField.d.cts} +1 -1
  104. package/dist/loadable-hooks/useImperativeExposedMutationField.d.cts.map +1 -0
  105. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -1
  106. package/dist/loadable-hooks/{useImperativeLoadableField.js → useImperativeLoadableField.cjs} +4 -5
  107. package/dist/loadable-hooks/{useImperativeLoadableField.d.ts → useImperativeLoadableField.d.cts} +4 -4
  108. package/dist/loadable-hooks/useImperativeLoadableField.d.cts.map +1 -0
  109. package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -1
  110. package/dist/loadable-hooks/{useSkipLimitPagination.js → useSkipLimitPagination.cjs} +13 -16
  111. package/dist/loadable-hooks/{useSkipLimitPagination.d.ts → useSkipLimitPagination.d.cts} +4 -4
  112. package/dist/loadable-hooks/useSkipLimitPagination.d.cts.map +1 -0
  113. package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -1
  114. package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -1
  115. package/dist/react/{FragmentReader.js → FragmentReader.cjs} +1 -1
  116. package/dist/react/{FragmentReader.d.ts → FragmentReader.d.cts} +5 -5
  117. package/dist/react/FragmentReader.d.cts.map +1 -0
  118. package/dist/react/FragmentReader.d.mts.map +1 -1
  119. package/dist/react/{FragmentRenderer.js → FragmentRenderer.cjs} +2 -2
  120. package/dist/react/{FragmentRenderer.d.ts → FragmentRenderer.d.cts} +5 -5
  121. package/dist/react/FragmentRenderer.d.cts.map +1 -0
  122. package/dist/react/FragmentRenderer.d.mts.map +1 -1
  123. package/dist/react/{IsographEnvironmentProvider.js → IsographEnvironmentProvider.cjs} +1 -1
  124. package/dist/react/{IsographEnvironmentProvider.d.ts → IsographEnvironmentProvider.d.cts} +2 -2
  125. package/dist/react/IsographEnvironmentProvider.d.cts.map +1 -0
  126. package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -1
  127. package/dist/react/{LoadableFieldReader.js → LoadableFieldReader.cjs} +3 -3
  128. package/dist/react/{LoadableFieldReader.d.ts → LoadableFieldReader.d.cts} +5 -5
  129. package/dist/react/LoadableFieldReader.d.cts.map +1 -0
  130. package/dist/react/LoadableFieldReader.d.mts.map +1 -1
  131. package/dist/react/{LoadableFieldRenderer.js → LoadableFieldRenderer.cjs} +3 -3
  132. package/dist/react/{LoadableFieldRenderer.d.ts → LoadableFieldRenderer.d.cts} +5 -5
  133. package/dist/react/LoadableFieldRenderer.d.cts.map +1 -0
  134. package/dist/react/LoadableFieldRenderer.d.mts.map +1 -1
  135. package/dist/react/{RenderAfterCommit__DO_NOT_USE.js → RenderAfterCommit__DO_NOT_USE.cjs} +1 -2
  136. package/dist/react/{RenderAfterCommit__DO_NOT_USE.d.ts → RenderAfterCommit__DO_NOT_USE.d.cts} +1 -2
  137. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.cts.map +1 -0
  138. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +0 -1
  139. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -1
  140. package/dist/react/{createIsographEnvironment.js → createIsographEnvironment.cjs} +2 -2
  141. package/dist/react/{createIsographEnvironment.d.ts → createIsographEnvironment.d.cts} +3 -3
  142. package/dist/react/createIsographEnvironment.d.cts.map +1 -0
  143. package/dist/react/createIsographEnvironment.d.mts +0 -1
  144. package/dist/react/createIsographEnvironment.d.mts.map +1 -1
  145. package/dist/react/{maybeUnwrapNetworkRequest.js → maybeUnwrapNetworkRequest.cjs} +1 -1
  146. package/dist/react/{useImperativeReference.js → useImperativeReference.cjs} +7 -8
  147. package/dist/react/{useImperativeReference.d.ts → useImperativeReference.d.cts} +5 -6
  148. package/dist/react/useImperativeReference.d.cts.map +1 -0
  149. package/dist/react/useImperativeReference.d.mts +0 -1
  150. package/dist/react/useImperativeReference.d.mts.map +1 -1
  151. package/dist/react/useLazyReference.cjs +18 -0
  152. package/dist/react/{useLazyReference.d.ts → useLazyReference.d.cts} +5 -6
  153. package/dist/react/useLazyReference.d.cts.map +1 -0
  154. package/dist/react/useLazyReference.d.mts +0 -1
  155. package/dist/react/useLazyReference.d.mts.map +1 -1
  156. package/dist/react/{useReadAndSubscribe.js → useReadAndSubscribe.cjs} +9 -10
  157. package/dist/react/{useReadAndSubscribe.d.ts → useReadAndSubscribe.d.cts} +4 -5
  158. package/dist/react/useReadAndSubscribe.d.cts.map +1 -0
  159. package/dist/react/useReadAndSubscribe.d.mts +0 -1
  160. package/dist/react/useReadAndSubscribe.d.mts.map +1 -1
  161. package/dist/react/useReadAndSubscribe.mjs.map +1 -1
  162. package/dist/react/{useRerenderOnChange.js → useRerenderOnChange.cjs} +3 -4
  163. package/dist/react/{useRerenderOnChange.d.ts → useRerenderOnChange.d.cts} +4 -4
  164. package/dist/react/useRerenderOnChange.d.cts.map +1 -0
  165. package/dist/react/useRerenderOnChange.d.mts.map +1 -1
  166. package/dist/react/{useResult.js → useResult.cjs} +7 -7
  167. package/dist/react/{useResult.d.ts → useResult.d.cts} +3 -3
  168. package/dist/react/useResult.d.cts.map +1 -0
  169. package/dist/react/useResult.d.mts.map +1 -1
  170. package/package.json +9 -9
  171. package/src/core/IsographEnvironment.ts +8 -4
  172. package/src/core/cache.ts +38 -25
  173. package/src/core/getOrCreateCacheForArtifact.ts +2 -2
  174. package/src/core/writeData.ts +4 -4
  175. package/src/tests/garbageCollection.test.ts +11 -11
  176. package/src/tests/normalizeData.test.ts +11 -3
  177. package/src/tests/optimisticProxy.test.ts +23 -23
  178. package/src/tests/startUpdate.test.ts +2 -2
  179. package/tsconfig.json +5 -4
  180. package/tsconfig.package.json +8 -0
  181. package/tsconfig.package.tsbuildinfo +1 -0
  182. package/tsconfig.test.json +12 -0
  183. package/tsconfig.test.tsbuildinfo +1 -0
  184. package/tsdown.config.ts +8 -0
  185. package/vitest.config.ts +1 -1
  186. package/dist/core/FragmentReference.d.ts.map +0 -1
  187. package/dist/core/IsographEnvironment.d.ts.map +0 -1
  188. package/dist/core/PromiseWrapper.d.ts.map +0 -1
  189. package/dist/core/brand.d.ts.map +0 -1
  190. package/dist/core/cache.d.ts +0 -37
  191. package/dist/core/cache.d.ts.map +0 -1
  192. package/dist/core/check.d.ts.map +0 -1
  193. package/dist/core/entrypoint.d.ts.map +0 -1
  194. package/dist/core/garbageCollection.d.ts.map +0 -1
  195. package/dist/core/logging.d.ts.map +0 -1
  196. package/dist/core/makeNetworkRequest.d.ts.map +0 -1
  197. package/dist/core/optimisticProxy.d.ts.map +0 -1
  198. package/dist/core/read.d.ts.map +0 -1
  199. package/dist/core/reader.d.ts.map +0 -1
  200. package/dist/core/subscribe.d.ts.map +0 -1
  201. package/dist/core/util.d.ts.map +0 -1
  202. package/dist/core/writeData.d.ts.map +0 -1
  203. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +0 -1
  204. package/dist/loadable-hooks/useClientSideDefer.js +0 -15
  205. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +0 -1
  206. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +0 -1
  207. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +0 -1
  208. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +0 -1
  209. package/dist/react/FragmentReader.d.ts.map +0 -1
  210. package/dist/react/FragmentRenderer.d.ts.map +0 -1
  211. package/dist/react/IsographEnvironmentProvider.d.ts.map +0 -1
  212. package/dist/react/LoadableFieldReader.d.ts.map +0 -1
  213. package/dist/react/LoadableFieldRenderer.d.ts.map +0 -1
  214. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +0 -1
  215. package/dist/react/createIsographEnvironment.d.ts.map +0 -1
  216. package/dist/react/useImperativeReference.d.ts.map +0 -1
  217. package/dist/react/useLazyReference.d.ts.map +0 -1
  218. package/dist/react/useLazyReference.js +0 -19
  219. package/dist/react/useReadAndSubscribe.d.ts.map +0 -1
  220. package/dist/react/useRerenderOnChange.d.ts.map +0 -1
  221. package/dist/react/useResult.d.ts.map +0 -1
  222. package/src/tests/tsconfig.json +0 -21
  223. package/tsconfig.pkg.json +0 -16
  224. /package/dist/core/{PromiseWrapper.js → PromiseWrapper.cjs} +0 -0
  225. /package/dist/core/{entrypoint.js → entrypoint.cjs} +0 -0
  226. /package/dist/core/{logging.js → logging.cjs} +0 -0
  227. /package/dist/core/{util.js → util.cjs} +0 -0
  228. /package/dist/loadable-hooks/{useImperativeExposedMutationField.js → useImperativeExposedMutationField.cjs} +0 -0
@@ -1,4 +1,3 @@
1
- import { Brand } from "./brand.mjs";
2
1
  import "./reader.mjs";
3
2
  import { StoreLayerWithData } from "./optimisticProxy.mjs";
4
3
  import { DataId, IsographEnvironment, StoreLink, TypeName } from "./IsographEnvironment.mjs";
@@ -10,28 +9,37 @@ import { ParentCache } from "@isograph/react-disposable-state";
10
9
  type NetworkResponsePlural<T> = null | T | readonly T[] | readonly (null | T)[];
11
10
  type NetworkResponseScalarValue = string | number | boolean | unknown;
12
11
  type NetworkResponseValue = NetworkResponsePlural<NetworkResponseScalarValue> | NetworkResponsePlural<NetworkResponseObject>;
13
- type NetworkResponseObject = { readonly [K in ScalarNetworkResponseKey | LinkedNetworkResponseKey]: K extends ScalarNetworkResponseKey ? undefined | NetworkResponsePlural<NetworkResponseScalarValue> : undefined | NetworkResponsePlural<NetworkResponseObject> } & {
12
+ type NetworkResponseObject = {
13
+ readonly [key: ScalarNetworkResponseKey]: undefined | NetworkResponsePlural<NetworkResponseScalarValue>;
14
+ readonly [key: LinkedNetworkResponseKey]: undefined | NetworkResponsePlural<NetworkResponseObject>;
15
+ readonly [key: NetworkResponseKey]: undefined | NetworkResponsePlural<NetworkResponseScalarValue> | NetworkResponsePlural<NetworkResponseObject>;
14
16
  readonly id?: DataId;
15
17
  readonly __typename?: TypeName;
16
18
  };
17
19
  declare function normalizeData(environment: IsographEnvironment, storeLayer: StoreLayerWithData, normalizationAst: NormalizationAstNodes, networkResponse: NetworkResponseObject, variables: Variables, root: StoreLink, encounteredIds: EncounteredIds): EncounteredIds;
18
20
  type EncounteredIds = Map<TypeName, Set<DataId>>;
19
- declare const LinkedParentRecordKeyBrand: unique symbol;
20
- type LinkedParentRecordKey = string & {
21
- brand?: Brand<undefined, typeof LinkedParentRecordKeyBrand>;
22
- };
23
- declare const ScalarParentRecordKeyBrand: unique symbol;
24
- type ScalarParentRecordKey = string & {
25
- brand?: Brand<undefined, typeof ScalarParentRecordKeyBrand>;
26
- };
27
- declare const LinkedNetworkResponseKeyBrand: unique symbol;
28
- type LinkedNetworkResponseKey = string & {
29
- brand?: Brand<undefined, typeof LinkedNetworkResponseKeyBrand>;
30
- };
31
- declare const ScalarNetworkResponseKeyBrand: unique symbol;
32
- type ScalarNetworkResponseKey = string & {
33
- brand?: Brand<undefined, typeof ScalarNetworkResponseKeyBrand>;
34
- };
21
+ type ParentRecordKey = string;
22
+ /**
23
+ * these don't actually start with the different prefixes, but they let
24
+ * us use multiple indexes, e.g.
25
+ * {
26
+ * readonly [key: `NOT_AN_ACTUAL_TYPE_LinkedParentRecordKey_${string} `]: ...
27
+ * readonly [key: `NOT_AN_ACTUAL_TYPE_ScalarParentRecordKey_${string} `]: ...
28
+ * }
29
+ */
30
+ type LinkedParentRecordKey = `NOT_AN_ACTUAL_TYPE_LinkedParentRecordKey_${string}`;
31
+ type ScalarParentRecordKey = `NOT_AN_ACTUAL_TYPE_ScalarParentRecordKey_${string}`;
32
+ type NetworkResponseKey = string;
33
+ /**
34
+ * these don't actually start with the different prefixes, but they let
35
+ * us use multiple indexes, e.g.
36
+ * {
37
+ * readonly [key: `NOT_AN_ACTUAL_TYPE_LinkedNetworkResponseKey_${string} `]: ...
38
+ * readonly [key: `NOT_AN_ACTUAL_TYPE_ScalarNetworkResponseKey_${string} `]: ...
39
+ * }
40
+ */
41
+ type LinkedNetworkResponseKey = `NOT_AN_ACTUAL_TYPE_LinkedNetworkResponseKey_${string}`;
42
+ type ScalarNetworkResponseKey = `NOT_AN_ACTUAL_TYPE_ScalarNetworkResponseKey_${string}`;
35
43
  //#endregion
36
- export { EncounteredIds, LinkedParentRecordKey, NetworkResponseObject, NetworkResponseScalarValue, NetworkResponseValue, ScalarParentRecordKey, normalizeData };
44
+ export { EncounteredIds, LinkedParentRecordKey, NetworkResponseObject, NetworkResponseScalarValue, NetworkResponseValue, ParentRecordKey, ScalarParentRecordKey, normalizeData };
37
45
  //# sourceMappingURL=cache.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.mts","names":[],"sources":["../../src/core/cache.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAiDY,KAAA,qBAAqB,CAAA,CAAA,CAAA,GAAA,IAAA,GAE7B,CAF6B,GAAA,SAGpB,CAHoB,EAAA,GAAA,SAAA,CAAA,IAAA,GAIZ,CAJY,CAAA,EAAA;AAE7B,KAGQ,0BAAA,GAHR,MAAA,GAAA,MAAA,GAAA,OAAA,GAAA,OAAA;AACS,KAID,oBAAA,GACR,qBALS,CAKa,0BALb,CAAA,GAMT,qBANS,CAMa,qBANb,CAAA;AACQ,KAOT,qBAAA,GAPS,iBAWf,wBAXgB,GAYhB,wBAZgB,GAYW,CAZX,SAYqB,wBAZrB,GAAA,SAAA,GAaJ,qBAbI,CAakB,0BAblB,CAAA,GAAA,SAAA,GAcJ,qBAdI,CAckB,qBAdlB,CAAA,EACtB,GAAY;EAEA,SAAA,EAAA,CAAA,EAaI,MAbJ;EACc,SAAA,UAAA,CAAA,EAaF,QAbE;CAAtB;AACsB,iBAeV,aAAA,CAfU,WAAA,EAgBX,mBAhBW,EAAA,UAAA,EAiBZ,kBAjBY,EAAA,gBAAA,EAkBN,qBAlBM,EAAA,eAAA,EAmBP,qBAnBO,EAAA,SAAA,EAoBb,SApBa,EAAA,IAAA,EAqBlB,SArBkB,EAAA,cAAA,EAsBR,cAtBQ,CAAA,EAuBvB,cAvBuB;AAMpB,KAmFM,cAAA,GAAiB,GAnFvB,CAmF2B,QAnF3B,EAmFqC,GAnFrC,CAmFyC,MAnFzC,CAAA,CAAA;cAmXQ,0BAlXmB,EAAA,OAAA,MAAA;AAAU,KAmX/B,qBAAA,GAnX+B,MAAA,GAAA;EACH,KAAA,CAAA,EAmX9B,KAnX8B,CAAA,SAAA,EAAA,OAmXN,0BAnXM,CAAA;CAAtB;cAsXJ,0BArX0B,EAAA,OAAA,MAAA;AAAtB,KAsXN,qBAAA,GAtXM,MAAA,GAAA;EAEF,KAAA,CAAA,EAqXN,KArXM,CAAA,SAAA,EAAA,OAqXkB,0BArXlB,CAAA;CACQ;cA4bV,6BAxbC,EAAA,OAAA,MAAA;AACD,KAwbF,wBAAA,GAxbE,MAAA,GAAA;EACM,KAAA,CAAA,EAwbV,KAxbU,CAAA,SAAA,EAAA,OAwbc,6BAxbd,CAAA;CACD;cA0bL,6BAzbD,EAAA,OAAA,MAAA;AACL,KAybI,wBAAA,GAzbJ,MAAA,GAAA;EACU,KAAA,CAAA,EAybR,KAzbQ,CAAA,SAAA,EAAA,OAybgB,6BAzbhB,CAAA;CACf"}
1
+ {"version":3,"file":"cache.d.mts","names":[],"sources":["../../src/core/cache.ts"],"mappings":";;;;;;;;KAgDY,qBAAA,aAER,CAAA,YACS,CAAA,sBACQ,CAAA;AAAA,KACT,0BAAA;AAAA,KAEA,oBAAA,GACR,qBAAA,CAAsB,0BAAA,IACtB,qBAAA,CAAsB,qBAAA;AAAA,KAEd,qBAAA;EAAA,UAGA,GAAA,EAAK,wBAAA,eAEX,qBAAA,CAAsB,0BAAA;EAAA,UAChB,GAAA,EAAK,wBAAA,eAEX,qBAAA,CAAsB,qBAAA;EAAA,UAChB,GAAA,EAAK,kBAAA,eAEX,qBAAA,CAAsB,0BAAA,IACtB,qBAAA,CAAsB,qBAAA;EAAA,SACjB,EAAA,GAAK,MAAA;EAAA,SACL,UAAA,GAAa,QAAA;AAAA;AAAA,iBAGR,aAAA,CACd,WAAA,EAAa,mBAAA,EACb,UAAA,EAAY,kBAAA,EACZ,gBAAA,EAAkB,qBAAA,EAClB,eAAA,EAAiB,qBAAA,EACjB,SAAA,EAAW,SAAA,EACX,IAAA,EAAM,SAAA,EACN,cAAA,EAAgB,cAAA,GACf,cAAA;AAAA,KAkES,cAAA,GAAiB,GAAA,CAAI,QAAA,EAAU,GAAA,CAAI,MAAA;AAAA,KAgSnC,eAAA;;;AA/XZ;;;;;;KAyYY,qBAAA;AAAA,KAEA,qBAAA;AAAA,KAwEA,kBAAA;;;;;AA/cZ;;;;KAydY,wBAAA;AAAA,KAEA,wBAAA"}
@@ -168,8 +168,8 @@ function getParentRecordKey(astNode, variables) {
168
168
  }
169
169
  function getStoreKeyChunkForArgumentValue(argumentValue, variables) {
170
170
  switch (argumentValue.kind) {
171
- case "Object": return Object.fromEntries(argumentValue.value.map(([argumentName, argumentValue$1]) => {
172
- return [argumentName, getStoreKeyChunkForArgumentValue(argumentValue$1, variables)];
171
+ case "Object": return Object.fromEntries(argumentValue.value.map(([argumentName, argumentValue]) => {
172
+ return [argumentName, getStoreKeyChunkForArgumentValue(argumentValue, variables)];
173
173
  }));
174
174
  case "Literal": return argumentValue.value;
175
175
  case "Variable": return variables[argumentValue.name] ?? "null";
@@ -194,8 +194,8 @@ function getNetworkResponseKey(astNode) {
194
194
  }
195
195
  function getArgumentValueChunk(argumentValue) {
196
196
  switch (argumentValue.kind) {
197
- case "Object": return "o_" + argumentValue.value.map(([argumentName, argumentValue$1]) => {
198
- return argumentName + THIRD_SPLIT_KEY + getArgumentValueChunk(argumentValue$1);
197
+ case "Object": return "o_" + argumentValue.value.map(([argumentName, argumentValue]) => {
198
+ return argumentName + THIRD_SPLIT_KEY + getArgumentValueChunk(argumentValue);
199
199
  }).join("_") + "_c";
200
200
  case "Literal": return "l_" + argumentValue.value;
201
201
  case "Variable": return "v_" + argumentValue.name;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.mjs","names":["dataIds: (StoreLink | null)[]","argumentValue"],"sources":["../../src/core/cache.ts"],"sourcesContent":["import { type Factory, ParentCache } from '@isograph/react-disposable-state';\nimport type { Brand } from './brand';\nimport type {\n NormalizationAstNodes,\n NormalizationInlineFragment,\n NormalizationLinkedField,\n NormalizationScalarField,\n} from './entrypoint';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n Variables,\n VariableValue,\n} from './FragmentReference';\nimport {\n type DataId,\n type DataTypeValueLinked,\n getLink,\n type IsographEnvironment,\n ROOT_ID,\n type StoreLink,\n type StoreRecord,\n type TypeName,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport {\n getMutableStoreRecordProxy,\n type StoreLayerWithData,\n} from './optimisticProxy';\nimport type { ReaderLinkedField, ReaderScalarField } from './reader';\nimport { type Argument, type ArgumentValue, isArray, stableCopy } from './util';\n\nexport const TYPENAME_FIELD_NAME = '__typename';\n\nexport function getOrCreateItemInSuspenseCache<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n>(\n environment: IsographEnvironment,\n index: string,\n factory: Factory<FragmentReference<TReadFromStore, TClientFieldValue>>,\n): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {\n if (environment.fragmentCache[index] == null) {\n environment.fragmentCache[index] = new ParentCache(factory);\n }\n\n return environment.fragmentCache[index];\n}\n\nexport type NetworkResponsePlural<T> =\n | null\n | T\n | readonly T[]\n | readonly (null | T)[];\nexport type NetworkResponseScalarValue = string | number | boolean | unknown;\n\nexport type NetworkResponseValue =\n | NetworkResponsePlural<NetworkResponseScalarValue>\n | NetworkResponsePlural<NetworkResponseObject>;\n\nexport type NetworkResponseObject = {\n // N.B. undefined is here to support optional id's, but\n // undefined should not *actually* be present in the network response.\n readonly [K in\n | ScalarNetworkResponseKey\n | LinkedNetworkResponseKey]: K extends ScalarNetworkResponseKey\n ? undefined | NetworkResponsePlural<NetworkResponseScalarValue>\n : undefined | NetworkResponsePlural<NetworkResponseObject>;\n} & {\n readonly id?: DataId;\n readonly __typename?: TypeName;\n};\n\nexport function normalizeData(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponse: NetworkResponseObject,\n variables: Variables,\n root: StoreLink,\n encounteredIds: EncounteredIds,\n): EncounteredIds {\n logMessage(environment, () => ({\n kind: 'AboutToNormalize',\n normalizationAst,\n networkResponse,\n variables,\n }));\n\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, root);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n normalizationAst,\n networkResponse,\n newStoreRecord,\n root,\n variables,\n encounteredIds,\n );\n\n return encounteredIds;\n}\n\nexport function subscribeToAnyChange(\n environment: IsographEnvironment,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyRecords',\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function subscribeToAnyChangesToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyChangesToRecord',\n recordLink,\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function onNextChangeToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n): Promise<void> {\n return new Promise((resolve) => {\n const unsubscribe = subscribeToAnyChangesToRecord(\n environment,\n recordLink,\n () => {\n unsubscribe();\n resolve();\n },\n );\n });\n}\n\nexport type EncounteredIds = Map<TypeName, Set<DataId>>;\n/**\n * Mutate targetParentRecord according to the normalizationAst and networkResponseParentRecord.\n */\nfunction normalizeDataIntoRecord(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n let recordHasBeenUpdated = false;\n for (const normalizationNode of normalizationAst) {\n switch (normalizationNode.kind) {\n case 'Scalar': {\n const scalarFieldResultedInChange = normalizeScalarField(\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n variables,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || scalarFieldResultedInChange;\n break;\n }\n case 'Linked': {\n const linkedFieldResultedInChange = normalizeLinkedField(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || linkedFieldResultedInChange;\n break;\n }\n case 'InlineFragment': {\n const inlineFragmentResultedInChange = normalizeInlineFragment(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || inlineFragmentResultedInChange;\n break;\n }\n }\n }\n if (recordHasBeenUpdated) {\n let encounteredRecordsIds = insertEmptySetIfMissing(\n mutableEncounteredIds,\n targetParentRecordLink.__typename,\n );\n\n encounteredRecordsIds.add(targetParentRecordLink.__link);\n }\n return recordHasBeenUpdated;\n}\n\nexport function insertEmptySetIfMissing<K, V>(map: Map<K, Set<V>>, key: K) {\n let result = map.get(key);\n if (result === undefined) {\n result = new Set();\n map.set(key, result);\n }\n return result;\n}\n\ntype RecordHasBeenUpdated = boolean;\nfunction normalizeScalarField(\n astNode: NormalizationScalarField,\n networkResponseParentRecord: NetworkResponseObject,\n targetStoreRecord: StoreRecord,\n variables: Variables,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetStoreRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetStoreRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n targetStoreRecord[parentRecordKey] = networkResponseData;\n return existingValue !== networkResponseData;\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeLinkedField(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetParentRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetParentRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n if (isArray(networkResponseData)) {\n // TODO check astNode.plural or the like\n const dataIds: (StoreLink | null)[] = [];\n for (let i = 0; i < networkResponseData.length; i++) {\n const networkResponseObject = networkResponseData[i];\n if (networkResponseObject == null) {\n dataIds.push(null);\n continue;\n }\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseObject,\n targetParentRecordLink,\n variables,\n i,\n mutableEncounteredIds,\n );\n\n const __typename =\n astNode.concreteType ?? networkResponseObject[TYPENAME_FIELD_NAME];\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n dataIds.push({\n __link: newStoreRecordId,\n __typename,\n });\n }\n targetParentRecord[parentRecordKey] = dataIds;\n return !dataIdsAreTheSame(existingValue, dataIds);\n } else {\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseData,\n targetParentRecordLink,\n variables,\n null,\n mutableEncounteredIds,\n );\n\n let __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n targetParentRecord[parentRecordKey] = {\n __link: newStoreRecordId,\n __typename,\n };\n\n const link = getLink(existingValue);\n return link?.__link !== newStoreRecordId || link.__typename !== __typename;\n }\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeInlineFragment(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationInlineFragment,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const typeToRefineTo = astNode.type;\n if (networkResponseParentRecord[TYPENAME_FIELD_NAME] === typeToRefineTo) {\n const hasBeenModified = normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n return hasBeenModified;\n }\n return false;\n}\n\nfunction dataIdsAreTheSame(\n existingValue: DataTypeValueLinked,\n newDataIds: (StoreLink | null)[],\n): boolean {\n if (isArray(existingValue)) {\n if (newDataIds.length !== existingValue.length) {\n return false;\n }\n for (let i = 0; i < newDataIds.length; i++) {\n const maybeLink = getLink(existingValue[i]);\n if (\n newDataIds[i]?.__link !== maybeLink?.__link ||\n newDataIds[i]?.__typename !== maybeLink?.__typename\n ) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nfunction normalizeNetworkResponseObject(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseData: NetworkResponseObject,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n index: number | null,\n mutableEncounteredIds: EncounteredIds,\n): DataId /* The id of the modified or newly created item */ {\n const newStoreRecordId = getDataIdOfNetworkResponse(\n targetParentRecordLink,\n networkResponseData,\n astNode,\n variables,\n index,\n );\n const __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response object. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const link = { __link: newStoreRecordId, __typename };\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, link);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseData,\n newStoreRecord,\n link,\n variables,\n mutableEncounteredIds,\n );\n\n return newStoreRecordId;\n}\n\ndeclare const LinkedParentRecordKeyBrand: unique symbol;\nexport type LinkedParentRecordKey = string & {\n brand?: Brand<undefined, typeof LinkedParentRecordKeyBrand>;\n};\n\ndeclare const ScalarParentRecordKeyBrand: unique symbol;\nexport type ScalarParentRecordKey = string & {\n brand?: Brand<undefined, typeof ScalarParentRecordKeyBrand>;\n};\n\nexport function getParentRecordKey(\n astNode: NormalizationLinkedField | ReaderLinkedField,\n variables: Variables,\n): LinkedParentRecordKey;\nexport function getParentRecordKey(\n astNode: NormalizationScalarField | ReaderScalarField,\n variables: Variables,\n): ScalarParentRecordKey;\nexport function getParentRecordKey(\n astNode:\n | NormalizationLinkedField\n | NormalizationScalarField\n | ReaderLinkedField\n | ReaderScalarField,\n variables: Variables,\n): string {\n let parentRecordKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n if (fieldParameters != null) {\n for (const fieldParameter of fieldParameters) {\n parentRecordKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n }\n\n return parentRecordKey;\n}\n\nfunction getStoreKeyChunkForArgumentValue(\n argumentValue: ArgumentValue,\n variables: Variables,\n): VariableValue {\n switch (argumentValue.kind) {\n case 'Object': {\n return Object.fromEntries(\n argumentValue.value.map(([argumentName, argumentValue]) => {\n return [\n argumentName,\n // substitute variables\n getStoreKeyChunkForArgumentValue(argumentValue, variables),\n ];\n }),\n );\n }\n case 'Literal': {\n return argumentValue.value;\n }\n case 'Variable': {\n return variables[argumentValue.name] ?? 'null';\n }\n case 'String': {\n return argumentValue.value;\n }\n case 'Enum': {\n return argumentValue.value;\n }\n }\n}\n\nfunction getStoreKeyChunkForArgument(argument: Argument, variables: Variables) {\n const [argumentName, argumentValue] = argument;\n let chunk = getStoreKeyChunkForArgumentValue(argumentValue, variables);\n\n if (typeof chunk === 'object') {\n chunk = JSON.stringify(stableCopy(chunk));\n }\n\n return `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${chunk}`;\n}\n\ndeclare const LinkedNetworkResponseKeyBrand: unique symbol;\nexport type LinkedNetworkResponseKey = string & {\n brand?: Brand<undefined, typeof LinkedNetworkResponseKeyBrand>;\n};\n\ndeclare const ScalarNetworkResponseKeyBrand: unique symbol;\nexport type ScalarNetworkResponseKey = string & {\n brand?: Brand<undefined, typeof ScalarNetworkResponseKeyBrand>;\n};\n\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField,\n): LinkedNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationScalarField,\n): ScalarNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField | NormalizationScalarField,\n): string {\n let networkResponseKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n\n if (fieldParameters != null) {\n for (const [argumentName, argumentValue] of fieldParameters) {\n let argumentValueChunk = getArgumentValueChunk(argumentValue);\n networkResponseKey += `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${argumentValueChunk}`;\n }\n }\n\n return networkResponseKey;\n}\n\nfunction getArgumentValueChunk(argumentValue: ArgumentValue): string {\n switch (argumentValue.kind) {\n case 'Object': {\n return (\n 'o_' +\n argumentValue.value\n .map(([argumentName, argumentValue]) => {\n return (\n argumentName +\n THIRD_SPLIT_KEY +\n getArgumentValueChunk(argumentValue)\n );\n })\n .join('_') +\n '_c'\n );\n }\n case 'Literal': {\n return 'l_' + argumentValue.value;\n }\n case 'Variable': {\n return 'v_' + argumentValue.name;\n }\n case 'String': {\n // replace all non-word characters (alphanumeric & underscore) with underscores\n return 's_' + argumentValue.value.replaceAll(/\\W/g, '_');\n }\n case 'Enum': {\n return 'e_' + argumentValue.value;\n }\n }\n}\n\n// an alias might be pullRequests____first___first____after___cursor\nexport const FIRST_SPLIT_KEY = '____';\nexport const SECOND_SPLIT_KEY = '___';\nexport const THIRD_SPLIT_KEY = '__';\n\n// Returns a key to look up an item in the store\nfunction getDataIdOfNetworkResponse(\n parentRecordLink: StoreLink,\n dataToNormalize: NetworkResponseObject,\n astNode: NormalizationLinkedField,\n variables: Variables,\n index: number | null,\n): DataId {\n const __typename =\n astNode.concreteType ?? dataToNormalize[TYPENAME_FIELD_NAME];\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n // If we are dealing with nested Query, use __ROOT as id\n // TODO do not hard code this value here\n if (__typename === 'Query') {\n return ROOT_ID;\n }\n\n // Check whether the dataToNormalize has an id field. If so, that is the key.\n // If not, we construct an id from the parentRecordId and the field parameters.\n\n const dataId = dataToNormalize.id;\n if (dataId != null) {\n return dataId;\n }\n\n let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;\n if (index != null) {\n storeKey += `.${index}`;\n }\n\n const fieldParameters = astNode.arguments;\n if (fieldParameters == null) {\n return storeKey;\n }\n\n for (const fieldParameter of fieldParameters) {\n storeKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n return storeKey;\n}\n"],"mappings":";;;;;;;AAgCA,MAAa,sBAAsB;AAEnC,SAAgB,+BAId,aACA,OACA,SACmE;AACnE,KAAI,YAAY,cAAc,UAAU,KACtC,aAAY,cAAc,SAAS,IAAI,YAAY,QAAQ;AAG7D,QAAO,YAAY,cAAc;;AA2BnC,SAAgB,cACd,aACA,YACA,kBACA,iBACA,WACA,MACA,gBACgB;AAChB,YAAW,oBAAoB;EAC7B,MAAM;EACN;EACA;EACA;EACD,EAAE;AAIH,yBACE,aACA,YACA,kBACA,iBANqB,2BAA2B,YAAY,KAAK,EAQjE,MACA,WACA,eACD;AAED,QAAO;;AAGT,SAAgB,qBACd,aACA,UACY;CACZ,MAAM,eAAe;EACnB,MAAM;EACN;EACD;AACD,aAAY,cAAc,IAAI,aAAa;AAC3C,cAAa,YAAY,cAAc,OAAO,aAAa;;AAG7D,SAAgB,8BACd,aACA,YACA,UACY;CACZ,MAAM,eAAe;EACnB,MAAM;EACN;EACA;EACD;AACD,aAAY,cAAc,IAAI,aAAa;AAC3C,cAAa,YAAY,cAAc,OAAO,aAAa;;AAG7D,SAAgB,qBACd,aACA,YACe;AACf,QAAO,IAAI,SAAS,YAAY;EAC9B,MAAM,cAAc,8BAClB,aACA,kBACM;AACJ,gBAAa;AACb,YAAS;IAEZ;GACD;;;;;AAOJ,SAAS,wBACP,aACA,YACA,kBACA,6BACA,oBACA,wBACA,WACA,uBACsB;CACtB,IAAI,uBAAuB;AAC3B,MAAK,MAAM,qBAAqB,iBAC9B,SAAQ,kBAAkB,MAA1B;EACE,KAAK,UAAU;GACb,MAAM,8BAA8B,qBAClC,mBACA,6BACA,oBACA,UACD;AACD,0BACE,wBAAwB;AAC1B;;EAEF,KAAK,UAAU;GACb,MAAM,8BAA8B,qBAClC,aACA,YACA,mBACA,6BACA,oBACA,wBACA,WACA,sBACD;AACD,0BACE,wBAAwB;AAC1B;;EAEF,KAAK,kBAAkB;GACrB,MAAM,iCAAiC,wBACrC,aACA,YACA,mBACA,6BACA,oBACA,wBACA,WACA,sBACD;AACD,0BACE,wBAAwB;AAC1B;;;AAIN,KAAI,qBAMF,CAL4B,wBAC1B,uBACA,uBAAuB,WACxB,CAEqB,IAAI,uBAAuB,OAAO;AAE1D,QAAO;;AAGT,SAAgB,wBAA8B,KAAqB,KAAQ;CACzE,IAAI,SAAS,IAAI,IAAI,IAAI;AACzB,KAAI,WAAW,QAAW;AACxB,2BAAS,IAAI,KAAK;AAClB,MAAI,IAAI,KAAK,OAAO;;AAEtB,QAAO;;AAIT,SAAS,qBACP,SACA,6BACA,mBACA,WACsB;CAEtB,MAAM,sBAAsB,4BADD,sBAAsB,QAAQ;CAEzD,MAAM,kBAAkB,mBAAmB,SAAS,UAAU;CAC9D,MAAM,gBAAgB,kBAAkB;AAExC,KAAI,uBAAuB,MAAM;AAC/B,oBAAkB,mBAAmB;AACrC,SAAO,kBAAkB,UAAa,iBAAiB;;AAGzD,mBAAkB,mBAAmB;AACrC,QAAO,kBAAkB;;;;;AAM3B,SAAS,qBACP,aACA,YACA,SACA,6BACA,oBACA,wBACA,WACA,uBACsB;CAEtB,MAAM,sBAAsB,4BADD,sBAAsB,QAAQ;CAEzD,MAAM,kBAAkB,mBAAmB,SAAS,UAAU;CAC9D,MAAM,gBAAgB,mBAAmB;AAEzC,KAAI,uBAAuB,MAAM;AAC/B,qBAAmB,mBAAmB;AACtC,SAAO,kBAAkB,UAAa,iBAAiB;;AAGzD,KAAI,QAAQ,oBAAoB,EAAE;EAEhC,MAAMA,UAAgC,EAAE;AACxC,OAAK,IAAI,IAAI,GAAG,IAAI,oBAAoB,QAAQ,KAAK;GACnD,MAAM,wBAAwB,oBAAoB;AAClD,OAAI,yBAAyB,MAAM;AACjC,YAAQ,KAAK,KAAK;AAClB;;GAEF,MAAM,mBAAmB,+BACvB,aACA,YACA,SACA,uBACA,wBACA,WACA,GACA,sBACD;GAED,MAAM,aACJ,QAAQ,gBAAgB,sBAAsB;AAChD,OAAI,cAAc,KAChB,OAAM,IAAI,MACR,8HAED;AAEH,WAAQ,KAAK;IACX,QAAQ;IACR;IACD,CAAC;;AAEJ,qBAAmB,mBAAmB;AACtC,SAAO,CAAC,kBAAkB,eAAe,QAAQ;QAC5C;EACL,MAAM,mBAAmB,+BACvB,aACA,YACA,SACA,qBACA,wBACA,WACA,MACA,sBACD;EAED,IAAI,aACF,QAAQ,gBAAgB,oBAAoB;AAE9C,MAAI,cAAc,KAChB,OAAM,IAAI,MACR,8HAED;AAGH,qBAAmB,mBAAmB;GACpC,QAAQ;GACR;GACD;EAED,MAAM,OAAO,QAAQ,cAAc;AACnC,SAAO,MAAM,WAAW,oBAAoB,KAAK,eAAe;;;;;;AAOpE,SAAS,wBACP,aACA,YACA,SACA,6BACA,oBACA,wBACA,WACA,uBACsB;CACtB,MAAM,iBAAiB,QAAQ;AAC/B,KAAI,4BAA4B,yBAAyB,eAWvD,QAVwB,wBACtB,aACA,YACA,QAAQ,YACR,6BACA,oBACA,wBACA,WACA,sBACD;AAGH,QAAO;;AAGT,SAAS,kBACP,eACA,YACS;AACT,KAAI,QAAQ,cAAc,EAAE;AAC1B,MAAI,WAAW,WAAW,cAAc,OACtC,QAAO;AAET,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;GAC1C,MAAM,YAAY,QAAQ,cAAc,GAAG;AAC3C,OACE,WAAW,IAAI,WAAW,WAAW,UACrC,WAAW,IAAI,eAAe,WAAW,WAEzC,QAAO;;AAGX,SAAO;OAEP,QAAO;;AAIX,SAAS,+BACP,aACA,YACA,SACA,qBACA,wBACA,WACA,OACA,uBAC2D;CAC3D,MAAM,mBAAmB,2BACvB,wBACA,qBACA,SACA,WACA,MACD;CACD,MAAM,aACJ,QAAQ,gBAAgB,oBAAoB;AAE9C,KAAI,cAAc,KAChB,OAAM,IAAI,MACR,qGAED;CAGH,MAAM,OAAO;EAAE,QAAQ;EAAkB;EAAY;CACrD,MAAM,iBAAiB,2BAA2B,YAAY,KAAK;AAEnE,yBACE,aACA,YACA,QAAQ,YACR,qBACA,gBACA,MACA,WACA,sBACD;AAED,QAAO;;AAqBT,SAAgB,mBACd,SAKA,WACQ;CACR,IAAI,kBAAkB,QAAQ;CAC9B,MAAM,kBAAkB,QAAQ;AAChC,KAAI,mBAAmB,KACrB,MAAK,MAAM,kBAAkB,gBAC3B,oBAAmB,4BAA4B,gBAAgB,UAAU;AAI7E,QAAO;;AAGT,SAAS,iCACP,eACA,WACe;AACf,SAAQ,cAAc,MAAtB;EACE,KAAK,SACH,QAAO,OAAO,YACZ,cAAc,MAAM,KAAK,CAAC,cAAcC,qBAAmB;AACzD,UAAO,CACL,cAEA,iCAAiCA,iBAAe,UAAU,CAC3D;IACD,CACH;EAEH,KAAK,UACH,QAAO,cAAc;EAEvB,KAAK,WACH,QAAO,UAAU,cAAc,SAAS;EAE1C,KAAK,SACH,QAAO,cAAc;EAEvB,KAAK,OACH,QAAO,cAAc;;;AAK3B,SAAS,4BAA4B,UAAoB,WAAsB;CAC7E,MAAM,CAAC,cAAc,iBAAiB;CACtC,IAAI,QAAQ,iCAAiC,eAAe,UAAU;AAEtE,KAAI,OAAO,UAAU,SACnB,SAAQ,KAAK,UAAU,WAAW,MAAM,CAAC;AAG3C,QAAO,GAAG,kBAAkB,eAAe,mBAAmB;;AAmBhE,SAAS,sBACP,SACQ;CACR,IAAI,qBAAqB,QAAQ;CACjC,MAAM,kBAAkB,QAAQ;AAEhC,KAAI,mBAAmB,KACrB,MAAK,MAAM,CAAC,cAAc,kBAAkB,iBAAiB;EAC3D,IAAI,qBAAqB,sBAAsB,cAAc;AAC7D,wBAAsB,GAAG,kBAAkB,eAAe,mBAAmB;;AAIjF,QAAO;;AAGT,SAAS,sBAAsB,eAAsC;AACnE,SAAQ,cAAc,MAAtB;EACE,KAAK,SACH,QACE,OACA,cAAc,MACX,KAAK,CAAC,cAAcA,qBAAmB;AACtC,UACE,eACA,kBACA,sBAAsBA,gBAAc;IAEtC,CACD,KAAK,IAAI,GACZ;EAGJ,KAAK,UACH,QAAO,OAAO,cAAc;EAE9B,KAAK,WACH,QAAO,OAAO,cAAc;EAE9B,KAAK,SAEH,QAAO,OAAO,cAAc,MAAM,WAAW,OAAO,IAAI;EAE1D,KAAK,OACH,QAAO,OAAO,cAAc;;;AAMlC,MAAa,kBAAkB;AAC/B,MAAa,mBAAmB;AAChC,MAAa,kBAAkB;AAG/B,SAAS,2BACP,kBACA,iBACA,SACA,WACA,OACQ;CACR,MAAM,aACJ,QAAQ,gBAAgB,gBAAgB;AAC1C,KAAI,cAAc,KAChB,OAAM,IAAI,MACR,8HAED;AAIH,KAAI,eAAe,QACjB,QAAO;CAMT,MAAM,SAAS,gBAAgB;AAC/B,KAAI,UAAU,KACZ,QAAO;CAGT,IAAI,WAAW,GAAG,iBAAiB,WAAW,GAAG,iBAAiB,OAAO,GAAG,QAAQ;AACpF,KAAI,SAAS,KACX,aAAY,IAAI;CAGlB,MAAM,kBAAkB,QAAQ;AAChC,KAAI,mBAAmB,KACrB,QAAO;AAGT,MAAK,MAAM,kBAAkB,gBAC3B,aAAY,4BAA4B,gBAAgB,UAAU;AAEpE,QAAO"}
1
+ {"version":3,"file":"cache.mjs","names":[],"sources":["../../src/core/cache.ts"],"sourcesContent":["import { type Factory, ParentCache } from '@isograph/react-disposable-state';\nimport type {\n NormalizationAstNodes,\n NormalizationInlineFragment,\n NormalizationLinkedField,\n NormalizationScalarField,\n} from './entrypoint';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n Variables,\n VariableValue,\n} from './FragmentReference';\nimport {\n type DataId,\n type DataTypeValueLinked,\n getLink,\n type IsographEnvironment,\n ROOT_ID,\n type StoreLink,\n type StoreRecord,\n type TypeName,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport {\n getMutableStoreRecordProxy,\n type StoreLayerWithData,\n} from './optimisticProxy';\nimport type { ReaderLinkedField, ReaderScalarField } from './reader';\nimport { type Argument, type ArgumentValue, isArray, stableCopy } from './util';\n\nexport const TYPENAME_FIELD_NAME = '__typename';\n\nexport function getOrCreateItemInSuspenseCache<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n>(\n environment: IsographEnvironment,\n index: string,\n factory: Factory<FragmentReference<TReadFromStore, TClientFieldValue>>,\n): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {\n if (environment.fragmentCache[index] == null) {\n environment.fragmentCache[index] = new ParentCache(factory);\n }\n\n return environment.fragmentCache[index];\n}\n\nexport type NetworkResponsePlural<T> =\n | null\n | T\n | readonly T[]\n | readonly (null | T)[];\nexport type NetworkResponseScalarValue = string | number | boolean | unknown;\n\nexport type NetworkResponseValue =\n | NetworkResponsePlural<NetworkResponseScalarValue>\n | NetworkResponsePlural<NetworkResponseObject>;\n\nexport type NetworkResponseObject = {\n // N.B. undefined is here to support optional id's, but\n // undefined should not *actually* be present in the network response.\n readonly [key: ScalarNetworkResponseKey]:\n | undefined\n | NetworkResponsePlural<NetworkResponseScalarValue>;\n readonly [key: LinkedNetworkResponseKey]:\n | undefined\n | NetworkResponsePlural<NetworkResponseObject>;\n readonly [key: NetworkResponseKey]:\n | undefined\n | NetworkResponsePlural<NetworkResponseScalarValue>\n | NetworkResponsePlural<NetworkResponseObject>;\n readonly id?: DataId;\n readonly __typename?: TypeName;\n};\n\nexport function normalizeData(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponse: NetworkResponseObject,\n variables: Variables,\n root: StoreLink,\n encounteredIds: EncounteredIds,\n): EncounteredIds {\n logMessage(environment, () => ({\n kind: 'AboutToNormalize',\n normalizationAst,\n networkResponse,\n variables,\n }));\n\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, root);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n normalizationAst,\n networkResponse,\n newStoreRecord,\n root,\n variables,\n encounteredIds,\n );\n\n return encounteredIds;\n}\n\nexport function subscribeToAnyChange(\n environment: IsographEnvironment,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyRecords',\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function subscribeToAnyChangesToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n callback: () => void,\n): () => void {\n const subscription = {\n kind: 'AnyChangesToRecord',\n recordLink,\n callback,\n } as const;\n environment.subscriptions.add(subscription);\n return () => environment.subscriptions.delete(subscription);\n}\n\nexport function onNextChangeToRecord(\n environment: IsographEnvironment,\n recordLink: StoreLink,\n): Promise<void> {\n return new Promise((resolve) => {\n const unsubscribe = subscribeToAnyChangesToRecord(\n environment,\n recordLink,\n () => {\n unsubscribe();\n resolve();\n },\n );\n });\n}\n\nexport type EncounteredIds = Map<TypeName, Set<DataId>>;\n/**\n * Mutate targetParentRecord according to the normalizationAst and networkResponseParentRecord.\n */\nfunction normalizeDataIntoRecord(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n normalizationAst: NormalizationAstNodes,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n let recordHasBeenUpdated = false;\n for (const normalizationNode of normalizationAst) {\n switch (normalizationNode.kind) {\n case 'Scalar': {\n const scalarFieldResultedInChange = normalizeScalarField(\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n variables,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || scalarFieldResultedInChange;\n break;\n }\n case 'Linked': {\n const linkedFieldResultedInChange = normalizeLinkedField(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || linkedFieldResultedInChange;\n break;\n }\n case 'InlineFragment': {\n const inlineFragmentResultedInChange = normalizeInlineFragment(\n environment,\n storeLayer,\n normalizationNode,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n recordHasBeenUpdated =\n recordHasBeenUpdated || inlineFragmentResultedInChange;\n break;\n }\n }\n }\n if (recordHasBeenUpdated) {\n let encounteredRecordsIds = insertEmptySetIfMissing(\n mutableEncounteredIds,\n targetParentRecordLink.__typename,\n );\n\n encounteredRecordsIds.add(targetParentRecordLink.__link);\n }\n return recordHasBeenUpdated;\n}\n\nexport function insertEmptySetIfMissing<K, V>(map: Map<K, Set<V>>, key: K) {\n let result = map.get(key);\n if (result === undefined) {\n result = new Set();\n map.set(key, result);\n }\n return result;\n}\n\ntype RecordHasBeenUpdated = boolean;\nfunction normalizeScalarField(\n astNode: NormalizationScalarField,\n networkResponseParentRecord: NetworkResponseObject,\n targetStoreRecord: StoreRecord,\n variables: Variables,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetStoreRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetStoreRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n targetStoreRecord[parentRecordKey] = networkResponseData;\n return existingValue !== networkResponseData;\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeLinkedField(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const networkResponseKey = getNetworkResponseKey(astNode);\n const networkResponseData = networkResponseParentRecord[networkResponseKey];\n const parentRecordKey = getParentRecordKey(astNode, variables);\n const existingValue = targetParentRecord[parentRecordKey];\n\n if (networkResponseData == null) {\n targetParentRecord[parentRecordKey] = null;\n return existingValue === undefined || existingValue != null;\n }\n\n if (isArray(networkResponseData)) {\n // TODO check astNode.plural or the like\n const dataIds: (StoreLink | null)[] = [];\n for (let i = 0; i < networkResponseData.length; i++) {\n const networkResponseObject = networkResponseData[i];\n if (networkResponseObject == null) {\n dataIds.push(null);\n continue;\n }\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseObject,\n targetParentRecordLink,\n variables,\n i,\n mutableEncounteredIds,\n );\n\n const __typename =\n astNode.concreteType ?? networkResponseObject[TYPENAME_FIELD_NAME];\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n dataIds.push({\n __link: newStoreRecordId,\n __typename,\n });\n }\n targetParentRecord[parentRecordKey] = dataIds;\n return !dataIdsAreTheSame(existingValue, dataIds);\n } else {\n const newStoreRecordId = normalizeNetworkResponseObject(\n environment,\n storeLayer,\n astNode,\n networkResponseData,\n targetParentRecordLink,\n variables,\n null,\n mutableEncounteredIds,\n );\n\n let __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n targetParentRecord[parentRecordKey] = {\n __link: newStoreRecordId,\n __typename,\n };\n\n const link = getLink(existingValue);\n return link?.__link !== newStoreRecordId || link.__typename !== __typename;\n }\n}\n\n/**\n * Mutate targetParentRecord with a given linked field ast node.\n */\nfunction normalizeInlineFragment(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationInlineFragment,\n networkResponseParentRecord: NetworkResponseObject,\n targetParentRecord: StoreRecord,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n mutableEncounteredIds: EncounteredIds,\n): RecordHasBeenUpdated {\n const typeToRefineTo = astNode.type;\n if (networkResponseParentRecord[TYPENAME_FIELD_NAME] === typeToRefineTo) {\n const hasBeenModified = normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseParentRecord,\n targetParentRecord,\n targetParentRecordLink,\n variables,\n mutableEncounteredIds,\n );\n return hasBeenModified;\n }\n return false;\n}\n\nfunction dataIdsAreTheSame(\n existingValue: DataTypeValueLinked,\n newDataIds: (StoreLink | null)[],\n): boolean {\n if (isArray(existingValue)) {\n if (newDataIds.length !== existingValue.length) {\n return false;\n }\n for (let i = 0; i < newDataIds.length; i++) {\n const maybeLink = getLink(existingValue[i]);\n if (\n newDataIds[i]?.__link !== maybeLink?.__link ||\n newDataIds[i]?.__typename !== maybeLink?.__typename\n ) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nfunction normalizeNetworkResponseObject(\n environment: IsographEnvironment,\n storeLayer: StoreLayerWithData,\n astNode: NormalizationLinkedField,\n networkResponseData: NetworkResponseObject,\n targetParentRecordLink: StoreLink,\n variables: Variables,\n index: number | null,\n mutableEncounteredIds: EncounteredIds,\n): DataId /* The id of the modified or newly created item */ {\n const newStoreRecordId = getDataIdOfNetworkResponse(\n targetParentRecordLink,\n networkResponseData,\n astNode,\n variables,\n index,\n );\n const __typename =\n astNode.concreteType ?? networkResponseData[TYPENAME_FIELD_NAME];\n\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response object. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const link = { __link: newStoreRecordId, __typename };\n const newStoreRecord = getMutableStoreRecordProxy(storeLayer, link);\n\n normalizeDataIntoRecord(\n environment,\n storeLayer,\n astNode.selections,\n networkResponseData,\n newStoreRecord,\n link,\n variables,\n mutableEncounteredIds,\n );\n\n return newStoreRecordId;\n}\n\nexport type ParentRecordKey = string;\n\n/**\n * these don't actually start with the different prefixes, but they let\n * us use multiple indexes, e.g.\n * {\n * readonly [key: `NOT_AN_ACTUAL_TYPE_LinkedParentRecordKey_${string} `]: ...\n * readonly [key: `NOT_AN_ACTUAL_TYPE_ScalarParentRecordKey_${string} `]: ...\n * }\n */\nexport type LinkedParentRecordKey =\n `NOT_AN_ACTUAL_TYPE_LinkedParentRecordKey_${string}`;\nexport type ScalarParentRecordKey =\n `NOT_AN_ACTUAL_TYPE_ScalarParentRecordKey_${string}`;\n\nexport function getParentRecordKey(\n astNode: NormalizationLinkedField | ReaderLinkedField,\n variables: Variables,\n): LinkedParentRecordKey;\nexport function getParentRecordKey(\n astNode: NormalizationScalarField | ReaderScalarField,\n variables: Variables,\n): ScalarParentRecordKey;\nexport function getParentRecordKey(\n astNode:\n | NormalizationLinkedField\n | NormalizationScalarField\n | ReaderLinkedField\n | ReaderScalarField,\n variables: Variables,\n): ParentRecordKey {\n let parentRecordKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n if (fieldParameters != null) {\n for (const fieldParameter of fieldParameters) {\n parentRecordKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n }\n\n return parentRecordKey;\n}\n\nfunction getStoreKeyChunkForArgumentValue(\n argumentValue: ArgumentValue,\n variables: Variables,\n): VariableValue {\n switch (argumentValue.kind) {\n case 'Object': {\n return Object.fromEntries(\n argumentValue.value.map(([argumentName, argumentValue]) => {\n return [\n argumentName,\n // substitute variables\n getStoreKeyChunkForArgumentValue(argumentValue, variables),\n ];\n }),\n );\n }\n case 'Literal': {\n return argumentValue.value;\n }\n case 'Variable': {\n return variables[argumentValue.name] ?? 'null';\n }\n case 'String': {\n return argumentValue.value;\n }\n case 'Enum': {\n return argumentValue.value;\n }\n }\n}\n\nfunction getStoreKeyChunkForArgument(argument: Argument, variables: Variables) {\n const [argumentName, argumentValue] = argument;\n let chunk = getStoreKeyChunkForArgumentValue(argumentValue, variables);\n\n if (typeof chunk === 'object') {\n chunk = JSON.stringify(stableCopy(chunk));\n }\n\n return `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${chunk}`;\n}\n\nexport type NetworkResponseKey = string;\n\n/**\n * these don't actually start with the different prefixes, but they let\n * us use multiple indexes, e.g.\n * {\n * readonly [key: `NOT_AN_ACTUAL_TYPE_LinkedNetworkResponseKey_${string} `]: ...\n * readonly [key: `NOT_AN_ACTUAL_TYPE_ScalarNetworkResponseKey_${string} `]: ...\n * }\n */\nexport type LinkedNetworkResponseKey =\n `NOT_AN_ACTUAL_TYPE_LinkedNetworkResponseKey_${string}`;\nexport type ScalarNetworkResponseKey =\n `NOT_AN_ACTUAL_TYPE_ScalarNetworkResponseKey_${string}`;\n\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField,\n): LinkedNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationScalarField,\n): ScalarNetworkResponseKey;\nfunction getNetworkResponseKey(\n astNode: NormalizationLinkedField | NormalizationScalarField,\n): NetworkResponseKey {\n let networkResponseKey = astNode.fieldName;\n const fieldParameters = astNode.arguments;\n\n if (fieldParameters != null) {\n for (const [argumentName, argumentValue] of fieldParameters) {\n let argumentValueChunk = getArgumentValueChunk(argumentValue);\n networkResponseKey += `${FIRST_SPLIT_KEY}${argumentName}${SECOND_SPLIT_KEY}${argumentValueChunk}`;\n }\n }\n\n return networkResponseKey;\n}\n\nfunction getArgumentValueChunk(argumentValue: ArgumentValue): string {\n switch (argumentValue.kind) {\n case 'Object': {\n return (\n 'o_' +\n argumentValue.value\n .map(([argumentName, argumentValue]) => {\n return (\n argumentName +\n THIRD_SPLIT_KEY +\n getArgumentValueChunk(argumentValue)\n );\n })\n .join('_') +\n '_c'\n );\n }\n case 'Literal': {\n return 'l_' + argumentValue.value;\n }\n case 'Variable': {\n return 'v_' + argumentValue.name;\n }\n case 'String': {\n // replace all non-word characters (alphanumeric & underscore) with underscores\n return 's_' + argumentValue.value.replaceAll(/\\W/g, '_');\n }\n case 'Enum': {\n return 'e_' + argumentValue.value;\n }\n }\n}\n\n// an alias might be pullRequests____first___first____after___cursor\nexport const FIRST_SPLIT_KEY = '____';\nexport const SECOND_SPLIT_KEY = '___';\nexport const THIRD_SPLIT_KEY = '__';\n\n// Returns a key to look up an item in the store\nfunction getDataIdOfNetworkResponse(\n parentRecordLink: StoreLink,\n dataToNormalize: NetworkResponseObject,\n astNode: NormalizationLinkedField,\n variables: Variables,\n index: number | null,\n): DataId {\n const __typename =\n astNode.concreteType ?? dataToNormalize[TYPENAME_FIELD_NAME];\n if (__typename == null) {\n throw new Error(\n 'Unexpected missing __typename in network response when normalizing a linked field. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n // If we are dealing with nested Query, use __ROOT as id\n // TODO do not hard code this value here\n if (__typename === 'Query') {\n return ROOT_ID;\n }\n\n // Check whether the dataToNormalize has an id field. If so, that is the key.\n // If not, we construct an id from the parentRecordId and the field parameters.\n\n const dataId = dataToNormalize.id;\n if (dataId != null) {\n return dataId;\n }\n\n let storeKey = `${parentRecordLink.__typename}:${parentRecordLink.__link}.${astNode.fieldName}`;\n if (index != null) {\n storeKey += `.${index}`;\n }\n\n const fieldParameters = astNode.arguments;\n if (fieldParameters == null) {\n return storeKey;\n }\n\n for (const fieldParameter of fieldParameters) {\n storeKey += getStoreKeyChunkForArgument(fieldParameter, variables);\n }\n return storeKey;\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- const require_IsographEnvironment = require('./IsographEnvironment.js');
2
- const require_logging = require('./logging.js');
3
- const require_optimisticProxy = require('./optimisticProxy.js');
4
- const require_cache = require('./cache.js');
1
+ const require_IsographEnvironment = require('./IsographEnvironment.cjs');
2
+ const require_logging = require('./logging.cjs');
3
+ const require_optimisticProxy = require('./optimisticProxy.cjs');
4
+ const require_cache = require('./cache.cjs');
5
5
 
6
6
  //#region src/core/check.ts
7
7
  const DEFAULT_SHOULD_FETCH_VALUE = "IfNecessary";
@@ -1,6 +1,6 @@
1
- import { IsographEnvironment, StoreLink } from "./IsographEnvironment.js";
2
- import { Variables } from "./FragmentReference.js";
3
- import { NormalizationAstNodes } from "./entrypoint.js";
1
+ import { IsographEnvironment, StoreLink } from "./IsographEnvironment.cjs";
2
+ import { Variables } from "./FragmentReference.cjs";
3
+ import { NormalizationAstNodes } from "./entrypoint.cjs";
4
4
 
5
5
  //#region src/core/check.d.ts
6
6
  type ShouldFetch = RequiredShouldFetch | 'IfNecessary';
@@ -25,4 +25,4 @@ type CheckResult = {
25
25
  declare function check(environment: IsographEnvironment, normalizationAst: NormalizationAstNodes, variables: Variables, root: StoreLink): CheckResult;
26
26
  //#endregion
27
27
  export { CheckResult, FetchOptions, RequiredFetchOptions, RequiredShouldFetch, ShouldFetch, check };
28
- //# sourceMappingURL=check.d.ts.map
28
+ //# sourceMappingURL=check.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.cts","names":[],"sources":["../../src/core/check.ts"],"mappings":";;;;;KAYY,WAAA,GAAc,mBAAA;AAAA,KACd,mBAAA;AAAA,KAIP,kBAAA;EACH,UAAA,IAAc,IAAA,EAAM,YAAA;EACpB,OAAA;AAAA;AAAA,UAGe,YAAA,yCACP,kBAAA,CAAmB,YAAA;EAC3B,WAAA,GAAc,WAAA;EACd,yBAAA,GAA4B,gBAAA;AAAA;AAAA,UAGb,oBAAA,uBACP,kBAAA,CAAmB,YAAA;EAC3B,WAAA,EAAa,mBAAA;AAAA;AAAA,KAGH,WAAA;EAEN,IAAA;AAAA;EAGA,IAAA;EACA,MAAA,EAAQ,SAAA;AAAA;AAAA,iBAGE,KAAA,CACd,WAAA,EAAa,mBAAA,EACb,gBAAA,EAAkB,qBAAA,EAClB,SAAA,EAAW,SAAA,EACX,IAAA,EAAM,SAAA,GACL,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.mts","names":[],"sources":["../../src/core/check.ts"],"sourcesContent":[],"mappings":";;;;;KAYY,WAAA,GAAc;KACd,mBAAA;AAAZ,KAIK,kBAJO,CAAA,YAAmB,CAAA,GAAA;EAI1B,UAAA,CAAA,EAAA,CAAA,IAAA,EACiB,YADC,EAAA,GAAA,IAAA;EAKN,OAAA,CAAA,EAAA,GAAA,GAAY,IAAA;CACA;AACb,UAFC,YAED,CAAA,YAAA,EAAA,gBAAA,CAAA,SADN,kBACM,CADa,YACb,CAAA,CAAA;EACc,WAAA,CAAA,EADd,WACc;EAFpB,yBAAA,CAAA,EAEoB,gBAFpB;;AAKO,UAAA,oBAAoB,CAAA,YAAA,CAAA,SAC3B,kBAD2B,CACR,YADQ,CAAA,CAAA;EACR,WAAA,EACd,mBADc;;AAAnB,KAIE,WAAA,GAJF;EAAkB,IAAA,EAAA,YAAA;AAI5B,CAAA,GAAY;EASI,IAAA,EAAA,aAAK;EACN,MAAA,EAJD,SAIC;CACK;AACP,iBAHG,KAAA,CAGH,WAAA,EAFE,mBAEF,EAAA,gBAAA,EADO,qBACP,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EACL,SADK,CAAA,EAEV,WAFU"}
1
+ {"version":3,"file":"check.d.mts","names":[],"sources":["../../src/core/check.ts"],"mappings":";;;;;KAYY,WAAA,GAAc,mBAAA;AAAA,KACd,mBAAA;AAAA,KAIP,kBAAA;EACH,UAAA,IAAc,IAAA,EAAM,YAAA;EACpB,OAAA;AAAA;AAAA,UAGe,YAAA,yCACP,kBAAA,CAAmB,YAAA;EAC3B,WAAA,GAAc,WAAA;EACd,yBAAA,GAA4B,gBAAA;AAAA;AAAA,UAGb,oBAAA,uBACP,kBAAA,CAAmB,YAAA;EAC3B,WAAA,EAAa,mBAAA;AAAA;AAAA,KAGH,WAAA;EAEN,IAAA;AAAA;EAGA,IAAA;EACA,MAAA,EAAQ,SAAA;AAAA;AAAA,iBAGE,KAAA,CACd,WAAA,EAAa,mBAAA,EACb,gBAAA,EAAkB,qBAAA,EAClB,SAAA,EAAW,SAAA,EACX,IAAA,EAAM,SAAA,GACL,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"check.mjs","names":["DEFAULT_SHOULD_FETCH_VALUE: ShouldFetch"],"sources":["../../src/core/check.ts"],"sourcesContent":["import { getParentRecordKey } from './cache';\nimport type { NormalizationAstNodes } from './entrypoint';\nimport type { Variables } from './FragmentReference';\nimport type {\n IsographEnvironment,\n StoreLink,\n StoreRecord,\n} from './IsographEnvironment';\nimport { getLink } from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport { getStoreRecordProxy } from './optimisticProxy';\n\nexport type ShouldFetch = RequiredShouldFetch | 'IfNecessary';\nexport type RequiredShouldFetch = 'Yes' | 'No';\n\nexport const DEFAULT_SHOULD_FETCH_VALUE: ShouldFetch = 'IfNecessary';\n\ntype FetchOptionsShared<TReadOutData> = {\n onComplete?: (data: TReadOutData) => void;\n onError?: () => void;\n};\n\nexport interface FetchOptions<TReadOutData, TRawResponseType>\n extends FetchOptionsShared<TReadOutData> {\n shouldFetch?: ShouldFetch;\n optimisticNetworkResponse?: TRawResponseType;\n}\n\nexport interface RequiredFetchOptions<TReadOutData>\n extends FetchOptionsShared<TReadOutData> {\n shouldFetch: RequiredShouldFetch;\n}\n\nexport type CheckResult =\n | {\n kind: 'EnoughData';\n }\n | {\n kind: 'MissingData';\n record: StoreLink;\n };\n\nexport function check(\n environment: IsographEnvironment,\n normalizationAst: NormalizationAstNodes,\n variables: Variables,\n root: StoreLink,\n): CheckResult {\n const newStoreRecord = getStoreRecordProxy(environment.store, root);\n\n if (newStoreRecord == null) {\n return {\n kind: 'MissingData',\n record: root,\n };\n }\n\n const checkResult = checkFromRecord(\n environment,\n normalizationAst,\n variables,\n newStoreRecord,\n root,\n );\n logMessage(environment, () => ({\n kind: 'EnvironmentCheck',\n result: checkResult,\n }));\n return checkResult;\n}\n\nfunction checkFromRecord(\n environment: IsographEnvironment,\n normalizationAst: NormalizationAstNodes,\n variables: Variables,\n record: StoreRecord,\n recordLink: StoreLink,\n): CheckResult {\n normalizationAstLoop: for (const normalizationAstNode of normalizationAst) {\n switch (normalizationAstNode.kind) {\n case 'Scalar': {\n const parentRecordKey = getParentRecordKey(\n normalizationAstNode,\n variables,\n );\n const scalarValue = record[parentRecordKey];\n\n // null means the value is known to be missing, so it must\n // be exactly undefined\n if (scalarValue === undefined) {\n return {\n kind: 'MissingData',\n record: recordLink,\n };\n }\n continue normalizationAstLoop;\n }\n case 'Linked': {\n const parentRecordKey = getParentRecordKey(\n normalizationAstNode,\n variables,\n );\n\n const linkedValue = record[parentRecordKey];\n\n if (linkedValue === undefined) {\n return {\n kind: 'MissingData',\n record: recordLink,\n };\n } else if (linkedValue == null) {\n continue;\n } else if (Array.isArray(linkedValue)) {\n arrayItemsLoop: for (const item of linkedValue) {\n const link = getLink(item);\n if (link == null) {\n throw new Error(\n 'Unexpected non-link in the Isograph store. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const linkedRecord = getStoreRecordProxy(environment.store, link);\n\n if (linkedRecord === undefined) {\n return {\n kind: 'MissingData',\n record: link,\n };\n } else if (linkedRecord == null) {\n continue arrayItemsLoop;\n } else {\n // TODO in __DEV__ assert linkedRecord is an object\n const result = checkFromRecord(\n environment,\n normalizationAstNode.selections,\n variables,\n linkedRecord,\n link,\n );\n\n if (result.kind === 'MissingData') {\n return result;\n }\n }\n }\n } else {\n const link = getLink(linkedValue);\n if (link == null) {\n throw new Error(\n 'Unexpected non-link in the Isograph store. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const linkedRecord = getStoreRecordProxy(environment.store, link);\n\n if (linkedRecord === undefined) {\n return {\n kind: 'MissingData',\n record: link,\n };\n } else if (linkedRecord == null) {\n continue normalizationAstLoop;\n } else {\n // TODO in __DEV__ assert linkedRecord is an object\n const result = checkFromRecord(\n environment,\n normalizationAstNode.selections,\n variables,\n linkedRecord,\n link,\n );\n\n if (result.kind === 'MissingData') {\n return result;\n }\n }\n }\n\n continue normalizationAstLoop;\n }\n case 'InlineFragment': {\n const existingRecordTypename = record['__typename'];\n\n if (existingRecordTypename == null) {\n return {\n kind: 'MissingData',\n record: recordLink,\n };\n }\n\n if (existingRecordTypename === normalizationAstNode.type) {\n const result = checkFromRecord(\n environment,\n normalizationAstNode.selections,\n variables,\n record,\n recordLink,\n );\n\n if (result.kind === 'MissingData') {\n return result;\n }\n }\n\n continue normalizationAstLoop;\n }\n }\n }\n\n return {\n kind: 'EnoughData',\n };\n}\n"],"mappings":";;;;;;AAeA,MAAaA,6BAA0C;AA2BvD,SAAgB,MACd,aACA,kBACA,WACA,MACa;CACb,MAAM,iBAAiB,oBAAoB,YAAY,OAAO,KAAK;AAEnE,KAAI,kBAAkB,KACpB,QAAO;EACL,MAAM;EACN,QAAQ;EACT;CAGH,MAAM,cAAc,gBAClB,aACA,kBACA,WACA,gBACA,KACD;AACD,YAAW,oBAAoB;EAC7B,MAAM;EACN,QAAQ;EACT,EAAE;AACH,QAAO;;AAGT,SAAS,gBACP,aACA,kBACA,WACA,QACA,YACa;AACb,sBAAsB,MAAK,MAAM,wBAAwB,iBACvD,SAAQ,qBAAqB,MAA7B;EACE,KAAK;AASH,OAJoB,OAJI,mBACtB,sBACA,UACD,MAKmB,OAClB,QAAO;IACL,MAAM;IACN,QAAQ;IACT;AAEH,YAAS;EAEX,KAAK,UAAU;GAMb,MAAM,cAAc,OALI,mBACtB,sBACA,UACD;AAID,OAAI,gBAAgB,OAClB,QAAO;IACL,MAAM;IACN,QAAQ;IACT;YACQ,eAAe,KACxB;YACS,MAAM,QAAQ,YAAY,CACnC,gBAAgB,MAAK,MAAM,QAAQ,aAAa;IAC9C,MAAM,OAAO,QAAQ,KAAK;AAC1B,QAAI,QAAQ,KACV,OAAM,IAAI,MACR,sFAED;IAGH,MAAM,eAAe,oBAAoB,YAAY,OAAO,KAAK;AAEjE,QAAI,iBAAiB,OACnB,QAAO;KACL,MAAM;KACN,QAAQ;KACT;aACQ,gBAAgB,KACzB,UAAS;SACJ;KAEL,MAAM,SAAS,gBACb,aACA,qBAAqB,YACrB,WACA,cACA,KACD;AAED,SAAI,OAAO,SAAS,cAClB,QAAO;;;QAIR;IACL,MAAM,OAAO,QAAQ,YAAY;AACjC,QAAI,QAAQ,KACV,OAAM,IAAI,MACR,sFAED;IAGH,MAAM,eAAe,oBAAoB,YAAY,OAAO,KAAK;AAEjE,QAAI,iBAAiB,OACnB,QAAO;KACL,MAAM;KACN,QAAQ;KACT;aACQ,gBAAgB,KACzB,UAAS;SACJ;KAEL,MAAM,SAAS,gBACb,aACA,qBAAqB,YACrB,WACA,cACA,KACD;AAED,SAAI,OAAO,SAAS,cAClB,QAAO;;;AAKb,YAAS;;EAEX,KAAK,kBAAkB;GACrB,MAAM,yBAAyB,OAAO;AAEtC,OAAI,0BAA0B,KAC5B,QAAO;IACL,MAAM;IACN,QAAQ;IACT;AAGH,OAAI,2BAA2B,qBAAqB,MAAM;IACxD,MAAM,SAAS,gBACb,aACA,qBAAqB,YACrB,WACA,QACA,WACD;AAED,QAAI,OAAO,SAAS,cAClB,QAAO;;AAIX,YAAS;;;AAKf,QAAO,EACL,MAAM,cACP"}
1
+ {"version":3,"file":"check.mjs","names":[],"sources":["../../src/core/check.ts"],"sourcesContent":["import { getParentRecordKey } from './cache';\nimport type { NormalizationAstNodes } from './entrypoint';\nimport type { Variables } from './FragmentReference';\nimport type {\n IsographEnvironment,\n StoreLink,\n StoreRecord,\n} from './IsographEnvironment';\nimport { getLink } from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport { getStoreRecordProxy } from './optimisticProxy';\n\nexport type ShouldFetch = RequiredShouldFetch | 'IfNecessary';\nexport type RequiredShouldFetch = 'Yes' | 'No';\n\nexport const DEFAULT_SHOULD_FETCH_VALUE: ShouldFetch = 'IfNecessary';\n\ntype FetchOptionsShared<TReadOutData> = {\n onComplete?: (data: TReadOutData) => void;\n onError?: () => void;\n};\n\nexport interface FetchOptions<TReadOutData, TRawResponseType>\n extends FetchOptionsShared<TReadOutData> {\n shouldFetch?: ShouldFetch;\n optimisticNetworkResponse?: TRawResponseType;\n}\n\nexport interface RequiredFetchOptions<TReadOutData>\n extends FetchOptionsShared<TReadOutData> {\n shouldFetch: RequiredShouldFetch;\n}\n\nexport type CheckResult =\n | {\n kind: 'EnoughData';\n }\n | {\n kind: 'MissingData';\n record: StoreLink;\n };\n\nexport function check(\n environment: IsographEnvironment,\n normalizationAst: NormalizationAstNodes,\n variables: Variables,\n root: StoreLink,\n): CheckResult {\n const newStoreRecord = getStoreRecordProxy(environment.store, root);\n\n if (newStoreRecord == null) {\n return {\n kind: 'MissingData',\n record: root,\n };\n }\n\n const checkResult = checkFromRecord(\n environment,\n normalizationAst,\n variables,\n newStoreRecord,\n root,\n );\n logMessage(environment, () => ({\n kind: 'EnvironmentCheck',\n result: checkResult,\n }));\n return checkResult;\n}\n\nfunction checkFromRecord(\n environment: IsographEnvironment,\n normalizationAst: NormalizationAstNodes,\n variables: Variables,\n record: StoreRecord,\n recordLink: StoreLink,\n): CheckResult {\n normalizationAstLoop: for (const normalizationAstNode of normalizationAst) {\n switch (normalizationAstNode.kind) {\n case 'Scalar': {\n const parentRecordKey = getParentRecordKey(\n normalizationAstNode,\n variables,\n );\n const scalarValue = record[parentRecordKey];\n\n // null means the value is known to be missing, so it must\n // be exactly undefined\n if (scalarValue === undefined) {\n return {\n kind: 'MissingData',\n record: recordLink,\n };\n }\n continue normalizationAstLoop;\n }\n case 'Linked': {\n const parentRecordKey = getParentRecordKey(\n normalizationAstNode,\n variables,\n );\n\n const linkedValue = record[parentRecordKey];\n\n if (linkedValue === undefined) {\n return {\n kind: 'MissingData',\n record: recordLink,\n };\n } else if (linkedValue == null) {\n continue;\n } else if (Array.isArray(linkedValue)) {\n arrayItemsLoop: for (const item of linkedValue) {\n const link = getLink(item);\n if (link == null) {\n throw new Error(\n 'Unexpected non-link in the Isograph store. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const linkedRecord = getStoreRecordProxy(environment.store, link);\n\n if (linkedRecord === undefined) {\n return {\n kind: 'MissingData',\n record: link,\n };\n } else if (linkedRecord == null) {\n continue arrayItemsLoop;\n } else {\n // TODO in __DEV__ assert linkedRecord is an object\n const result = checkFromRecord(\n environment,\n normalizationAstNode.selections,\n variables,\n linkedRecord,\n link,\n );\n\n if (result.kind === 'MissingData') {\n return result;\n }\n }\n }\n } else {\n const link = getLink(linkedValue);\n if (link == null) {\n throw new Error(\n 'Unexpected non-link in the Isograph store. ' +\n 'This is indicative of a bug in Isograph.',\n );\n }\n\n const linkedRecord = getStoreRecordProxy(environment.store, link);\n\n if (linkedRecord === undefined) {\n return {\n kind: 'MissingData',\n record: link,\n };\n } else if (linkedRecord == null) {\n continue normalizationAstLoop;\n } else {\n // TODO in __DEV__ assert linkedRecord is an object\n const result = checkFromRecord(\n environment,\n normalizationAstNode.selections,\n variables,\n linkedRecord,\n link,\n );\n\n if (result.kind === 'MissingData') {\n return result;\n }\n }\n }\n\n continue normalizationAstLoop;\n }\n case 'InlineFragment': {\n const existingRecordTypename = record['__typename'];\n\n if (existingRecordTypename == null) {\n return {\n kind: 'MissingData',\n record: recordLink,\n };\n }\n\n if (existingRecordTypename === normalizationAstNode.type) {\n const result = checkFromRecord(\n environment,\n normalizationAstNode.selections,\n variables,\n record,\n recordLink,\n );\n\n if (result.kind === 'MissingData') {\n return result;\n }\n }\n\n continue normalizationAstLoop;\n }\n }\n }\n\n return {\n kind: 'EnoughData',\n };\n}\n"],"mappings":";;;;;;AAeA,MAAa,6BAA0C;AA2BvD,SAAgB,MACd,aACA,kBACA,WACA,MACa;CACb,MAAM,iBAAiB,oBAAoB,YAAY,OAAO,KAAK;AAEnE,KAAI,kBAAkB,KACpB,QAAO;EACL,MAAM;EACN,QAAQ;EACT;CAGH,MAAM,cAAc,gBAClB,aACA,kBACA,WACA,gBACA,KACD;AACD,YAAW,oBAAoB;EAC7B,MAAM;EACN,QAAQ;EACT,EAAE;AACH,QAAO;;AAGT,SAAS,gBACP,aACA,kBACA,WACA,QACA,YACa;AACb,sBAAsB,MAAK,MAAM,wBAAwB,iBACvD,SAAQ,qBAAqB,MAA7B;EACE,KAAK;AASH,OAJoB,OAJI,mBACtB,sBACA,UACD,MAKmB,OAClB,QAAO;IACL,MAAM;IACN,QAAQ;IACT;AAEH,YAAS;EAEX,KAAK,UAAU;GAMb,MAAM,cAAc,OALI,mBACtB,sBACA,UACD;AAID,OAAI,gBAAgB,OAClB,QAAO;IACL,MAAM;IACN,QAAQ;IACT;YACQ,eAAe,KACxB;YACS,MAAM,QAAQ,YAAY,CACnC,gBAAgB,MAAK,MAAM,QAAQ,aAAa;IAC9C,MAAM,OAAO,QAAQ,KAAK;AAC1B,QAAI,QAAQ,KACV,OAAM,IAAI,MACR,sFAED;IAGH,MAAM,eAAe,oBAAoB,YAAY,OAAO,KAAK;AAEjE,QAAI,iBAAiB,OACnB,QAAO;KACL,MAAM;KACN,QAAQ;KACT;aACQ,gBAAgB,KACzB,UAAS;SACJ;KAEL,MAAM,SAAS,gBACb,aACA,qBAAqB,YACrB,WACA,cACA,KACD;AAED,SAAI,OAAO,SAAS,cAClB,QAAO;;;QAIR;IACL,MAAM,OAAO,QAAQ,YAAY;AACjC,QAAI,QAAQ,KACV,OAAM,IAAI,MACR,sFAED;IAGH,MAAM,eAAe,oBAAoB,YAAY,OAAO,KAAK;AAEjE,QAAI,iBAAiB,OACnB,QAAO;KACL,MAAM;KACN,QAAQ;KACT;aACQ,gBAAgB,KACzB,UAAS;SACJ;KAEL,MAAM,SAAS,gBACb,aACA,qBAAqB,YACrB,WACA,cACA,KACD;AAED,SAAI,OAAO,SAAS,cAClB,QAAO;;;AAKb,YAAS;;EAEX,KAAK,kBAAkB;GACrB,MAAM,yBAAyB,OAAO;AAEtC,OAAI,0BAA0B,KAC5B,QAAO;IACL,MAAM;IACN,QAAQ;IACT;AAGH,OAAI,2BAA2B,qBAAqB,MAAM;IACxD,MAAM,SAAS,gBACb,aACA,qBAAqB,YACrB,WACA,QACA,WACD;AAED,QAAI,OAAO,SAAS,cAClB,QAAO;;AAIX,YAAS;;;AAKf,QAAO,EACL,MAAM,cACP"}
@@ -1,5 +1,5 @@
1
- const require_FragmentReference = require('./FragmentReference.js');
2
- const require_startUpdate = require('./startUpdate.js');
1
+ const require_FragmentReference = require('./FragmentReference.cjs');
2
+ const require_startUpdate = require('./startUpdate.cjs');
3
3
 
4
4
  //#region src/core/componentCache.ts
5
5
  function getOrCreateCachedComponent(environment, fragmentReference, networkRequestOptions) {
@@ -1,9 +1,9 @@
1
- import { Contravariant, PhantomData } from "./brand.js";
2
- import { Arguments } from "./util.js";
3
- import { TopLevelReaderArtifact } from "./reader.js";
4
- import { ComponentOrFieldName, TypeName } from "./IsographEnvironment.js";
5
- import { FragmentReference, UnknownTReadFromStore } from "./FragmentReference.js";
6
- import { NetworkResponseObject } from "./cache.js";
1
+ import { Contravariant, PhantomData } from "./brand.cjs";
2
+ import { Arguments } from "./util.cjs";
3
+ import { TopLevelReaderArtifact } from "./reader.cjs";
4
+ import { ComponentOrFieldName, TypeName } from "./IsographEnvironment.cjs";
5
+ import { FragmentReference, UnknownTReadFromStore } from "./FragmentReference.cjs";
6
+ import { NetworkResponseObject } from "./cache.cjs";
7
7
 
8
8
  //#region src/core/entrypoint.d.ts
9
9
  type ReaderWithRefetchQueries<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
@@ -103,4 +103,4 @@ type ExtractResolverResult<Type> = Type extends IsographEntrypoint<any, infer X,
103
103
  type ExtractProps<Type> = Type extends React.FC<infer X> ? X : never;
104
104
  //#endregion
105
105
  export { ExtractClientFieldValue, ExtractProps, ExtractReadFromStore, ExtractResolverResult, FragmentReferenceOfEntrypoint, IsographEntrypoint, IsographEntrypointLoader, IsographOperation, IsographPersistedOperation, IsographPersistedOperationExtraInfo, NetworkRequestInfo, NormalizationAst, NormalizationAstLoader, NormalizationAstNode, NormalizationAstNodes, NormalizationInlineFragment, NormalizationLinkedField, NormalizationScalarField, ReaderWithRefetchQueries, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper, assertIsEntrypoint };
106
- //# sourceMappingURL=entrypoint.d.ts.map
106
+ //# sourceMappingURL=entrypoint.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoint.d.cts","names":[],"sources":["../../src/core/entrypoint.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoint.d.mts","names":[],"sources":["../../src/core/entrypoint.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"entrypoint.d.mts","names":[],"sources":["../../src/core/entrypoint.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- const require_PromiseWrapper = require('./PromiseWrapper.js');
2
- const require_IsographEnvironment = require('./IsographEnvironment.js');
3
- const require_cache = require('./cache.js');
1
+ const require_PromiseWrapper = require('./PromiseWrapper.cjs');
2
+ const require_IsographEnvironment = require('./IsographEnvironment.cjs');
3
+ const require_cache = require('./cache.cjs');
4
4
 
5
5
  //#region src/core/garbageCollection.ts
6
6
  function isRetainedQueryWithNormalizationAst(query) {
@@ -1,6 +1,6 @@
1
- import { PromiseWrapper } from "./PromiseWrapper.js";
2
- import { IsographEnvironment, StoreLink } from "./IsographEnvironment.js";
3
- import { NormalizationAst } from "./entrypoint.js";
1
+ import { PromiseWrapper } from "./PromiseWrapper.cjs";
2
+ import { IsographEnvironment, StoreLink } from "./IsographEnvironment.cjs";
3
+ import { NormalizationAst } from "./entrypoint.cjs";
4
4
 
5
5
  //#region src/core/garbageCollection.d.ts
6
6
  type RetainedQuery = {
@@ -14,4 +14,4 @@ declare function retainQuery(environment: IsographEnvironment, queryToRetain: Re
14
14
  declare function garbageCollectEnvironment(environment: IsographEnvironment): void;
15
15
  //#endregion
16
16
  export { DidUnretainSomeQuery, RetainedQuery, garbageCollectEnvironment, retainQuery, unretainQuery };
17
- //# sourceMappingURL=garbageCollection.d.ts.map
17
+ //# sourceMappingURL=garbageCollection.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"garbageCollection.d.cts","names":[],"sources":["../../src/core/garbageCollection.ts"],"mappings":";;;;;KAmBY,aAAA;EAAA,SACD,gBAAA,EAAkB,cAAA,CAAe,gBAAA;EAAA,SACjC,SAAA;EAAA,SACA,IAAA,EAAM,SAAA;AAAA;AAAA,KAgBL,oBAAA;AAAA,iBACI,aAAA,CACd,WAAA,EAAa,mBAAA,EACb,aAAA,EAAe,aAAA,GACd,oBAAA;AAAA,iBAYa,WAAA,CACd,WAAA,EAAa,mBAAA,EACb,aAAA,EAAe,aAAA;AAAA,iBAQD,yBAAA,CAA0B,WAAA,EAAa,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"garbageCollection.d.mts","names":[],"sources":["../../src/core/garbageCollection.ts"],"sourcesContent":[],"mappings":";;;;;;KAmBY,aAAA;6BACiB,eAAe;EADhC,SAAA,SAAa,EAAA,CAAA,CAAA;EACmB,SAAA,IAAA,EAE3B,SAF2B;CAAf;AAmBb,KADJ,oBAAA,GACiB,OAAA;AACd,iBADC,aAAA,CACD,WAAA,EAAA,mBAAA,EAAA,aAAA,EACE,aADF,CAAA,EAEZ,oBAFY;AACE,iBAaD,WAAA,CAbC,WAAA,EAcF,mBAdE,EAAA,aAAA,EAeA,aAfA,CAAA,EAAA,IAAA;AACd,iBAsBa,yBAAA,CAtBb,WAAA,EAsBoD,mBAtBpD,CAAA,EAAA,IAAA"}
1
+ {"version":3,"file":"garbageCollection.d.mts","names":[],"sources":["../../src/core/garbageCollection.ts"],"mappings":";;;;;;KAmBY,aAAA;EAAA,SACD,gBAAA,EAAkB,cAAA,CAAe,gBAAA;EAAA,SACjC,SAAA;EAAA,SACA,IAAA,EAAM,SAAA;AAAA;AAAA,KAgBL,oBAAA;AAAA,iBACI,aAAA,CACd,WAAA,EAAa,mBAAA,EACb,aAAA,EAAe,aAAA,GACd,oBAAA;AAAA,iBAYa,WAAA,CACd,WAAA,EAAa,mBAAA,EACb,aAAA,EAAe,aAAA;AAAA,iBAQD,yBAAA,CAA0B,WAAA,EAAa,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"garbageCollection.mjs","names":["retainedQueries: RetainedQueryWithNormalizationAst[]","retainedIds: RetainedIds","links: StoreLink[]"],"sources":["../../src/core/garbageCollection.ts"],"sourcesContent":["import { getParentRecordKey, TYPENAME_FIELD_NAME } from './cache';\nimport type { NormalizationAstNodes, NormalizationAst } from './entrypoint';\nimport type { Variables } from './FragmentReference';\nimport {\n assertLink,\n type DataId,\n type IsographEnvironment,\n type StoreRecord,\n type StoreLayerData,\n type StoreLink,\n type TypeName,\n} from './IsographEnvironment';\nimport type { BaseStoreLayer } from './optimisticProxy';\nimport {\n NOT_SET,\n type PromiseWrapper,\n type PromiseWrapperOk,\n} from './PromiseWrapper';\n\nexport type RetainedQuery = {\n readonly normalizationAst: PromiseWrapper<NormalizationAst>;\n readonly variables: {};\n readonly root: StoreLink;\n};\n\nexport interface RetainedQueryWithNormalizationAst extends RetainedQuery {\n readonly normalizationAst: PromiseWrapperOk<NormalizationAst>;\n}\n\nfunction isRetainedQueryWithNormalizationAst(\n query: RetainedQuery,\n): query is RetainedQueryWithNormalizationAst {\n return (\n query.normalizationAst.result !== NOT_SET &&\n query.normalizationAst.result.kind === 'Ok'\n );\n}\n\nexport type DidUnretainSomeQuery = boolean;\nexport function unretainQuery(\n environment: IsographEnvironment,\n retainedQuery: RetainedQuery,\n): DidUnretainSomeQuery {\n environment.retainedQueries.delete(retainedQuery);\n environment.gcBuffer.push(retainedQuery);\n\n if (environment.gcBuffer.length > environment.gcBufferSize) {\n environment.gcBuffer.shift();\n return true;\n }\n\n return false;\n}\n\nexport function retainQuery(\n environment: IsographEnvironment,\n queryToRetain: RetainedQuery,\n) {\n environment.retainedQueries.add(queryToRetain);\n // TODO can we remove this query from the buffer somehow?\n // We are relying on === equality, but we really should be comparing\n // id + variables\n}\n\nexport function garbageCollectEnvironment(environment: IsographEnvironment) {\n if (environment.store.kind !== 'BaseStoreLayer') {\n return;\n }\n\n const retainedQueries: RetainedQueryWithNormalizationAst[] = [];\n for (const query of environment.retainedQueries) {\n if (!isRetainedQueryWithNormalizationAst(query)) {\n return;\n }\n retainedQueries.push(query);\n }\n\n for (const query of environment.gcBuffer) {\n if (!isRetainedQueryWithNormalizationAst(query)) {\n return;\n }\n retainedQueries.push(query);\n }\n\n garbageCollectBaseStoreLayer(retainedQueries, environment.store);\n}\n\nexport function garbageCollectBaseStoreLayer(\n retainedQueries: RetainedQueryWithNormalizationAst[],\n baseStoreLayer: BaseStoreLayer,\n) {\n const retainedIds: RetainedIds = {};\n\n for (const query of retainedQueries) {\n recordReachableIds(baseStoreLayer.data, query, retainedIds);\n }\n\n for (const typeName in baseStoreLayer.data) {\n const dataById = baseStoreLayer.data[typeName];\n if (dataById == null) continue;\n const retainedTypeIds = retainedIds[typeName];\n\n // delete all objects\n if (retainedTypeIds === undefined || retainedTypeIds.size === 0) {\n delete baseStoreLayer.data[typeName];\n continue;\n }\n\n for (const dataId in dataById) {\n if (!retainedTypeIds.has(dataId)) {\n delete dataById[dataId];\n }\n }\n\n if (Object.keys(dataById).length === 0) {\n delete baseStoreLayer.data[typeName];\n }\n }\n}\n\ninterface RetainedIds {\n [typeName: TypeName]: Set<DataId>;\n}\n\nfunction recordReachableIds(\n dataLayer: StoreLayerData,\n retainedQuery: RetainedQueryWithNormalizationAst,\n mutableRetainedIds: RetainedIds,\n) {\n const record =\n dataLayer[retainedQuery.root.__typename]?.[retainedQuery.root.__link];\n\n const retainedRecordsIds = (mutableRetainedIds[\n retainedQuery.root.__typename\n ] ??= new Set());\n retainedRecordsIds.add(retainedQuery.root.__link);\n\n if (record != null) {\n recordReachableIdsFromRecord(\n dataLayer,\n record,\n mutableRetainedIds,\n retainedQuery.normalizationAst.result.value.selections,\n retainedQuery.variables,\n );\n }\n}\n\nfunction recordReachableIdsFromRecord(\n dataLayer: StoreLayerData,\n currentRecord: StoreRecord,\n mutableRetainedIds: RetainedIds,\n selections: NormalizationAstNodes,\n variables: Variables | null,\n) {\n for (const selection of selections) {\n switch (selection.kind) {\n case 'InlineFragment':\n if (currentRecord[TYPENAME_FIELD_NAME] === selection.type) {\n recordReachableIdsFromRecord(\n dataLayer,\n currentRecord,\n mutableRetainedIds,\n selection.selections,\n variables,\n );\n }\n continue;\n case 'Linked':\n const linkKey = getParentRecordKey(selection, variables ?? {});\n const linkedFieldOrFields = currentRecord[linkKey];\n\n const links: StoreLink[] = [];\n if (Array.isArray(linkedFieldOrFields)) {\n for (const maybeLink of linkedFieldOrFields) {\n const link = assertLink(maybeLink);\n if (link != null) {\n links.push(link);\n }\n }\n } else {\n const link = assertLink(linkedFieldOrFields);\n if (link != null) {\n links.push(link);\n }\n }\n\n let typeStore =\n selection.concreteType != null\n ? dataLayer[selection.concreteType]\n : null;\n\n if (typeStore == null && selection.concreteType != null) {\n continue;\n }\n\n for (const nextRecordLink of links) {\n let __typename = nextRecordLink.__typename;\n\n const resolvedTypeStore = typeStore ?? dataLayer[__typename];\n\n if (resolvedTypeStore == null) {\n continue;\n }\n\n const nextRecord = resolvedTypeStore[nextRecordLink.__link];\n if (nextRecord != null) {\n const retainedRecordsIds = (mutableRetainedIds[__typename] ??=\n new Set());\n retainedRecordsIds.add(nextRecordLink.__link);\n recordReachableIdsFromRecord(\n dataLayer,\n nextRecord,\n mutableRetainedIds,\n selection.selections,\n variables,\n );\n }\n }\n\n continue;\n case 'Scalar':\n continue;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"garbageCollection.mjs","names":[],"sources":["../../src/core/garbageCollection.ts"],"sourcesContent":["import { getParentRecordKey, TYPENAME_FIELD_NAME } from './cache';\nimport type { NormalizationAstNodes, NormalizationAst } from './entrypoint';\nimport type { Variables } from './FragmentReference';\nimport {\n assertLink,\n type DataId,\n type IsographEnvironment,\n type StoreRecord,\n type StoreLayerData,\n type StoreLink,\n type TypeName,\n} from './IsographEnvironment';\nimport type { BaseStoreLayer } from './optimisticProxy';\nimport {\n NOT_SET,\n type PromiseWrapper,\n type PromiseWrapperOk,\n} from './PromiseWrapper';\n\nexport type RetainedQuery = {\n readonly normalizationAst: PromiseWrapper<NormalizationAst>;\n readonly variables: {};\n readonly root: StoreLink;\n};\n\nexport interface RetainedQueryWithNormalizationAst extends RetainedQuery {\n readonly normalizationAst: PromiseWrapperOk<NormalizationAst>;\n}\n\nfunction isRetainedQueryWithNormalizationAst(\n query: RetainedQuery,\n): query is RetainedQueryWithNormalizationAst {\n return (\n query.normalizationAst.result !== NOT_SET &&\n query.normalizationAst.result.kind === 'Ok'\n );\n}\n\nexport type DidUnretainSomeQuery = boolean;\nexport function unretainQuery(\n environment: IsographEnvironment,\n retainedQuery: RetainedQuery,\n): DidUnretainSomeQuery {\n environment.retainedQueries.delete(retainedQuery);\n environment.gcBuffer.push(retainedQuery);\n\n if (environment.gcBuffer.length > environment.gcBufferSize) {\n environment.gcBuffer.shift();\n return true;\n }\n\n return false;\n}\n\nexport function retainQuery(\n environment: IsographEnvironment,\n queryToRetain: RetainedQuery,\n) {\n environment.retainedQueries.add(queryToRetain);\n // TODO can we remove this query from the buffer somehow?\n // We are relying on === equality, but we really should be comparing\n // id + variables\n}\n\nexport function garbageCollectEnvironment(environment: IsographEnvironment) {\n if (environment.store.kind !== 'BaseStoreLayer') {\n return;\n }\n\n const retainedQueries: RetainedQueryWithNormalizationAst[] = [];\n for (const query of environment.retainedQueries) {\n if (!isRetainedQueryWithNormalizationAst(query)) {\n return;\n }\n retainedQueries.push(query);\n }\n\n for (const query of environment.gcBuffer) {\n if (!isRetainedQueryWithNormalizationAst(query)) {\n return;\n }\n retainedQueries.push(query);\n }\n\n garbageCollectBaseStoreLayer(retainedQueries, environment.store);\n}\n\nexport function garbageCollectBaseStoreLayer(\n retainedQueries: RetainedQueryWithNormalizationAst[],\n baseStoreLayer: BaseStoreLayer,\n) {\n const retainedIds: RetainedIds = {};\n\n for (const query of retainedQueries) {\n recordReachableIds(baseStoreLayer.data, query, retainedIds);\n }\n\n for (const typeName in baseStoreLayer.data) {\n const dataById = baseStoreLayer.data[typeName];\n if (dataById == null) continue;\n const retainedTypeIds = retainedIds[typeName];\n\n // delete all objects\n if (retainedTypeIds === undefined || retainedTypeIds.size === 0) {\n delete baseStoreLayer.data[typeName];\n continue;\n }\n\n for (const dataId in dataById) {\n if (!retainedTypeIds.has(dataId)) {\n delete dataById[dataId];\n }\n }\n\n if (Object.keys(dataById).length === 0) {\n delete baseStoreLayer.data[typeName];\n }\n }\n}\n\ninterface RetainedIds {\n [typeName: TypeName]: Set<DataId>;\n}\n\nfunction recordReachableIds(\n dataLayer: StoreLayerData,\n retainedQuery: RetainedQueryWithNormalizationAst,\n mutableRetainedIds: RetainedIds,\n) {\n const record =\n dataLayer[retainedQuery.root.__typename]?.[retainedQuery.root.__link];\n\n const retainedRecordsIds = (mutableRetainedIds[\n retainedQuery.root.__typename\n ] ??= new Set());\n retainedRecordsIds.add(retainedQuery.root.__link);\n\n if (record != null) {\n recordReachableIdsFromRecord(\n dataLayer,\n record,\n mutableRetainedIds,\n retainedQuery.normalizationAst.result.value.selections,\n retainedQuery.variables,\n );\n }\n}\n\nfunction recordReachableIdsFromRecord(\n dataLayer: StoreLayerData,\n currentRecord: StoreRecord,\n mutableRetainedIds: RetainedIds,\n selections: NormalizationAstNodes,\n variables: Variables | null,\n) {\n for (const selection of selections) {\n switch (selection.kind) {\n case 'InlineFragment':\n if (currentRecord[TYPENAME_FIELD_NAME] === selection.type) {\n recordReachableIdsFromRecord(\n dataLayer,\n currentRecord,\n mutableRetainedIds,\n selection.selections,\n variables,\n );\n }\n continue;\n case 'Linked':\n const linkKey = getParentRecordKey(selection, variables ?? {});\n const linkedFieldOrFields = currentRecord[linkKey];\n\n const links: StoreLink[] = [];\n if (Array.isArray(linkedFieldOrFields)) {\n for (const maybeLink of linkedFieldOrFields) {\n const link = assertLink(maybeLink);\n if (link != null) {\n links.push(link);\n }\n }\n } else {\n const link = assertLink(linkedFieldOrFields);\n if (link != null) {\n links.push(link);\n }\n }\n\n let typeStore =\n selection.concreteType != null\n ? dataLayer[selection.concreteType]\n : null;\n\n if (typeStore == null && selection.concreteType != null) {\n continue;\n }\n\n for (const nextRecordLink of links) {\n let __typename = nextRecordLink.__typename;\n\n const resolvedTypeStore = typeStore ?? dataLayer[__typename];\n\n if (resolvedTypeStore == null) {\n continue;\n }\n\n const nextRecord = resolvedTypeStore[nextRecordLink.__link];\n if (nextRecord != null) {\n const retainedRecordsIds = (mutableRetainedIds[__typename] ??=\n new Set());\n retainedRecordsIds.add(nextRecordLink.__link);\n recordReachableIdsFromRecord(\n dataLayer,\n nextRecord,\n mutableRetainedIds,\n selection.selections,\n variables,\n );\n }\n }\n\n continue;\n case 'Scalar':\n continue;\n }\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- const require_util = require('./util.js');
2
- const require_IsographEnvironment = require('./IsographEnvironment.js');
3
- const require_makeNetworkRequest = require('./makeNetworkRequest.js');
4
- const require_cache = require('./cache.js');
1
+ const require_util = require('./util.cjs');
2
+ const require_IsographEnvironment = require('./IsographEnvironment.cjs');
3
+ const require_makeNetworkRequest = require('./makeNetworkRequest.cjs');
4
+ const require_cache = require('./cache.cjs');
5
5
 
6
6
  //#region src/core/getOrCreateCacheForArtifact.ts
7
7
  function getOrCreateCacheForArtifact(environment, entrypoint, variables, fetchOptions) {
@@ -1 +1 @@
1
- {"version":3,"file":"getOrCreateCacheForArtifact.mjs","names":[],"sources":["../../src/core/getOrCreateCacheForArtifact.ts"],"sourcesContent":["import type { ItemCleanupPair } from '@isograph/isograph-disposable-types/dist';\nimport type { ParentCache } from '@isograph/isograph-react-disposable-state/dist';\nimport {\n type NetworkResponseObject,\n getOrCreateItemInSuspenseCache,\n} from './cache';\nimport type { FetchOptions } from './check';\nimport type {\n IsographEntrypoint,\n NormalizationAst,\n NormalizationAstLoader,\n} from './entrypoint';\nimport type {\n ExtractParameters,\n FragmentReference,\n UnknownTReadFromStore,\n} from './FragmentReference';\nimport {\n type IsographEnvironment,\n getOrLoadReaderWithRefetchQueries,\n ROOT_ID,\n} from './IsographEnvironment';\nimport { maybeMakeNetworkRequest } from './makeNetworkRequest';\nimport { stableCopy } from './util';\n\nexport function getOrCreateCacheForArtifact<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n TNormalizationAst extends NormalizationAst | NormalizationAstLoader,\n TRawResponseType extends NetworkResponseObject,\n>(\n environment: IsographEnvironment,\n entrypoint: IsographEntrypoint<\n TReadFromStore,\n TClientFieldValue,\n TNormalizationAst,\n TRawResponseType\n >,\n variables: ExtractParameters<TReadFromStore>,\n fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>,\n): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {\n let cacheKey = '';\n switch (entrypoint.networkRequestInfo.operation.kind) {\n case 'Operation':\n cacheKey =\n entrypoint.networkRequestInfo.operation.text +\n JSON.stringify(stableCopy(variables));\n break;\n case 'PersistedOperation':\n cacheKey =\n entrypoint.networkRequestInfo.operation.operationId +\n JSON.stringify(stableCopy(variables));\n break;\n }\n const factory = () => {\n const { fieldName, readerArtifactKind, readerWithRefetchQueries } =\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n );\n const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(\n environment,\n entrypoint,\n variables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const itemCleanupPair: ItemCleanupPair<\n FragmentReference<TReadFromStore, TClientFieldValue>\n > = [\n {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName,\n readerArtifactKind,\n root: { __link: ROOT_ID, __typename: entrypoint.concreteType },\n variables,\n networkRequest: networkRequest,\n },\n disposeNetworkRequest,\n ];\n return itemCleanupPair;\n };\n return getOrCreateItemInSuspenseCache(environment, cacheKey, factory);\n}\n"],"mappings":";;;;;;AAyBA,SAAgB,4BAMd,aACA,YAMA,WACA,cACmE;CACnE,IAAI,WAAW;AACf,SAAQ,WAAW,mBAAmB,UAAU,MAAhD;EACE,KAAK;AACH,cACE,WAAW,mBAAmB,UAAU,OACxC,KAAK,UAAU,WAAW,UAAU,CAAC;AACvC;EACF,KAAK;AACH,cACE,WAAW,mBAAmB,UAAU,cACxC,KAAK,UAAU,WAAW,UAAU,CAAC;AACvC;;CAEJ,MAAM,gBAAgB;EACpB,MAAM,EAAE,WAAW,oBAAoB,6BACrC,kCACE,aACA,WAAW,yBACZ;EACH,MAAM,CAAC,gBAAgB,yBAAyB,wBAC9C,aACA,YACA,WACA,0BACA,gBAAgB,KACjB;AAgBD,SAZI,CACF;GACE,MAAM;GACN;GACA;GACA;GACA,MAAM;IAAE,QAAQ;IAAS,YAAY,WAAW;IAAc;GAC9D;GACgB;GACjB,EACD,sBACD;;AAGH,QAAO,+BAA+B,aAAa,UAAU,QAAQ"}
1
+ {"version":3,"file":"getOrCreateCacheForArtifact.mjs","names":[],"sources":["../../src/core/getOrCreateCacheForArtifact.ts"],"sourcesContent":["import type { ItemCleanupPair } from '@isograph/disposable-types';\nimport type { ParentCache } from '@isograph/react-disposable-state';\nimport {\n type NetworkResponseObject,\n getOrCreateItemInSuspenseCache,\n} from './cache';\nimport type { FetchOptions } from './check';\nimport type {\n IsographEntrypoint,\n NormalizationAst,\n NormalizationAstLoader,\n} from './entrypoint';\nimport type {\n ExtractParameters,\n FragmentReference,\n UnknownTReadFromStore,\n} from './FragmentReference';\nimport {\n type IsographEnvironment,\n getOrLoadReaderWithRefetchQueries,\n ROOT_ID,\n} from './IsographEnvironment';\nimport { maybeMakeNetworkRequest } from './makeNetworkRequest';\nimport { stableCopy } from './util';\n\nexport function getOrCreateCacheForArtifact<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n TNormalizationAst extends NormalizationAst | NormalizationAstLoader,\n TRawResponseType extends NetworkResponseObject,\n>(\n environment: IsographEnvironment,\n entrypoint: IsographEntrypoint<\n TReadFromStore,\n TClientFieldValue,\n TNormalizationAst,\n TRawResponseType\n >,\n variables: ExtractParameters<TReadFromStore>,\n fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>,\n): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {\n let cacheKey = '';\n switch (entrypoint.networkRequestInfo.operation.kind) {\n case 'Operation':\n cacheKey =\n entrypoint.networkRequestInfo.operation.text +\n JSON.stringify(stableCopy(variables));\n break;\n case 'PersistedOperation':\n cacheKey =\n entrypoint.networkRequestInfo.operation.operationId +\n JSON.stringify(stableCopy(variables));\n break;\n }\n const factory = () => {\n const { fieldName, readerArtifactKind, readerWithRefetchQueries } =\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n );\n const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(\n environment,\n entrypoint,\n variables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const itemCleanupPair: ItemCleanupPair<\n FragmentReference<TReadFromStore, TClientFieldValue>\n > = [\n {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName,\n readerArtifactKind,\n root: { __link: ROOT_ID, __typename: entrypoint.concreteType },\n variables,\n networkRequest: networkRequest,\n },\n disposeNetworkRequest,\n ];\n return itemCleanupPair;\n };\n return getOrCreateItemInSuspenseCache(environment, cacheKey, factory);\n}\n"],"mappings":";;;;;;AAyBA,SAAgB,4BAMd,aACA,YAMA,WACA,cACmE;CACnE,IAAI,WAAW;AACf,SAAQ,WAAW,mBAAmB,UAAU,MAAhD;EACE,KAAK;AACH,cACE,WAAW,mBAAmB,UAAU,OACxC,KAAK,UAAU,WAAW,UAAU,CAAC;AACvC;EACF,KAAK;AACH,cACE,WAAW,mBAAmB,UAAU,cACxC,KAAK,UAAU,WAAW,UAAU,CAAC;AACvC;;CAEJ,MAAM,gBAAgB;EACpB,MAAM,EAAE,WAAW,oBAAoB,6BACrC,kCACE,aACA,WAAW,yBACZ;EACH,MAAM,CAAC,gBAAgB,yBAAyB,wBAC9C,aACA,YACA,WACA,0BACA,gBAAgB,KACjB;AAgBD,SAZI,CACF;GACE,MAAM;GACN;GACA;GACA;GACA,MAAM;IAAE,QAAQ;IAAS,YAAY,WAAW;IAAc;GAC9D;GACgB;GACjB,EACD,sBACD;;AAGH,QAAO,+BAA+B,aAAa,UAAU,QAAQ"}
@@ -1,15 +1,14 @@
1
- import { CheckResult } from "./check.js";
2
- import { Arguments } from "./util.js";
3
- import { ReadDataResult } from "./read.js";
4
- import { StoreLayer } from "./optimisticProxy.js";
5
- import { IsographEnvironment, StoreLink, StoreRecord } from "./IsographEnvironment.js";
6
- import { FragmentReference, Variables } from "./FragmentReference.js";
7
- import { EncounteredIds, NetworkResponseObject } from "./cache.js";
8
- import { IsographEntrypoint, NormalizationAstNodes, RefetchQueryNormalizationArtifact } from "./entrypoint.js";
1
+ import { CheckResult } from "./check.cjs";
2
+ import { Arguments } from "./util.cjs";
3
+ import { ReadDataResult } from "./read.cjs";
4
+ import { StoreLayer } from "./optimisticProxy.cjs";
5
+ import { IsographEnvironment, StoreLink, StoreRecord } from "./IsographEnvironment.cjs";
6
+ import { FragmentReference, Variables } from "./FragmentReference.cjs";
7
+ import { EncounteredIds, NetworkResponseObject } from "./cache.cjs";
8
+ import { IsographEntrypoint, NormalizationAstNodes, RefetchQueryNormalizationArtifact } from "./entrypoint.cjs";
9
9
  import { CleanupFn } from "@isograph/disposable-types";
10
10
 
11
11
  //#region src/core/logging.d.ts
12
-
13
12
  /**
14
13
  * Note: these types are unstable. We will add and remove items from this enum
15
14
  * and add and remove fields. Please do not rely on the specifics here (for now).
@@ -92,4 +91,4 @@ declare function logMessage(environment: IsographEnvironment, getMessage: () =>
92
91
  declare function registerLogger(environment: IsographEnvironment, log: LogFunction): CleanupFn;
93
92
  //#endregion
94
93
  export { LogFunction, LogMessage, WrappedLogFunction, logMessage, registerLogger };
95
- //# sourceMappingURL=logging.d.ts.map
94
+ //# sourceMappingURL=logging.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.cts","names":[],"sources":["../../src/core/logging.ts"],"mappings":";;;;;;;;;;;;;AA8BA;;;;;;;;;;KAAY,UAAA;EAEN,IAAA;EACA,gBAAA,EAAkB,qBAAA;EAClB,eAAA,EAAiB,qBAAA;EACjB,SAAA,EAAW,SAAA;AAAA;EAGX,IAAA;EACA,KAAA,EAAO,UAAA;EACP,cAAA,EAAgB,cAAA;AAAA;EAGhB,IAAA;EACA,iBAAA,EAAmB,iBAAA;EACnB,GAAA;EACA,GAAA;EACA,WAAA;AAAA;EAGA,IAAA;EACA,aAAA;EACA,QAAA,EAAU,SAAA;AAAA;EAGV,IAAA;EACA,QAAA,EACI,iCAAA,GACA,kBAAA;EACJ,SAAA,EAAW,SAAA;EACX,gBAAA;AAAA;EAGA,IAAA;EAEA,eAAA;EACA,gBAAA;AAAA;EAGA,IAAA;EACA,KAAA;EACA,gBAAA;AAAA;EAGA,IAAA;EACA,IAAA,EAAM,SAAA;EACN,WAAA,EAAa,WAAA;EACb,SAAA;EACA,SAAA,EAAW,SAAA;EACX,SAAA,EAAW,SAAA;AAAA;EAGX,IAAA;EACA,QAAA,EAAU,cAAA;EACV,SAAA;EACA,IAAA,EAAM,SAAA;AAAA;EAGN,IAAA;EACA,UAAA;AAAA;EAGA,IAAA;EACA,MAAA,EAAQ,WAAA;AAAA;EAGR,IAAA;AAAA;EAGA,IAAA;EACA,KAAA;AAAA;EAGA,IAAA;EACA,UAAA,EAAY,cAAA;AAAA;EAGZ,IAAA;EACA,KAAA;AAAA;AAAA,KAGM,WAAA,IAAe,UAAA,EAAY,UAAA;AAAA,KAG3B,kBAAA;EACV,GAAA,EAAK,WAAA;AAAA;AAAA,iBAGS,UAAA,CACd,WAAA,EAAa,mBAAA,EACb,UAAA,QAAkB,UAAA;AAAA,iBAYJ,cAAA,CACd,WAAA,EAAa,mBAAA,EACb,GAAA,EAAK,WAAA,GACJ,SAAA"}
@@ -9,7 +9,6 @@ import { IsographEntrypoint, NormalizationAstNodes, RefetchQueryNormalizationArt
9
9
  import { CleanupFn } from "@isograph/disposable-types";
10
10
 
11
11
  //#region src/core/logging.d.ts
12
-
13
12
  /**
14
13
  * Note: these types are unstable. We will add and remove items from this enum
15
14
  * and add and remove fields. Please do not rely on the specifics here (for now).
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.mts","names":[],"sources":["../../src/core/logging.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;AA8BA;;;;;;;;;;AA6BiB,KA7BL,UAAA,GA6BK;EAgBL,IAAA,EAAA,kBAAA;EACO,gBAAA,EA3CK,qBA2CL;EAEF,eAAA,EA5CM,qBA4CN;EACA,SAAA,EA5CA,SA4CA;CAID,GAAA;EAEJ,IAAA,EAAA,oBAAA;EAQE,KAAA,EAtDD,UAsDC;EAWI,cAAA,EAhEI,cAgEJ;CAAc,GAAA;EAOpB,IAAA,EAAA,mBAAW;EAGX,iBAAA,EAtEa,iBAuElB,CAAA,GAAA,EAAA,GAAA,CAAW;EAGF,GAAA,EAAA,MAAA;EAcA,GAAA,EAAA,MAAA;EACD,WAAA,EAAA,OAAA;CACR,GAAA;EACJ,IAAA,EAAA,qBAAA;EAAS,aAAA,EAAA,MAAA;YAnFI;;;YAKN,oCACA;aACO;;;;;;;;;;;;QAgBL;eACO;;aAEF;aACA;;;YAID;;QAEJ;;;;;;UAQE;;;;;;;;cAWI;;;;;KAON,WAAA,gBAA2B;KAG3B,kBAAA;OACL;;iBAGS,UAAA,cACD,uCACK;iBAYJ,cAAA,cACD,0BACR,cACJ"}
1
+ {"version":3,"file":"logging.d.mts","names":[],"sources":["../../src/core/logging.ts"],"mappings":";;;;;;;;;;;;;AA8BA;;;;;;;;;;KAAY,UAAA;EAEN,IAAA;EACA,gBAAA,EAAkB,qBAAA;EAClB,eAAA,EAAiB,qBAAA;EACjB,SAAA,EAAW,SAAA;AAAA;EAGX,IAAA;EACA,KAAA,EAAO,UAAA;EACP,cAAA,EAAgB,cAAA;AAAA;EAGhB,IAAA;EACA,iBAAA,EAAmB,iBAAA;EACnB,GAAA;EACA,GAAA;EACA,WAAA;AAAA;EAGA,IAAA;EACA,aAAA;EACA,QAAA,EAAU,SAAA;AAAA;EAGV,IAAA;EACA,QAAA,EACI,iCAAA,GACA,kBAAA;EACJ,SAAA,EAAW,SAAA;EACX,gBAAA;AAAA;EAGA,IAAA;EAEA,eAAA;EACA,gBAAA;AAAA;EAGA,IAAA;EACA,KAAA;EACA,gBAAA;AAAA;EAGA,IAAA;EACA,IAAA,EAAM,SAAA;EACN,WAAA,EAAa,WAAA;EACb,SAAA;EACA,SAAA,EAAW,SAAA;EACX,SAAA,EAAW,SAAA;AAAA;EAGX,IAAA;EACA,QAAA,EAAU,cAAA;EACV,SAAA;EACA,IAAA,EAAM,SAAA;AAAA;EAGN,IAAA;EACA,UAAA;AAAA;EAGA,IAAA;EACA,MAAA,EAAQ,WAAA;AAAA;EAGR,IAAA;AAAA;EAGA,IAAA;EACA,KAAA;AAAA;EAGA,IAAA;EACA,UAAA,EAAY,cAAA;AAAA;EAGZ,IAAA;EACA,KAAA;AAAA;AAAA,KAGM,WAAA,IAAe,UAAA,EAAY,UAAA;AAAA,KAG3B,kBAAA;EACV,GAAA,EAAK,WAAA;AAAA;AAAA,iBAGS,UAAA,CACd,WAAA,EAAa,mBAAA,EACb,UAAA,QAAkB,UAAA;AAAA,iBAYJ,cAAA,CACd,WAAA,EAAa,mBAAA,EACb,GAAA,EAAK,WAAA,GACJ,SAAA"}