@isograph/react 0.4.3 → 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 (327) hide show
  1. package/.turbo/turbo-compile-libs.log +10 -3
  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 -27
  6. package/dist/core/FragmentReference.d.ts.map +1 -1
  7. package/dist/core/FragmentReference.js +8 -6
  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 +77 -72
  13. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  14. package/dist/core/IsographEnvironment.js +62 -59
  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 +27 -18
  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 +18 -1
  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 -34
  34. package/dist/core/cache.d.ts.map +1 -1
  35. package/dist/core/cache.js +210 -516
  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 +24 -18
  41. package/dist/core/check.d.ts.map +1 -1
  42. package/dist/core/check.js +80 -124
  43. package/dist/core/check.mjs +84 -0
  44. package/dist/core/check.mjs.map +1 -0
  45. package/dist/core/componentCache.js +10 -34
  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 -68
  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 -10
  58. package/dist/core/garbageCollection.d.ts.map +1 -1
  59. package/dist/core/garbageCollection.js +82 -99
  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 +78 -60
  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 -8
  75. package/dist/core/makeNetworkRequest.d.ts.map +1 -1
  76. package/dist/core/makeNetworkRequest.js +188 -195
  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 +43 -0
  82. package/dist/core/optimisticProxy.d.ts.map +1 -0
  83. package/dist/core/optimisticProxy.js +273 -0
  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 -27
  89. package/dist/core/read.d.ts.map +1 -1
  90. package/dist/core/read.js +438 -618
  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 -74
  96. package/dist/core/reader.d.ts.map +1 -1
  97. package/dist/core/startUpdate.js +118 -156
  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 -68
  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 +10 -8
  128. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
  129. package/dist/loadable-hooks/useClientSideDefer.js +14 -12
  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 +27 -21
  135. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  136. package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -158
  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 -7
  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 -13
  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 +20 -11
  184. package/dist/react/LoadableFieldReader.d.ts.map +1 -1
  185. package/dist/react/LoadableFieldReader.js +13 -8
  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 +21 -12
  191. package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
  192. package/dist/react/LoadableFieldRenderer.js +13 -35
  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 -7
  215. package/dist/react/useImperativeReference.d.ts.map +1 -1
  216. package/dist/react/useImperativeReference.js +34 -32
  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 -5
  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 -39
  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 -39
  245. package/dist/react/useResult.mjs +30 -0
  246. package/dist/react/useResult.mjs.map +1 -0
  247. package/package.json +26 -19
  248. package/src/core/FragmentReference.ts +13 -7
  249. package/src/core/IsographEnvironment.ts +80 -21
  250. package/src/core/PromiseWrapper.ts +14 -7
  251. package/src/core/areEqualWithDeepComparison.ts +2 -18
  252. package/src/core/brand.ts +18 -0
  253. package/src/core/cache.ts +62 -332
  254. package/src/core/check.ts +30 -26
  255. package/src/core/componentCache.ts +11 -44
  256. package/src/core/entrypoint.ts +50 -9
  257. package/src/core/garbageCollection.ts +81 -28
  258. package/src/core/getOrCreateCacheForArtifact.ts +86 -0
  259. package/src/core/logging.ts +25 -13
  260. package/src/core/makeNetworkRequest.ts +320 -94
  261. package/src/core/optimisticProxy.ts +544 -0
  262. package/src/core/read.ts +251 -198
  263. package/src/core/reader.ts +18 -17
  264. package/src/core/startUpdate.ts +47 -36
  265. package/src/core/subscribe.ts +189 -0
  266. package/src/core/util.ts +26 -0
  267. package/src/core/writeData.ts +79 -0
  268. package/src/index.ts +6 -4
  269. package/src/loadable-hooks/useClientSideDefer.ts +80 -30
  270. package/src/loadable-hooks/useConnectionSpecPagination.ts +54 -35
  271. package/src/loadable-hooks/useImperativeLoadableField.ts +5 -5
  272. package/src/loadable-hooks/useSkipLimitPagination.ts +22 -21
  273. package/src/react/FragmentReader.tsx +3 -1
  274. package/src/react/FragmentRenderer.tsx +8 -1
  275. package/src/react/IsographEnvironmentProvider.tsx +2 -1
  276. package/src/react/LoadableFieldReader.tsx +125 -16
  277. package/src/react/LoadableFieldRenderer.tsx +124 -16
  278. package/src/react/createIsographEnvironment.ts +23 -0
  279. package/src/react/maybeUnwrapNetworkRequest.ts +17 -0
  280. package/src/react/useImperativeReference.ts +25 -15
  281. package/src/react/useLazyReference.ts +20 -10
  282. package/src/react/useReadAndSubscribe.ts +53 -12
  283. package/src/react/useRerenderOnChange.ts +3 -3
  284. package/src/react/useResult.ts +15 -35
  285. package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +1 -1
  286. package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
  287. package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +13 -0
  288. package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +1 -1
  289. package/src/tests/__isograph/Query/meName/entrypoint.ts +3 -1
  290. package/src/tests/__isograph/Query/meName/raw_response_type.ts +7 -0
  291. package/src/tests/__isograph/Query/meName/resolver_reader.ts +1 -1
  292. package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +3 -1
  293. package/src/tests/__isograph/Query/meNameSuccessor/raw_response_type.ts +14 -0
  294. package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +1 -1
  295. package/src/tests/__isograph/Query/nodeField/entrypoint.ts +3 -1
  296. package/src/tests/__isograph/Query/nodeField/raw_response_type.ts +7 -0
  297. package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +1 -1
  298. package/src/tests/__isograph/Query/normalizeUndefinedField/entrypoint.ts +33 -0
  299. package/src/tests/__isograph/Query/normalizeUndefinedField/normalization_ast.ts +25 -0
  300. package/src/tests/__isograph/Query/normalizeUndefinedField/output_type.ts +3 -0
  301. package/src/tests/__isograph/Query/normalizeUndefinedField/param_type.ts +9 -0
  302. package/src/tests/__isograph/Query/normalizeUndefinedField/query_text.ts +6 -0
  303. package/src/tests/__isograph/Query/normalizeUndefinedField/raw_response_type.ts +7 -0
  304. package/src/tests/__isograph/Query/normalizeUndefinedField/resolver_reader.ts +38 -0
  305. package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +3 -1
  306. package/src/tests/__isograph/Query/startUpdate/raw_response_type.ts +8 -0
  307. package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +1 -1
  308. package/src/tests/__isograph/Query/subquery/entrypoint.ts +3 -1
  309. package/src/tests/__isograph/Query/subquery/raw_response_type.ts +9 -0
  310. package/src/tests/__isograph/Query/subquery/resolver_reader.ts +1 -1
  311. package/src/tests/__isograph/iso.ts +11 -1
  312. package/src/tests/garbageCollection.test.ts +10 -10
  313. package/src/tests/meNameSuccessor.ts +7 -4
  314. package/src/tests/nodeQuery.ts +6 -4
  315. package/src/tests/normalizeData.test.ts +94 -18
  316. package/src/tests/optimisticProxy.test.ts +862 -0
  317. package/src/tests/startUpdate.test.ts +11 -11
  318. package/vitest.config.ts +5 -0
  319. package/dist/core/areEqualWithDeepComparison.d.ts +0 -3
  320. package/dist/core/areEqualWithDeepComparison.d.ts.map +0 -1
  321. package/dist/core/brand.js +0 -2
  322. package/dist/core/componentCache.d.ts +0 -5
  323. package/dist/core/componentCache.d.ts.map +0 -1
  324. package/dist/core/reader.js +0 -2
  325. package/dist/core/startUpdate.d.ts +0 -8
  326. package/dist/core/startUpdate.d.ts.map +0 -1
  327. package/dist/index.d.ts.map +0 -1
package/src/core/check.ts CHANGED
@@ -1,28 +1,35 @@
1
1
  import { getParentRecordKey } from './cache';
2
- import { NormalizationAstNodes } from './entrypoint';
3
- import { Variables } from './FragmentReference';
4
- import {
5
- getLink,
2
+ import type { NormalizationAstNodes } from './entrypoint';
3
+ import type { Variables } from './FragmentReference';
4
+ import type {
6
5
  IsographEnvironment,
7
6
  StoreLink,
8
7
  StoreRecord,
9
8
  } from './IsographEnvironment';
9
+ import { getLink } from './IsographEnvironment';
10
10
  import { logMessage } from './logging';
11
+ import { getStoreRecordProxy } from './optimisticProxy';
11
12
 
12
13
  export type ShouldFetch = RequiredShouldFetch | 'IfNecessary';
13
14
  export type RequiredShouldFetch = 'Yes' | 'No';
14
15
 
15
16
  export const DEFAULT_SHOULD_FETCH_VALUE: ShouldFetch = 'IfNecessary';
16
17
 
17
- export type FetchOptions<TReadOutData> = {
18
- shouldFetch?: ShouldFetch;
18
+ type FetchOptionsShared<TReadOutData> = {
19
19
  onComplete?: (data: TReadOutData) => void;
20
20
  onError?: () => void;
21
21
  };
22
22
 
23
- export type RequiredFetchOptions<TReadOutData> = {
23
+ export interface FetchOptions<TReadOutData, TRawResponseType>
24
+ extends FetchOptionsShared<TReadOutData> {
25
+ shouldFetch?: ShouldFetch;
26
+ optimisticNetworkResponse?: TRawResponseType;
27
+ }
28
+
29
+ export interface RequiredFetchOptions<TReadOutData>
30
+ extends FetchOptionsShared<TReadOutData> {
24
31
  shouldFetch: RequiredShouldFetch;
25
- } & FetchOptions<TReadOutData>;
32
+ }
26
33
 
27
34
  export type CheckResult =
28
35
  | {
@@ -39,8 +46,14 @@ export function check(
39
46
  variables: Variables,
40
47
  root: StoreLink,
41
48
  ): CheckResult {
42
- const recordsById = (environment.store[root.__typename] ??= {});
43
- const newStoreRecord = (recordsById[root.__link] ??= {});
49
+ const newStoreRecord = getStoreRecordProxy(environment.store, root);
50
+
51
+ if (newStoreRecord == null) {
52
+ return {
53
+ kind: 'MissingData',
54
+ record: root,
55
+ };
56
+ }
44
57
 
45
58
  const checkResult = checkFromRecord(
46
59
  environment,
@@ -95,27 +108,26 @@ function checkFromRecord(
95
108
  kind: 'MissingData',
96
109
  record: recordLink,
97
110
  };
98
- } else if (linkedValue === null) {
111
+ } else if (linkedValue == null) {
99
112
  continue;
100
113
  } else if (Array.isArray(linkedValue)) {
101
114
  arrayItemsLoop: for (const item of linkedValue) {
102
115
  const link = getLink(item);
103
- if (link === null) {
116
+ if (link == null) {
104
117
  throw new Error(
105
118
  'Unexpected non-link in the Isograph store. ' +
106
119
  'This is indicative of a bug in Isograph.',
107
120
  );
108
121
  }
109
122
 
110
- const linkedRecord =
111
- environment.store[link.__typename]?.[link.__link];
123
+ const linkedRecord = getStoreRecordProxy(environment.store, link);
112
124
 
113
125
  if (linkedRecord === undefined) {
114
126
  return {
115
127
  kind: 'MissingData',
116
128
  record: link,
117
129
  };
118
- } else if (linkedRecord === null) {
130
+ } else if (linkedRecord == null) {
119
131
  continue arrayItemsLoop;
120
132
  } else {
121
133
  // TODO in __DEV__ assert linkedRecord is an object
@@ -134,22 +146,21 @@ function checkFromRecord(
134
146
  }
135
147
  } else {
136
148
  const link = getLink(linkedValue);
137
- if (link === null) {
149
+ if (link == null) {
138
150
  throw new Error(
139
151
  'Unexpected non-link in the Isograph store. ' +
140
152
  'This is indicative of a bug in Isograph.',
141
153
  );
142
154
  }
143
155
 
144
- const linkedRecord =
145
- environment.store[link.__typename]?.[link.__link];
156
+ const linkedRecord = getStoreRecordProxy(environment.store, link);
146
157
 
147
158
  if (linkedRecord === undefined) {
148
159
  return {
149
160
  kind: 'MissingData',
150
161
  record: link,
151
162
  };
152
- } else if (linkedRecord === null) {
163
+ } else if (linkedRecord == null) {
153
164
  continue normalizationAstLoop;
154
165
  } else {
155
166
  // TODO in __DEV__ assert linkedRecord is an object
@@ -195,13 +206,6 @@ function checkFromRecord(
195
206
 
196
207
  continue normalizationAstLoop;
197
208
  }
198
- default: {
199
- let _: never = normalizationAstNode;
200
- _;
201
- throw new Error(
202
- 'Unexpected case. This is indicative of a bug in Isograph.',
203
- );
204
- }
205
209
  }
206
210
  }
207
211
 
@@ -1,17 +1,11 @@
1
- import { useReadAndSubscribe } from '../react/useReadAndSubscribe';
2
- import {
3
- FragmentReference,
4
- stableIdForFragmentReference,
5
- } from './FragmentReference';
6
- import { IsographEnvironment } from './IsographEnvironment';
7
- import { logMessage } from './logging';
8
- import { readPromise } from './PromiseWrapper';
9
- import { NetworkRequestReaderOptions } from './read';
1
+ import type { FragmentReference } from './FragmentReference';
2
+ import { stableIdForFragmentReference } from './FragmentReference';
3
+ import type { IsographEnvironment } from './IsographEnvironment';
4
+ import type { NetworkRequestReaderOptions } from './read';
10
5
  import { createStartUpdate } from './startUpdate';
11
6
 
12
7
  export function getOrCreateCachedComponent(
13
8
  environment: IsographEnvironment,
14
- componentName: string,
15
9
  fragmentReference: FragmentReference<any, any>,
16
10
  networkRequestOptions: NetworkRequestReaderOptions,
17
11
  ): React.FC<any> {
@@ -23,38 +17,11 @@ export function getOrCreateCachedComponent(
23
17
  );
24
18
 
25
19
  return (environment.componentCache[
26
- stableIdForFragmentReference(fragmentReference, componentName)
27
- ] ??= (() => {
28
- function Component(additionalRuntimeProps: { [key: string]: any }) {
29
- const readerWithRefetchQueries = readPromise(
30
- fragmentReference.readerWithRefetchQueries,
31
- );
32
-
33
- const data = useReadAndSubscribe(
34
- fragmentReference,
35
- networkRequestOptions,
36
- readerWithRefetchQueries.readerArtifact.readerAst,
37
- );
38
-
39
- logMessage(environment, () => ({
40
- kind: 'ComponentRerendered',
41
- componentName,
42
- rootLink: fragmentReference.root,
43
- }));
44
-
45
- return readerWithRefetchQueries.readerArtifact.resolver(
46
- {
47
- data,
48
- parameters: fragmentReference.variables,
49
- startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
50
- ? startUpdate
51
- : undefined,
52
- },
53
- additionalRuntimeProps,
54
- );
55
- }
56
- const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
57
- Component.displayName = `${componentName} ${idString} @component`;
58
- return Component;
59
- })());
20
+ stableIdForFragmentReference(fragmentReference)
21
+ ] ??= environment.componentFunction(
22
+ environment,
23
+ fragmentReference,
24
+ networkRequestOptions,
25
+ startUpdate,
26
+ ));
60
27
  }
@@ -1,7 +1,12 @@
1
- import type { UnknownTReadFromStore } from './FragmentReference';
2
- import type { TypeName } from './IsographEnvironment';
3
- import { TopLevelReaderArtifact } from './reader';
4
- import { Arguments } from './util';
1
+ import type { Contravariant, PhantomData } from './brand';
2
+ import type { NetworkResponseObject } from './cache';
3
+ import type {
4
+ FragmentReference,
5
+ UnknownTReadFromStore,
6
+ } from './FragmentReference';
7
+ import type { ComponentOrFieldName, TypeName } from './IsographEnvironment';
8
+ import type { TopLevelReaderArtifact } from './reader';
9
+ import type { Arguments } from './util';
5
10
 
6
11
  export type ReaderWithRefetchQueries<
7
12
  TReadFromStore extends UnknownTReadFromStore,
@@ -22,6 +27,10 @@ export type ReaderWithRefetchQueriesLoader<
22
27
  TClientFieldValue,
23
28
  > = {
24
29
  readonly kind: 'ReaderWithRefetchQueriesLoader';
30
+ readonly fieldName: ComponentOrFieldName;
31
+ readonly readerArtifactKind:
32
+ | 'EagerReaderArtifact'
33
+ | 'ComponentReaderArtifact';
25
34
  readonly loader: () => Promise<
26
35
  ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
27
36
  >;
@@ -55,6 +64,7 @@ export type IsographEntrypoint<
55
64
  TReadFromStore extends UnknownTReadFromStore,
56
65
  TClientFieldValue,
57
66
  TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
67
+ TRawResponseType extends NetworkResponseObject,
58
68
  > = {
59
69
  readonly kind: 'Entrypoint';
60
70
  readonly networkRequestInfo: NetworkRequestInfo<TNormalizationAst>;
@@ -62,16 +72,36 @@ export type IsographEntrypoint<
62
72
  | ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
63
73
  | ReaderWithRefetchQueriesLoader<TReadFromStore, TClientFieldValue>;
64
74
  readonly concreteType: TypeName;
75
+ /**
76
+ * This field exists solely for typechecking, and will not exist at runtime.
77
+ */
78
+ readonly '~TRawResponseType'?: PhantomData<Contravariant<TRawResponseType>>;
65
79
  };
66
80
 
81
+ export type FragmentReferenceOfEntrypoint<
82
+ TEntrypoint extends IsographEntrypoint<any, any, any, any>,
83
+ > = FragmentReference<
84
+ ExtractReadFromStore<TEntrypoint>,
85
+ ExtractClientFieldValue<TEntrypoint>
86
+ >;
87
+
67
88
  export type IsographEntrypointLoader<
68
89
  TReadFromStore extends UnknownTReadFromStore,
69
90
  TClientFieldValue,
91
+ TRawResponseType extends NetworkResponseObject,
70
92
  > = {
71
93
  readonly kind: 'EntrypointLoader';
72
94
  readonly typeAndField: string;
95
+ readonly readerArtifactKind:
96
+ | 'EagerReaderArtifact'
97
+ | 'ComponentReaderArtifact';
73
98
  readonly loader: () => Promise<
74
- IsographEntrypoint<TReadFromStore, TClientFieldValue, NormalizationAst>
99
+ IsographEntrypoint<
100
+ TReadFromStore,
101
+ TClientFieldValue,
102
+ NormalizationAst,
103
+ TRawResponseType
104
+ >
75
105
  >;
76
106
  };
77
107
 
@@ -129,9 +159,15 @@ export function assertIsEntrypoint<
129
159
  TReadFromStore extends UnknownTReadFromStore,
130
160
  TClientFieldValue,
131
161
  TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
162
+ TRawResponseType extends NetworkResponseObject,
132
163
  >(
133
164
  value:
134
- | IsographEntrypoint<TReadFromStore, TClientFieldValue, TNormalizationAst>
165
+ | IsographEntrypoint<
166
+ TReadFromStore,
167
+ TClientFieldValue,
168
+ TNormalizationAst,
169
+ TRawResponseType
170
+ >
135
171
  | ((_: any) => any)
136
172
  // Temporarily, allow any here. Once we automatically provide
137
173
  // types to entrypoints, we probably don't need this.
@@ -139,13 +175,18 @@ export function assertIsEntrypoint<
139
175
  ): asserts value is IsographEntrypoint<
140
176
  TReadFromStore,
141
177
  TClientFieldValue,
142
- TNormalizationAst
178
+ TNormalizationAst,
179
+ TRawResponseType
143
180
  > {
144
181
  if (typeof value === 'function') throw new Error('Not a string');
145
182
  }
146
183
 
147
184
  export type ExtractReadFromStore<Type> =
148
- Type extends IsographEntrypoint<infer X, any, any> ? X : never;
185
+ Type extends IsographEntrypoint<infer X, any, any, any> ? X : never;
186
+ export type ExtractClientFieldValue<Type> =
187
+ Type extends IsographEntrypoint<any, infer X, any, any> ? X : never;
188
+ export type ExtractRawResponseType<Type> =
189
+ Type extends IsographEntrypoint<any, any, any, infer X> ? X : never;
149
190
  export type ExtractResolverResult<Type> =
150
- Type extends IsographEntrypoint<any, infer X, any> ? X : never;
191
+ Type extends IsographEntrypoint<any, infer X, any, any> ? X : never;
151
192
  export type ExtractProps<Type> = Type extends React.FC<infer X> ? X : never;
@@ -1,22 +1,41 @@
1
- import { getParentRecordKey } from './cache';
2
- import { NormalizationAstNodes } from './entrypoint';
3
- import { Variables } from './FragmentReference';
1
+ import { getParentRecordKey, TYPENAME_FIELD_NAME } from './cache';
2
+ import type { NormalizationAstNodes, NormalizationAst } from './entrypoint';
3
+ import type { Variables } from './FragmentReference';
4
4
  import {
5
5
  assertLink,
6
- DataId,
7
- IsographEnvironment,
8
- IsographStore,
9
- StoreRecord,
6
+ type DataId,
7
+ type IsographEnvironment,
8
+ type StoreRecord,
9
+ type StoreLayerData,
10
10
  type StoreLink,
11
11
  type TypeName,
12
12
  } from './IsographEnvironment';
13
+ import type { BaseStoreLayer } from './optimisticProxy';
14
+ import {
15
+ NOT_SET,
16
+ type PromiseWrapper,
17
+ type PromiseWrapperOk,
18
+ } from './PromiseWrapper';
13
19
 
14
20
  export type RetainedQuery = {
15
- readonly normalizationAst: NormalizationAstNodes;
21
+ readonly normalizationAst: PromiseWrapper<NormalizationAst>;
16
22
  readonly variables: {};
17
23
  readonly root: StoreLink;
18
24
  };
19
25
 
26
+ export interface RetainedQueryWithNormalizationAst extends RetainedQuery {
27
+ readonly normalizationAst: PromiseWrapperOk<NormalizationAst>;
28
+ }
29
+
30
+ function isRetainedQueryWithNormalizationAst(
31
+ query: RetainedQuery,
32
+ ): query is RetainedQueryWithNormalizationAst {
33
+ return (
34
+ query.normalizationAst.result !== NOT_SET &&
35
+ query.normalizationAst.result.kind === 'Ok'
36
+ );
37
+ }
38
+
20
39
  export type DidUnretainSomeQuery = boolean;
21
40
  export function unretainQuery(
22
41
  environment: IsographEnvironment,
@@ -44,23 +63,46 @@ export function retainQuery(
44
63
  }
45
64
 
46
65
  export function garbageCollectEnvironment(environment: IsographEnvironment) {
47
- const retainedIds: RetainedIds = {};
66
+ if (environment.store.kind !== 'BaseStoreLayer') {
67
+ return;
68
+ }
48
69
 
70
+ const retainedQueries: RetainedQueryWithNormalizationAst[] = [];
49
71
  for (const query of environment.retainedQueries) {
50
- recordReachableIds(environment.store, query, retainedIds);
72
+ if (!isRetainedQueryWithNormalizationAst(query)) {
73
+ return;
74
+ }
75
+ retainedQueries.push(query);
51
76
  }
77
+
52
78
  for (const query of environment.gcBuffer) {
53
- recordReachableIds(environment.store, query, retainedIds);
79
+ if (!isRetainedQueryWithNormalizationAst(query)) {
80
+ return;
81
+ }
82
+ retainedQueries.push(query);
54
83
  }
55
84
 
56
- for (const typeName in environment.store) {
57
- const dataById = environment.store[typeName];
85
+ garbageCollectBaseStoreLayer(retainedQueries, environment.store);
86
+ }
87
+
88
+ export function garbageCollectBaseStoreLayer(
89
+ retainedQueries: RetainedQueryWithNormalizationAst[],
90
+ baseStoreLayer: BaseStoreLayer,
91
+ ) {
92
+ const retainedIds: RetainedIds = {};
93
+
94
+ for (const query of retainedQueries) {
95
+ recordReachableIds(baseStoreLayer.data, query, retainedIds);
96
+ }
97
+
98
+ for (const typeName in baseStoreLayer.data) {
99
+ const dataById = baseStoreLayer.data[typeName];
58
100
  if (dataById == null) continue;
59
101
  const retainedTypeIds = retainedIds[typeName];
60
102
 
61
103
  // delete all objects
62
- if (retainedTypeIds == undefined || retainedTypeIds.size == 0) {
63
- delete environment.store[typeName];
104
+ if (retainedTypeIds === undefined || retainedTypeIds.size === 0) {
105
+ delete baseStoreLayer.data[typeName];
64
106
  continue;
65
107
  }
66
108
 
@@ -71,7 +113,7 @@ export function garbageCollectEnvironment(environment: IsographEnvironment) {
71
113
  }
72
114
 
73
115
  if (Object.keys(dataById).length === 0) {
74
- delete environment.store[typeName];
116
+ delete baseStoreLayer.data[typeName];
75
117
  }
76
118
  }
77
119
  }
@@ -81,31 +123,31 @@ interface RetainedIds {
81
123
  }
82
124
 
83
125
  function recordReachableIds(
84
- store: IsographStore,
85
- retainedQuery: RetainedQuery,
126
+ dataLayer: StoreLayerData,
127
+ retainedQuery: RetainedQueryWithNormalizationAst,
86
128
  mutableRetainedIds: RetainedIds,
87
129
  ) {
88
130
  const record =
89
- store[retainedQuery.root.__typename]?.[retainedQuery.root.__link];
131
+ dataLayer[retainedQuery.root.__typename]?.[retainedQuery.root.__link];
90
132
 
91
133
  const retainedRecordsIds = (mutableRetainedIds[
92
134
  retainedQuery.root.__typename
93
135
  ] ??= new Set());
94
136
  retainedRecordsIds.add(retainedQuery.root.__link);
95
137
 
96
- if (record) {
138
+ if (record != null) {
97
139
  recordReachableIdsFromRecord(
98
- store,
140
+ dataLayer,
99
141
  record,
100
142
  mutableRetainedIds,
101
- retainedQuery.normalizationAst,
143
+ retainedQuery.normalizationAst.result.value.selections,
102
144
  retainedQuery.variables,
103
145
  );
104
146
  }
105
147
  }
106
148
 
107
149
  function recordReachableIdsFromRecord(
108
- store: IsographStore,
150
+ dataLayer: StoreLayerData,
109
151
  currentRecord: StoreRecord,
110
152
  mutableRetainedIds: RetainedIds,
111
153
  selections: NormalizationAstNodes,
@@ -113,6 +155,17 @@ function recordReachableIdsFromRecord(
113
155
  ) {
114
156
  for (const selection of selections) {
115
157
  switch (selection.kind) {
158
+ case 'InlineFragment':
159
+ if (currentRecord[TYPENAME_FIELD_NAME] === selection.type) {
160
+ recordReachableIdsFromRecord(
161
+ dataLayer,
162
+ currentRecord,
163
+ mutableRetainedIds,
164
+ selection.selections,
165
+ variables,
166
+ );
167
+ }
168
+ continue;
116
169
  case 'Linked':
117
170
  const linkKey = getParentRecordKey(selection, variables ?? {});
118
171
  const linkedFieldOrFields = currentRecord[linkKey];
@@ -133,18 +186,18 @@ function recordReachableIdsFromRecord(
133
186
  }
134
187
 
135
188
  let typeStore =
136
- selection.concreteType !== null
137
- ? store[selection.concreteType]
189
+ selection.concreteType != null
190
+ ? dataLayer[selection.concreteType]
138
191
  : null;
139
192
 
140
- if (typeStore == null && selection.concreteType !== null) {
193
+ if (typeStore == null && selection.concreteType != null) {
141
194
  continue;
142
195
  }
143
196
 
144
197
  for (const nextRecordLink of links) {
145
198
  let __typename = nextRecordLink.__typename;
146
199
 
147
- const resolvedTypeStore = typeStore ?? store[__typename];
200
+ const resolvedTypeStore = typeStore ?? dataLayer[__typename];
148
201
 
149
202
  if (resolvedTypeStore == null) {
150
203
  continue;
@@ -156,7 +209,7 @@ function recordReachableIdsFromRecord(
156
209
  new Set());
157
210
  retainedRecordsIds.add(nextRecordLink.__link);
158
211
  recordReachableIdsFromRecord(
159
- store,
212
+ dataLayer,
160
213
  nextRecord,
161
214
  mutableRetainedIds,
162
215
  selection.selections,
@@ -0,0 +1,86 @@
1
+ import type { ItemCleanupPair } from '@isograph/isograph-disposable-types/dist';
2
+ import type { ParentCache } from '@isograph/isograph-react-disposable-state/dist';
3
+ import {
4
+ type NetworkResponseObject,
5
+ getOrCreateItemInSuspenseCache,
6
+ } from './cache';
7
+ import type { FetchOptions } from './check';
8
+ import type {
9
+ IsographEntrypoint,
10
+ NormalizationAst,
11
+ NormalizationAstLoader,
12
+ } from './entrypoint';
13
+ import type {
14
+ ExtractParameters,
15
+ FragmentReference,
16
+ UnknownTReadFromStore,
17
+ } from './FragmentReference';
18
+ import {
19
+ type IsographEnvironment,
20
+ getOrLoadReaderWithRefetchQueries,
21
+ ROOT_ID,
22
+ } from './IsographEnvironment';
23
+ import { maybeMakeNetworkRequest } from './makeNetworkRequest';
24
+ import { stableCopy } from './util';
25
+
26
+ export function getOrCreateCacheForArtifact<
27
+ TReadFromStore extends UnknownTReadFromStore,
28
+ TClientFieldValue,
29
+ TNormalizationAst extends NormalizationAst | NormalizationAstLoader,
30
+ TRawResponseType extends NetworkResponseObject,
31
+ >(
32
+ environment: IsographEnvironment,
33
+ entrypoint: IsographEntrypoint<
34
+ TReadFromStore,
35
+ TClientFieldValue,
36
+ TNormalizationAst,
37
+ TRawResponseType
38
+ >,
39
+ variables: ExtractParameters<TReadFromStore>,
40
+ fetchOptions?: FetchOptions<TClientFieldValue, TRawResponseType>,
41
+ ): ParentCache<FragmentReference<TReadFromStore, TClientFieldValue>> {
42
+ let cacheKey = '';
43
+ switch (entrypoint.networkRequestInfo.operation.kind) {
44
+ case 'Operation':
45
+ cacheKey =
46
+ entrypoint.networkRequestInfo.operation.text +
47
+ JSON.stringify(stableCopy(variables));
48
+ break;
49
+ case 'PersistedOperation':
50
+ cacheKey =
51
+ entrypoint.networkRequestInfo.operation.operationId +
52
+ JSON.stringify(stableCopy(variables));
53
+ break;
54
+ }
55
+ const factory = () => {
56
+ const { fieldName, readerArtifactKind, readerWithRefetchQueries } =
57
+ getOrLoadReaderWithRefetchQueries(
58
+ environment,
59
+ entrypoint.readerWithRefetchQueries,
60
+ );
61
+ const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(
62
+ environment,
63
+ entrypoint,
64
+ variables,
65
+ readerWithRefetchQueries,
66
+ fetchOptions ?? null,
67
+ );
68
+
69
+ const itemCleanupPair: ItemCleanupPair<
70
+ FragmentReference<TReadFromStore, TClientFieldValue>
71
+ > = [
72
+ {
73
+ kind: 'FragmentReference',
74
+ readerWithRefetchQueries,
75
+ fieldName,
76
+ readerArtifactKind,
77
+ root: { __link: ROOT_ID, __typename: entrypoint.concreteType },
78
+ variables,
79
+ networkRequest: networkRequest,
80
+ },
81
+ disposeNetworkRequest,
82
+ ];
83
+ return itemCleanupPair;
84
+ };
85
+ return getOrCreateItemInSuspenseCache(environment, cacheKey, factory);
86
+ }
@@ -1,21 +1,33 @@
1
- import { CleanupFn } from '@isograph/disposable-types';
2
- import { NetworkResponseObject, type EncounteredIds } from './cache';
3
- import { CheckResult } from './check';
4
- import {
1
+ import type { CleanupFn } from '@isograph/disposable-types';
2
+ import type { NetworkResponseObject, EncounteredIds } from './cache';
3
+ import type { CheckResult } from './check';
4
+ import type {
5
5
  IsographEntrypoint,
6
6
  RefetchQueryNormalizationArtifact,
7
- type NormalizationAstNodes,
7
+ NormalizationAstNodes,
8
8
  } from './entrypoint';
9
- import { FragmentReference, Variables } from './FragmentReference';
10
- import {
9
+ import type { FragmentReference, Variables } from './FragmentReference';
10
+ import type {
11
11
  IsographEnvironment,
12
- IsographStore,
13
12
  StoreRecord,
14
- type StoreLink,
13
+ StoreLink,
15
14
  } from './IsographEnvironment';
16
- import { ReadDataResult } from './read';
17
- import { Arguments } from './util';
15
+ import type { ReadDataResult } from './read';
16
+ import type { Arguments } from './util';
17
+ import type { StoreLayer } from './optimisticProxy';
18
18
 
19
+ /**
20
+ * Note: these types are unstable. We will add and remove items from this enum
21
+ * and add and remove fields. Please do not rely on the specifics here (for now).
22
+ *
23
+ * Goals include:
24
+ * - convenient debugging for Isograph developers
25
+ * - eventual support for the Isograph devtools
26
+ *
27
+ * In some cases (e.g. in `AfterNormalization`), we include large objects and thus
28
+ * prevent them from getting garbage collected (if the log message is printed).
29
+ * Especially in cases like that, we intend to remove those!
30
+ */
19
31
  export type LogMessage =
20
32
  | {
21
33
  kind: 'AboutToNormalize';
@@ -25,7 +37,7 @@ export type LogMessage =
25
37
  }
26
38
  | {
27
39
  kind: 'AfterNormalization';
28
- store: IsographStore;
40
+ store: StoreLayer;
29
41
  encounteredIds: EncounteredIds;
30
42
  }
31
43
  | {
@@ -44,7 +56,7 @@ export type LogMessage =
44
56
  kind: 'MakeNetworkRequest';
45
57
  artifact:
46
58
  | RefetchQueryNormalizationArtifact
47
- | IsographEntrypoint<any, any, any>;
59
+ | IsographEntrypoint<any, any, any, any>;
48
60
  variables: Variables;
49
61
  networkRequestId: string;
50
62
  }