@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
@@ -0,0 +1,456 @@
1
+ import { NOT_SET, getPromiseState, readPromise, wrapPromise, wrapResolvedValue } from "./PromiseWrapper.mjs";
2
+ import { assertLink, getOrLoadIsographArtifact, getOrLoadReaderWithRefetchQueries } from "./IsographEnvironment.mjs";
3
+ import { logMessage } from "./logging.mjs";
4
+ import { getOrCreateCachedStartUpdate } from "./startUpdate.mjs";
5
+ import { getOrCreateCachedComponent } from "./componentCache.mjs";
6
+ import { maybeMakeNetworkRequest } from "./makeNetworkRequest.mjs";
7
+ import { getStoreRecordProxy } from "./optimisticProxy.mjs";
8
+ import { getParentRecordKey, insertEmptySetIfMissing, onNextChangeToRecord } from "./cache.mjs";
9
+
10
+ //#region src/core/read.ts
11
+ function readButDoNotEvaluate(environment, fragmentReference, networkRequestOptions) {
12
+ const mutableEncounteredRecords = /* @__PURE__ */ new Map();
13
+ const readerWithRefetchQueries = readPromise(fragmentReference.readerWithRefetchQueries);
14
+ const response = readData(environment, readerWithRefetchQueries.readerArtifact.readerAst, fragmentReference.root, fragmentReference.variables ?? {}, readerWithRefetchQueries.nestedRefetchQueries, fragmentReference.networkRequest, networkRequestOptions, mutableEncounteredRecords);
15
+ logMessage(environment, () => ({
16
+ kind: "DoneReading",
17
+ response,
18
+ fieldName: readerWithRefetchQueries.readerArtifact.fieldName,
19
+ root: fragmentReference.root
20
+ }));
21
+ if (response.kind === "MissingData") {
22
+ if (!networkRequestOptions.suspendIfInFlight && networkRequestOptions.throwOnNetworkError) {
23
+ const result = fragmentReference.networkRequest.result;
24
+ if (result !== NOT_SET && result.kind === "Err") throw new Error("NetworkError", { cause: result.error });
25
+ throw new Promise((resolve, reject) => {
26
+ onNextChangeToRecord(environment, response.recordLink).then(resolve);
27
+ fragmentReference.networkRequest.promise.catch(reject);
28
+ });
29
+ }
30
+ throw onNextChangeToRecord(environment, response.recordLink);
31
+ } else return {
32
+ encounteredRecords: mutableEncounteredRecords,
33
+ item: response.data
34
+ };
35
+ }
36
+ function readData(environment, ast, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
37
+ insertEmptySetIfMissing(mutableEncounteredRecords, root.__typename).add(root.__link);
38
+ let storeRecord = getStoreRecordProxy(environment.store, root);
39
+ if (storeRecord === void 0) return {
40
+ kind: "MissingData",
41
+ reason: "No record for root " + root.__link,
42
+ recordLink: root
43
+ };
44
+ if (storeRecord == null) return {
45
+ kind: "Success",
46
+ data: null
47
+ };
48
+ let target = {};
49
+ for (const field of ast) switch (field.kind) {
50
+ case "Scalar": {
51
+ const data = readScalarFieldData(field, storeRecord, root, variables);
52
+ if (data.kind === "MissingData") return data;
53
+ target[field.alias ?? field.fieldName] = data.data;
54
+ break;
55
+ }
56
+ case "Link":
57
+ target[field.alias] = root;
58
+ break;
59
+ case "Linked": {
60
+ const data = readLinkedFieldData(environment, field, storeRecord, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, (ast$1, root$1) => readData(environment, ast$1, root$1, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords));
61
+ if (data.kind === "MissingData") return data;
62
+ target[field.alias ?? field.fieldName] = data.data;
63
+ break;
64
+ }
65
+ case "ImperativelyLoadedField": {
66
+ const data = readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
67
+ if (data.kind === "MissingData") return data;
68
+ target[field.alias] = data.data;
69
+ break;
70
+ }
71
+ case "Resolver": {
72
+ const data = readResolverFieldData(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
73
+ if (data.kind === "MissingData") return data;
74
+ target[field.alias] = data.data;
75
+ break;
76
+ }
77
+ case "LoadablySelectedField": {
78
+ const data = readLoadablySelectedFieldData(environment, field, root, variables, networkRequest, networkRequestOptions, mutableEncounteredRecords);
79
+ if (data.kind === "MissingData") return data;
80
+ target[field.alias] = data.data;
81
+ break;
82
+ }
83
+ }
84
+ return {
85
+ kind: "Success",
86
+ data: target
87
+ };
88
+ }
89
+ function readLoadablySelectedFieldData(environment, field, root, variables, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
90
+ const refetchReaderParams = readData(environment, field.refetchReaderAst, root, variables, [], networkRequest, networkRequestOptions, mutableEncounteredRecords);
91
+ if (refetchReaderParams.kind === "MissingData") return {
92
+ kind: "MissingData",
93
+ reason: "Missing data for " + field.alias + " on root " + root.__link,
94
+ nestedReason: refetchReaderParams,
95
+ recordLink: refetchReaderParams.recordLink
96
+ };
97
+ return {
98
+ kind: "Success",
99
+ data: (args, fetchOptions) => {
100
+ const includeReadOutData = (variables$1, readOutData) => {
101
+ variables$1.id = readOutData.id;
102
+ return variables$1;
103
+ };
104
+ const localVariables = includeReadOutData(args ?? {}, refetchReaderParams.data);
105
+ writeQueryArgsToVariables(localVariables, field.queryArguments, variables);
106
+ return [root.__typename + ":" + root.__link + "/" + field.name + "/" + stableStringifyArgs(localVariables), () => {
107
+ const fragmentReferenceAndDisposeFromEntrypoint = (entrypoint) => {
108
+ const { fieldName, readerArtifactKind, readerWithRefetchQueries } = getOrLoadReaderWithRefetchQueries(environment, entrypoint.readerWithRefetchQueries);
109
+ const [networkRequest$1, disposeNetworkRequest] = maybeMakeNetworkRequest(environment, entrypoint, localVariables, readerWithRefetchQueries, fetchOptions ?? null);
110
+ return [{
111
+ kind: "FragmentReference",
112
+ readerWithRefetchQueries,
113
+ fieldName,
114
+ readerArtifactKind,
115
+ root,
116
+ variables: localVariables,
117
+ networkRequest: networkRequest$1
118
+ }, disposeNetworkRequest];
119
+ };
120
+ if (field.entrypoint.kind === "Entrypoint") return fragmentReferenceAndDisposeFromEntrypoint(field.entrypoint);
121
+ else {
122
+ const isographArtifactPromiseWrapper = getOrLoadIsographArtifact(environment, field.entrypoint.typeAndField, field.entrypoint.loader);
123
+ const state = getPromiseState(isographArtifactPromiseWrapper);
124
+ if (state.kind === "Ok") return fragmentReferenceAndDisposeFromEntrypoint(state.value);
125
+ else {
126
+ let entrypointLoaderState = { kind: "EntrypointNotLoaded" };
127
+ const readerWithRefetchQueries = wrapPromise(isographArtifactPromiseWrapper.promise.then((entrypoint) => getOrLoadReaderWithRefetchQueries(environment, entrypoint.readerWithRefetchQueries).readerWithRefetchQueries.promise));
128
+ const networkRequest$1 = wrapPromise(isographArtifactPromiseWrapper.promise.then((entrypoint) => {
129
+ if (entrypointLoaderState.kind === "EntrypointNotLoaded") {
130
+ const [networkRequest$2, disposeNetworkRequest] = maybeMakeNetworkRequest(environment, entrypoint, localVariables, readerWithRefetchQueries, fetchOptions ?? null);
131
+ entrypointLoaderState = {
132
+ kind: "NetworkRequestStarted",
133
+ disposeNetworkRequest
134
+ };
135
+ return networkRequest$2.promise;
136
+ }
137
+ }));
138
+ return [{
139
+ kind: "FragmentReference",
140
+ readerWithRefetchQueries,
141
+ fieldName: field.name,
142
+ readerArtifactKind: field.entrypoint.readerArtifactKind,
143
+ root,
144
+ variables: localVariables,
145
+ networkRequest: networkRequest$1
146
+ }, () => {
147
+ if (entrypointLoaderState.kind === "NetworkRequestStarted") entrypointLoaderState.disposeNetworkRequest();
148
+ entrypointLoaderState = { kind: "Disposed" };
149
+ }];
150
+ }
151
+ }
152
+ }];
153
+ }
154
+ };
155
+ }
156
+ function filterVariables(variables, allowedVariables) {
157
+ const result = {};
158
+ for (const key of allowedVariables) result[key] = variables[key];
159
+ return result;
160
+ }
161
+ function generateChildVariableMap(variables, fieldArguments) {
162
+ if (fieldArguments == null) return {};
163
+ const childVars = {};
164
+ for (const [name, value] of fieldArguments) if (value.kind === "Object") childVars[name] = generateChildVariableMap(variables, value.value);
165
+ else if (value.kind === "Variable") {
166
+ const variable = variables[value.name];
167
+ if (variable != null) childVars[name] = variable;
168
+ } else childVars[name] = value.value;
169
+ return childVars;
170
+ }
171
+ function writeQueryArgsToVariables(targetVariables, queryArgs, variables) {
172
+ if (queryArgs == null) return;
173
+ for (const [name, argType] of queryArgs) switch (argType.kind) {
174
+ case "Object":
175
+ writeQueryArgsToVariables(targetVariables[name] = {}, argType.value, variables);
176
+ break;
177
+ case "Variable":
178
+ targetVariables[name] = variables[argType.name];
179
+ break;
180
+ case "Enum":
181
+ targetVariables[name] = argType.value;
182
+ break;
183
+ case "Literal":
184
+ targetVariables[name] = argType.value;
185
+ break;
186
+ case "String":
187
+ targetVariables[name] = argType.value;
188
+ break;
189
+ }
190
+ }
191
+ function readResolverFieldData(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
192
+ const resolverRefetchQueries = field.usedRefetchQueries.map((index) => {
193
+ const resolverRefetchQuery = nestedRefetchQueries[index];
194
+ if (resolverRefetchQuery == null) throw new Error("resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.");
195
+ return resolverRefetchQuery;
196
+ });
197
+ const fragment = {
198
+ kind: "FragmentReference",
199
+ readerWithRefetchQueries: wrapResolvedValue({
200
+ kind: "ReaderWithRefetchQueries",
201
+ readerArtifact: field.readerArtifact,
202
+ nestedRefetchQueries: resolverRefetchQueries
203
+ }),
204
+ fieldName: field.readerArtifact.fieldName,
205
+ readerArtifactKind: field.readerArtifact.kind,
206
+ root,
207
+ variables: generateChildVariableMap(variables, field.arguments),
208
+ networkRequest
209
+ };
210
+ switch (field.readerArtifact.kind) {
211
+ case "EagerReaderArtifact": {
212
+ const data = readData(environment, field.readerArtifact.readerAst, root, generateChildVariableMap(variables, field.arguments), resolverRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords);
213
+ if (data.kind === "MissingData") return {
214
+ kind: "MissingData",
215
+ reason: "Missing data for " + field.alias + " on root " + root.__link,
216
+ nestedReason: data,
217
+ recordLink: data.recordLink
218
+ };
219
+ const firstParameter = {
220
+ data: data.data,
221
+ parameters: variables,
222
+ startUpdate: field.readerArtifact.hasUpdatable ? getOrCreateCachedStartUpdate(environment, fragment, networkRequestOptions) : void 0
223
+ };
224
+ return {
225
+ kind: "Success",
226
+ data: field.readerArtifact.resolver(firstParameter)
227
+ };
228
+ }
229
+ case "ComponentReaderArtifact": return {
230
+ kind: "Success",
231
+ data: getOrCreateCachedComponent(environment, fragment, networkRequestOptions)
232
+ };
233
+ }
234
+ }
235
+ function readScalarFieldData(field, storeRecord, root, variables) {
236
+ const storeRecordName = getParentRecordKey(field, variables);
237
+ const value = storeRecord[storeRecordName];
238
+ if (value === void 0) return {
239
+ kind: "MissingData",
240
+ reason: "No value for " + storeRecordName + " on root " + root.__link,
241
+ recordLink: root
242
+ };
243
+ return {
244
+ kind: "Success",
245
+ data: value
246
+ };
247
+ }
248
+ function readLinkedFieldData(environment, field, storeRecord, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, readData$1) {
249
+ const storeRecordName = getParentRecordKey(field, variables);
250
+ let value = storeRecord[storeRecordName];
251
+ if (field.condition != null) {
252
+ const data$1 = readData$1(field.condition.readerAst, root);
253
+ if (data$1.kind === "MissingData") return {
254
+ kind: "MissingData",
255
+ reason: "Missing data for " + storeRecordName + " on root " + root.__link,
256
+ nestedReason: data$1,
257
+ recordLink: data$1.recordLink
258
+ };
259
+ const fragment = {
260
+ kind: "FragmentReference",
261
+ readerWithRefetchQueries: wrapResolvedValue({
262
+ kind: "ReaderWithRefetchQueries",
263
+ readerArtifact: field.condition,
264
+ nestedRefetchQueries: []
265
+ }),
266
+ root,
267
+ fieldName: field.condition.fieldName,
268
+ readerArtifactKind: field.condition.kind,
269
+ variables: generateChildVariableMap(variables, []),
270
+ networkRequest
271
+ };
272
+ value = field.condition.resolver({
273
+ data: data$1.data,
274
+ parameters: {},
275
+ ...field.condition.hasUpdatable ? { startUpdate: getOrCreateCachedStartUpdate(environment, fragment, networkRequestOptions) } : void 0
276
+ });
277
+ }
278
+ if (Array.isArray(value)) {
279
+ const results = [];
280
+ for (const item of value) {
281
+ const link$1 = assertLink(item);
282
+ if (link$1 === void 0) return {
283
+ kind: "MissingData",
284
+ reason: "No link for " + storeRecordName + " on root " + root.__link + ". Link is " + JSON.stringify(item),
285
+ recordLink: root
286
+ };
287
+ else if (link$1 == null) {
288
+ results.push(null);
289
+ continue;
290
+ }
291
+ if (isClientPointer(field)) {
292
+ const result$1 = readClientPointerData(environment, field, link$1, variables, nestedRefetchQueries, readData$1);
293
+ if (result$1.kind === "MissingData") return {
294
+ kind: "MissingData",
295
+ reason: "Missing data for " + storeRecordName + " on root " + root.__link + ". Link is " + JSON.stringify(item),
296
+ nestedReason: result$1,
297
+ recordLink: result$1.recordLink
298
+ };
299
+ results.push(result$1.data);
300
+ continue;
301
+ }
302
+ const result = readData$1(field.selections, link$1);
303
+ if (result.kind === "MissingData") return {
304
+ kind: "MissingData",
305
+ reason: "Missing data for " + storeRecordName + " on root " + root.__link + ". Link is " + JSON.stringify(item),
306
+ nestedReason: result,
307
+ recordLink: result.recordLink
308
+ };
309
+ results.push(result.data);
310
+ }
311
+ return {
312
+ kind: "Success",
313
+ data: results
314
+ };
315
+ }
316
+ let link = assertLink(value);
317
+ if (link === void 0) {
318
+ const missingFieldHandler = environment.missingFieldHandler;
319
+ const altLink = missingFieldHandler?.(storeRecord, root, field.fieldName, field.arguments, variables);
320
+ logMessage(environment, () => ({
321
+ kind: "MissingFieldHandlerCalled",
322
+ root,
323
+ storeRecord,
324
+ fieldName: field.fieldName,
325
+ arguments: field.arguments,
326
+ variables
327
+ }));
328
+ if (altLink === void 0) return {
329
+ kind: "MissingData",
330
+ reason: "No link for " + storeRecordName + " on root " + root.__link + ". Link is " + JSON.stringify(value),
331
+ recordLink: root
332
+ };
333
+ else link = altLink;
334
+ } else if (link == null) return {
335
+ kind: "Success",
336
+ data: null
337
+ };
338
+ if (isClientPointer(field)) {
339
+ const data$1 = readClientPointerData(environment, field, link, variables, nestedRefetchQueries, readData$1);
340
+ if (data$1.kind === "MissingData") return {
341
+ kind: "MissingData",
342
+ reason: "Missing data for " + storeRecordName + " on root " + root.__link,
343
+ nestedReason: data$1,
344
+ recordLink: data$1.recordLink
345
+ };
346
+ return data$1;
347
+ }
348
+ const data = readData$1(field.selections, link);
349
+ if (data.kind === "MissingData") return {
350
+ kind: "MissingData",
351
+ reason: "Missing data for " + storeRecordName + " on root " + root.__link,
352
+ nestedReason: data,
353
+ recordLink: data.recordLink
354
+ };
355
+ return data;
356
+ }
357
+ function isClientPointer(field) {
358
+ return field.refetchQueryIndex != null;
359
+ }
360
+ function readClientPointerData(environment, field, root, variables, nestedRefetchQueries, readData$1) {
361
+ const refetchReaderParams = readData$1([{
362
+ kind: "Scalar",
363
+ fieldName: "id",
364
+ alias: null,
365
+ arguments: null,
366
+ isUpdatable: false
367
+ }], root);
368
+ if (refetchReaderParams.kind === "MissingData") return {
369
+ kind: "MissingData",
370
+ reason: "Missing data for " + field.alias + " on root " + root.__link,
371
+ nestedReason: refetchReaderParams,
372
+ recordLink: refetchReaderParams.recordLink
373
+ };
374
+ const refetchQuery = nestedRefetchQueries[field.refetchQueryIndex];
375
+ if (refetchQuery == null) throw new Error("refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.");
376
+ const refetchQueryArtifact = refetchQuery.artifact;
377
+ const allowedVariables = refetchQuery.allowedVariables;
378
+ return {
379
+ kind: "Success",
380
+ data: (args, fetchOptions) => {
381
+ const includeReadOutData = (variables$1, readOutData) => {
382
+ variables$1.id = readOutData.id;
383
+ return variables$1;
384
+ };
385
+ const localVariables = includeReadOutData(args ?? {}, refetchReaderParams.data);
386
+ writeQueryArgsToVariables(localVariables, field.arguments, variables);
387
+ return [root.__typename + ":" + root.__link + "/" + field.fieldName + "/" + stableStringifyArgs(localVariables), () => {
388
+ const variables$1 = includeReadOutData(filterVariables({
389
+ ...args,
390
+ ...localVariables
391
+ }, allowedVariables), refetchReaderParams.data);
392
+ const readerWithRefetchQueries = wrapResolvedValue({
393
+ kind: "ReaderWithRefetchQueries",
394
+ readerArtifact: {
395
+ kind: "EagerReaderArtifact",
396
+ fieldName: field.fieldName,
397
+ readerAst: field.selections,
398
+ resolver: ({ data }) => data,
399
+ hasUpdatable: false
400
+ },
401
+ nestedRefetchQueries
402
+ });
403
+ const [networkRequest, disposeNetworkRequest] = maybeMakeNetworkRequest(environment, refetchQueryArtifact, variables$1, readerWithRefetchQueries, fetchOptions ?? null);
404
+ return [{
405
+ kind: "FragmentReference",
406
+ fieldName: field.fieldName,
407
+ readerArtifactKind: "EagerReaderArtifact",
408
+ readerWithRefetchQueries,
409
+ root,
410
+ variables: variables$1,
411
+ networkRequest
412
+ }, disposeNetworkRequest];
413
+ }];
414
+ }
415
+ };
416
+ }
417
+ function getNetworkRequestOptionsWithDefaults(networkRequestOptions) {
418
+ return {
419
+ suspendIfInFlight: networkRequestOptions?.suspendIfInFlight ?? false,
420
+ throwOnNetworkError: networkRequestOptions?.throwOnNetworkError ?? true
421
+ };
422
+ }
423
+ function stableStringifyArgs(args) {
424
+ const keys = Object.keys(args);
425
+ keys.sort();
426
+ let s = "";
427
+ for (const key of keys) s += `${key}=${JSON.stringify(args[key])};`;
428
+ return s;
429
+ }
430
+ function readImperativelyLoadedField(environment, field, root, variables, nestedRefetchQueries, networkRequest, networkRequestOptions, mutableEncounteredRecords) {
431
+ const data = readData(environment, field.refetchReaderArtifact.readerAst, root, variables, [], networkRequest, networkRequestOptions, mutableEncounteredRecords);
432
+ if (data.kind === "MissingData") return {
433
+ kind: "MissingData",
434
+ reason: "Missing data for " + field.alias + " on root " + root.__link,
435
+ nestedReason: data,
436
+ recordLink: data.recordLink
437
+ };
438
+ else {
439
+ const { refetchQueryIndex } = field;
440
+ const refetchQuery = nestedRefetchQueries[refetchQueryIndex];
441
+ if (refetchQuery == null) throw new Error("Refetch query not found. This is indicative of a bug in Isograph.");
442
+ const refetchQueryArtifact = refetchQuery.artifact;
443
+ const allowedVariables = refetchQuery.allowedVariables;
444
+ return {
445
+ kind: "Success",
446
+ data: (args) => [root.__typename + ":" + root.__link + "__" + field.name, field.refetchReaderArtifact.resolver(environment, refetchQueryArtifact, data.data, filterVariables({
447
+ ...args,
448
+ ...variables
449
+ }, allowedVariables), root, null, [])]
450
+ };
451
+ }
452
+ }
453
+
454
+ //#endregion
455
+ export { getNetworkRequestOptionsWithDefaults, readButDoNotEvaluate, readImperativelyLoadedField, readLinkedFieldData, readLoadablySelectedFieldData, readResolverFieldData, readScalarFieldData };
456
+ //# sourceMappingURL=read.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.mjs","names":["mutableEncounteredRecords: EncounteredIds","target: { [index: string]: any }","ast","root","variables","networkRequest","entrypointLoaderState:\n | {\n kind: 'EntrypointNotLoaded';\n }\n | {\n kind: 'NetworkRequestStarted';\n disposeNetworkRequest: CleanupFn;\n }\n | { kind: 'Disposed' }","result: Variables","childVars: Writable<Variables>","data","readData","link","result"],"sources":["../../src/core/read.ts"],"sourcesContent":["import type { CleanupFn, ItemCleanupPair } from '@isograph/disposable-types';\nimport {\n getParentRecordKey,\n insertEmptySetIfMissing,\n onNextChangeToRecord,\n type EncounteredIds,\n} from './cache';\nimport type { FetchOptions } from './check';\nimport { getOrCreateCachedComponent } from './componentCache';\nimport type {\n IsographEntrypoint,\n ReaderWithRefetchQueries,\n RefetchQueryNormalizationArtifactWrapper,\n} from './entrypoint';\nimport type {\n ExtractData,\n FragmentReference,\n UnknownTReadFromStore,\n Variables,\n} from './FragmentReference';\nimport type { IsographEnvironment } from './IsographEnvironment';\nimport {\n assertLink,\n getOrLoadIsographArtifact,\n getOrLoadReaderWithRefetchQueries,\n type DataTypeValue,\n type StoreLink,\n type StoreRecord,\n} from './IsographEnvironment';\nimport { logMessage } from './logging';\nimport { maybeMakeNetworkRequest } from './makeNetworkRequest';\nimport { getStoreRecordProxy } from './optimisticProxy';\nimport type { PromiseWrapper } from './PromiseWrapper';\nimport {\n getPromiseState,\n NOT_SET,\n readPromise,\n wrapPromise,\n wrapResolvedValue,\n} from './PromiseWrapper';\nimport type {\n LoadablySelectedField,\n ReaderAst,\n ReaderClientPointer,\n ReaderImperativelyLoadedField,\n ReaderLinkedField,\n ReaderNonLoadableResolverField,\n ReaderScalarField,\n} from './reader';\nimport { getOrCreateCachedStartUpdate } from './startUpdate';\nimport type { Arguments } from './util';\n\nexport type WithEncounteredRecords<T> = {\n readonly encounteredRecords: EncounteredIds;\n readonly item: ExtractData<T>;\n};\n\nexport function readButDoNotEvaluate<\n TReadFromStore extends UnknownTReadFromStore,\n>(\n environment: IsographEnvironment,\n fragmentReference: FragmentReference<TReadFromStore, unknown>,\n networkRequestOptions: NetworkRequestReaderOptions,\n): WithEncounteredRecords<TReadFromStore> {\n const mutableEncounteredRecords: EncounteredIds = new Map();\n\n // TODO consider moving this to the outside\n const readerWithRefetchQueries = readPromise(\n fragmentReference.readerWithRefetchQueries,\n );\n\n const response = readData(\n environment,\n readerWithRefetchQueries.readerArtifact.readerAst,\n fragmentReference.root,\n fragmentReference.variables ?? {},\n readerWithRefetchQueries.nestedRefetchQueries,\n fragmentReference.networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n\n logMessage(environment, () => ({\n kind: 'DoneReading',\n response,\n fieldName: readerWithRefetchQueries.readerArtifact.fieldName,\n root: fragmentReference.root,\n }));\n\n if (response.kind === 'MissingData') {\n // There are two cases here that we care about:\n // 1. the network request is in flight, we haven't suspended on it, and we want\n // to throw if it errors out. So, networkRequestOptions.suspendIfInFlight === false\n // and networkRequestOptions.throwOnNetworkError === true.\n // 2. everything else\n //\n // In the first case, we cannot simply throw onNextChange, because if the network\n // response errors out, we will not update the store, so the onNextChange promise\n // will not resolve.\n if (\n !networkRequestOptions.suspendIfInFlight &&\n networkRequestOptions.throwOnNetworkError\n ) {\n // What are we doing here? If the network response has errored out, we can do\n // two things: throw a rejected promise, or throw an error. Both work identically\n // in the browser. However, during initial SSR on NextJS, throwing a rejected\n // promise results in an infinite loop (including re-issuing the query until the\n // process OOM's or something.) Hence, we throw an error.\n\n const result = fragmentReference.networkRequest.result;\n if (result !== NOT_SET && result.kind === 'Err') {\n throw new Error('NetworkError', { cause: result.error });\n }\n\n throw new Promise((resolve, reject) => {\n onNextChangeToRecord(environment, response.recordLink).then(resolve);\n fragmentReference.networkRequest.promise.catch(reject);\n });\n }\n throw onNextChangeToRecord(environment, response.recordLink);\n } else {\n return {\n encounteredRecords: mutableEncounteredRecords,\n item: response.data,\n };\n }\n}\n\nexport type ReadDataResultSuccess<Data> = {\n readonly kind: 'Success';\n readonly data: Data;\n};\n\nexport type ReadDataResult<Data> =\n | ReadDataResultSuccess<Data>\n | {\n readonly kind: 'MissingData';\n readonly reason: string;\n readonly nestedReason?: ReadDataResult<unknown>;\n readonly recordLink: StoreLink;\n };\n\nfunction readData<TReadFromStore>(\n environment: IsographEnvironment,\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<ExtractData<TReadFromStore>> {\n const encounteredIds = insertEmptySetIfMissing(\n mutableEncounteredRecords,\n root.__typename,\n );\n encounteredIds.add(root.__link);\n let storeRecord = getStoreRecordProxy(environment.store, root);\n if (storeRecord === undefined) {\n return {\n kind: 'MissingData',\n reason: 'No record for root ' + root.__link,\n recordLink: root,\n };\n }\n\n if (storeRecord == null) {\n return {\n kind: 'Success',\n data: null as any,\n };\n }\n\n let target: { [index: string]: any } = {};\n\n for (const field of ast) {\n switch (field.kind) {\n case 'Scalar': {\n const data = readScalarFieldData(field, storeRecord, root, variables);\n\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias ?? field.fieldName] = data.data;\n break;\n }\n case 'Link': {\n target[field.alias] = root;\n break;\n }\n case 'Linked': {\n const data = readLinkedFieldData(\n environment,\n field,\n storeRecord,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n (ast, root) =>\n readData(\n environment,\n ast,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n ),\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias ?? field.fieldName] = data.data;\n break;\n }\n case 'ImperativelyLoadedField': {\n const data = readImperativelyLoadedField(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n case 'Resolver': {\n const data = readResolverFieldData(\n environment,\n field,\n root,\n variables,\n nestedRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n case 'LoadablySelectedField': {\n const data = readLoadablySelectedFieldData(\n environment,\n field,\n root,\n variables,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return data;\n }\n target[field.alias] = data.data;\n break;\n }\n }\n }\n return {\n kind: 'Success',\n data: target as any,\n };\n}\n\nexport function readLoadablySelectedFieldData(\n environment: IsographEnvironment,\n field: LoadablySelectedField,\n root: StoreLink,\n variables: Variables,\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n const refetchReaderParams = readData(\n environment,\n field.refetchReaderAst,\n root,\n variables,\n // Refetch fields just read the id, and don't need refetch query artifacts\n [],\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n\n if (refetchReaderParams.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: refetchReaderParams,\n recordLink: refetchReaderParams.recordLink,\n };\n }\n\n return {\n kind: 'Success',\n data: (\n args: any,\n // TODO get the associated type for FetchOptions from the loadably selected field\n fetchOptions?: FetchOptions<any, never>,\n ) => {\n // TODO we should use the reader AST for this\n const includeReadOutData = (variables: any, readOutData: any) => {\n variables.id = readOutData.id;\n return variables;\n };\n const localVariables = includeReadOutData(\n args ?? {},\n refetchReaderParams.data,\n );\n writeQueryArgsToVariables(\n localVariables,\n field.queryArguments,\n variables,\n );\n\n return [\n // Stable id\n root.__typename +\n ':' +\n root.__link +\n '/' +\n field.name +\n '/' +\n stableStringifyArgs(localVariables),\n // Fetcher\n () => {\n const fragmentReferenceAndDisposeFromEntrypoint = (\n entrypoint: IsographEntrypoint<any, any, any, {}>,\n ): [FragmentReference<any, any>, CleanupFn] => {\n const { fieldName, readerArtifactKind, readerWithRefetchQueries } =\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n );\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n entrypoint,\n localVariables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName,\n readerArtifactKind,\n // TODO localVariables is not guaranteed to have an id field\n root,\n variables: localVariables,\n networkRequest,\n };\n return [fragmentReference, disposeNetworkRequest];\n };\n\n if (field.entrypoint.kind === 'Entrypoint') {\n return fragmentReferenceAndDisposeFromEntrypoint(field.entrypoint);\n } else {\n const isographArtifactPromiseWrapper = getOrLoadIsographArtifact(\n environment,\n field.entrypoint.typeAndField,\n field.entrypoint.loader,\n );\n const state = getPromiseState(isographArtifactPromiseWrapper);\n if (state.kind === 'Ok') {\n return fragmentReferenceAndDisposeFromEntrypoint(state.value);\n } else {\n // Promise is pending or thrown\n\n let entrypointLoaderState:\n | {\n kind: 'EntrypointNotLoaded';\n }\n | {\n kind: 'NetworkRequestStarted';\n disposeNetworkRequest: CleanupFn;\n }\n | { kind: 'Disposed' } = { kind: 'EntrypointNotLoaded' };\n\n const readerWithRefetchQueries = wrapPromise(\n isographArtifactPromiseWrapper.promise.then(\n (entrypoint) =>\n getOrLoadReaderWithRefetchQueries(\n environment,\n entrypoint.readerWithRefetchQueries,\n ).readerWithRefetchQueries.promise,\n ),\n );\n const networkRequest = wrapPromise(\n isographArtifactPromiseWrapper.promise.then((entrypoint) => {\n if (entrypointLoaderState.kind === 'EntrypointNotLoaded') {\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n entrypoint,\n localVariables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n entrypointLoaderState = {\n kind: 'NetworkRequestStarted',\n disposeNetworkRequest,\n };\n return networkRequest.promise;\n }\n }),\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n readerWithRefetchQueries,\n fieldName: field.name,\n readerArtifactKind: field.entrypoint.readerArtifactKind,\n // TODO localVariables is not guaranteed to have an id field\n root,\n variables: localVariables,\n networkRequest,\n };\n\n return [\n fragmentReference,\n () => {\n if (entrypointLoaderState.kind === 'NetworkRequestStarted') {\n entrypointLoaderState.disposeNetworkRequest();\n }\n entrypointLoaderState = { kind: 'Disposed' };\n },\n ];\n }\n }\n },\n ];\n },\n };\n}\n\nfunction filterVariables(\n variables: Variables,\n allowedVariables: string[],\n): Variables {\n const result: Variables = {};\n for (const key of allowedVariables) {\n // @ts-expect-error\n result[key] = variables[key];\n }\n return result;\n}\n\nfunction generateChildVariableMap(\n variables: Variables,\n fieldArguments: Arguments | null,\n): Variables {\n if (fieldArguments == null) {\n return {};\n }\n\n type Writable<T> = { -readonly [P in keyof T]: T[P] };\n const childVars: Writable<Variables> = {};\n for (const [name, value] of fieldArguments) {\n if (value.kind === 'Object') {\n childVars[name] = generateChildVariableMap(variables, value.value);\n } else if (value.kind === 'Variable') {\n const variable = variables[value.name];\n // Variable could be null if it was not provided but has a default case,\n // so we allow the loop to continue rather than throwing an error.\n if (variable != null) {\n childVars[name] = variable;\n }\n } else {\n childVars[name] = value.value;\n }\n }\n return childVars;\n}\n\nfunction writeQueryArgsToVariables(\n targetVariables: any,\n queryArgs: Arguments | null,\n variables: Variables,\n) {\n if (queryArgs == null) {\n return;\n }\n for (const [name, argType] of queryArgs) {\n switch (argType.kind) {\n case 'Object': {\n writeQueryArgsToVariables(\n (targetVariables[name] = {}),\n argType.value,\n variables,\n );\n break;\n }\n case 'Variable': {\n targetVariables[name] = variables[argType.name];\n break;\n }\n case 'Enum': {\n targetVariables[name] = argType.value;\n break;\n }\n case 'Literal': {\n targetVariables[name] = argType.value;\n break;\n }\n case 'String': {\n targetVariables[name] = argType.value;\n break;\n }\n }\n }\n}\n\nexport function readResolverFieldData(\n environment: IsographEnvironment,\n field: ReaderNonLoadableResolverField,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n const usedRefetchQueries = field.usedRefetchQueries;\n const resolverRefetchQueries = usedRefetchQueries.map((index) => {\n const resolverRefetchQuery = nestedRefetchQueries[index];\n if (resolverRefetchQuery == null) {\n throw new Error(\n 'resolverRefetchQuery is null in Resolver. This is indicative of a bug in Isograph.',\n );\n }\n return resolverRefetchQuery;\n });\n\n const readerWithRefetchQueries = {\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: field.readerArtifact,\n nestedRefetchQueries: resolverRefetchQueries,\n } satisfies ReaderWithRefetchQueries<any, any>;\n\n const fragment = {\n kind: 'FragmentReference',\n readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),\n fieldName: field.readerArtifact.fieldName,\n readerArtifactKind: field.readerArtifact.kind,\n root,\n variables: generateChildVariableMap(variables, field.arguments),\n networkRequest,\n } satisfies FragmentReference<any, any>;\n\n switch (field.readerArtifact.kind) {\n case 'EagerReaderArtifact': {\n const data = readData(\n environment,\n field.readerArtifact.readerAst,\n root,\n generateChildVariableMap(variables, field.arguments),\n resolverRefetchQueries,\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n const firstParameter = {\n data: data.data,\n parameters: variables,\n startUpdate: field.readerArtifact.hasUpdatable\n ? getOrCreateCachedStartUpdate(\n environment,\n fragment,\n networkRequestOptions,\n )\n : undefined,\n };\n return {\n kind: 'Success',\n data: field.readerArtifact.resolver(firstParameter),\n };\n }\n case 'ComponentReaderArtifact': {\n return {\n kind: 'Success',\n data: getOrCreateCachedComponent(\n environment,\n fragment,\n networkRequestOptions,\n ),\n };\n }\n }\n}\n\nexport function readScalarFieldData(\n field: ReaderScalarField,\n storeRecord: StoreRecord,\n root: StoreLink,\n variables: Variables,\n): ReadDataResult<\n string | number | boolean | StoreLink | readonly DataTypeValue[] | null\n> {\n const storeRecordName = getParentRecordKey(field, variables);\n const value = storeRecord[storeRecordName];\n // TODO consider making scalars into discriminated unions. This probably has\n // to happen for when we handle errors.\n if (value === undefined) {\n return {\n kind: 'MissingData',\n reason: 'No value for ' + storeRecordName + ' on root ' + root.__link,\n recordLink: root,\n };\n }\n return { kind: 'Success', data: value };\n}\n\nexport function readLinkedFieldData(\n environment: IsographEnvironment,\n field: ReaderLinkedField,\n storeRecord: StoreRecord,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n readData: <TReadFromStore>(\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n ) => ReadDataResult<object>,\n): ReadDataResult<unknown> {\n const storeRecordName = getParentRecordKey(field, variables);\n let value = storeRecord[storeRecordName];\n\n if (field.condition != null) {\n const data = readData(field.condition.readerAst, root);\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n\n const readerWithRefetchQueries = {\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: field.condition,\n // TODO this is wrong\n // should map field.condition.usedRefetchQueries\n // but it doesn't exist\n nestedRefetchQueries: [],\n } satisfies ReaderWithRefetchQueries<any, any>;\n\n const fragment = {\n kind: 'FragmentReference',\n readerWithRefetchQueries: wrapResolvedValue(readerWithRefetchQueries),\n root,\n fieldName: field.condition.fieldName,\n readerArtifactKind: field.condition.kind,\n variables: generateChildVariableMap(\n variables,\n // TODO this is wrong\n // should use field.arguments\n // but it doesn't exist\n [],\n ),\n networkRequest,\n } satisfies FragmentReference<any, any>;\n\n const condition = field.condition.resolver({\n data: data.data,\n parameters: {},\n ...(field.condition.hasUpdatable\n ? {\n startUpdate: getOrCreateCachedStartUpdate(\n environment,\n fragment,\n networkRequestOptions,\n ),\n }\n : undefined),\n });\n value = condition;\n }\n\n if (Array.isArray(value)) {\n const results = [];\n for (const item of value) {\n const link = assertLink(item);\n if (link === undefined) {\n return {\n kind: 'MissingData',\n reason:\n 'No link for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n recordLink: root,\n };\n } else if (link == null) {\n results.push(null);\n continue;\n }\n\n if (isClientPointer(field)) {\n const result = readClientPointerData(\n environment,\n field,\n link,\n variables,\n nestedRefetchQueries,\n readData,\n );\n if (result.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n nestedReason: result,\n recordLink: result.recordLink,\n };\n }\n results.push(result.data);\n continue;\n }\n\n const result = readData(field.selections, link);\n if (result.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(item),\n nestedReason: result,\n recordLink: result.recordLink,\n };\n }\n results.push(result.data);\n }\n return {\n kind: 'Success',\n data: results,\n };\n }\n let link = assertLink(value);\n\n if (link === undefined) {\n // TODO make this configurable, and also generated and derived from the schema\n const missingFieldHandler = environment.missingFieldHandler;\n\n const altLink = missingFieldHandler?.(\n storeRecord,\n root,\n field.fieldName,\n field.arguments,\n variables,\n );\n logMessage(environment, () => ({\n kind: 'MissingFieldHandlerCalled',\n root,\n storeRecord,\n fieldName: field.fieldName,\n arguments: field.arguments,\n variables,\n }));\n\n if (altLink === undefined) {\n return {\n kind: 'MissingData',\n reason:\n 'No link for ' +\n storeRecordName +\n ' on root ' +\n root.__link +\n '. Link is ' +\n JSON.stringify(value),\n recordLink: root,\n };\n } else {\n link = altLink;\n }\n } else if (link == null) {\n return {\n kind: 'Success',\n data: null,\n };\n }\n\n if (isClientPointer(field)) {\n const data = readClientPointerData(\n environment,\n field,\n link,\n variables,\n nestedRefetchQueries,\n readData,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason:\n 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n return data;\n }\n const data = readData(field.selections, link);\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + storeRecordName + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n }\n return data;\n}\n\nfunction isClientPointer(\n field: ReaderLinkedField,\n): field is ReaderClientPointer {\n return field.refetchQueryIndex != null;\n}\n\nexport function readClientPointerData(\n environment: IsographEnvironment,\n field: ReaderClientPointer,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n readData: <TReadFromStore>(\n ast: ReaderAst<TReadFromStore>,\n root: StoreLink,\n ) => ReadDataResult<object>,\n): ReadDataResult<unknown> {\n const refetchReaderParams = readData(\n [\n {\n kind: 'Scalar',\n fieldName: 'id',\n alias: null,\n arguments: null,\n isUpdatable: false,\n },\n ],\n root,\n );\n\n if (refetchReaderParams.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: refetchReaderParams,\n recordLink: refetchReaderParams.recordLink,\n };\n }\n\n const refetchQuery = nestedRefetchQueries[field.refetchQueryIndex];\n if (refetchQuery == null) {\n throw new Error(\n 'refetchQuery is null in RefetchField. This is indicative of a bug in Isograph.',\n );\n }\n const refetchQueryArtifact = refetchQuery.artifact;\n const allowedVariables = refetchQuery.allowedVariables;\n\n return {\n kind: 'Success',\n data: (\n args: any,\n // TODO get the associated type for FetchOptions from the loadably selected field\n fetchOptions?: FetchOptions<any, never>,\n ) => {\n const includeReadOutData = (variables: any, readOutData: any) => {\n variables.id = readOutData.id;\n return variables;\n };\n const localVariables = includeReadOutData(\n args ?? {},\n refetchReaderParams.data,\n );\n writeQueryArgsToVariables(localVariables, field.arguments, variables);\n\n return [\n // Stable id\n root.__typename +\n ':' +\n root.__link +\n '/' +\n field.fieldName +\n '/' +\n stableStringifyArgs(localVariables),\n // Fetcher\n (): ItemCleanupPair<FragmentReference<any, any>> | undefined => {\n const variables = includeReadOutData(\n filterVariables({ ...args, ...localVariables }, allowedVariables),\n refetchReaderParams.data,\n );\n\n const readerWithRefetchQueries = wrapResolvedValue({\n kind: 'ReaderWithRefetchQueries',\n readerArtifact: {\n kind: 'EagerReaderArtifact',\n fieldName: field.fieldName,\n readerAst: field.selections,\n resolver: ({ data }: { data: any }) => data,\n hasUpdatable: false,\n },\n nestedRefetchQueries,\n } as const);\n\n const [networkRequest, disposeNetworkRequest] =\n maybeMakeNetworkRequest(\n environment,\n refetchQueryArtifact,\n variables,\n readerWithRefetchQueries,\n fetchOptions ?? null,\n );\n\n const fragmentReference: FragmentReference<any, any> = {\n kind: 'FragmentReference',\n fieldName: field.fieldName,\n readerArtifactKind: 'EagerReaderArtifact',\n readerWithRefetchQueries: readerWithRefetchQueries,\n root,\n variables,\n networkRequest,\n };\n return [fragmentReference, disposeNetworkRequest];\n },\n ];\n },\n };\n}\n\nexport type NetworkRequestReaderOptions = {\n suspendIfInFlight: boolean;\n throwOnNetworkError: boolean;\n};\n\nexport function getNetworkRequestOptionsWithDefaults(\n networkRequestOptions?: Partial<NetworkRequestReaderOptions> | void,\n): NetworkRequestReaderOptions {\n return {\n suspendIfInFlight: networkRequestOptions?.suspendIfInFlight ?? false,\n throwOnNetworkError: networkRequestOptions?.throwOnNetworkError ?? true,\n };\n}\n\n// TODO use a description of the params for this?\n// TODO call stableStringifyArgs on the variable values, as well.\n// This doesn't matter for now, since we are just using primitive values\n// in the demo.\nfunction stableStringifyArgs(args: object) {\n const keys = Object.keys(args);\n keys.sort();\n let s = '';\n for (const key of keys) {\n // @ts-expect-error\n s += `${key}=${JSON.stringify(args[key])};`;\n }\n return s;\n}\n\nexport function readImperativelyLoadedField(\n environment: IsographEnvironment,\n field: ReaderImperativelyLoadedField,\n root: StoreLink,\n variables: Variables,\n nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[],\n networkRequest: PromiseWrapper<void, any>,\n networkRequestOptions: NetworkRequestReaderOptions,\n mutableEncounteredRecords: EncounteredIds,\n): ReadDataResult<unknown> {\n // First, we read the data using the refetch reader AST (i.e. read out the\n // id field).\n const data = readData(\n environment,\n field.refetchReaderArtifact.readerAst,\n root,\n variables,\n // Refetch fields just read the id, and don't need refetch query artifacts\n [],\n // This is probably indicative of the fact that we are doing redundant checks\n // on the status of this network request...\n networkRequest,\n networkRequestOptions,\n mutableEncounteredRecords,\n );\n if (data.kind === 'MissingData') {\n return {\n kind: 'MissingData',\n reason: 'Missing data for ' + field.alias + ' on root ' + root.__link,\n nestedReason: data,\n recordLink: data.recordLink,\n };\n } else {\n const { refetchQueryIndex } = field;\n const refetchQuery = nestedRefetchQueries[refetchQueryIndex];\n if (refetchQuery == null) {\n throw new Error(\n 'Refetch query not found. This is indicative of a bug in Isograph.',\n );\n }\n const refetchQueryArtifact = refetchQuery.artifact;\n const allowedVariables = refetchQuery.allowedVariables;\n\n // Second, we allow the user to call the resolver, which will ultimately\n // use the resolver reader AST to get the resolver parameters.\n return {\n kind: 'Success',\n data: (args: any) => [\n // Stable id\n root.__typename + ':' + root.__link + '__' + field.name,\n // Fetcher\n field.refetchReaderArtifact.resolver(\n environment,\n refetchQueryArtifact,\n data.data,\n filterVariables({ ...args, ...variables }, allowedVariables),\n root,\n // TODO these params should be removed\n null,\n [],\n ),\n ],\n };\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { FetchOptions } from "./check.mjs";
2
+ import { Arguments } from "./util.mjs";
3
+ import { ComponentOrFieldName, IsographEnvironment, StoreLink } from "./IsographEnvironment.mjs";
4
+ import { ExtractParameters, FragmentReference, UnknownTReadFromStore } from "./FragmentReference.mjs";
5
+ import { IsographEntrypoint, IsographEntrypointLoader, RefetchQueryNormalizationArtifact, RefetchQueryNormalizationArtifactWrapper } from "./entrypoint.mjs";
6
+ import { Factory } from "@isograph/disposable-types";
7
+
8
+ //#region src/core/reader.d.ts
9
+ type TopLevelReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue, TComponentProps extends Record<PropertyKey, never>> = EagerReaderArtifact<TReadFromStore, TClientFieldValue> | ComponentReaderArtifact<TReadFromStore, TComponentProps>;
10
+ type EagerReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TClientFieldValue> = {
11
+ readonly kind: 'EagerReaderArtifact';
12
+ readonly fieldName: ComponentOrFieldName;
13
+ readonly readerAst: ReaderAst<TReadFromStore>;
14
+ readonly resolver: (data: ResolverFirstParameter<TReadFromStore>) => TClientFieldValue;
15
+ readonly hasUpdatable: boolean;
16
+ };
17
+ type ComponentReaderArtifact<TReadFromStore extends UnknownTReadFromStore, TComponentProps extends Record<string, unknown> = Record<PropertyKey, never>> = {
18
+ readonly kind: 'ComponentReaderArtifact';
19
+ readonly fieldName: ComponentOrFieldName;
20
+ readonly readerAst: ReaderAst<TReadFromStore>;
21
+ readonly resolver: (data: ResolverFirstParameter<TReadFromStore>, runtimeProps: TComponentProps) => React.ReactNode;
22
+ readonly hasUpdatable: boolean;
23
+ };
24
+ type ResolverFirstParameter<TReadFromStore extends UnknownTReadFromStore> = Pick<TReadFromStore, 'data' | 'parameters' | 'startUpdate'>;
25
+ type StartUpdate<UpdatableData> = (updater: (startUpdateParams: {
26
+ updatableData: UpdatableData;
27
+ }) => void) => void;
28
+ type RefetchReaderArtifact = {
29
+ readonly kind: 'RefetchReaderArtifact';
30
+ readonly readerAst: ReaderAst<unknown>;
31
+ readonly resolver: (environment: IsographEnvironment, artifact: RefetchQueryNormalizationArtifact, variables: any, filteredVariables: any, rootLink: StoreLink, readerArtifact: TopLevelReaderArtifact<any, any, any> | null, nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[]) => () => void;
32
+ };
33
+ type ReaderAstNode = ReaderScalarField | ReaderLinkedField | ReaderNonLoadableResolverField | ReaderImperativelyLoadedField | LoadablySelectedField | ReaderLinkField;
34
+ type ReaderAst<TReadFromStore> = ReadonlyArray<ReaderAstNode>;
35
+ type ReaderScalarField = {
36
+ readonly kind: 'Scalar';
37
+ readonly fieldName: string;
38
+ readonly alias: string | null;
39
+ readonly arguments: Arguments | null;
40
+ readonly isUpdatable: boolean;
41
+ };
42
+ type ReaderLinkField = {
43
+ readonly kind: 'Link';
44
+ readonly alias: string;
45
+ };
46
+ type ReaderLinkedField = {
47
+ readonly kind: 'Linked';
48
+ readonly fieldName: string;
49
+ readonly alias: string | null;
50
+ readonly selections: ReaderAst<unknown>;
51
+ readonly arguments: Arguments | null;
52
+ readonly condition: EagerReaderArtifact<{
53
+ data: any;
54
+ parameters: any;
55
+ startUpdate?: StartUpdate<any>;
56
+ }, StoreLink | null | (StoreLink | null)[] | StoreLink[]> | null;
57
+ readonly isUpdatable: boolean;
58
+ /**
59
+ * If refetchQueryIndex != null, then the linked field is a client pointer.
60
+ */
61
+ readonly refetchQueryIndex: number | null;
62
+ };
63
+ type ReaderNonLoadableResolverField = {
64
+ readonly kind: 'Resolver';
65
+ readonly alias: string;
66
+ readonly readerArtifact: TopLevelReaderArtifact<any, any, any>;
67
+ readonly arguments: Arguments | null;
68
+ readonly usedRefetchQueries: number[];
69
+ };
70
+ type ReaderImperativelyLoadedField = {
71
+ readonly kind: 'ImperativelyLoadedField';
72
+ readonly alias: string;
73
+ readonly refetchReaderArtifact: RefetchReaderArtifact;
74
+ readonly refetchQueryIndex: number;
75
+ readonly name: string;
76
+ };
77
+ type LoadablySelectedField = {
78
+ readonly kind: 'LoadablySelectedField';
79
+ readonly alias: string;
80
+ readonly name: string;
81
+ readonly queryArguments: Arguments | null;
82
+ readonly refetchReaderAst: ReaderAst<any>;
83
+ readonly entrypoint: IsographEntrypoint<any, any, any, any> | IsographEntrypointLoader<any, any, any>;
84
+ };
85
+ type StableId = string;
86
+ type LoadableField<TReadFromStore extends UnknownTReadFromStore, TResult, TArgs = ExtractParameters<TReadFromStore>> = (args: TArgs | void, fetchOptions: FetchOptions<TResult, never>) => [StableId, Factory<FragmentReference<TReadFromStore, TResult>>];
87
+ //#endregion
88
+ export { ComponentReaderArtifact, EagerReaderArtifact, LoadableField, LoadablySelectedField, ReaderAst, ReaderAstNode, ReaderImperativelyLoadedField, ReaderLinkField, ReaderLinkedField, ReaderNonLoadableResolverField, ReaderScalarField, RefetchReaderArtifact, ResolverFirstParameter, StableId, StartUpdate, TopLevelReaderArtifact };
89
+ //# sourceMappingURL=reader.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.mts","names":[],"sources":["../../src/core/reader.ts"],"sourcesContent":[],"mappings":"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"}