@isograph/react 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/.turbo/turbo-compile-libs.log +9 -2
  2. package/dist/_virtual/rolldown_runtime.js +25 -0
  3. package/dist/core/FragmentReference.d.mts +38 -0
  4. package/dist/core/FragmentReference.d.mts.map +1 -0
  5. package/dist/core/FragmentReference.d.ts +31 -29
  6. package/dist/core/FragmentReference.d.ts.map +1 -1
  7. package/dist/core/FragmentReference.js +7 -5
  8. package/dist/core/FragmentReference.mjs +10 -0
  9. package/dist/core/FragmentReference.mjs.map +1 -0
  10. package/dist/core/IsographEnvironment.d.mts +89 -0
  11. package/dist/core/IsographEnvironment.d.mts.map +1 -0
  12. package/dist/core/IsographEnvironment.d.ts +76 -79
  13. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  14. package/dist/core/IsographEnvironment.js +60 -82
  15. package/dist/core/IsographEnvironment.mjs +67 -0
  16. package/dist/core/IsographEnvironment.mjs.map +1 -0
  17. package/dist/core/PromiseWrapper.d.mts +36 -0
  18. package/dist/core/PromiseWrapper.d.mts.map +1 -0
  19. package/dist/core/PromiseWrapper.d.ts +26 -23
  20. package/dist/core/PromiseWrapper.d.ts.map +1 -1
  21. package/dist/core/PromiseWrapper.js +45 -43
  22. package/dist/core/PromiseWrapper.mjs +49 -0
  23. package/dist/core/PromiseWrapper.mjs.map +1 -0
  24. package/dist/core/areEqualWithDeepComparison.js +56 -108
  25. package/dist/core/areEqualWithDeepComparison.mjs +62 -0
  26. package/dist/core/areEqualWithDeepComparison.mjs.map +1 -0
  27. package/dist/core/brand.d.mts +19 -0
  28. package/dist/core/brand.d.mts.map +1 -0
  29. package/dist/core/brand.d.ts +6 -6
  30. package/dist/core/brand.d.ts.map +1 -1
  31. package/dist/core/cache.d.mts +20 -0
  32. package/dist/core/cache.d.mts.map +1 -0
  33. package/dist/core/cache.d.ts +18 -37
  34. package/dist/core/cache.d.ts.map +1 -1
  35. package/dist/core/cache.js +203 -537
  36. package/dist/core/cache.mjs +237 -0
  37. package/dist/core/cache.mjs.map +1 -0
  38. package/dist/core/check.d.mts +28 -0
  39. package/dist/core/check.d.mts.map +1 -0
  40. package/dist/core/check.d.ts +21 -19
  41. package/dist/core/check.d.ts.map +1 -1
  42. package/dist/core/check.js +80 -127
  43. package/dist/core/check.mjs +84 -0
  44. package/dist/core/check.mjs.map +1 -0
  45. package/dist/core/componentCache.js +9 -35
  46. package/dist/core/componentCache.mjs +12 -0
  47. package/dist/core/componentCache.mjs.map +1 -0
  48. package/dist/core/entrypoint.d.mts +99 -0
  49. package/dist/core/entrypoint.d.mts.map +1 -0
  50. package/dist/core/entrypoint.d.ts +83 -78
  51. package/dist/core/entrypoint.d.ts.map +1 -1
  52. package/dist/core/entrypoint.js +6 -5
  53. package/dist/core/entrypoint.mjs +8 -0
  54. package/dist/core/entrypoint.mjs.map +1 -0
  55. package/dist/core/garbageCollection.d.mts +18 -0
  56. package/dist/core/garbageCollection.d.mts.map +1 -0
  57. package/dist/core/garbageCollection.d.ts +15 -16
  58. package/dist/core/garbageCollection.d.ts.map +1 -1
  59. package/dist/core/garbageCollection.js +76 -115
  60. package/dist/core/garbageCollection.mjs +89 -0
  61. package/dist/core/garbageCollection.mjs.map +1 -0
  62. package/dist/core/getOrCreateCacheForArtifact.js +37 -0
  63. package/dist/core/getOrCreateCacheForArtifact.mjs +38 -0
  64. package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -0
  65. package/dist/core/logging.d.mts +95 -0
  66. package/dist/core/logging.d.mts.map +1 -0
  67. package/dist/core/logging.d.ts +66 -61
  68. package/dist/core/logging.d.ts.map +1 -1
  69. package/dist/core/logging.js +17 -18
  70. package/dist/core/logging.mjs +20 -0
  71. package/dist/core/logging.mjs.map +1 -0
  72. package/dist/core/makeNetworkRequest.d.mts +13 -0
  73. package/dist/core/makeNetworkRequest.d.mts.map +1 -0
  74. package/dist/core/makeNetworkRequest.d.ts +12 -10
  75. package/dist/core/makeNetworkRequest.d.ts.map +1 -1
  76. package/dist/core/makeNetworkRequest.js +180 -264
  77. package/dist/core/makeNetworkRequest.mjs +195 -0
  78. package/dist/core/makeNetworkRequest.mjs.map +1 -0
  79. package/dist/core/optimisticProxy.d.mts +43 -0
  80. package/dist/core/optimisticProxy.d.mts.map +1 -0
  81. package/dist/core/optimisticProxy.d.ts +37 -53
  82. package/dist/core/optimisticProxy.d.ts.map +1 -1
  83. package/dist/core/optimisticProxy.js +245 -371
  84. package/dist/core/optimisticProxy.mjs +268 -0
  85. package/dist/core/optimisticProxy.mjs.map +1 -0
  86. package/dist/core/read.d.mts +29 -0
  87. package/dist/core/read.d.mts.map +1 -0
  88. package/dist/core/read.d.ts +23 -28
  89. package/dist/core/read.d.ts.map +1 -1
  90. package/dist/core/read.js +435 -650
  91. package/dist/core/read.mjs +456 -0
  92. package/dist/core/read.mjs.map +1 -0
  93. package/dist/core/reader.d.mts +89 -0
  94. package/dist/core/reader.d.mts.map +1 -0
  95. package/dist/core/reader.d.ts +78 -77
  96. package/dist/core/reader.d.ts.map +1 -1
  97. package/dist/core/startUpdate.js +115 -152
  98. package/dist/core/startUpdate.mjs +125 -0
  99. package/dist/core/startUpdate.mjs.map +1 -0
  100. package/dist/core/subscribe.d.mts +12 -0
  101. package/dist/core/subscribe.d.mts.map +1 -0
  102. package/dist/core/subscribe.d.ts +12 -0
  103. package/dist/core/subscribe.d.ts.map +1 -0
  104. package/dist/core/subscribe.js +79 -0
  105. package/dist/core/subscribe.mjs +79 -0
  106. package/dist/core/subscribe.mjs.map +1 -0
  107. package/dist/core/util.d.mts +27 -0
  108. package/dist/core/util.d.mts.map +1 -0
  109. package/dist/core/util.d.ts +21 -17
  110. package/dist/core/util.d.ts.map +1 -1
  111. package/dist/core/util.js +22 -2
  112. package/dist/core/util.mjs +21 -0
  113. package/dist/core/util.mjs.map +1 -0
  114. package/dist/core/writeData.d.mts +11 -0
  115. package/dist/core/writeData.d.mts.map +1 -0
  116. package/dist/core/writeData.d.ts +11 -0
  117. package/dist/core/writeData.d.ts.map +1 -0
  118. package/dist/core/writeData.js +41 -0
  119. package/dist/core/writeData.mjs +42 -0
  120. package/dist/core/writeData.mjs.map +1 -0
  121. package/dist/index.d.mts +32 -0
  122. package/dist/index.d.ts +32 -29
  123. package/dist/index.js +70 -69
  124. package/dist/index.mjs +31 -0
  125. package/dist/loadable-hooks/useClientSideDefer.d.mts +12 -0
  126. package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -0
  127. package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -12
  128. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
  129. package/dist/loadable-hooks/useClientSideDefer.js +13 -44
  130. package/dist/loadable-hooks/useClientSideDefer.mjs +14 -0
  131. package/dist/loadable-hooks/useClientSideDefer.mjs.map +1 -0
  132. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts +33 -0
  133. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -0
  134. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +26 -22
  135. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  136. package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -172
  137. package/dist/loadable-hooks/useConnectionSpecPagination.mjs +134 -0
  138. package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -0
  139. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts +8 -0
  140. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -0
  141. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +6 -3
  142. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
  143. package/dist/loadable-hooks/useImperativeExposedMutationField.js +9 -12
  144. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs +11 -0
  145. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs.map +1 -0
  146. package/dist/loadable-hooks/useImperativeLoadableField.d.mts +19 -0
  147. package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -0
  148. package/dist/loadable-hooks/useImperativeLoadableField.d.ts +15 -11
  149. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
  150. package/dist/loadable-hooks/useImperativeLoadableField.js +16 -12
  151. package/dist/loadable-hooks/useImperativeLoadableField.mjs +17 -0
  152. package/dist/loadable-hooks/useImperativeLoadableField.mjs.map +1 -0
  153. package/dist/loadable-hooks/useSkipLimitPagination.d.mts +24 -0
  154. package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -0
  155. package/dist/loadable-hooks/useSkipLimitPagination.d.ts +19 -15
  156. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
  157. package/dist/loadable-hooks/useSkipLimitPagination.js +118 -160
  158. package/dist/loadable-hooks/useSkipLimitPagination.mjs +119 -0
  159. package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -0
  160. package/dist/react/FragmentReader.d.mts +18 -0
  161. package/dist/react/FragmentReader.d.mts.map +1 -0
  162. package/dist/react/FragmentReader.d.ts +16 -8
  163. package/dist/react/FragmentReader.d.ts.map +1 -1
  164. package/dist/react/FragmentReader.js +8 -7
  165. package/dist/react/FragmentReader.mjs +10 -0
  166. package/dist/react/FragmentReader.mjs.map +1 -0
  167. package/dist/react/FragmentRenderer.d.mts +20 -0
  168. package/dist/react/FragmentRenderer.d.mts.map +1 -0
  169. package/dist/react/FragmentRenderer.d.ts +18 -14
  170. package/dist/react/FragmentRenderer.d.ts.map +1 -1
  171. package/dist/react/FragmentRenderer.js +11 -33
  172. package/dist/react/FragmentRenderer.mjs +12 -0
  173. package/dist/react/FragmentRenderer.mjs.map +1 -0
  174. package/dist/react/IsographEnvironmentProvider.d.mts +17 -0
  175. package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -0
  176. package/dist/react/IsographEnvironmentProvider.d.ts +15 -9
  177. package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
  178. package/dist/react/IsographEnvironmentProvider.js +15 -39
  179. package/dist/react/IsographEnvironmentProvider.mjs +17 -0
  180. package/dist/react/IsographEnvironmentProvider.mjs.map +1 -0
  181. package/dist/react/LoadableFieldReader.d.mts +21 -0
  182. package/dist/react/LoadableFieldReader.d.mts.map +1 -0
  183. package/dist/react/LoadableFieldReader.d.ts +15 -12
  184. package/dist/react/LoadableFieldReader.d.ts.map +1 -1
  185. package/dist/react/LoadableFieldReader.js +13 -47
  186. package/dist/react/LoadableFieldReader.mjs +14 -0
  187. package/dist/react/LoadableFieldReader.mjs.map +1 -0
  188. package/dist/react/LoadableFieldRenderer.d.mts +22 -0
  189. package/dist/react/LoadableFieldRenderer.d.mts.map +1 -0
  190. package/dist/react/LoadableFieldRenderer.d.ts +16 -13
  191. package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
  192. package/dist/react/LoadableFieldRenderer.js +13 -70
  193. package/dist/react/LoadableFieldRenderer.mjs +14 -0
  194. package/dist/react/LoadableFieldRenderer.mjs.map +1 -0
  195. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +18 -0
  196. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -0
  197. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +11 -3
  198. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -1
  199. package/dist/react/RenderAfterCommit__DO_NOT_USE.js +17 -13
  200. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs +18 -0
  201. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs.map +1 -0
  202. package/dist/react/createIsographEnvironment.d.mts +9 -0
  203. package/dist/react/createIsographEnvironment.d.mts.map +1 -0
  204. package/dist/react/createIsographEnvironment.d.ts +8 -0
  205. package/dist/react/createIsographEnvironment.d.ts.map +1 -0
  206. package/dist/react/createIsographEnvironment.js +10 -0
  207. package/dist/react/createIsographEnvironment.mjs +11 -0
  208. package/dist/react/createIsographEnvironment.mjs.map +1 -0
  209. package/dist/react/maybeUnwrapNetworkRequest.js +11 -0
  210. package/dist/react/maybeUnwrapNetworkRequest.mjs +12 -0
  211. package/dist/react/maybeUnwrapNetworkRequest.mjs.map +1 -0
  212. package/dist/react/useImperativeReference.d.mts +15 -0
  213. package/dist/react/useImperativeReference.d.mts.map +1 -0
  214. package/dist/react/useImperativeReference.d.ts +13 -8
  215. package/dist/react/useImperativeReference.d.ts.map +1 -1
  216. package/dist/react/useImperativeReference.js +34 -30
  217. package/dist/react/useImperativeReference.mjs +35 -0
  218. package/dist/react/useImperativeReference.mjs.map +1 -0
  219. package/dist/react/useLazyReference.d.mts +13 -0
  220. package/dist/react/useLazyReference.d.mts.map +1 -0
  221. package/dist/react/useLazyReference.d.ts +11 -6
  222. package/dist/react/useLazyReference.d.ts.map +1 -1
  223. package/dist/react/useLazyReference.js +17 -40
  224. package/dist/react/useLazyReference.mjs +18 -0
  225. package/dist/react/useLazyReference.mjs.map +1 -0
  226. package/dist/react/useReadAndSubscribe.d.mts +20 -0
  227. package/dist/react/useReadAndSubscribe.d.mts.map +1 -0
  228. package/dist/react/useReadAndSubscribe.d.ts +14 -9
  229. package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
  230. package/dist/react/useReadAndSubscribe.js +57 -37
  231. package/dist/react/useReadAndSubscribe.mjs +59 -0
  232. package/dist/react/useReadAndSubscribe.mjs.map +1 -0
  233. package/dist/react/useRerenderOnChange.d.mts +12 -0
  234. package/dist/react/useRerenderOnChange.d.mts.map +1 -0
  235. package/dist/react/useRerenderOnChange.d.ts +10 -6
  236. package/dist/react/useRerenderOnChange.d.ts.map +1 -1
  237. package/dist/react/useRerenderOnChange.js +16 -20
  238. package/dist/react/useRerenderOnChange.mjs +17 -0
  239. package/dist/react/useRerenderOnChange.mjs.map +1 -0
  240. package/dist/react/useResult.d.mts +8 -0
  241. package/dist/react/useResult.d.mts.map +1 -0
  242. package/dist/react/useResult.d.ts +7 -5
  243. package/dist/react/useResult.d.ts.map +1 -1
  244. package/dist/react/useResult.js +27 -40
  245. package/dist/react/useResult.mjs +30 -0
  246. package/dist/react/useResult.mjs.map +1 -0
  247. package/package.json +17 -9
  248. package/src/core/FragmentReference.ts +3 -3
  249. package/src/core/IsographEnvironment.ts +29 -16
  250. package/src/core/areEqualWithDeepComparison.ts +2 -18
  251. package/src/core/cache.ts +18 -383
  252. package/src/core/check.ts +9 -16
  253. package/src/core/componentCache.ts +10 -47
  254. package/src/core/entrypoint.ts +15 -3
  255. package/src/core/garbageCollection.ts +21 -10
  256. package/src/core/getOrCreateCacheForArtifact.ts +86 -0
  257. package/src/core/logging.ts +10 -10
  258. package/src/core/makeNetworkRequest.ts +16 -23
  259. package/src/core/optimisticProxy.ts +28 -47
  260. package/src/core/read.ts +21 -38
  261. package/src/core/reader.ts +8 -11
  262. package/src/core/startUpdate.ts +2 -6
  263. package/src/core/subscribe.ts +189 -0
  264. package/src/core/util.ts +26 -0
  265. package/src/core/writeData.ts +79 -0
  266. package/src/index.ts +5 -4
  267. package/src/loadable-hooks/useClientSideDefer.ts +4 -4
  268. package/src/loadable-hooks/useConnectionSpecPagination.ts +20 -18
  269. package/src/loadable-hooks/useImperativeLoadableField.ts +3 -3
  270. package/src/loadable-hooks/useSkipLimitPagination.ts +20 -18
  271. package/src/react/IsographEnvironmentProvider.tsx +2 -1
  272. package/src/react/LoadableFieldReader.tsx +2 -4
  273. package/src/react/LoadableFieldRenderer.tsx +2 -4
  274. package/src/react/createIsographEnvironment.ts +23 -0
  275. package/src/react/maybeUnwrapNetworkRequest.ts +17 -0
  276. package/src/react/useImperativeReference.ts +5 -4
  277. package/src/react/useLazyReference.ts +7 -8
  278. package/src/react/useReadAndSubscribe.ts +53 -5
  279. package/src/react/useRerenderOnChange.ts +3 -3
  280. package/src/react/useResult.ts +6 -24
  281. package/src/tests/__isograph/Economist/__link/output_type.ts +2 -0
  282. package/src/tests/garbageCollection.test.ts +3 -6
  283. package/src/tests/meNameSuccessor.ts +1 -1
  284. package/src/tests/nodeQuery.ts +2 -2
  285. package/src/tests/normalizeData.test.ts +5 -3
  286. package/src/tests/optimisticProxy.test.ts +7 -5
  287. package/src/tests/startUpdate.test.ts +5 -7
  288. package/vitest.config.ts +5 -0
  289. package/dist/core/areEqualWithDeepComparison.d.ts +0 -3
  290. package/dist/core/areEqualWithDeepComparison.d.ts.map +0 -1
  291. package/dist/core/brand.js +0 -2
  292. package/dist/core/componentCache.d.ts +0 -5
  293. package/dist/core/componentCache.d.ts.map +0 -1
  294. package/dist/core/reader.js +0 -2
  295. package/dist/core/startUpdate.d.ts +0 -9
  296. package/dist/core/startUpdate.d.ts.map +0 -1
  297. package/dist/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/core/garbageCollection.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAGL,mBAAmB,EAGnB,KAAK,SAAS,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC5D,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,iCAAkC,SAAQ,aAAa;IACtE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;CAC/D;AAWD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC3C,wBAAgB,aAAa,CAC3B,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,aAAa,GAC3B,oBAAoB,CAUtB;AAED,wBAAgB,WAAW,CACzB,WAAW,EAAE,mBAAmB,EAChC,aAAa,EAAE,aAAa,QAM7B;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,mBAAmB,QAqBzE;AAED,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,iCAAiC,EAAE,EACpD,cAAc,EAAE,cAAc,QA6B/B"}
1
+ {"version":3,"file":"garbageCollection.d.ts","names":[],"sources":["../../src/core/garbageCollection.ts"],"sourcesContent":[],"mappings":";;;;;KAmBY,aAAA;EAAA,SAAA,gBAAa,EACI,cADJ,CACmB,gBADnB,CAAA;EACmB,SAAA,SAAA,EAAA,CAAA,CAAA;EAAf,SAAA,IAAA,EAEZ,SAFY;CAEZ;AAkBF,KAFH,oBAAA,GAEG,OAAA;AACE,iBAFD,aAAA,CAEC,WAAA,EADF,mBACE,EAAA,aAAA,EAAA,aAAA,CAAA,EACd,oBADc;AACd,iBAYa,WAAA,CAZb,WAAA,EAaY,mBAbZ,EAAA,aAAA,EAcc,aAdd,CAAA,EAAA,IAAA;AAAoB,iBAsBP,yBAAA,CAtBO,WAAA,EAsBgC,mBAtBhC,CAAA,EAAA,IAAA"}
@@ -1,129 +1,90 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unretainQuery = unretainQuery;
4
- exports.retainQuery = retainQuery;
5
- exports.garbageCollectEnvironment = garbageCollectEnvironment;
6
- exports.garbageCollectBaseStoreLayer = garbageCollectBaseStoreLayer;
7
- const cache_1 = require("./cache");
8
- const IsographEnvironment_1 = require("./IsographEnvironment");
9
- const PromiseWrapper_1 = require("./PromiseWrapper");
1
+ const require_PromiseWrapper = require('./PromiseWrapper.js');
2
+ const require_IsographEnvironment = require('./IsographEnvironment.js');
3
+ const require_cache = require('./cache.js');
4
+
5
+ //#region src/core/garbageCollection.ts
10
6
  function isRetainedQueryWithNormalizationAst(query) {
11
- return (query.normalizationAst.result !== PromiseWrapper_1.NOT_SET &&
12
- query.normalizationAst.result.kind === 'Ok');
7
+ return query.normalizationAst.result !== require_PromiseWrapper.NOT_SET && query.normalizationAst.result.kind === "Ok";
13
8
  }
14
9
  function unretainQuery(environment, retainedQuery) {
15
- environment.retainedQueries.delete(retainedQuery);
16
- environment.gcBuffer.push(retainedQuery);
17
- if (environment.gcBuffer.length > environment.gcBufferSize) {
18
- environment.gcBuffer.shift();
19
- return true;
20
- }
21
- return false;
10
+ environment.retainedQueries.delete(retainedQuery);
11
+ environment.gcBuffer.push(retainedQuery);
12
+ if (environment.gcBuffer.length > environment.gcBufferSize) {
13
+ environment.gcBuffer.shift();
14
+ return true;
15
+ }
16
+ return false;
22
17
  }
23
18
  function retainQuery(environment, queryToRetain) {
24
- environment.retainedQueries.add(queryToRetain);
25
- // TODO can we remove this query from the buffer somehow?
26
- // We are relying on === equality, but we really should be comparing
27
- // id + variables
19
+ environment.retainedQueries.add(queryToRetain);
28
20
  }
29
21
  function garbageCollectEnvironment(environment) {
30
- if (environment.store.kind !== 'BaseStoreLayer') {
31
- return;
32
- }
33
- const retainedQueries = [];
34
- for (const query of environment.retainedQueries) {
35
- if (!isRetainedQueryWithNormalizationAst(query)) {
36
- return;
37
- }
38
- retainedQueries.push(query);
39
- }
40
- for (const query of environment.gcBuffer) {
41
- if (!isRetainedQueryWithNormalizationAst(query)) {
42
- return;
43
- }
44
- retainedQueries.push(query);
45
- }
46
- garbageCollectBaseStoreLayer(retainedQueries, environment.store);
22
+ if (environment.store.kind !== "BaseStoreLayer") return;
23
+ const retainedQueries = [];
24
+ for (const query of environment.retainedQueries) {
25
+ if (!isRetainedQueryWithNormalizationAst(query)) return;
26
+ retainedQueries.push(query);
27
+ }
28
+ for (const query of environment.gcBuffer) {
29
+ if (!isRetainedQueryWithNormalizationAst(query)) return;
30
+ retainedQueries.push(query);
31
+ }
32
+ garbageCollectBaseStoreLayer(retainedQueries, environment.store);
47
33
  }
48
34
  function garbageCollectBaseStoreLayer(retainedQueries, baseStoreLayer) {
49
- const retainedIds = {};
50
- for (const query of retainedQueries) {
51
- recordReachableIds(baseStoreLayer.data, query, retainedIds);
52
- }
53
- for (const typeName in baseStoreLayer.data) {
54
- const dataById = baseStoreLayer.data[typeName];
55
- if (dataById == null)
56
- continue;
57
- const retainedTypeIds = retainedIds[typeName];
58
- // delete all objects
59
- if (retainedTypeIds == undefined || retainedTypeIds.size == 0) {
60
- delete baseStoreLayer.data[typeName];
61
- continue;
62
- }
63
- for (const dataId in dataById) {
64
- if (!retainedTypeIds.has(dataId)) {
65
- delete dataById[dataId];
66
- }
67
- }
68
- if (Object.keys(dataById).length === 0) {
69
- delete baseStoreLayer.data[typeName];
70
- }
71
- }
35
+ const retainedIds = {};
36
+ for (const query of retainedQueries) recordReachableIds(baseStoreLayer.data, query, retainedIds);
37
+ for (const typeName in baseStoreLayer.data) {
38
+ const dataById = baseStoreLayer.data[typeName];
39
+ if (dataById == null) continue;
40
+ const retainedTypeIds = retainedIds[typeName];
41
+ if (retainedTypeIds === void 0 || retainedTypeIds.size === 0) {
42
+ delete baseStoreLayer.data[typeName];
43
+ continue;
44
+ }
45
+ for (const dataId in dataById) if (!retainedTypeIds.has(dataId)) delete dataById[dataId];
46
+ if (Object.keys(dataById).length === 0) delete baseStoreLayer.data[typeName];
47
+ }
72
48
  }
73
49
  function recordReachableIds(dataLayer, retainedQuery, mutableRetainedIds) {
74
- var _a, _b;
75
- var _c;
76
- const record = (_a = dataLayer[retainedQuery.root.__typename]) === null || _a === void 0 ? void 0 : _a[retainedQuery.root.__link];
77
- const retainedRecordsIds = ((_b = mutableRetainedIds[_c = retainedQuery.root.__typename]) !== null && _b !== void 0 ? _b : (mutableRetainedIds[_c] = new Set()));
78
- retainedRecordsIds.add(retainedQuery.root.__link);
79
- if (record) {
80
- recordReachableIdsFromRecord(dataLayer, record, mutableRetainedIds, retainedQuery.normalizationAst.result.value.selections, retainedQuery.variables);
81
- }
50
+ const record = dataLayer[retainedQuery.root.__typename]?.[retainedQuery.root.__link];
51
+ (mutableRetainedIds[retainedQuery.root.__typename] ??= /* @__PURE__ */ new Set()).add(retainedQuery.root.__link);
52
+ if (record != null) recordReachableIdsFromRecord(dataLayer, record, mutableRetainedIds, retainedQuery.normalizationAst.result.value.selections, retainedQuery.variables);
82
53
  }
83
54
  function recordReachableIdsFromRecord(dataLayer, currentRecord, mutableRetainedIds, selections, variables) {
84
- var _a;
85
- for (const selection of selections) {
86
- switch (selection.kind) {
87
- case 'Linked':
88
- const linkKey = (0, cache_1.getParentRecordKey)(selection, variables !== null && variables !== void 0 ? variables : {});
89
- const linkedFieldOrFields = currentRecord[linkKey];
90
- const links = [];
91
- if (Array.isArray(linkedFieldOrFields)) {
92
- for (const maybeLink of linkedFieldOrFields) {
93
- const link = (0, IsographEnvironment_1.assertLink)(maybeLink);
94
- if (link != null) {
95
- links.push(link);
96
- }
97
- }
98
- }
99
- else {
100
- const link = (0, IsographEnvironment_1.assertLink)(linkedFieldOrFields);
101
- if (link != null) {
102
- links.push(link);
103
- }
104
- }
105
- let typeStore = selection.concreteType !== null
106
- ? dataLayer[selection.concreteType]
107
- : null;
108
- if (typeStore == null && selection.concreteType !== null) {
109
- continue;
110
- }
111
- for (const nextRecordLink of links) {
112
- let __typename = nextRecordLink.__typename;
113
- const resolvedTypeStore = typeStore !== null && typeStore !== void 0 ? typeStore : dataLayer[__typename];
114
- if (resolvedTypeStore == null) {
115
- continue;
116
- }
117
- const nextRecord = resolvedTypeStore[nextRecordLink.__link];
118
- if (nextRecord != null) {
119
- const retainedRecordsIds = ((_a = mutableRetainedIds[__typename]) !== null && _a !== void 0 ? _a : (mutableRetainedIds[__typename] = new Set()));
120
- retainedRecordsIds.add(nextRecordLink.__link);
121
- recordReachableIdsFromRecord(dataLayer, nextRecord, mutableRetainedIds, selection.selections, variables);
122
- }
123
- }
124
- continue;
125
- case 'Scalar':
126
- continue;
127
- }
128
- }
55
+ for (const selection of selections) switch (selection.kind) {
56
+ case "InlineFragment":
57
+ if (currentRecord[require_cache.TYPENAME_FIELD_NAME] === selection.type) recordReachableIdsFromRecord(dataLayer, currentRecord, mutableRetainedIds, selection.selections, variables);
58
+ continue;
59
+ case "Linked":
60
+ const linkedFieldOrFields = currentRecord[require_cache.getParentRecordKey(selection, variables ?? {})];
61
+ const links = [];
62
+ if (Array.isArray(linkedFieldOrFields)) for (const maybeLink of linkedFieldOrFields) {
63
+ const link = require_IsographEnvironment.assertLink(maybeLink);
64
+ if (link != null) links.push(link);
65
+ }
66
+ else {
67
+ const link = require_IsographEnvironment.assertLink(linkedFieldOrFields);
68
+ if (link != null) links.push(link);
69
+ }
70
+ let typeStore = selection.concreteType != null ? dataLayer[selection.concreteType] : null;
71
+ if (typeStore == null && selection.concreteType != null) continue;
72
+ for (const nextRecordLink of links) {
73
+ let __typename = nextRecordLink.__typename;
74
+ const resolvedTypeStore = typeStore ?? dataLayer[__typename];
75
+ if (resolvedTypeStore == null) continue;
76
+ const nextRecord = resolvedTypeStore[nextRecordLink.__link];
77
+ if (nextRecord != null) {
78
+ (mutableRetainedIds[__typename] ??= /* @__PURE__ */ new Set()).add(nextRecordLink.__link);
79
+ recordReachableIdsFromRecord(dataLayer, nextRecord, mutableRetainedIds, selection.selections, variables);
80
+ }
81
+ }
82
+ continue;
83
+ case "Scalar": continue;
84
+ }
129
85
  }
86
+
87
+ //#endregion
88
+ exports.garbageCollectEnvironment = garbageCollectEnvironment;
89
+ exports.retainQuery = retainQuery;
90
+ exports.unretainQuery = unretainQuery;
@@ -0,0 +1,89 @@
1
+ import { NOT_SET } from "./PromiseWrapper.mjs";
2
+ import { assertLink } from "./IsographEnvironment.mjs";
3
+ import { TYPENAME_FIELD_NAME, getParentRecordKey } from "./cache.mjs";
4
+
5
+ //#region src/core/garbageCollection.ts
6
+ function isRetainedQueryWithNormalizationAst(query) {
7
+ return query.normalizationAst.result !== NOT_SET && query.normalizationAst.result.kind === "Ok";
8
+ }
9
+ function unretainQuery(environment, retainedQuery) {
10
+ environment.retainedQueries.delete(retainedQuery);
11
+ environment.gcBuffer.push(retainedQuery);
12
+ if (environment.gcBuffer.length > environment.gcBufferSize) {
13
+ environment.gcBuffer.shift();
14
+ return true;
15
+ }
16
+ return false;
17
+ }
18
+ function retainQuery(environment, queryToRetain) {
19
+ environment.retainedQueries.add(queryToRetain);
20
+ }
21
+ function garbageCollectEnvironment(environment) {
22
+ if (environment.store.kind !== "BaseStoreLayer") return;
23
+ const retainedQueries = [];
24
+ for (const query of environment.retainedQueries) {
25
+ if (!isRetainedQueryWithNormalizationAst(query)) return;
26
+ retainedQueries.push(query);
27
+ }
28
+ for (const query of environment.gcBuffer) {
29
+ if (!isRetainedQueryWithNormalizationAst(query)) return;
30
+ retainedQueries.push(query);
31
+ }
32
+ garbageCollectBaseStoreLayer(retainedQueries, environment.store);
33
+ }
34
+ function garbageCollectBaseStoreLayer(retainedQueries, baseStoreLayer) {
35
+ const retainedIds = {};
36
+ for (const query of retainedQueries) recordReachableIds(baseStoreLayer.data, query, retainedIds);
37
+ for (const typeName in baseStoreLayer.data) {
38
+ const dataById = baseStoreLayer.data[typeName];
39
+ if (dataById == null) continue;
40
+ const retainedTypeIds = retainedIds[typeName];
41
+ if (retainedTypeIds === void 0 || retainedTypeIds.size === 0) {
42
+ delete baseStoreLayer.data[typeName];
43
+ continue;
44
+ }
45
+ for (const dataId in dataById) if (!retainedTypeIds.has(dataId)) delete dataById[dataId];
46
+ if (Object.keys(dataById).length === 0) delete baseStoreLayer.data[typeName];
47
+ }
48
+ }
49
+ function recordReachableIds(dataLayer, retainedQuery, mutableRetainedIds) {
50
+ const record = dataLayer[retainedQuery.root.__typename]?.[retainedQuery.root.__link];
51
+ (mutableRetainedIds[retainedQuery.root.__typename] ??= /* @__PURE__ */ new Set()).add(retainedQuery.root.__link);
52
+ if (record != null) recordReachableIdsFromRecord(dataLayer, record, mutableRetainedIds, retainedQuery.normalizationAst.result.value.selections, retainedQuery.variables);
53
+ }
54
+ function recordReachableIdsFromRecord(dataLayer, currentRecord, mutableRetainedIds, selections, variables) {
55
+ for (const selection of selections) switch (selection.kind) {
56
+ case "InlineFragment":
57
+ if (currentRecord[TYPENAME_FIELD_NAME] === selection.type) recordReachableIdsFromRecord(dataLayer, currentRecord, mutableRetainedIds, selection.selections, variables);
58
+ continue;
59
+ case "Linked":
60
+ const linkedFieldOrFields = currentRecord[getParentRecordKey(selection, variables ?? {})];
61
+ const links = [];
62
+ if (Array.isArray(linkedFieldOrFields)) for (const maybeLink of linkedFieldOrFields) {
63
+ const link = assertLink(maybeLink);
64
+ if (link != null) links.push(link);
65
+ }
66
+ else {
67
+ const link = assertLink(linkedFieldOrFields);
68
+ if (link != null) links.push(link);
69
+ }
70
+ let typeStore = selection.concreteType != null ? dataLayer[selection.concreteType] : null;
71
+ if (typeStore == null && selection.concreteType != null) continue;
72
+ for (const nextRecordLink of links) {
73
+ let __typename = nextRecordLink.__typename;
74
+ const resolvedTypeStore = typeStore ?? dataLayer[__typename];
75
+ if (resolvedTypeStore == null) continue;
76
+ const nextRecord = resolvedTypeStore[nextRecordLink.__link];
77
+ if (nextRecord != null) {
78
+ (mutableRetainedIds[__typename] ??= /* @__PURE__ */ new Set()).add(nextRecordLink.__link);
79
+ recordReachableIdsFromRecord(dataLayer, nextRecord, mutableRetainedIds, selection.selections, variables);
80
+ }
81
+ }
82
+ continue;
83
+ case "Scalar": continue;
84
+ }
85
+ }
86
+
87
+ //#endregion
88
+ export { garbageCollectEnvironment, retainQuery, unretainQuery };
89
+ //# sourceMappingURL=garbageCollection.mjs.map
@@ -0,0 +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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"}
@@ -0,0 +1,37 @@
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');
5
+
6
+ //#region src/core/getOrCreateCacheForArtifact.ts
7
+ function getOrCreateCacheForArtifact(environment, entrypoint, variables, fetchOptions) {
8
+ let cacheKey = "";
9
+ switch (entrypoint.networkRequestInfo.operation.kind) {
10
+ case "Operation":
11
+ cacheKey = entrypoint.networkRequestInfo.operation.text + JSON.stringify(require_util.stableCopy(variables));
12
+ break;
13
+ case "PersistedOperation":
14
+ cacheKey = entrypoint.networkRequestInfo.operation.operationId + JSON.stringify(require_util.stableCopy(variables));
15
+ break;
16
+ }
17
+ const factory = () => {
18
+ const { fieldName, readerArtifactKind, readerWithRefetchQueries } = require_IsographEnvironment.getOrLoadReaderWithRefetchQueries(environment, entrypoint.readerWithRefetchQueries);
19
+ const [networkRequest, disposeNetworkRequest] = require_makeNetworkRequest.maybeMakeNetworkRequest(environment, entrypoint, variables, readerWithRefetchQueries, fetchOptions ?? null);
20
+ return [{
21
+ kind: "FragmentReference",
22
+ readerWithRefetchQueries,
23
+ fieldName,
24
+ readerArtifactKind,
25
+ root: {
26
+ __link: require_IsographEnvironment.ROOT_ID,
27
+ __typename: entrypoint.concreteType
28
+ },
29
+ variables,
30
+ networkRequest
31
+ }, disposeNetworkRequest];
32
+ };
33
+ return require_cache.getOrCreateItemInSuspenseCache(environment, cacheKey, factory);
34
+ }
35
+
36
+ //#endregion
37
+ exports.getOrCreateCacheForArtifact = getOrCreateCacheForArtifact;
@@ -0,0 +1,38 @@
1
+ import { stableCopy } from "./util.mjs";
2
+ import { ROOT_ID, getOrLoadReaderWithRefetchQueries } from "./IsographEnvironment.mjs";
3
+ import { maybeMakeNetworkRequest } from "./makeNetworkRequest.mjs";
4
+ import { getOrCreateItemInSuspenseCache } from "./cache.mjs";
5
+
6
+ //#region src/core/getOrCreateCacheForArtifact.ts
7
+ function getOrCreateCacheForArtifact(environment, entrypoint, variables, fetchOptions) {
8
+ let cacheKey = "";
9
+ switch (entrypoint.networkRequestInfo.operation.kind) {
10
+ case "Operation":
11
+ cacheKey = entrypoint.networkRequestInfo.operation.text + JSON.stringify(stableCopy(variables));
12
+ break;
13
+ case "PersistedOperation":
14
+ cacheKey = entrypoint.networkRequestInfo.operation.operationId + JSON.stringify(stableCopy(variables));
15
+ break;
16
+ }
17
+ const factory = () => {
18
+ const { fieldName, readerArtifactKind, readerWithRefetchQueries } = getOrLoadReaderWithRefetchQueries(environment, entrypoint.readerWithRefetchQueries);
19
+ const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(environment, entrypoint, variables, readerWithRefetchQueries, fetchOptions ?? null);
20
+ return [{
21
+ kind: "FragmentReference",
22
+ readerWithRefetchQueries,
23
+ fieldName,
24
+ readerArtifactKind,
25
+ root: {
26
+ __link: ROOT_ID,
27
+ __typename: entrypoint.concreteType
28
+ },
29
+ variables,
30
+ networkRequest
31
+ }, disposeNetworkRequest];
32
+ };
33
+ return getOrCreateItemInSuspenseCache(environment, cacheKey, factory);
34
+ }
35
+
36
+ //#endregion
37
+ export { getOrCreateCacheForArtifact };
38
+ //# sourceMappingURL=getOrCreateCacheForArtifact.mjs.map
@@ -0,0 +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"}
@@ -0,0 +1,95 @@
1
+ import { CheckResult } from "./check.mjs";
2
+ import { Arguments } from "./util.mjs";
3
+ import { ReadDataResult } from "./read.mjs";
4
+ import { StoreLayer } from "./optimisticProxy.mjs";
5
+ import { IsographEnvironment, StoreLink, StoreRecord } from "./IsographEnvironment.mjs";
6
+ import { FragmentReference, Variables } from "./FragmentReference.mjs";
7
+ import { EncounteredIds, NetworkResponseObject } from "./cache.mjs";
8
+ import { IsographEntrypoint, NormalizationAstNodes, RefetchQueryNormalizationArtifact } from "./entrypoint.mjs";
9
+ import { CleanupFn } from "@isograph/disposable-types";
10
+
11
+ //#region src/core/logging.d.ts
12
+
13
+ /**
14
+ * Note: these types are unstable. We will add and remove items from this enum
15
+ * and add and remove fields. Please do not rely on the specifics here (for now).
16
+ *
17
+ * Goals include:
18
+ * - convenient debugging for Isograph developers
19
+ * - eventual support for the Isograph devtools
20
+ *
21
+ * In some cases (e.g. in `AfterNormalization`), we include large objects and thus
22
+ * prevent them from getting garbage collected (if the log message is printed).
23
+ * Especially in cases like that, we intend to remove those!
24
+ */
25
+ type LogMessage = {
26
+ kind: 'AboutToNormalize';
27
+ normalizationAst: NormalizationAstNodes;
28
+ networkResponse: NetworkResponseObject;
29
+ variables: Variables;
30
+ } | {
31
+ kind: 'AfterNormalization';
32
+ store: StoreLayer;
33
+ encounteredIds: EncounteredIds;
34
+ } | {
35
+ kind: 'DeepEqualityCheck';
36
+ fragmentReference: FragmentReference<any, any>;
37
+ old: object;
38
+ new: object;
39
+ deeplyEqual: boolean;
40
+ } | {
41
+ kind: 'ComponentRerendered';
42
+ componentName: string;
43
+ rootLink: StoreLink;
44
+ } | {
45
+ kind: 'MakeNetworkRequest';
46
+ artifact: RefetchQueryNormalizationArtifact | IsographEntrypoint<any, any, any, any>;
47
+ variables: Variables;
48
+ networkRequestId: string;
49
+ } | {
50
+ kind: 'ReceivedNetworkResponse';
51
+ networkResponse: any;
52
+ networkRequestId: string;
53
+ } | {
54
+ kind: 'ReceivedNetworkError';
55
+ error: any;
56
+ networkRequestId: string;
57
+ } | {
58
+ kind: 'MissingFieldHandlerCalled';
59
+ root: StoreLink;
60
+ storeRecord: StoreRecord;
61
+ fieldName: string;
62
+ arguments: Arguments | null;
63
+ variables: Variables;
64
+ } | {
65
+ kind: 'DoneReading';
66
+ response: ReadDataResult<any>;
67
+ fieldName: string;
68
+ root: StoreLink;
69
+ } | {
70
+ kind: 'NonEntrypointReceived';
71
+ entrypoint: any;
72
+ } | {
73
+ kind: 'EnvironmentCheck';
74
+ result: CheckResult;
75
+ } | {
76
+ kind: 'EnvironmentCreated';
77
+ } | {
78
+ kind: 'StartUpdateError';
79
+ error: any;
80
+ } | {
81
+ kind: 'StartUpdateComplete';
82
+ updatedIds: EncounteredIds;
83
+ } | {
84
+ kind: 'ErrorEncounteredInWithErrorHandling';
85
+ error: any;
86
+ };
87
+ type LogFunction = (logMessage: LogMessage) => void;
88
+ type WrappedLogFunction = {
89
+ log: LogFunction;
90
+ };
91
+ declare function logMessage(environment: IsographEnvironment, getMessage: () => LogMessage): void;
92
+ declare function registerLogger(environment: IsographEnvironment, log: LogFunction): CleanupFn;
93
+ //#endregion
94
+ export { LogFunction, LogMessage, WrappedLogFunction, logMessage, registerLogger };
95
+ //# sourceMappingURL=logging.d.mts.map
@@ -0,0 +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,GAAW,CAAA;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"}