@isograph/react 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/.turbo/turbo-compile-libs.log +9 -2
  2. package/dist/_virtual/rolldown_runtime.js +25 -0
  3. package/dist/core/FragmentReference.d.mts +38 -0
  4. package/dist/core/FragmentReference.d.mts.map +1 -0
  5. package/dist/core/FragmentReference.d.ts +31 -29
  6. package/dist/core/FragmentReference.d.ts.map +1 -1
  7. package/dist/core/FragmentReference.js +7 -5
  8. package/dist/core/FragmentReference.mjs +10 -0
  9. package/dist/core/FragmentReference.mjs.map +1 -0
  10. package/dist/core/IsographEnvironment.d.mts +89 -0
  11. package/dist/core/IsographEnvironment.d.mts.map +1 -0
  12. package/dist/core/IsographEnvironment.d.ts +76 -79
  13. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  14. package/dist/core/IsographEnvironment.js +60 -82
  15. package/dist/core/IsographEnvironment.mjs +67 -0
  16. package/dist/core/IsographEnvironment.mjs.map +1 -0
  17. package/dist/core/PromiseWrapper.d.mts +36 -0
  18. package/dist/core/PromiseWrapper.d.mts.map +1 -0
  19. package/dist/core/PromiseWrapper.d.ts +26 -23
  20. package/dist/core/PromiseWrapper.d.ts.map +1 -1
  21. package/dist/core/PromiseWrapper.js +45 -43
  22. package/dist/core/PromiseWrapper.mjs +49 -0
  23. package/dist/core/PromiseWrapper.mjs.map +1 -0
  24. package/dist/core/areEqualWithDeepComparison.js +56 -108
  25. package/dist/core/areEqualWithDeepComparison.mjs +62 -0
  26. package/dist/core/areEqualWithDeepComparison.mjs.map +1 -0
  27. package/dist/core/brand.d.mts +19 -0
  28. package/dist/core/brand.d.mts.map +1 -0
  29. package/dist/core/brand.d.ts +6 -6
  30. package/dist/core/brand.d.ts.map +1 -1
  31. package/dist/core/cache.d.mts +20 -0
  32. package/dist/core/cache.d.mts.map +1 -0
  33. package/dist/core/cache.d.ts +18 -37
  34. package/dist/core/cache.d.ts.map +1 -1
  35. package/dist/core/cache.js +203 -537
  36. package/dist/core/cache.mjs +237 -0
  37. package/dist/core/cache.mjs.map +1 -0
  38. package/dist/core/check.d.mts +28 -0
  39. package/dist/core/check.d.mts.map +1 -0
  40. package/dist/core/check.d.ts +21 -19
  41. package/dist/core/check.d.ts.map +1 -1
  42. package/dist/core/check.js +80 -127
  43. package/dist/core/check.mjs +84 -0
  44. package/dist/core/check.mjs.map +1 -0
  45. package/dist/core/componentCache.js +9 -35
  46. package/dist/core/componentCache.mjs +12 -0
  47. package/dist/core/componentCache.mjs.map +1 -0
  48. package/dist/core/entrypoint.d.mts +99 -0
  49. package/dist/core/entrypoint.d.mts.map +1 -0
  50. package/dist/core/entrypoint.d.ts +83 -78
  51. package/dist/core/entrypoint.d.ts.map +1 -1
  52. package/dist/core/entrypoint.js +6 -5
  53. package/dist/core/entrypoint.mjs +8 -0
  54. package/dist/core/entrypoint.mjs.map +1 -0
  55. package/dist/core/garbageCollection.d.mts +18 -0
  56. package/dist/core/garbageCollection.d.mts.map +1 -0
  57. package/dist/core/garbageCollection.d.ts +15 -16
  58. package/dist/core/garbageCollection.d.ts.map +1 -1
  59. package/dist/core/garbageCollection.js +76 -115
  60. package/dist/core/garbageCollection.mjs +89 -0
  61. package/dist/core/garbageCollection.mjs.map +1 -0
  62. package/dist/core/getOrCreateCacheForArtifact.js +37 -0
  63. package/dist/core/getOrCreateCacheForArtifact.mjs +38 -0
  64. package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -0
  65. package/dist/core/logging.d.mts +95 -0
  66. package/dist/core/logging.d.mts.map +1 -0
  67. package/dist/core/logging.d.ts +66 -61
  68. package/dist/core/logging.d.ts.map +1 -1
  69. package/dist/core/logging.js +17 -18
  70. package/dist/core/logging.mjs +20 -0
  71. package/dist/core/logging.mjs.map +1 -0
  72. package/dist/core/makeNetworkRequest.d.mts +13 -0
  73. package/dist/core/makeNetworkRequest.d.mts.map +1 -0
  74. package/dist/core/makeNetworkRequest.d.ts +12 -10
  75. package/dist/core/makeNetworkRequest.d.ts.map +1 -1
  76. package/dist/core/makeNetworkRequest.js +180 -264
  77. package/dist/core/makeNetworkRequest.mjs +195 -0
  78. package/dist/core/makeNetworkRequest.mjs.map +1 -0
  79. package/dist/core/optimisticProxy.d.mts +43 -0
  80. package/dist/core/optimisticProxy.d.mts.map +1 -0
  81. package/dist/core/optimisticProxy.d.ts +37 -53
  82. package/dist/core/optimisticProxy.d.ts.map +1 -1
  83. package/dist/core/optimisticProxy.js +245 -371
  84. package/dist/core/optimisticProxy.mjs +268 -0
  85. package/dist/core/optimisticProxy.mjs.map +1 -0
  86. package/dist/core/read.d.mts +29 -0
  87. package/dist/core/read.d.mts.map +1 -0
  88. package/dist/core/read.d.ts +23 -28
  89. package/dist/core/read.d.ts.map +1 -1
  90. package/dist/core/read.js +435 -650
  91. package/dist/core/read.mjs +456 -0
  92. package/dist/core/read.mjs.map +1 -0
  93. package/dist/core/reader.d.mts +89 -0
  94. package/dist/core/reader.d.mts.map +1 -0
  95. package/dist/core/reader.d.ts +78 -77
  96. package/dist/core/reader.d.ts.map +1 -1
  97. package/dist/core/startUpdate.js +115 -152
  98. package/dist/core/startUpdate.mjs +125 -0
  99. package/dist/core/startUpdate.mjs.map +1 -0
  100. package/dist/core/subscribe.d.mts +12 -0
  101. package/dist/core/subscribe.d.mts.map +1 -0
  102. package/dist/core/subscribe.d.ts +12 -0
  103. package/dist/core/subscribe.d.ts.map +1 -0
  104. package/dist/core/subscribe.js +79 -0
  105. package/dist/core/subscribe.mjs +79 -0
  106. package/dist/core/subscribe.mjs.map +1 -0
  107. package/dist/core/util.d.mts +27 -0
  108. package/dist/core/util.d.mts.map +1 -0
  109. package/dist/core/util.d.ts +21 -17
  110. package/dist/core/util.d.ts.map +1 -1
  111. package/dist/core/util.js +22 -2
  112. package/dist/core/util.mjs +21 -0
  113. package/dist/core/util.mjs.map +1 -0
  114. package/dist/core/writeData.d.mts +11 -0
  115. package/dist/core/writeData.d.mts.map +1 -0
  116. package/dist/core/writeData.d.ts +11 -0
  117. package/dist/core/writeData.d.ts.map +1 -0
  118. package/dist/core/writeData.js +41 -0
  119. package/dist/core/writeData.mjs +42 -0
  120. package/dist/core/writeData.mjs.map +1 -0
  121. package/dist/index.d.mts +32 -0
  122. package/dist/index.d.ts +32 -29
  123. package/dist/index.js +70 -69
  124. package/dist/index.mjs +31 -0
  125. package/dist/loadable-hooks/useClientSideDefer.d.mts +12 -0
  126. package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -0
  127. package/dist/loadable-hooks/useClientSideDefer.d.ts +9 -12
  128. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
  129. package/dist/loadable-hooks/useClientSideDefer.js +13 -44
  130. package/dist/loadable-hooks/useClientSideDefer.mjs +14 -0
  131. package/dist/loadable-hooks/useClientSideDefer.mjs.map +1 -0
  132. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts +33 -0
  133. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -0
  134. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +26 -22
  135. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  136. package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -172
  137. package/dist/loadable-hooks/useConnectionSpecPagination.mjs +134 -0
  138. package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -0
  139. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts +8 -0
  140. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -0
  141. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +6 -3
  142. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
  143. package/dist/loadable-hooks/useImperativeExposedMutationField.js +9 -12
  144. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs +11 -0
  145. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs.map +1 -0
  146. package/dist/loadable-hooks/useImperativeLoadableField.d.mts +19 -0
  147. package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -0
  148. package/dist/loadable-hooks/useImperativeLoadableField.d.ts +15 -11
  149. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
  150. package/dist/loadable-hooks/useImperativeLoadableField.js +16 -12
  151. package/dist/loadable-hooks/useImperativeLoadableField.mjs +17 -0
  152. package/dist/loadable-hooks/useImperativeLoadableField.mjs.map +1 -0
  153. package/dist/loadable-hooks/useSkipLimitPagination.d.mts +24 -0
  154. package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -0
  155. package/dist/loadable-hooks/useSkipLimitPagination.d.ts +19 -15
  156. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
  157. package/dist/loadable-hooks/useSkipLimitPagination.js +118 -160
  158. package/dist/loadable-hooks/useSkipLimitPagination.mjs +119 -0
  159. package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -0
  160. package/dist/react/FragmentReader.d.mts +18 -0
  161. package/dist/react/FragmentReader.d.mts.map +1 -0
  162. package/dist/react/FragmentReader.d.ts +16 -8
  163. package/dist/react/FragmentReader.d.ts.map +1 -1
  164. package/dist/react/FragmentReader.js +8 -7
  165. package/dist/react/FragmentReader.mjs +10 -0
  166. package/dist/react/FragmentReader.mjs.map +1 -0
  167. package/dist/react/FragmentRenderer.d.mts +20 -0
  168. package/dist/react/FragmentRenderer.d.mts.map +1 -0
  169. package/dist/react/FragmentRenderer.d.ts +18 -14
  170. package/dist/react/FragmentRenderer.d.ts.map +1 -1
  171. package/dist/react/FragmentRenderer.js +11 -33
  172. package/dist/react/FragmentRenderer.mjs +12 -0
  173. package/dist/react/FragmentRenderer.mjs.map +1 -0
  174. package/dist/react/IsographEnvironmentProvider.d.mts +17 -0
  175. package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -0
  176. package/dist/react/IsographEnvironmentProvider.d.ts +15 -9
  177. package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
  178. package/dist/react/IsographEnvironmentProvider.js +15 -39
  179. package/dist/react/IsographEnvironmentProvider.mjs +17 -0
  180. package/dist/react/IsographEnvironmentProvider.mjs.map +1 -0
  181. package/dist/react/LoadableFieldReader.d.mts +21 -0
  182. package/dist/react/LoadableFieldReader.d.mts.map +1 -0
  183. package/dist/react/LoadableFieldReader.d.ts +15 -12
  184. package/dist/react/LoadableFieldReader.d.ts.map +1 -1
  185. package/dist/react/LoadableFieldReader.js +13 -47
  186. package/dist/react/LoadableFieldReader.mjs +14 -0
  187. package/dist/react/LoadableFieldReader.mjs.map +1 -0
  188. package/dist/react/LoadableFieldRenderer.d.mts +22 -0
  189. package/dist/react/LoadableFieldRenderer.d.mts.map +1 -0
  190. package/dist/react/LoadableFieldRenderer.d.ts +16 -13
  191. package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
  192. package/dist/react/LoadableFieldRenderer.js +13 -70
  193. package/dist/react/LoadableFieldRenderer.mjs +14 -0
  194. package/dist/react/LoadableFieldRenderer.mjs.map +1 -0
  195. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +18 -0
  196. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -0
  197. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +11 -3
  198. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -1
  199. package/dist/react/RenderAfterCommit__DO_NOT_USE.js +17 -13
  200. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs +18 -0
  201. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs.map +1 -0
  202. package/dist/react/createIsographEnvironment.d.mts +9 -0
  203. package/dist/react/createIsographEnvironment.d.mts.map +1 -0
  204. package/dist/react/createIsographEnvironment.d.ts +8 -0
  205. package/dist/react/createIsographEnvironment.d.ts.map +1 -0
  206. package/dist/react/createIsographEnvironment.js +10 -0
  207. package/dist/react/createIsographEnvironment.mjs +11 -0
  208. package/dist/react/createIsographEnvironment.mjs.map +1 -0
  209. package/dist/react/maybeUnwrapNetworkRequest.js +11 -0
  210. package/dist/react/maybeUnwrapNetworkRequest.mjs +12 -0
  211. package/dist/react/maybeUnwrapNetworkRequest.mjs.map +1 -0
  212. package/dist/react/useImperativeReference.d.mts +15 -0
  213. package/dist/react/useImperativeReference.d.mts.map +1 -0
  214. package/dist/react/useImperativeReference.d.ts +13 -8
  215. package/dist/react/useImperativeReference.d.ts.map +1 -1
  216. package/dist/react/useImperativeReference.js +34 -30
  217. package/dist/react/useImperativeReference.mjs +35 -0
  218. package/dist/react/useImperativeReference.mjs.map +1 -0
  219. package/dist/react/useLazyReference.d.mts +13 -0
  220. package/dist/react/useLazyReference.d.mts.map +1 -0
  221. package/dist/react/useLazyReference.d.ts +11 -6
  222. package/dist/react/useLazyReference.d.ts.map +1 -1
  223. package/dist/react/useLazyReference.js +17 -40
  224. package/dist/react/useLazyReference.mjs +18 -0
  225. package/dist/react/useLazyReference.mjs.map +1 -0
  226. package/dist/react/useReadAndSubscribe.d.mts +20 -0
  227. package/dist/react/useReadAndSubscribe.d.mts.map +1 -0
  228. package/dist/react/useReadAndSubscribe.d.ts +14 -9
  229. package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
  230. package/dist/react/useReadAndSubscribe.js +57 -37
  231. package/dist/react/useReadAndSubscribe.mjs +59 -0
  232. package/dist/react/useReadAndSubscribe.mjs.map +1 -0
  233. package/dist/react/useRerenderOnChange.d.mts +12 -0
  234. package/dist/react/useRerenderOnChange.d.mts.map +1 -0
  235. package/dist/react/useRerenderOnChange.d.ts +10 -6
  236. package/dist/react/useRerenderOnChange.d.ts.map +1 -1
  237. package/dist/react/useRerenderOnChange.js +16 -20
  238. package/dist/react/useRerenderOnChange.mjs +17 -0
  239. package/dist/react/useRerenderOnChange.mjs.map +1 -0
  240. package/dist/react/useResult.d.mts +8 -0
  241. package/dist/react/useResult.d.mts.map +1 -0
  242. package/dist/react/useResult.d.ts +7 -5
  243. package/dist/react/useResult.d.ts.map +1 -1
  244. package/dist/react/useResult.js +27 -40
  245. package/dist/react/useResult.mjs +30 -0
  246. package/dist/react/useResult.mjs.map +1 -0
  247. package/package.json +17 -9
  248. package/src/core/FragmentReference.ts +3 -3
  249. package/src/core/IsographEnvironment.ts +29 -16
  250. package/src/core/areEqualWithDeepComparison.ts +2 -18
  251. package/src/core/cache.ts +18 -383
  252. package/src/core/check.ts +9 -16
  253. package/src/core/componentCache.ts +10 -47
  254. package/src/core/entrypoint.ts +15 -3
  255. package/src/core/garbageCollection.ts +21 -10
  256. package/src/core/getOrCreateCacheForArtifact.ts +86 -0
  257. package/src/core/logging.ts +10 -10
  258. package/src/core/makeNetworkRequest.ts +16 -23
  259. package/src/core/optimisticProxy.ts +28 -47
  260. package/src/core/read.ts +21 -38
  261. package/src/core/reader.ts +8 -11
  262. package/src/core/startUpdate.ts +2 -6
  263. package/src/core/subscribe.ts +189 -0
  264. package/src/core/util.ts +26 -0
  265. package/src/core/writeData.ts +79 -0
  266. package/src/index.ts +5 -4
  267. package/src/loadable-hooks/useClientSideDefer.ts +4 -4
  268. package/src/loadable-hooks/useConnectionSpecPagination.ts +20 -18
  269. package/src/loadable-hooks/useImperativeLoadableField.ts +3 -3
  270. package/src/loadable-hooks/useSkipLimitPagination.ts +20 -18
  271. package/src/react/IsographEnvironmentProvider.tsx +2 -1
  272. package/src/react/LoadableFieldReader.tsx +2 -4
  273. package/src/react/LoadableFieldRenderer.tsx +2 -4
  274. package/src/react/createIsographEnvironment.ts +23 -0
  275. package/src/react/maybeUnwrapNetworkRequest.ts +17 -0
  276. package/src/react/useImperativeReference.ts +5 -4
  277. package/src/react/useLazyReference.ts +7 -8
  278. package/src/react/useReadAndSubscribe.ts +53 -5
  279. package/src/react/useRerenderOnChange.ts +3 -3
  280. package/src/react/useResult.ts +6 -24
  281. package/src/tests/__isograph/Economist/__link/output_type.ts +2 -0
  282. package/src/tests/garbageCollection.test.ts +3 -6
  283. package/src/tests/meNameSuccessor.ts +1 -1
  284. package/src/tests/nodeQuery.ts +2 -2
  285. package/src/tests/normalizeData.test.ts +5 -3
  286. package/src/tests/optimisticProxy.test.ts +7 -5
  287. package/src/tests/startUpdate.test.ts +5 -7
  288. package/vitest.config.ts +5 -0
  289. package/dist/core/areEqualWithDeepComparison.d.ts +0 -3
  290. package/dist/core/areEqualWithDeepComparison.d.ts.map +0 -1
  291. package/dist/core/brand.js +0 -2
  292. package/dist/core/componentCache.d.ts +0 -5
  293. package/dist/core/componentCache.d.ts.map +0 -1
  294. package/dist/core/reader.js +0 -2
  295. package/dist/core/startUpdate.d.ts +0 -9
  296. package/dist/core/startUpdate.d.ts.map +0 -1
  297. package/dist/index.d.ts.map +0 -1
@@ -1,29 +1,27 @@
1
- import { ItemCleanupPair } from '@isograph/disposable-types';
1
+ import type { ItemCleanupPair } from '@isograph/disposable-types';
2
2
  import {
3
3
  UNASSIGNED_STATE,
4
4
  useUpdatableDisposableState,
5
5
  } from '@isograph/react-disposable-state';
6
- import {
7
- createReferenceCountedPointer,
8
- ReferenceCountedPointer,
9
- } from '@isograph/reference-counted-pointer';
6
+ import type { ReferenceCountedPointer } from '@isograph/reference-counted-pointer';
7
+ import { createReferenceCountedPointer } from '@isograph/reference-counted-pointer';
10
8
  import { useState } from 'react';
11
9
  import { subscribeToAnyChange } from '../core/cache';
12
- import { FetchOptions } from '../core/check';
13
- import {
10
+ import type { FetchOptions } from '../core/check';
11
+ import type {
14
12
  FragmentReference,
15
- type UnknownTReadFromStore,
13
+ UnknownTReadFromStore,
16
14
  } from '../core/FragmentReference';
17
15
  import { getPromiseState, readPromise } from '../core/PromiseWrapper';
18
16
  import {
19
17
  readButDoNotEvaluate,
20
18
  type WithEncounteredRecords,
21
19
  } from '../core/read';
22
- import { LoadableField, type ReaderAst } from '../core/reader';
20
+ import type { LoadableField, ReaderAst } from '../core/reader';
23
21
  import { getOrCreateCachedStartUpdate } from '../core/startUpdate';
24
22
  import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
23
+ import { maybeUnwrapNetworkRequest } from '../react/maybeUnwrapNetworkRequest';
25
24
  import { useSubscribeToMultiple } from '../react/useReadAndSubscribe';
26
- import { maybeUnwrapNetworkRequest } from '../react/useResult';
27
25
 
28
26
  export type UseSkipLimitReturnValue<
29
27
  TReadFromStore extends UnknownTReadFromStore,
@@ -248,7 +246,7 @@ export function useSkipLimitPagination<
248
246
  const mostRecentFragmentReference =
249
247
  mostRecentItem?.[0].getItemIfNotDisposed();
250
248
 
251
- if (mostRecentItem && mostRecentFragmentReference === null) {
249
+ if (mostRecentItem != null && mostRecentFragmentReference == null) {
252
250
  throw new Error(
253
251
  'FragmentReference is unexpectedly disposed. \
254
252
  This is indicative of a bug in Isograph.',
@@ -256,11 +254,15 @@ export function useSkipLimitPagination<
256
254
  }
257
255
 
258
256
  const networkRequestStatus =
259
- mostRecentFragmentReference &&
260
- getPromiseState(mostRecentFragmentReference.networkRequest);
257
+ mostRecentFragmentReference != null
258
+ ? {
259
+ mostRecentFragmentReference,
260
+ state: getPromiseState(mostRecentFragmentReference.networkRequest),
261
+ }
262
+ : null;
261
263
 
262
264
  const slicedFragmentReferences =
263
- networkRequestStatus?.kind === 'Ok'
265
+ networkRequestStatus?.state?.kind === 'Ok'
264
266
  ? loadedReferences
265
267
  : loadedReferences.slice(0, loadedReferences.length - 1);
266
268
 
@@ -290,7 +292,7 @@ export function useSkipLimitPagination<
290
292
  subscribeCompletedFragmentReferences(completedFragmentReferences),
291
293
  );
292
294
 
293
- if (!networkRequestStatus) {
295
+ if (networkRequestStatus == null) {
294
296
  return {
295
297
  kind: 'Complete',
296
298
  fetchMore: getFetchMore(initialState?.skip ?? 0),
@@ -298,7 +300,7 @@ export function useSkipLimitPagination<
298
300
  };
299
301
  }
300
302
 
301
- switch (networkRequestStatus.kind) {
303
+ switch (networkRequestStatus.state.kind) {
302
304
  case 'Pending': {
303
305
  const unsubscribe = subscribeToAnyChange(environment, () => {
304
306
  unsubscribe();
@@ -307,12 +309,12 @@ export function useSkipLimitPagination<
307
309
 
308
310
  return {
309
311
  kind: 'Pending',
310
- pendingFragment: mostRecentFragmentReference,
312
+ pendingFragment: networkRequestStatus.mostRecentFragmentReference,
311
313
  results: readCompletedFragmentReferences(completedFragmentReferences),
312
314
  };
313
315
  }
314
316
  case 'Err': {
315
- throw networkRequestStatus.error;
317
+ throw networkRequestStatus.state.error;
316
318
  }
317
319
  case 'Ok': {
318
320
  const results = readCompletedFragmentReferences(
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- import { createContext, ReactNode, useContext } from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import { createContext, useContext } from 'react';
3
4
  import { type IsographEnvironment } from '../core/IsographEnvironment';
4
5
 
5
6
  export const IsographEnvironmentContext =
@@ -1,9 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type FetchOptions } from '../core/check';
3
- import {
4
- ExtractParameters,
5
- type UnknownTReadFromStore,
6
- } from '../core/FragmentReference';
3
+ import type { ExtractParameters } from '../core/FragmentReference';
4
+ import { type UnknownTReadFromStore } from '../core/FragmentReference';
7
5
  import { type NetworkRequestReaderOptions } from '../core/read';
8
6
  import { type LoadableField } from '../core/reader';
9
7
  import { useClientSideDefer } from '../loadable-hooks/useClientSideDefer';
@@ -1,9 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { type FetchOptions } from '../core/check';
3
- import {
4
- ExtractParameters,
5
- type UnknownTReadFromStore,
6
- } from '../core/FragmentReference';
3
+ import type { ExtractParameters } from '../core/FragmentReference';
4
+ import { type UnknownTReadFromStore } from '../core/FragmentReference';
7
5
  import { type NetworkRequestReaderOptions } from '../core/read';
8
6
  import { type LoadableField } from '../core/reader';
9
7
  import { useClientSideDefer } from '../loadable-hooks/useClientSideDefer';
@@ -0,0 +1,23 @@
1
+ import {
2
+ createIsographEnvironmentCore,
3
+ type BaseStoreLayerData,
4
+ type IsographNetworkFunction,
5
+ type MissingFieldHandler,
6
+ } from '../core/IsographEnvironment';
7
+ import type { LogFunction } from '../core/logging';
8
+ import { componentFunction } from './useReadAndSubscribe';
9
+
10
+ export function createIsographEnvironment(
11
+ baseStoreLayerData: BaseStoreLayerData,
12
+ networkFunction: IsographNetworkFunction,
13
+ missingFieldHandler?: MissingFieldHandler | null,
14
+ logFunction?: LogFunction | null,
15
+ ) {
16
+ return createIsographEnvironmentCore(
17
+ baseStoreLayerData,
18
+ networkFunction,
19
+ componentFunction,
20
+ missingFieldHandler,
21
+ logFunction,
22
+ );
23
+ }
@@ -0,0 +1,17 @@
1
+ import { type PromiseWrapper, getPromiseState } from '../core/PromiseWrapper';
2
+ import type { NetworkRequestReaderOptions } from '../core/read';
3
+
4
+ export function maybeUnwrapNetworkRequest(
5
+ networkRequest: PromiseWrapper<void, any>,
6
+ networkRequestOptions: NetworkRequestReaderOptions,
7
+ ) {
8
+ const state = getPromiseState(networkRequest);
9
+ if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
10
+ throw state.error;
11
+ } else if (
12
+ state.kind === 'Pending' &&
13
+ networkRequestOptions.suspendIfInFlight
14
+ ) {
15
+ throw state.promise;
16
+ }
17
+ }
@@ -3,17 +3,18 @@ import {
3
3
  useUpdatableDisposableState,
4
4
  } from '@isograph/react-disposable-state';
5
5
  import type { NetworkResponseObject } from '../core/cache';
6
- import { FetchOptions, type RequiredFetchOptions } from '../core/check';
6
+ import type { FetchOptions } from '../core/check';
7
+ import { type RequiredFetchOptions } from '../core/check';
8
+ import type { IsographEntrypoint } from '../core/entrypoint';
7
9
  import {
8
- IsographEntrypoint,
9
10
  type NormalizationAst,
10
11
  type NormalizationAstLoader,
11
12
  } from '../core/entrypoint';
12
- import {
13
+ import type {
13
14
  ExtractParameters,
14
15
  FragmentReference,
15
- type UnknownTReadFromStore,
16
16
  } from '../core/FragmentReference';
17
+ import { type UnknownTReadFromStore } from '../core/FragmentReference';
17
18
  import {
18
19
  getOrLoadReaderWithRefetchQueries,
19
20
  ROOT_ID,
@@ -1,21 +1,20 @@
1
1
  import { useLazyDisposableState } from '@isograph/react-disposable-state';
2
+ import { type NetworkResponseObject } from '../core/cache';
3
+ import type { FetchOptions } from '../core/check';
4
+ import { type RequiredFetchOptions } from '../core/check';
5
+ import type { IsographEntrypoint } from '../core/entrypoint';
2
6
  import {
3
- getOrCreateCacheForArtifact,
4
- type NetworkResponseObject,
5
- } from '../core/cache';
6
- import { FetchOptions, type RequiredFetchOptions } from '../core/check';
7
- import {
8
- IsographEntrypoint,
9
7
  type NormalizationAst,
10
8
  type NormalizationAstLoader,
11
9
  } from '../core/entrypoint';
12
- import {
10
+ import type {
13
11
  ExtractParameters,
14
12
  FragmentReference,
15
- type UnknownTReadFromStore,
16
13
  } from '../core/FragmentReference';
14
+ import { type UnknownTReadFromStore } from '../core/FragmentReference';
17
15
  import { logMessage } from '../core/logging';
18
16
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
17
+ import { getOrCreateCacheForArtifact } from '../core/getOrCreateCacheForArtifact';
19
18
 
20
19
  export function useLazyReference<
21
20
  TReadFromStore extends UnknownTReadFromStore,
@@ -1,18 +1,22 @@
1
1
  import { useEffect, useState } from 'react';
2
- import { subscribe } from '../core/cache';
3
2
  import {
4
- ExtractData,
5
- FragmentReference,
3
+ type ExtractData,
4
+ type FragmentReference,
6
5
  stableIdForFragmentReference,
7
6
  type UnknownTReadFromStore,
8
7
  } from '../core/FragmentReference';
8
+ import type { IsographComponentFunction } from '../core/IsographEnvironment';
9
+ import { logMessage } from '../core/logging';
10
+ import { readPromise } from '../core/PromiseWrapper';
9
11
  import {
10
- NetworkRequestReaderOptions,
12
+ type NetworkRequestReaderOptions,
11
13
  readButDoNotEvaluate,
12
- WithEncounteredRecords,
14
+ type WithEncounteredRecords,
13
15
  } from '../core/read';
14
16
  import type { ReaderAst } from '../core/reader';
17
+ import { subscribe } from '../core/subscribe';
15
18
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
19
+ import { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';
16
20
  import { useRerenderOnChange } from './useRerenderOnChange';
17
21
 
18
22
  /**
@@ -80,3 +84,47 @@ export function useSubscribeToMultiple<
80
84
  ],
81
85
  );
82
86
  }
87
+
88
+ export const componentFunction: IsographComponentFunction = (
89
+ environment,
90
+ fragmentReference,
91
+ networkRequestOptions,
92
+ startUpdate,
93
+ ) => {
94
+ function Component(additionalRuntimeProps: { [key: string]: any }) {
95
+ maybeUnwrapNetworkRequest(
96
+ fragmentReference.networkRequest,
97
+ networkRequestOptions,
98
+ );
99
+ const readerWithRefetchQueries = readPromise(
100
+ fragmentReference.readerWithRefetchQueries,
101
+ );
102
+
103
+ const data = useReadAndSubscribe(
104
+ fragmentReference,
105
+ networkRequestOptions,
106
+ readerWithRefetchQueries.readerArtifact.readerAst,
107
+ );
108
+
109
+ logMessage(environment, () => ({
110
+ kind: 'ComponentRerendered',
111
+ componentName: fragmentReference.fieldName,
112
+ rootLink: fragmentReference.root,
113
+ }));
114
+
115
+ return readerWithRefetchQueries.readerArtifact.resolver(
116
+ // @ts-expect-error
117
+ {
118
+ data,
119
+ parameters: fragmentReference.variables,
120
+ startUpdate: readerWithRefetchQueries.readerArtifact.hasUpdatable
121
+ ? startUpdate
122
+ : undefined,
123
+ },
124
+ additionalRuntimeProps,
125
+ );
126
+ }
127
+ const idString = `(type: ${fragmentReference.root.__typename}, id: ${fragmentReference.root.__link})`;
128
+ Component.displayName = `${fragmentReference.fieldName} ${idString} @component`;
129
+ return Component;
130
+ };
@@ -1,8 +1,8 @@
1
1
  import { useEffect } from 'react';
2
- import { subscribe } from '../core/cache';
3
- import { FragmentReference } from '../core/FragmentReference';
4
- import { WithEncounteredRecords } from '../core/read';
2
+ import type { FragmentReference } from '../core/FragmentReference';
3
+ import type { WithEncounteredRecords } from '../core/read';
5
4
  import type { ReaderAst } from '../core/reader';
5
+ import { subscribe } from '../core/subscribe';
6
6
  import { useIsographEnvironment } from './IsographEnvironmentProvider';
7
7
 
8
8
  // TODO add unit tests for this. Add integration tests that test
@@ -1,19 +1,16 @@
1
1
  import { getOrCreateCachedComponent } from '../core/componentCache';
2
- import {
2
+ import type {
3
3
  FragmentReference,
4
- type UnknownTReadFromStore,
4
+ UnknownTReadFromStore,
5
5
  } from '../core/FragmentReference';
6
+ import { readPromise } from '../core/PromiseWrapper';
6
7
  import {
7
- getPromiseState,
8
- PromiseWrapper,
9
- readPromise,
10
- } from '../core/PromiseWrapper';
11
- import {
8
+ type NetworkRequestReaderOptions,
12
9
  getNetworkRequestOptionsWithDefaults,
13
- NetworkRequestReaderOptions,
14
10
  } from '../core/read';
15
11
  import { getOrCreateCachedStartUpdate } from '../core/startUpdate';
16
- import { useIsographEnvironment } from '../react/IsographEnvironmentProvider';
12
+ import { useIsographEnvironment } from './IsographEnvironmentProvider';
13
+ import { maybeUnwrapNetworkRequest } from './maybeUnwrapNetworkRequest';
17
14
  import { useReadAndSubscribe } from './useReadAndSubscribe';
18
15
 
19
16
  export function useResult<
@@ -68,18 +65,3 @@ export function useResult<
68
65
  }
69
66
  }
70
67
  }
71
-
72
- export function maybeUnwrapNetworkRequest(
73
- networkRequest: PromiseWrapper<void, any>,
74
- networkRequestOptions: NetworkRequestReaderOptions,
75
- ) {
76
- const state = getPromiseState(networkRequest);
77
- if (state.kind === 'Err' && networkRequestOptions.throwOnNetworkError) {
78
- throw state.error;
79
- } else if (
80
- state.kind === 'Pending' &&
81
- networkRequestOptions.suspendIfInFlight
82
- ) {
83
- throw state.promise;
84
- }
85
- }
@@ -0,0 +1,2 @@
1
+ import type { Link } from '@isograph/react';
2
+ export type Economist____link__output_type = Link<"Economist">;
@@ -1,18 +1,15 @@
1
+ import { iso } from '@iso';
1
2
  import { describe, expect, test } from 'vitest';
2
3
  import {
3
4
  garbageCollectEnvironment,
4
5
  retainQuery,
5
6
  type RetainedQuery,
6
7
  } from '../core/garbageCollection';
7
- import {
8
- createIsographEnvironment,
9
- ROOT_ID,
10
- type BaseStoreLayerData,
11
- } from '../core/IsographEnvironment';
8
+ import { ROOT_ID, type BaseStoreLayerData } from '../core/IsographEnvironment';
12
9
  import { wrapResolvedValue } from '../core/PromiseWrapper';
13
- import { iso } from './__isograph/iso';
14
10
  import { meNameSuccessorRetainedQuery } from './meNameSuccessor';
15
11
  import { nodeFieldRetainedQuery } from './nodeQuery';
12
+ import { createIsographEnvironment } from '../react/createIsographEnvironment';
16
13
 
17
14
  const getDefaultStore = (): BaseStoreLayerData => ({
18
15
  Query: {
@@ -1,7 +1,7 @@
1
1
  import type { RetainedQuery } from '../core/garbageCollection';
2
2
  import { ROOT_ID } from '../core/IsographEnvironment';
3
3
  import { wrapResolvedValue } from '../core/PromiseWrapper';
4
- import { iso } from './__isograph/iso';
4
+ import { iso } from '@iso';
5
5
 
6
6
  export const meNameField = iso(`
7
7
  field Query.meNameSuccessor {
@@ -1,7 +1,7 @@
1
- import { RetainedQuery } from '../core/garbageCollection';
1
+ import type { RetainedQuery } from '../core/garbageCollection';
2
2
  import { ROOT_ID } from '../core/IsographEnvironment';
3
3
  import { wrapResolvedValue } from '../core/PromiseWrapper';
4
- import { iso } from './__isograph/iso';
4
+ import { iso } from '@iso';
5
5
 
6
6
  // TODO investigate why this can't be in garbageCollection.test.ts without
7
7
  // typescript incorrectly thinking it is referenced in its own initializer
@@ -1,16 +1,18 @@
1
+ import { iso } from '@iso';
1
2
  import { beforeEach, describe, expect, test, vi } from 'vitest';
2
- import { getOrCreateCacheForArtifact, normalizeData } from '../core/cache';
3
+
3
4
  import {
4
- createIsographEnvironment,
5
5
  createIsographStore,
6
6
  ROOT_ID,
7
7
  type BaseStoreLayerData,
8
8
  } from '../core/IsographEnvironment';
9
+ import { normalizeData } from '../core/cache';
10
+ import { getOrCreateCacheForArtifact } from '../core/getOrCreateCacheForArtifact';
9
11
  import {
10
12
  readButDoNotEvaluate,
11
13
  type WithEncounteredRecords,
12
14
  } from '../core/read';
13
- import { iso } from './__isograph/iso';
15
+ import { createIsographEnvironment } from '../react/createIsographEnvironment';
14
16
  import type { Query__subquery__param } from './__isograph/Query/subquery/param_type';
15
17
 
16
18
  let store: ReturnType<typeof createIsographStore>;
@@ -1,7 +1,7 @@
1
1
  import { beforeEach, describe, expect, test, vi } from 'vitest';
2
- import { callSubscriptions, type EncounteredIds } from '../core/cache';
2
+
3
+ import { type EncounteredIds } from '../core/cache';
3
4
  import {
4
- createIsographEnvironment,
5
5
  createIsographStore,
6
6
  type IsographEnvironment,
7
7
  type StoreLayerData,
@@ -15,8 +15,10 @@ import {
15
15
  type OptimisticStoreLayer,
16
16
  type StoreLayer,
17
17
  } from '../core/optimisticProxy';
18
+ import { callSubscriptions } from '../core/subscribe';
19
+ import { createIsographEnvironment } from '../react/createIsographEnvironment';
18
20
 
19
- vi.mock(import('../core/cache'), { spy: true });
21
+ vi.mock(import('../core/subscribe'), { spy: true });
20
22
 
21
23
  const CHANGES = new Map([['Query', new Set(['__ROOT'])]]);
22
24
  const NO_CHANGES = new Map();
@@ -813,7 +815,7 @@ describe('optimisticLayer', () => {
813
815
  return revertOptimisticStoreLayerAndMaybeReplace(
814
816
  environment,
815
817
  node,
816
- counter === null
818
+ counter == null
817
819
  ? counter
818
820
  : (storeLayer) => update(storeLayer, () => counter),
819
821
  );
@@ -851,7 +853,7 @@ describe('optimisticLayer', () => {
851
853
  },
852
854
  };
853
855
 
854
- return counter != nextCounter ? CHANGES : NO_CHANGES;
856
+ return counter !== nextCounter ? CHANGES : NO_CHANGES;
855
857
  };
856
858
 
857
859
  function ignoreReadonly(value: StoreLayer): { data: StoreLayerData } {
@@ -1,13 +1,11 @@
1
+ import { iso } from '@iso';
1
2
  import { beforeEach, describe, expect, test, vi } from 'vitest';
2
- import { getOrCreateCacheForArtifact } from '../core/cache';
3
+
3
4
  import type { ExtractUpdatableData } from '../core/FragmentReference';
4
- import {
5
- createIsographEnvironment,
6
- ROOT_ID,
7
- type BaseStoreLayerData,
8
- } from '../core/IsographEnvironment';
5
+ import { getOrCreateCacheForArtifact } from '../core/getOrCreateCacheForArtifact';
6
+ import { ROOT_ID, type BaseStoreLayerData } from '../core/IsographEnvironment';
9
7
  import { createUpdatableProxy } from '../core/startUpdate';
10
- import { iso } from './__isograph/iso';
8
+ import { createIsographEnvironment } from '../react/createIsographEnvironment';
11
9
  import type { Query__linkedUpdate__param } from './__isograph/Query/linkedUpdate/param_type';
12
10
  import type { Query__startUpdate__param } from './__isograph/Query/startUpdate/param_type';
13
11
 
package/vitest.config.ts CHANGED
@@ -26,4 +26,9 @@ export default defineProject({
26
26
  },
27
27
  }),
28
28
  ],
29
+ resolve: {
30
+ alias: {
31
+ '@iso': './tests/__isograph/iso.ts',
32
+ },
33
+ },
29
34
  });
@@ -1,3 +0,0 @@
1
- import type { ReaderAst } from './reader';
2
- export declare function mergeObjectsUsingReaderAst(ast: ReaderAst<object>, oldItemObject: object, newItemObject: object): object;
3
- //# sourceMappingURL=areEqualWithDeepComparison.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"areEqualWithDeepComparison.d.ts","sourceRoot":"","sources":["../../src/core/areEqualWithDeepComparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAwC,MAAM,UAAU,CAAC;AA+DhF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CAoER"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +0,0 @@
1
- import { FragmentReference } from './FragmentReference';
2
- import { IsographEnvironment } from './IsographEnvironment';
3
- import { NetworkRequestReaderOptions } from './read';
4
- export declare function getOrCreateCachedComponent(environment: IsographEnvironment, fragmentReference: FragmentReference<any, any>, networkRequestOptions: NetworkRequestReaderOptions): React.FC<any>;
5
- //# sourceMappingURL=componentCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"componentCache.d.ts","sourceRoot":"","sources":["../../src/core/componentCache.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAGrD,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9C,qBAAqB,EAAE,2BAA2B,GACjD,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CA+Cf"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +0,0 @@
1
- import { type EncounteredIds } from './cache';
2
- import { type ExtractStartUpdate, type ExtractUpdatableData, type FragmentReference, type UnknownTReadFromStore } from './FragmentReference';
3
- import { type IsographEnvironment } from './IsographEnvironment';
4
- import { type StoreLayer } from './optimisticProxy';
5
- import { type NetworkRequestReaderOptions } from './read';
6
- export declare function getOrCreateCachedStartUpdate<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions): ExtractStartUpdate<TReadFromStore>;
7
- export declare function createStartUpdate<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions): ExtractStartUpdate<TReadFromStore>;
8
- export declare function createUpdatableProxy<TReadFromStore extends UnknownTReadFromStore>(environment: IsographEnvironment, storeLayer: StoreLayer, fragmentReference: FragmentReference<TReadFromStore, unknown>, networkRequestOptions: NetworkRequestReaderOptions, mutableUpdatedIds: EncounteredIds): ExtractUpdatableData<TReadFromStore>;
9
- //# sourceMappingURL=startUpdate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"startUpdate.d.ts","sourceRoot":"","sources":["../../src/core/startUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAML,KAAK,2BAA2B,EAEjC,MAAM,QAAQ,CAAC;AAGhB,wBAAgB,4BAA4B,CAC1C,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,kBAAkB,CAAC,cAAc,CAAC,CAQpC;AAED,wBAAgB,iBAAiB,CAAC,cAAc,SAAS,qBAAqB,EAC5E,WAAW,EAAE,mBAAmB,EAChC,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,GACjD,kBAAkB,CAAC,cAAc,CAAC,CAqCpC;AAED,wBAAgB,oBAAoB,CAClC,cAAc,SAAS,qBAAqB,EAE5C,WAAW,EAAE,mBAAmB,EAChC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,EAC7D,qBAAqB,EAAE,2BAA2B,EAClD,iBAAiB,EAAE,cAAc,GAChC,oBAAoB,CAAC,cAAc,CAAC,CAmBtC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}