@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
@@ -0,0 +1,20 @@
1
+ import { ReaderAst } from "../core/reader.mjs";
2
+ import { NetworkRequestReaderOptions, WithEncounteredRecords } from "../core/read.mjs";
3
+ import "../core/IsographEnvironment.mjs";
4
+ import { ExtractData, FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.mjs";
5
+
6
+ //#region src/react/useReadAndSubscribe.d.ts
7
+
8
+ /**
9
+ * Read the data from a fragment reference and subscribe to updates.
10
+ */
11
+ declare function useReadAndSubscribe<TReadFromStore extends UnknownTReadFromStore>(fragmentReference: FragmentReference<TReadFromStore, any>, networkRequestOptions: NetworkRequestReaderOptions, readerAst: ReaderAst<TReadFromStore>): ExtractData<TReadFromStore>;
12
+ declare function useSubscribeToMultiple<TReadFromStore extends UnknownTReadFromStore>(items: ReadonlyArray<{
13
+ records: WithEncounteredRecords<TReadFromStore>;
14
+ callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;
15
+ fragmentReference: FragmentReference<TReadFromStore, any>;
16
+ readerAst: ReaderAst<TReadFromStore>;
17
+ }>): void;
18
+ //#endregion
19
+ export { useReadAndSubscribe, useSubscribeToMultiple };
20
+ //# sourceMappingURL=useReadAndSubscribe.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReadAndSubscribe.d.mts","names":[],"sources":["../../src/react/useReadAndSubscribe.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAwBA;AACyB,iBADT,mBACS,CAAA,uBAAA,qBAAA,CAAA,CAAA,iBAAA,EAEJ,iBAFI,CAEc,cAFd,EAAA,GAAA,CAAA,EAAA,qBAAA,EAGA,2BAHA,EAAA,SAAA,EAIZ,SAJY,CAIF,cAJE,CAAA,CAAA,EAKtB,WALsB,CAKV,cALU,CAAA;AAEc,iBAiBvB,sBAjBuB,CAAA,uBAkBd,qBAlBc,CAAA,CAAA,KAAA,EAoB9B,aApB8B,CAAA;EAAlB,OAAA,EAqBR,sBArBQ,CAqBe,cArBf,CAAA;EACI,QAAA,EAAA,CAAA,cAAA,EAqBM,sBArBN,CAqB6B,cArB7B,CAAA,EAAA,GAAA,IAAA;EACF,iBAAA,EAqBA,iBArBA,CAqBkB,cArBlB,EAAA,GAAA,CAAA;EAAV,SAAA,EAsBE,SAtBF,CAsBY,cAtBZ,CAAA;CACE,CAAA,CAAA,EAAA,IAAA"}
@@ -1,14 +1,19 @@
1
- import { ExtractData, FragmentReference, type UnknownTReadFromStore } from '../core/FragmentReference';
2
- import { NetworkRequestReaderOptions, WithEncounteredRecords } from '../core/read';
3
- import type { ReaderAst } from '../core/reader';
1
+ import { ReaderAst } from "../core/reader.js";
2
+ import { NetworkRequestReaderOptions, WithEncounteredRecords } from "../core/read.js";
3
+ import { ExtractData, FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.js";
4
+
5
+ //#region src/react/useReadAndSubscribe.d.ts
6
+
4
7
  /**
5
8
  * Read the data from a fragment reference and subscribe to updates.
6
9
  */
7
- export declare function useReadAndSubscribe<TReadFromStore extends UnknownTReadFromStore>(fragmentReference: FragmentReference<TReadFromStore, any>, networkRequestOptions: NetworkRequestReaderOptions, readerAst: ReaderAst<TReadFromStore>): ExtractData<TReadFromStore>;
8
- export declare function useSubscribeToMultiple<TReadFromStore extends UnknownTReadFromStore>(items: ReadonlyArray<{
9
- records: WithEncounteredRecords<TReadFromStore>;
10
- callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;
11
- fragmentReference: FragmentReference<TReadFromStore, any>;
12
- readerAst: ReaderAst<TReadFromStore>;
10
+ declare function useReadAndSubscribe<TReadFromStore extends UnknownTReadFromStore>(fragmentReference: FragmentReference<TReadFromStore, any>, networkRequestOptions: NetworkRequestReaderOptions, readerAst: ReaderAst<TReadFromStore>): ExtractData<TReadFromStore>;
11
+ declare function useSubscribeToMultiple<TReadFromStore extends UnknownTReadFromStore>(items: ReadonlyArray<{
12
+ records: WithEncounteredRecords<TReadFromStore>;
13
+ callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;
14
+ fragmentReference: FragmentReference<TReadFromStore, any>;
15
+ readerAst: ReaderAst<TReadFromStore>;
13
16
  }>): void;
17
+ //#endregion
18
+ export { useReadAndSubscribe, useSubscribeToMultiple };
14
19
  //# sourceMappingURL=useReadAndSubscribe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useReadAndSubscribe.d.ts","sourceRoot":"","sources":["../../src/react/useReadAndSubscribe.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,iBAAiB,EAEjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,2BAA2B,EAE3B,sBAAsB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,SAAS,qBAAqB,EAE5C,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,EACzD,qBAAqB,EAAE,2BAA2B,EAClD,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,GACnC,WAAW,CAAC,cAAc,CAAC,CAY7B;AAED,wBAAgB,sBAAsB,CACpC,cAAc,SAAS,qBAAqB,EAE5C,KAAK,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,CAAC,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC3E,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1D,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CACtC,CAAC,QAuCH"}
1
+ {"version":3,"file":"useReadAndSubscribe.d.ts","names":[],"sources":["../../src/react/useReadAndSubscribe.ts"],"sourcesContent":[],"mappings":";;;;;;;AAwBA;;AAGuC,iBAHvB,mBAGuB,CAAA,uBAFd,qBAEc,CAAA,CAAA,iBAAA,EAAlB,iBAAkB,CAAA,cAAA,EAAA,GAAA,CAAA,EAAA,qBAAA,EACd,2BADc,EAAA,SAAA,EAE1B,SAF0B,CAEhB,cAFgB,CAAA,CAAA,EAGpC,WAHoC,CAGxB,cAHwB,CAAA;AAAlB,iBAiBL,sBAjBK,CAAA,uBAkBI,qBAlBJ,CAAA,CAAA,KAAA,EAoBZ,aApBY,CAAA;EACI,OAAA,EAoBZ,sBApBY,CAoBW,cApBX,CAAA;EACF,QAAA,EAAA,CAAA,cAAA,EAoBQ,sBApBR,CAoB+B,cApB/B,CAAA,EAAA,GAAA,IAAA;EAAV,iBAAA,EAqBU,iBArBV,CAqB4B,cArB5B,EAAA,GAAA,CAAA;EACE,SAAA,EAqBA,SArBA,CAqBU,cArBV,CAAA;CAAZ,CAAA,CAAA,EAAA,IAAA"}
@@ -1,44 +1,62 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useReadAndSubscribe = useReadAndSubscribe;
4
- exports.useSubscribeToMultiple = useSubscribeToMultiple;
5
- const react_1 = require("react");
6
- const cache_1 = require("../core/cache");
7
- const FragmentReference_1 = require("../core/FragmentReference");
8
- const PromiseWrapper_1 = require("../core/PromiseWrapper");
9
- const read_1 = require("../core/read");
10
- const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
11
- const useRerenderOnChange_1 = require("./useRerenderOnChange");
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
2
+ const require_PromiseWrapper = require('../core/PromiseWrapper.js');
3
+ const require_logging = require('../core/logging.js');
4
+ const require_FragmentReference = require('../core/FragmentReference.js');
5
+ const require_read = require('../core/read.js');
6
+ const require_subscribe = require('../core/subscribe.js');
7
+ const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.js');
8
+ const require_maybeUnwrapNetworkRequest = require('./maybeUnwrapNetworkRequest.js');
9
+ const require_useRerenderOnChange = require('./useRerenderOnChange.js');
10
+ let react = require("react");
11
+ react = require_rolldown_runtime.__toESM(react);
12
+
13
+ //#region src/react/useReadAndSubscribe.ts
12
14
  /**
13
- * Read the data from a fragment reference and subscribe to updates.
14
- */
15
+ * Read the data from a fragment reference and subscribe to updates.
16
+ */
15
17
  function useReadAndSubscribe(fragmentReference, networkRequestOptions, readerAst) {
16
- const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
17
- const [readOutDataAndRecords, setReadOutDataAndRecords] = (0, react_1.useState)(() => (0, read_1.readButDoNotEvaluate)(environment, fragmentReference, networkRequestOptions));
18
- (0, useRerenderOnChange_1.useRerenderOnChange)(readOutDataAndRecords, fragmentReference, setReadOutDataAndRecords, readerAst);
19
- return readOutDataAndRecords.item;
18
+ const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
19
+ const [readOutDataAndRecords, setReadOutDataAndRecords] = (0, react.useState)(() => require_read.readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions));
20
+ require_useRerenderOnChange.useRerenderOnChange(readOutDataAndRecords, fragmentReference, setReadOutDataAndRecords, readerAst);
21
+ return readOutDataAndRecords.item;
20
22
  }
21
23
  function useSubscribeToMultiple(items) {
22
- const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
23
- (0, react_1.useEffect)(() => {
24
- const cleanupFns = items.map(({ records, callback, fragmentReference, readerAst }) => {
25
- return (0, cache_1.subscribe)(environment, records, fragmentReference, callback, readerAst);
26
- });
27
- return () => {
28
- cleanupFns.forEach((loader) => {
29
- loader();
30
- });
31
- };
32
- },
33
- // By analogy to useReadAndSubscribe, we can have an empty dependency array?
34
- // Maybe callback has to be depended on. I don't know!
35
- // TODO find out
36
- [
37
- items
38
- .map(({ fragmentReference }) => {
39
- const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
40
- (0, FragmentReference_1.stableIdForFragmentReference)(fragmentReference, readerWithRefetchQueries.readerArtifact.fieldName);
41
- })
42
- .join('.'),
43
- ]);
24
+ const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
25
+ (0, react.useEffect)(() => {
26
+ const cleanupFns = items.map(({ records, callback, fragmentReference, readerAst }) => {
27
+ return require_subscribe.subscribe(environment, records, fragmentReference, callback, readerAst);
28
+ });
29
+ return () => {
30
+ cleanupFns.forEach((loader) => {
31
+ loader();
32
+ });
33
+ };
34
+ }, [items.map(({ fragmentReference }) => {
35
+ require_FragmentReference.stableIdForFragmentReference(fragmentReference);
36
+ }).join(".")]);
44
37
  }
38
+ const componentFunction = (environment, fragmentReference, networkRequestOptions, startUpdate) => {
39
+ function Component(additionalRuntimeProps) {
40
+ require_maybeUnwrapNetworkRequest.maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
41
+ const readerWithRefetchQueries = require_PromiseWrapper.readPromise(fragmentReference.readerWithRefetchQueries);
42
+ const data = useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
43
+ require_logging.logMessage(environment, () => ({
44
+ kind: "ComponentRerendered",
45
+ componentName: fragmentReference.fieldName,
46
+ rootLink: fragmentReference.root
47
+ }));
48
+ return readerWithRefetchQueries.readerArtifact.resolver({
49
+ data,
50
+ parameters: fragmentReference.variables,
51
+ startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable ? startUpdate : void 0
52
+ }, additionalRuntimeProps);
53
+ }
54
+ const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
55
+ Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
56
+ return Component;
57
+ };
58
+
59
+ //#endregion
60
+ exports.componentFunction = componentFunction;
61
+ exports.useReadAndSubscribe = useReadAndSubscribe;
62
+ exports.useSubscribeToMultiple = useSubscribeToMultiple;
@@ -0,0 +1,59 @@
1
+ import { readPromise } from "../core/PromiseWrapper.mjs";
2
+ import { logMessage } from "../core/logging.mjs";
3
+ import { stableIdForFragmentReference } from "../core/FragmentReference.mjs";
4
+ import { readButDoNotEvaluate } from "../core/read.mjs";
5
+ import { subscribe } from "../core/subscribe.mjs";
6
+ import { useIsographEnvironment } from "./IsographEnvironmentProvider.mjs";
7
+ import { maybeUnwrapNetworkRequest } from "./maybeUnwrapNetworkRequest.mjs";
8
+ import { useRerenderOnChange } from "./useRerenderOnChange.mjs";
9
+ import { useEffect, useState } from "react";
10
+
11
+ //#region src/react/useReadAndSubscribe.ts
12
+ /**
13
+ * Read the data from a fragment reference and subscribe to updates.
14
+ */
15
+ function useReadAndSubscribe(fragmentReference, networkRequestOptions, readerAst) {
16
+ const environment = useIsographEnvironment();
17
+ const [readOutDataAndRecords, setReadOutDataAndRecords] = useState(() => readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions));
18
+ useRerenderOnChange(readOutDataAndRecords, fragmentReference, setReadOutDataAndRecords, readerAst);
19
+ return readOutDataAndRecords.item;
20
+ }
21
+ function useSubscribeToMultiple(items) {
22
+ const environment = useIsographEnvironment();
23
+ useEffect(() => {
24
+ const cleanupFns = items.map(({ records, callback, fragmentReference, readerAst }) => {
25
+ return subscribe(environment, records, fragmentReference, callback, readerAst);
26
+ });
27
+ return () => {
28
+ cleanupFns.forEach((loader) => {
29
+ loader();
30
+ });
31
+ };
32
+ }, [items.map(({ fragmentReference }) => {
33
+ stableIdForFragmentReference(fragmentReference);
34
+ }).join(".")]);
35
+ }
36
+ const componentFunction = (environment, fragmentReference, networkRequestOptions, startUpdate) => {
37
+ function Component(additionalRuntimeProps) {
38
+ maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
39
+ const readerWithRefetchQueries = readPromise(fragmentReference.readerWithRefetchQueries);
40
+ const data = useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
41
+ logMessage(environment, () => ({
42
+ kind: "ComponentRerendered",
43
+ componentName: fragmentReference.fieldName,
44
+ rootLink: fragmentReference.root
45
+ }));
46
+ return readerWithRefetchQueries.readerArtifact.resolver({
47
+ data,
48
+ parameters: fragmentReference.variables,
49
+ startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable ? startUpdate : void 0
50
+ }, additionalRuntimeProps);
51
+ }
52
+ const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
53
+ Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
54
+ return Component;
55
+ };
56
+
57
+ //#endregion
58
+ export { componentFunction, useReadAndSubscribe, useSubscribeToMultiple };
59
+ //# sourceMappingURL=useReadAndSubscribe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReadAndSubscribe.mjs","names":["componentFunction: IsographComponentFunction"],"sources":["../../src/react/useReadAndSubscribe.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport {\n type ExtractData,\n type FragmentReference,\n stableIdForFragmentReference,\n type UnknownTReadFromStore,\n} from '../core/FragmentReference';\nimport type { IsographComponentFunction } from '../core/IsographEnvironment';\nimport { logMessage } from '../core/logging';\nimport { readPromise } from '../core/PromiseWrapper';\nimport {\n type NetworkRequestReaderOptions,\n readButDoNotEvaluate,\n type WithEncounteredRecords,\n} from '../core/read';\nimport type { ReaderAst } from '../core/reader';\nimport { subscribe } from '../core/subscribe';\nimport { useIsographEnvironment } from './IsographEnvironmentProvider';\nimport { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';\nimport { useRerenderOnChange } from './useRerenderOnChange';\n\n/**\n * Read the data from a fragment reference and subscribe to updates.\n */\nexport function useReadAndSubscribe<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n fragmentReference: FragmentReference<TReadFromStore, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n readerAst: ReaderAst<TReadFromStore>,\n): ExtractData<TReadFromStore> {\n const environment = useIsographEnvironment();\n const [readOutDataAndRecords, setReadOutDataAndRecords] = useState(() =>\n readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions),\n );\n useRerenderOnChange(\n readOutDataAndRecords,\n fragmentReference,\n setReadOutDataAndRecords,\n readerAst,\n );\n return readOutDataAndRecords.item;\n}\n\nexport function useSubscribeToMultiple<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n items: ReadonlyArray<{\n records: WithEncounteredRecords<TReadFromStore>;\n callback: (updatedRecords: WithEncounteredRecords<TReadFromStore>) => void;\n fragmentReference: FragmentReference<TReadFromStore, any>;\n readerAst: ReaderAst<TReadFromStore>;\n }>,\n) {\n const environment = useIsographEnvironment();\n useEffect(\n () => {\n const cleanupFns = items.map(\n ({ records, callback, fragmentReference, readerAst }) => {\n return subscribe(\n environment,\n records,\n fragmentReference,\n callback,\n readerAst,\n );\n },\n );\n return () => {\n cleanupFns.forEach((loader) => {\n loader();\n });\n };\n },\n // By analogy to useReadAndSubscribe, we can have an empty dependency array?\n // Maybe callback has to be depended on. I don't know!\n // TODO find out\n [\n items\n .map(({ fragmentReference }) => {\n stableIdForFragmentReference(fragmentReference);\n })\n .join('.'),\n ],\n );\n}\n\nexport const componentFunction: IsographComponentFunction = (\n environment,\n fragmentReference,\n networkRequestOptions,\n startUpdate,\n) => {\n function Component(additionalRuntimeProps: { [key: string]: any }) {\n maybeUnwrapNetworkRequest(\n fragmentReference.networkRequest,\n networkRequestOptions,\n );\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n\n const data = useReadAndSubscribe(\n fragmentReference,\n networkRequestOptions,\n readerWithRefetchQueries.readerArtifact.readerAst,\n );\n\n logMessage(environment, () => ({\n kind: 'ComponentRerendered',\n componentName: fragmentReference.fieldName,\n rootLink: fragmentReference.root,\n }));\n\n return readerWithRefetchQueries.readerArtifact.resolver(\n // @ts-expect-error\n {\n data,\n parameters: fragmentReference.variables,\n startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable\n ? startUpdate\n : undefined,\n },\n additionalRuntimeProps,\n );\n }\n const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;\n Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;\n return Component;\n};\n"],"mappings":";;;;;;;;;;;;;;AAwBA,SAAgB,oBAGd,mBACA,uBACA,WAC6B;CAC7B,MAAM,cAAc,wBAAwB;CAC5C,MAAM,CAAC,uBAAuB,4BAA4B,eACxD,qBAAqB,aAAa,mBAAmB,sBAAsB,CAC5E;AACD,qBACE,uBACA,mBACA,0BACA,UACD;AACD,QAAO,sBAAsB;;AAG/B,SAAgB,uBAGd,OAMA;CACA,MAAM,cAAc,wBAAwB;AAC5C,iBACQ;EACJ,MAAM,aAAa,MAAM,KACtB,EAAE,SAAS,UAAU,mBAAmB,gBAAgB;AACvD,UAAO,UACL,aACA,SACA,mBACA,UACA,UACD;IAEJ;AACD,eAAa;AACX,cAAW,SAAS,WAAW;AAC7B,YAAQ;KACR;;IAMN,CACE,MACG,KAAK,EAAE,wBAAwB;AAC9B,+BAA6B,kBAAkB;GAC/C,CACD,KAAK,IAAI,CACb,CACF;;AAGH,MAAaA,qBACX,aACA,mBACA,uBACA,gBACG;CACH,SAAS,UAAU,wBAAgD;AACjE,4BACE,kBAAkB,gBAClB,sBACD;EACD,MAAM,2BAA2B,YAC/B,kBAAkB,yBACnB;EAED,MAAM,OAAO,oBACX,mBACA,uBACA,yBAAyB,eAAe,UACzC;AAED,aAAW,oBAAoB;GAC7B,MAAM;GACN,eAAe,kBAAkB;GACjC,UAAU,kBAAkB;GAC7B,EAAE;AAEH,SAAO,yBAAyB,eAAe,SAE7C;GACE;GACA,YAAY,kBAAkB;GAC9B,aAAa,yBAAyB,eAAe,eACjD,cACA;GACL,EACD,uBACD;;CAEH,MAAM,WAAW,UAAU,kBAAkB,KAAK,WAAW,QAAQ,kBAAkB,KAAK,OAAO;AACnG,WAAU,cAAc,GAAG,kBAAkB,UAAU,GAAG,SAAS;AACnE,QAAO"}
@@ -0,0 +1,12 @@
1
+ import { ReaderAst } from "../core/reader.mjs";
2
+ import { WithEncounteredRecords } from "../core/read.mjs";
3
+ import { FragmentReference } from "../core/FragmentReference.mjs";
4
+
5
+ //#region src/react/useRerenderOnChange.d.ts
6
+ declare function useRerenderOnChange<TReadFromStore extends {
7
+ parameters: object;
8
+ data: object;
9
+ }>(encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<any, any>, setEncounteredDataAndRecords: (data: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): void;
10
+ //#endregion
11
+ export { useRerenderOnChange };
12
+ //# sourceMappingURL=useRerenderOnChange.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRerenderOnChange.d.mts","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"sourcesContent":[],"mappings":";;;;;iBASgB;;EAAA,IAAA,EAAA,MAAA;CAGoC,CAAA,CAAA,yBAAA,EAAvB,sBAAuB,CAAA,cAAA,CAAA,EAAA,iBAAA,EAC/B,iBAD+B,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,IAAA,EAG1C,sBAH0C,CAGnB,cAHmB,CAAA,EAAA,GAAA,IAAA,EAAA,SAAA,EAKvC,SALuC,CAK7B,cAL6B,CAAA,CAAA,EAAA,IAAA"}
@@ -1,8 +1,12 @@
1
- import { FragmentReference } from '../core/FragmentReference';
2
- import { WithEncounteredRecords } from '../core/read';
3
- import type { ReaderAst } from '../core/reader';
4
- export declare function useRerenderOnChange<TReadFromStore extends {
5
- parameters: object;
6
- data: object;
1
+ import { ReaderAst } from "../core/reader.js";
2
+ import { WithEncounteredRecords } from "../core/read.js";
3
+ import { FragmentReference } from "../core/FragmentReference.js";
4
+
5
+ //#region src/react/useRerenderOnChange.d.ts
6
+ declare function useRerenderOnChange<TReadFromStore extends {
7
+ parameters: object;
8
+ data: object;
7
9
  }>(encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>, fragmentReference: FragmentReference<any, any>, setEncounteredDataAndRecords: (data: WithEncounteredRecords<TReadFromStore>) => void, readerAst: ReaderAst<TReadFromStore>): void;
10
+ //#endregion
11
+ export { useRerenderOnChange };
8
12
  //# sourceMappingURL=useRerenderOnChange.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRerenderOnChange.d.ts","sourceRoot":"","sources":["../../src/react/useRerenderOnChange.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKhD,wBAAgB,mBAAmB,CACjC,cAAc,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAE3D,yBAAyB,EAAE,sBAAsB,CAAC,cAAc,CAAC,EACjE,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,4BAA4B,EAAE,CAC5B,IAAI,EAAE,sBAAsB,CAAC,cAAc,CAAC,KACzC,IAAI,EACT,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,QAoBrC"}
1
+ {"version":3,"file":"useRerenderOnChange.d.ts","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"sourcesContent":[],"mappings":";;;;;iBASgB;;EAAA,IAAA,EAAA,MAAA;CAGoC,CAAA,CAAA,yBAAA,EAAvB,sBAAuB,CAAA,cAAA,CAAA,EAAA,iBAAA,EAC/B,iBAD+B,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,IAAA,EAG1C,sBAH0C,CAGnB,cAHmB,CAAA,EAAA,GAAA,IAAA,EAAA,SAAA,EAKvC,SALuC,CAK7B,cAL6B,CAAA,CAAA,EAAA,IAAA"}
@@ -1,22 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useRerenderOnChange = useRerenderOnChange;
4
- const react_1 = require("react");
5
- const cache_1 = require("../core/cache");
6
- const IsographEnvironmentProvider_1 = require("./IsographEnvironmentProvider");
7
- // TODO add unit tests for this. Add integration tests that test
8
- // behavior when the encounteredRecords underneath a fragment change.
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.js');
2
+ const require_subscribe = require('../core/subscribe.js');
3
+ const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.js');
4
+ let react = require("react");
5
+ react = require_rolldown_runtime.__toESM(react);
6
+
7
+ //#region src/react/useRerenderOnChange.ts
9
8
  function useRerenderOnChange(encounteredDataAndRecords, fragmentReference, setEncounteredDataAndRecords, readerAst) {
10
- const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
11
- (0, react_1.useEffect)(() => {
12
- return (0, cache_1.subscribe)(environment, encounteredDataAndRecords, fragmentReference, (newEncounteredDataAndRecords) => {
13
- setEncounteredDataAndRecords(newEncounteredDataAndRecords);
14
- }, readerAst);
15
- // Note: this is an empty array on purpose:
16
- // - the fragment reference is stable for the life of the component
17
- // - ownership of encounteredDataAndRecords is transferred into the
18
- // environment
19
- // - though maybe we need to include setEncounteredDataAndRecords in
20
- // the dependency array
21
- }, []);
9
+ const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
10
+ (0, react.useEffect)(() => {
11
+ return require_subscribe.subscribe(environment, encounteredDataAndRecords, fragmentReference, (newEncounteredDataAndRecords) => {
12
+ setEncounteredDataAndRecords(newEncounteredDataAndRecords);
13
+ }, readerAst);
14
+ }, []);
22
15
  }
16
+
17
+ //#endregion
18
+ exports.useRerenderOnChange = useRerenderOnChange;
@@ -0,0 +1,17 @@
1
+ import { subscribe } from "../core/subscribe.mjs";
2
+ import { useIsographEnvironment } from "./IsographEnvironmentProvider.mjs";
3
+ import { useEffect } from "react";
4
+
5
+ //#region src/react/useRerenderOnChange.ts
6
+ function useRerenderOnChange(encounteredDataAndRecords, fragmentReference, setEncounteredDataAndRecords, readerAst) {
7
+ const environment = useIsographEnvironment();
8
+ useEffect(() => {
9
+ return subscribe(environment, encounteredDataAndRecords, fragmentReference, (newEncounteredDataAndRecords) => {
10
+ setEncounteredDataAndRecords(newEncounteredDataAndRecords);
11
+ }, readerAst);
12
+ }, []);
13
+ }
14
+
15
+ //#endregion
16
+ export { useRerenderOnChange };
17
+ //# sourceMappingURL=useRerenderOnChange.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRerenderOnChange.mjs","names":[],"sources":["../../src/react/useRerenderOnChange.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport type { FragmentReference } from '../core/FragmentReference';\nimport type { WithEncounteredRecords } from '../core/read';\nimport type { ReaderAst } from '../core/reader';\nimport { subscribe } from '../core/subscribe';\nimport { useIsographEnvironment } from './IsographEnvironmentProvider';\n\n// TODO add unit tests for this. Add integration tests that test\n// behavior when the encounteredRecords underneath a fragment change.\nexport function useRerenderOnChange<\n TReadFromStore extends { parameters: object; data: object },\n>(\n encounteredDataAndRecords: WithEncounteredRecords<TReadFromStore>,\n fragmentReference: FragmentReference<any, any>,\n setEncounteredDataAndRecords: (\n data: WithEncounteredRecords<TReadFromStore>,\n ) => void,\n readerAst: ReaderAst<TReadFromStore>,\n) {\n const environment = useIsographEnvironment();\n useEffect(() => {\n return subscribe(\n environment,\n encounteredDataAndRecords,\n fragmentReference,\n (newEncounteredDataAndRecords) => {\n setEncounteredDataAndRecords(newEncounteredDataAndRecords);\n },\n readerAst,\n );\n // Note: this is an empty array on purpose:\n // - the fragment reference is stable for the life of the component\n // - ownership of encounteredDataAndRecords is transferred into the\n // environment\n // - though maybe we need to include setEncounteredDataAndRecords in\n // the dependency array\n }, []);\n}\n"],"mappings":";;;;;AASA,SAAgB,oBAGd,2BACA,mBACA,8BAGA,WACA;CACA,MAAM,cAAc,wBAAwB;AAC5C,iBAAgB;AACd,SAAO,UACL,aACA,2BACA,oBACC,iCAAiC;AAChC,gCAA6B,6BAA6B;KAE5D,UACD;IAOA,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { NetworkRequestReaderOptions } from "../core/read.mjs";
2
+ import { FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.mjs";
3
+
4
+ //#region src/react/useResult.d.ts
5
+ declare function useResult<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>, partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): TClientFieldValue;
6
+ //#endregion
7
+ export { useResult };
8
+ //# sourceMappingURL=useResult.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResult.d.mts","names":[],"sources":["../../src/react/useResult.ts"],"sourcesContent":[],"mappings":";;;;iBAegB,iCACS,6DAGJ,kBAAkB,gBAAgB,mDACtB,QAAQ,sCACtC"}
@@ -1,6 +1,8 @@
1
- import { FragmentReference, type UnknownTReadFromStore } from '../core/FragmentReference';
2
- import { PromiseWrapper } from '../core/PromiseWrapper';
3
- import { NetworkRequestReaderOptions } from '../core/read';
4
- export declare function useResult<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>, partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): TClientFieldValue;
5
- export declare function maybeUnwrapNetworkRequest(networkRequest: PromiseWrapper<void, any>, networkRequestOptions: NetworkRequestReaderOptions): void;
1
+ import { NetworkRequestReaderOptions } from "../core/read.js";
2
+ import { FragmentReference, UnknownTReadFromStore } from "../core/FragmentReference.js";
3
+
4
+ //#region src/react/useResult.d.ts
5
+ declare function useResult<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue>(fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>, partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void): TClientFieldValue;
6
+ //#endregion
7
+ export { useResult };
6
8
  //# sourceMappingURL=useResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useResult.d.ts","sourceRoot":"","sources":["../../src/react/useResult.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAKtB,wBAAgB,SAAS,CACvB,cAAc,SAAS,qBAAqB,EAC5C,iBAAiB,EAEjB,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,EACvE,4BAA4B,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,IAAI,GACzE,iBAAiB,CA+CnB;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,EACzC,qBAAqB,EAAE,2BAA2B,QAWnD"}
1
+ {"version":3,"file":"useResult.d.ts","names":[],"sources":["../../src/react/useResult.ts"],"sourcesContent":[],"mappings":";;;;iBAegB,iCACS,6DAGJ,kBAAkB,gBAAgB,mDACtB,QAAQ,sCACtC"}
@@ -1,41 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useResult = useResult;
4
- exports.maybeUnwrapNetworkRequest = maybeUnwrapNetworkRequest;
5
- const componentCache_1 = require("../core/componentCache");
6
- const PromiseWrapper_1 = require("../core/PromiseWrapper");
7
- const read_1 = require("../core/read");
8
- const startUpdate_1 = require("../core/startUpdate");
9
- const IsographEnvironmentProvider_1 = require("../react/IsographEnvironmentProvider");
10
- const useReadAndSubscribe_1 = require("./useReadAndSubscribe");
1
+ const require_PromiseWrapper = require('../core/PromiseWrapper.js');
2
+ const require_startUpdate = require('../core/startUpdate.js');
3
+ const require_componentCache = require('../core/componentCache.js');
4
+ const require_read = require('../core/read.js');
5
+ const require_IsographEnvironmentProvider = require('./IsographEnvironmentProvider.js');
6
+ const require_maybeUnwrapNetworkRequest = require('./maybeUnwrapNetworkRequest.js');
7
+ const require_useReadAndSubscribe = require('./useReadAndSubscribe.js');
8
+
9
+ //#region src/react/useResult.ts
11
10
  function useResult(fragmentReference, partialNetworkRequestOptions) {
12
- const environment = (0, IsographEnvironmentProvider_1.useIsographEnvironment)();
13
- const networkRequestOptions = (0, read_1.getNetworkRequestOptionsWithDefaults)(partialNetworkRequestOptions);
14
- maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
15
- const readerWithRefetchQueries = (0, PromiseWrapper_1.readPromise)(fragmentReference.readerWithRefetchQueries);
16
- switch (readerWithRefetchQueries.readerArtifact.kind) {
17
- case 'ComponentReaderArtifact': {
18
- // @ts-expect-error
19
- return (0, componentCache_1.getOrCreateCachedComponent)(environment, readerWithRefetchQueries.readerArtifact.fieldName, fragmentReference, networkRequestOptions);
20
- }
21
- case 'EagerReaderArtifact': {
22
- const data = (0, useReadAndSubscribe_1.useReadAndSubscribe)(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst);
23
- const param = Object.assign({ data: data, parameters: fragmentReference.variables }, (readerWithRefetchQueries.readerArtifact.hasUpdatable
24
- ? {
25
- startUpdate: (0, startUpdate_1.getOrCreateCachedStartUpdate)(environment, fragmentReference, readerWithRefetchQueries.readerArtifact.fieldName, networkRequestOptions),
26
- }
27
- : undefined));
28
- return readerWithRefetchQueries.readerArtifact.resolver(param);
29
- }
30
- }
31
- }
32
- function maybeUnwrapNetworkRequest(networkRequest, networkRequestOptions) {
33
- const state = (0, PromiseWrapper_1.getPromiseState)(networkRequest);
34
- if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
35
- throw state.error;
36
- }
37
- else if (state.kind === 'Pending' &&
38
- networkRequestOptions.suspendIfInFlight) {
39
- throw state.promise;
40
- }
11
+ const environment = require_IsographEnvironmentProvider.useIsographEnvironment();
12
+ const networkRequestOptions = require_read.getNetworkRequestOptionsWithDefaults(partialNetworkRequestOptions);
13
+ switch (fragmentReference.readerArtifactKind) {
14
+ case "ComponentReaderArtifact": return require_componentCache.getOrCreateCachedComponent(environment, fragmentReference, networkRequestOptions);
15
+ case "EagerReaderArtifact": {
16
+ require_maybeUnwrapNetworkRequest.maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
17
+ const readerWithRefetchQueries = require_PromiseWrapper.readPromise(fragmentReference.readerWithRefetchQueries);
18
+ const param = {
19
+ data: require_useReadAndSubscribe.useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst),
20
+ parameters: fragmentReference.variables,
21
+ ...readerWithRefetchQueries.readerArtifact.hasUpdatable ? { startUpdate: require_startUpdate.getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) } : void 0
22
+ };
23
+ return readerWithRefetchQueries.readerArtifact.resolver(param);
24
+ }
25
+ }
41
26
  }
27
+
28
+ //#endregion
29
+ exports.useResult = useResult;
@@ -0,0 +1,30 @@
1
+ import { readPromise } from "../core/PromiseWrapper.mjs";
2
+ import { getOrCreateCachedStartUpdate } from "../core/startUpdate.mjs";
3
+ import { getOrCreateCachedComponent } from "../core/componentCache.mjs";
4
+ import { getNetworkRequestOptionsWithDefaults } from "../core/read.mjs";
5
+ import { useIsographEnvironment } from "./IsographEnvironmentProvider.mjs";
6
+ import { maybeUnwrapNetworkRequest } from "./maybeUnwrapNetworkRequest.mjs";
7
+ import { useReadAndSubscribe } from "./useReadAndSubscribe.mjs";
8
+
9
+ //#region src/react/useResult.ts
10
+ function useResult(fragmentReference, partialNetworkRequestOptions) {
11
+ const environment = useIsographEnvironment();
12
+ const networkRequestOptions = getNetworkRequestOptionsWithDefaults(partialNetworkRequestOptions);
13
+ switch (fragmentReference.readerArtifactKind) {
14
+ case "ComponentReaderArtifact": return getOrCreateCachedComponent(environment, fragmentReference, networkRequestOptions);
15
+ case "EagerReaderArtifact": {
16
+ maybeUnwrapNetworkRequest(fragmentReference.networkRequest, networkRequestOptions);
17
+ const readerWithRefetchQueries = readPromise(fragmentReference.readerWithRefetchQueries);
18
+ const param = {
19
+ data: useReadAndSubscribe(fragmentReference, networkRequestOptions, readerWithRefetchQueries.readerArtifact.readerAst),
20
+ parameters: fragmentReference.variables,
21
+ ...readerWithRefetchQueries.readerArtifact.hasUpdatable ? { startUpdate: getOrCreateCachedStartUpdate(environment, fragmentReference, networkRequestOptions) } : void 0
22
+ };
23
+ return readerWithRefetchQueries.readerArtifact.resolver(param);
24
+ }
25
+ }
26
+ }
27
+
28
+ //#endregion
29
+ export { useResult };
30
+ //# sourceMappingURL=useResult.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResult.mjs","names":[],"sources":["../../src/react/useResult.ts"],"sourcesContent":["import { getOrCreateCachedComponent } from '../core/componentCache';\nimport type {\n FragmentReference,\n UnknownTReadFromStore,\n} from '../core/FragmentReference';\nimport { readPromise } from '../core/PromiseWrapper';\nimport {\n type NetworkRequestReaderOptions,\n getNetworkRequestOptionsWithDefaults,\n} from '../core/read';\nimport { getOrCreateCachedStartUpdate } from '../core/startUpdate';\nimport { useIsographEnvironment } from './IsographEnvironmentProvider';\nimport { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';\nimport { useReadAndSubscribe } from './useReadAndSubscribe';\n\nexport function useResult<\n TReadFromStore extends UnknownTReadFromStore,\n TClientFieldValue,\n>(\n fragmentReference: FragmentReference<TReadFromStore, TClientFieldValue>,\n partialNetworkRequestOptions?: Partial<NetworkRequestReaderOptions> | void,\n): TClientFieldValue {\n const environment = useIsographEnvironment();\n const networkRequestOptions = getNetworkRequestOptionsWithDefaults(\n partialNetworkRequestOptions,\n );\n\n switch (fragmentReference.readerArtifactKind) {\n case 'ComponentReaderArtifact': {\n // @ts-expect-error\n return getOrCreateCachedComponent(\n environment,\n fragmentReference,\n networkRequestOptions,\n );\n }\n case 'EagerReaderArtifact': {\n maybeUnwrapNetworkRequest(\n fragmentReference.networkRequest,\n networkRequestOptions,\n );\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n const data = useReadAndSubscribe(\n fragmentReference,\n networkRequestOptions,\n readerWithRefetchQueries.readerArtifact.readerAst,\n );\n const param = {\n data: data,\n parameters: fragmentReference.variables,\n ...(readerWithRefetchQueries.readerArtifact.hasUpdatable\n ? {\n startUpdate: getOrCreateCachedStartUpdate(\n environment,\n fragmentReference,\n networkRequestOptions,\n ),\n }\n : undefined),\n };\n // @ts-expect-error\n return readerWithRefetchQueries.readerArtifact.resolver(param);\n }\n }\n}\n"],"mappings":";;;;;;;;;AAeA,SAAgB,UAId,mBACA,8BACmB;CACnB,MAAM,cAAc,wBAAwB;CAC5C,MAAM,wBAAwB,qCAC5B,6BACD;AAED,SAAQ,kBAAkB,oBAA1B;EACE,KAAK,0BAEH,QAAO,2BACL,aACA,mBACA,sBACD;EAEH,KAAK,uBAAuB;AAC1B,6BACE,kBAAkB,gBAClB,sBACD;GACD,MAAM,2BAA2B,YAC/B,kBAAkB,yBACnB;GAMD,MAAM,QAAQ;IACZ,MANW,oBACX,mBACA,uBACA,yBAAyB,eAAe,UACzC;IAGC,YAAY,kBAAkB;IAC9B,GAAI,yBAAyB,eAAe,eACxC,EACE,aAAa,6BACX,aACA,mBACA,sBACD,EACF,GACD;IACL;AAED,UAAO,yBAAyB,eAAe,SAAS,MAAM"}
package/package.json CHANGED
@@ -1,27 +1,16 @@
1
1
  {
2
2
  "name": "@isograph/react",
3
- "version": "0.4.3",
3
+ "version": "0.5.1",
4
4
  "description": "Use Isograph with React",
5
5
  "homepage": "https://isograph.dev",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
8
  "author": "Isograph Labs",
9
9
  "license": "MIT",
10
- "scripts": {
11
- "compile-libs": "rimraf dist && tsc -p tsconfig.pkg.json",
12
- "compile-watch": "tsc -p tsconfig.pkg.json --watch",
13
- "test": "vitest run",
14
- "test-watch": "vitest watch",
15
- "coverage": "vitest run --coverage",
16
- "prepack": "pnpm run test && pnpm run compile-libs",
17
- "tsc": "tsc",
18
- "tsc-force": "tsc --build --clean && tsc --build --force",
19
- "iso": "cross-env ISO_PRINT_ABSOLUTE_FILEPATH=1 ../../target/debug/isograph_cli --config ./isograph.config.json"
20
- },
21
10
  "dependencies": {
22
- "@isograph/disposable-types": "*",
23
- "@isograph/react-disposable-state": "*",
24
- "@isograph/reference-counted-pointer": "*"
11
+ "@isograph/disposable-types": "0.5.1",
12
+ "@isograph/reference-counted-pointer": "0.5.1",
13
+ "@isograph/react-disposable-state": "0.5.1"
25
14
  },
26
15
  "peerDependencies": {
27
16
  "react": "^18.0.0 || ^19.0.0"
@@ -39,5 +28,23 @@
39
28
  "url": "git+https://github.com/isographlabs/isograph.git",
40
29
  "directory": "libs/isograph-react"
41
30
  },
42
- "sideEffects": false
43
- }
31
+ "sideEffects": false,
32
+ "module": "./dist/index.mjs",
33
+ "exports": {
34
+ ".": {
35
+ "import": "./dist/index.mjs",
36
+ "require": "./dist/index.js"
37
+ },
38
+ "./package.json": "./package.json"
39
+ },
40
+ "scripts": {
41
+ "compile-libs": "tsdown",
42
+ "watch-libs": "tsdown --watch",
43
+ "test": "vitest run",
44
+ "test-watch": "vitest watch",
45
+ "coverage": "vitest run --coverage",
46
+ "tsc": "tsc",
47
+ "tsc-force": "tsc --build --clean && tsc --build --force",
48
+ "iso": "../../target/debug/isograph_cli --config ./isograph.config.json"
49
+ }
50
+ }
@@ -1,8 +1,11 @@
1
- import { ReaderWithRefetchQueries } from '../core/entrypoint';
2
- import { stableCopy } from './cache';
3
- import { type StoreLink } from './IsographEnvironment';
4
- import { PromiseWrapper } from './PromiseWrapper';
1
+ import type { ReaderWithRefetchQueries } from './entrypoint';
2
+ import {
3
+ type ComponentOrFieldName,
4
+ type StoreLink,
5
+ } from './IsographEnvironment';
6
+ import type { PromiseWrapper } from './PromiseWrapper';
5
7
  import type { StartUpdate } from './reader';
8
+ import { stableCopy } from './util';
6
9
 
7
10
  // TODO type this better
8
11
  export type VariableValue =
@@ -53,8 +56,12 @@ export type FragmentReference<
53
56
  ReaderWithRefetchQueries<TReadFromStore, TClientFieldValue>
54
57
  >;
55
58
  readonly root: StoreLink;
59
+ readonly fieldName: ComponentOrFieldName;
60
+ readonly readerArtifactKind:
61
+ | 'EagerReaderArtifact'
62
+ | 'ComponentReaderArtifact';
56
63
  // TODO we potentially stably copy and stringify variables a lot!
57
- // So, we should employ interior mutability: pretend that fragent reference
64
+ // So, we should employ interior mutability: pretend that fragment reference
58
65
  // is immutable, but actually store something like
59
66
  // `Map<Variable, StablyCopiedStringifiedOutput>`
60
67
  // and read or update that map when we would otherwise stably copy and
@@ -67,7 +74,6 @@ export type StableIdForFragmentReference = string;
67
74
 
68
75
  export function stableIdForFragmentReference(
69
76
  fragmentReference: FragmentReference<any, any>,
70
- fieldName: string,
71
77
  ): StableIdForFragmentReference {
72
- return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/${fieldName}/${JSON.stringify(stableCopy(fragmentReference.variables))}`;
78
+ return `${fragmentReference.root.__typename}/${fragmentReference.root.__link}/${fragmentReference.fieldName}/${JSON.stringify(stableCopy(fragmentReference.variables))}`;
73
79
  }