@isograph/react 0.4.3 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/.turbo/turbo-compile-libs.log +10 -3
  2. package/dist/_virtual/rolldown_runtime.js +25 -0
  3. package/dist/core/FragmentReference.d.mts +38 -0
  4. package/dist/core/FragmentReference.d.mts.map +1 -0
  5. package/dist/core/FragmentReference.d.ts +31 -27
  6. package/dist/core/FragmentReference.d.ts.map +1 -1
  7. package/dist/core/FragmentReference.js +8 -6
  8. package/dist/core/FragmentReference.mjs +10 -0
  9. package/dist/core/FragmentReference.mjs.map +1 -0
  10. package/dist/core/IsographEnvironment.d.mts +89 -0
  11. package/dist/core/IsographEnvironment.d.mts.map +1 -0
  12. package/dist/core/IsographEnvironment.d.ts +77 -72
  13. package/dist/core/IsographEnvironment.d.ts.map +1 -1
  14. package/dist/core/IsographEnvironment.js +62 -59
  15. package/dist/core/IsographEnvironment.mjs +67 -0
  16. package/dist/core/IsographEnvironment.mjs.map +1 -0
  17. package/dist/core/PromiseWrapper.d.mts +36 -0
  18. package/dist/core/PromiseWrapper.d.mts.map +1 -0
  19. package/dist/core/PromiseWrapper.d.ts +27 -18
  20. package/dist/core/PromiseWrapper.d.ts.map +1 -1
  21. package/dist/core/PromiseWrapper.js +45 -43
  22. package/dist/core/PromiseWrapper.mjs +49 -0
  23. package/dist/core/PromiseWrapper.mjs.map +1 -0
  24. package/dist/core/areEqualWithDeepComparison.js +56 -108
  25. package/dist/core/areEqualWithDeepComparison.mjs +62 -0
  26. package/dist/core/areEqualWithDeepComparison.mjs.map +1 -0
  27. package/dist/core/brand.d.mts +19 -0
  28. package/dist/core/brand.d.mts.map +1 -0
  29. package/dist/core/brand.d.ts +18 -1
  30. package/dist/core/brand.d.ts.map +1 -1
  31. package/dist/core/cache.d.mts +20 -0
  32. package/dist/core/cache.d.mts.map +1 -0
  33. package/dist/core/cache.d.ts +18 -34
  34. package/dist/core/cache.d.ts.map +1 -1
  35. package/dist/core/cache.js +210 -516
  36. package/dist/core/cache.mjs +237 -0
  37. package/dist/core/cache.mjs.map +1 -0
  38. package/dist/core/check.d.mts +28 -0
  39. package/dist/core/check.d.mts.map +1 -0
  40. package/dist/core/check.d.ts +24 -18
  41. package/dist/core/check.d.ts.map +1 -1
  42. package/dist/core/check.js +80 -124
  43. package/dist/core/check.mjs +84 -0
  44. package/dist/core/check.mjs.map +1 -0
  45. package/dist/core/componentCache.js +10 -34
  46. package/dist/core/componentCache.mjs +12 -0
  47. package/dist/core/componentCache.mjs.map +1 -0
  48. package/dist/core/entrypoint.d.mts +99 -0
  49. package/dist/core/entrypoint.d.mts.map +1 -0
  50. package/dist/core/entrypoint.d.ts +83 -68
  51. package/dist/core/entrypoint.d.ts.map +1 -1
  52. package/dist/core/entrypoint.js +6 -5
  53. package/dist/core/entrypoint.mjs +8 -0
  54. package/dist/core/entrypoint.mjs.map +1 -0
  55. package/dist/core/garbageCollection.d.mts +18 -0
  56. package/dist/core/garbageCollection.d.mts.map +1 -0
  57. package/dist/core/garbageCollection.d.ts +15 -10
  58. package/dist/core/garbageCollection.d.ts.map +1 -1
  59. package/dist/core/garbageCollection.js +82 -99
  60. package/dist/core/garbageCollection.mjs +89 -0
  61. package/dist/core/garbageCollection.mjs.map +1 -0
  62. package/dist/core/getOrCreateCacheForArtifact.js +37 -0
  63. package/dist/core/getOrCreateCacheForArtifact.mjs +38 -0
  64. package/dist/core/getOrCreateCacheForArtifact.mjs.map +1 -0
  65. package/dist/core/logging.d.mts +95 -0
  66. package/dist/core/logging.d.mts.map +1 -0
  67. package/dist/core/logging.d.ts +78 -60
  68. package/dist/core/logging.d.ts.map +1 -1
  69. package/dist/core/logging.js +17 -18
  70. package/dist/core/logging.mjs +20 -0
  71. package/dist/core/logging.mjs.map +1 -0
  72. package/dist/core/makeNetworkRequest.d.mts +13 -0
  73. package/dist/core/makeNetworkRequest.d.mts.map +1 -0
  74. package/dist/core/makeNetworkRequest.d.ts +12 -8
  75. package/dist/core/makeNetworkRequest.d.ts.map +1 -1
  76. package/dist/core/makeNetworkRequest.js +188 -195
  77. package/dist/core/makeNetworkRequest.mjs +195 -0
  78. package/dist/core/makeNetworkRequest.mjs.map +1 -0
  79. package/dist/core/optimisticProxy.d.mts +43 -0
  80. package/dist/core/optimisticProxy.d.mts.map +1 -0
  81. package/dist/core/optimisticProxy.d.ts +43 -0
  82. package/dist/core/optimisticProxy.d.ts.map +1 -0
  83. package/dist/core/optimisticProxy.js +273 -0
  84. package/dist/core/optimisticProxy.mjs +268 -0
  85. package/dist/core/optimisticProxy.mjs.map +1 -0
  86. package/dist/core/read.d.mts +29 -0
  87. package/dist/core/read.d.mts.map +1 -0
  88. package/dist/core/read.d.ts +23 -27
  89. package/dist/core/read.d.ts.map +1 -1
  90. package/dist/core/read.js +438 -618
  91. package/dist/core/read.mjs +456 -0
  92. package/dist/core/read.mjs.map +1 -0
  93. package/dist/core/reader.d.mts +89 -0
  94. package/dist/core/reader.d.mts.map +1 -0
  95. package/dist/core/reader.d.ts +78 -74
  96. package/dist/core/reader.d.ts.map +1 -1
  97. package/dist/core/startUpdate.js +118 -156
  98. package/dist/core/startUpdate.mjs +125 -0
  99. package/dist/core/startUpdate.mjs.map +1 -0
  100. package/dist/core/subscribe.d.mts +12 -0
  101. package/dist/core/subscribe.d.mts.map +1 -0
  102. package/dist/core/subscribe.d.ts +12 -0
  103. package/dist/core/subscribe.d.ts.map +1 -0
  104. package/dist/core/subscribe.js +79 -0
  105. package/dist/core/subscribe.mjs +79 -0
  106. package/dist/core/subscribe.mjs.map +1 -0
  107. package/dist/core/util.d.mts +27 -0
  108. package/dist/core/util.d.mts.map +1 -0
  109. package/dist/core/util.d.ts +21 -17
  110. package/dist/core/util.d.ts.map +1 -1
  111. package/dist/core/util.js +22 -2
  112. package/dist/core/util.mjs +21 -0
  113. package/dist/core/util.mjs.map +1 -0
  114. package/dist/core/writeData.d.mts +11 -0
  115. package/dist/core/writeData.d.mts.map +1 -0
  116. package/dist/core/writeData.d.ts +11 -0
  117. package/dist/core/writeData.d.ts.map +1 -0
  118. package/dist/core/writeData.js +41 -0
  119. package/dist/core/writeData.mjs +42 -0
  120. package/dist/core/writeData.mjs.map +1 -0
  121. package/dist/index.d.mts +32 -0
  122. package/dist/index.d.ts +32 -29
  123. package/dist/index.js +70 -68
  124. package/dist/index.mjs +31 -0
  125. package/dist/loadable-hooks/useClientSideDefer.d.mts +12 -0
  126. package/dist/loadable-hooks/useClientSideDefer.d.mts.map +1 -0
  127. package/dist/loadable-hooks/useClientSideDefer.d.ts +10 -8
  128. package/dist/loadable-hooks/useClientSideDefer.d.ts.map +1 -1
  129. package/dist/loadable-hooks/useClientSideDefer.js +14 -12
  130. package/dist/loadable-hooks/useClientSideDefer.mjs +14 -0
  131. package/dist/loadable-hooks/useClientSideDefer.mjs.map +1 -0
  132. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts +33 -0
  133. package/dist/loadable-hooks/useConnectionSpecPagination.d.mts.map +1 -0
  134. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts +27 -21
  135. package/dist/loadable-hooks/useConnectionSpecPagination.d.ts.map +1 -1
  136. package/dist/loadable-hooks/useConnectionSpecPagination.js +133 -158
  137. package/dist/loadable-hooks/useConnectionSpecPagination.mjs +134 -0
  138. package/dist/loadable-hooks/useConnectionSpecPagination.mjs.map +1 -0
  139. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts +8 -0
  140. package/dist/loadable-hooks/useImperativeExposedMutationField.d.mts.map +1 -0
  141. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts +6 -3
  142. package/dist/loadable-hooks/useImperativeExposedMutationField.d.ts.map +1 -1
  143. package/dist/loadable-hooks/useImperativeExposedMutationField.js +9 -12
  144. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs +11 -0
  145. package/dist/loadable-hooks/useImperativeExposedMutationField.mjs.map +1 -0
  146. package/dist/loadable-hooks/useImperativeLoadableField.d.mts +19 -0
  147. package/dist/loadable-hooks/useImperativeLoadableField.d.mts.map +1 -0
  148. package/dist/loadable-hooks/useImperativeLoadableField.d.ts +15 -11
  149. package/dist/loadable-hooks/useImperativeLoadableField.d.ts.map +1 -1
  150. package/dist/loadable-hooks/useImperativeLoadableField.js +16 -12
  151. package/dist/loadable-hooks/useImperativeLoadableField.mjs +17 -0
  152. package/dist/loadable-hooks/useImperativeLoadableField.mjs.map +1 -0
  153. package/dist/loadable-hooks/useSkipLimitPagination.d.mts +24 -0
  154. package/dist/loadable-hooks/useSkipLimitPagination.d.mts.map +1 -0
  155. package/dist/loadable-hooks/useSkipLimitPagination.d.ts +19 -15
  156. package/dist/loadable-hooks/useSkipLimitPagination.d.ts.map +1 -1
  157. package/dist/loadable-hooks/useSkipLimitPagination.js +118 -160
  158. package/dist/loadable-hooks/useSkipLimitPagination.mjs +119 -0
  159. package/dist/loadable-hooks/useSkipLimitPagination.mjs.map +1 -0
  160. package/dist/react/FragmentReader.d.mts +18 -0
  161. package/dist/react/FragmentReader.d.mts.map +1 -0
  162. package/dist/react/FragmentReader.d.ts +16 -7
  163. package/dist/react/FragmentReader.d.ts.map +1 -1
  164. package/dist/react/FragmentReader.js +8 -7
  165. package/dist/react/FragmentReader.mjs +10 -0
  166. package/dist/react/FragmentReader.mjs.map +1 -0
  167. package/dist/react/FragmentRenderer.d.mts +20 -0
  168. package/dist/react/FragmentRenderer.d.mts.map +1 -0
  169. package/dist/react/FragmentRenderer.d.ts +18 -13
  170. package/dist/react/FragmentRenderer.d.ts.map +1 -1
  171. package/dist/react/FragmentRenderer.js +11 -33
  172. package/dist/react/FragmentRenderer.mjs +12 -0
  173. package/dist/react/FragmentRenderer.mjs.map +1 -0
  174. package/dist/react/IsographEnvironmentProvider.d.mts +17 -0
  175. package/dist/react/IsographEnvironmentProvider.d.mts.map +1 -0
  176. package/dist/react/IsographEnvironmentProvider.d.ts +15 -9
  177. package/dist/react/IsographEnvironmentProvider.d.ts.map +1 -1
  178. package/dist/react/IsographEnvironmentProvider.js +15 -39
  179. package/dist/react/IsographEnvironmentProvider.mjs +17 -0
  180. package/dist/react/IsographEnvironmentProvider.mjs.map +1 -0
  181. package/dist/react/LoadableFieldReader.d.mts +21 -0
  182. package/dist/react/LoadableFieldReader.d.mts.map +1 -0
  183. package/dist/react/LoadableFieldReader.d.ts +20 -11
  184. package/dist/react/LoadableFieldReader.d.ts.map +1 -1
  185. package/dist/react/LoadableFieldReader.js +13 -8
  186. package/dist/react/LoadableFieldReader.mjs +14 -0
  187. package/dist/react/LoadableFieldReader.mjs.map +1 -0
  188. package/dist/react/LoadableFieldRenderer.d.mts +22 -0
  189. package/dist/react/LoadableFieldRenderer.d.mts.map +1 -0
  190. package/dist/react/LoadableFieldRenderer.d.ts +21 -12
  191. package/dist/react/LoadableFieldRenderer.d.ts.map +1 -1
  192. package/dist/react/LoadableFieldRenderer.js +13 -35
  193. package/dist/react/LoadableFieldRenderer.mjs +14 -0
  194. package/dist/react/LoadableFieldRenderer.mjs.map +1 -0
  195. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts +18 -0
  196. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.mts.map +1 -0
  197. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts +11 -3
  198. package/dist/react/RenderAfterCommit__DO_NOT_USE.d.ts.map +1 -1
  199. package/dist/react/RenderAfterCommit__DO_NOT_USE.js +17 -13
  200. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs +18 -0
  201. package/dist/react/RenderAfterCommit__DO_NOT_USE.mjs.map +1 -0
  202. package/dist/react/createIsographEnvironment.d.mts +9 -0
  203. package/dist/react/createIsographEnvironment.d.mts.map +1 -0
  204. package/dist/react/createIsographEnvironment.d.ts +8 -0
  205. package/dist/react/createIsographEnvironment.d.ts.map +1 -0
  206. package/dist/react/createIsographEnvironment.js +10 -0
  207. package/dist/react/createIsographEnvironment.mjs +11 -0
  208. package/dist/react/createIsographEnvironment.mjs.map +1 -0
  209. package/dist/react/maybeUnwrapNetworkRequest.js +11 -0
  210. package/dist/react/maybeUnwrapNetworkRequest.mjs +12 -0
  211. package/dist/react/maybeUnwrapNetworkRequest.mjs.map +1 -0
  212. package/dist/react/useImperativeReference.d.mts +15 -0
  213. package/dist/react/useImperativeReference.d.mts.map +1 -0
  214. package/dist/react/useImperativeReference.d.ts +13 -7
  215. package/dist/react/useImperativeReference.d.ts.map +1 -1
  216. package/dist/react/useImperativeReference.js +34 -32
  217. package/dist/react/useImperativeReference.mjs +35 -0
  218. package/dist/react/useImperativeReference.mjs.map +1 -0
  219. package/dist/react/useLazyReference.d.mts +13 -0
  220. package/dist/react/useLazyReference.d.mts.map +1 -0
  221. package/dist/react/useLazyReference.d.ts +11 -5
  222. package/dist/react/useLazyReference.d.ts.map +1 -1
  223. package/dist/react/useLazyReference.js +17 -40
  224. package/dist/react/useLazyReference.mjs +18 -0
  225. package/dist/react/useLazyReference.mjs.map +1 -0
  226. package/dist/react/useReadAndSubscribe.d.mts +20 -0
  227. package/dist/react/useReadAndSubscribe.d.mts.map +1 -0
  228. package/dist/react/useReadAndSubscribe.d.ts +14 -9
  229. package/dist/react/useReadAndSubscribe.d.ts.map +1 -1
  230. package/dist/react/useReadAndSubscribe.js +57 -39
  231. package/dist/react/useReadAndSubscribe.mjs +59 -0
  232. package/dist/react/useReadAndSubscribe.mjs.map +1 -0
  233. package/dist/react/useRerenderOnChange.d.mts +12 -0
  234. package/dist/react/useRerenderOnChange.d.mts.map +1 -0
  235. package/dist/react/useRerenderOnChange.d.ts +10 -6
  236. package/dist/react/useRerenderOnChange.d.ts.map +1 -1
  237. package/dist/react/useRerenderOnChange.js +16 -20
  238. package/dist/react/useRerenderOnChange.mjs +17 -0
  239. package/dist/react/useRerenderOnChange.mjs.map +1 -0
  240. package/dist/react/useResult.d.mts +8 -0
  241. package/dist/react/useResult.d.mts.map +1 -0
  242. package/dist/react/useResult.d.ts +7 -5
  243. package/dist/react/useResult.d.ts.map +1 -1
  244. package/dist/react/useResult.js +27 -39
  245. package/dist/react/useResult.mjs +30 -0
  246. package/dist/react/useResult.mjs.map +1 -0
  247. package/package.json +26 -19
  248. package/src/core/FragmentReference.ts +13 -7
  249. package/src/core/IsographEnvironment.ts +80 -21
  250. package/src/core/PromiseWrapper.ts +14 -7
  251. package/src/core/areEqualWithDeepComparison.ts +2 -18
  252. package/src/core/brand.ts +18 -0
  253. package/src/core/cache.ts +62 -332
  254. package/src/core/check.ts +30 -26
  255. package/src/core/componentCache.ts +11 -44
  256. package/src/core/entrypoint.ts +50 -9
  257. package/src/core/garbageCollection.ts +81 -28
  258. package/src/core/getOrCreateCacheForArtifact.ts +86 -0
  259. package/src/core/logging.ts +25 -13
  260. package/src/core/makeNetworkRequest.ts +320 -94
  261. package/src/core/optimisticProxy.ts +544 -0
  262. package/src/core/read.ts +251 -198
  263. package/src/core/reader.ts +18 -17
  264. package/src/core/startUpdate.ts +47 -36
  265. package/src/core/subscribe.ts +189 -0
  266. package/src/core/util.ts +26 -0
  267. package/src/core/writeData.ts +79 -0
  268. package/src/index.ts +6 -4
  269. package/src/loadable-hooks/useClientSideDefer.ts +80 -30
  270. package/src/loadable-hooks/useConnectionSpecPagination.ts +54 -35
  271. package/src/loadable-hooks/useImperativeLoadableField.ts +5 -5
  272. package/src/loadable-hooks/useSkipLimitPagination.ts +22 -21
  273. package/src/react/FragmentReader.tsx +3 -1
  274. package/src/react/FragmentRenderer.tsx +8 -1
  275. package/src/react/IsographEnvironmentProvider.tsx +2 -1
  276. package/src/react/LoadableFieldReader.tsx +125 -16
  277. package/src/react/LoadableFieldRenderer.tsx +124 -16
  278. package/src/react/createIsographEnvironment.ts +23 -0
  279. package/src/react/maybeUnwrapNetworkRequest.ts +17 -0
  280. package/src/react/useImperativeReference.ts +25 -15
  281. package/src/react/useLazyReference.ts +20 -10
  282. package/src/react/useReadAndSubscribe.ts +53 -12
  283. package/src/react/useRerenderOnChange.ts +3 -3
  284. package/src/react/useResult.ts +15 -35
  285. package/src/tests/__isograph/Node/asEconomist/resolver_reader.ts +1 -1
  286. package/src/tests/__isograph/Query/linkedUpdate/entrypoint.ts +3 -1
  287. package/src/tests/__isograph/Query/linkedUpdate/raw_response_type.ts +13 -0
  288. package/src/tests/__isograph/Query/linkedUpdate/resolver_reader.ts +1 -1
  289. package/src/tests/__isograph/Query/meName/entrypoint.ts +3 -1
  290. package/src/tests/__isograph/Query/meName/raw_response_type.ts +7 -0
  291. package/src/tests/__isograph/Query/meName/resolver_reader.ts +1 -1
  292. package/src/tests/__isograph/Query/meNameSuccessor/entrypoint.ts +3 -1
  293. package/src/tests/__isograph/Query/meNameSuccessor/raw_response_type.ts +14 -0
  294. package/src/tests/__isograph/Query/meNameSuccessor/resolver_reader.ts +1 -1
  295. package/src/tests/__isograph/Query/nodeField/entrypoint.ts +3 -1
  296. package/src/tests/__isograph/Query/nodeField/raw_response_type.ts +7 -0
  297. package/src/tests/__isograph/Query/nodeField/resolver_reader.ts +1 -1
  298. package/src/tests/__isograph/Query/normalizeUndefinedField/entrypoint.ts +33 -0
  299. package/src/tests/__isograph/Query/normalizeUndefinedField/normalization_ast.ts +25 -0
  300. package/src/tests/__isograph/Query/normalizeUndefinedField/output_type.ts +3 -0
  301. package/src/tests/__isograph/Query/normalizeUndefinedField/param_type.ts +9 -0
  302. package/src/tests/__isograph/Query/normalizeUndefinedField/query_text.ts +6 -0
  303. package/src/tests/__isograph/Query/normalizeUndefinedField/raw_response_type.ts +7 -0
  304. package/src/tests/__isograph/Query/normalizeUndefinedField/resolver_reader.ts +38 -0
  305. package/src/tests/__isograph/Query/startUpdate/entrypoint.ts +3 -1
  306. package/src/tests/__isograph/Query/startUpdate/raw_response_type.ts +8 -0
  307. package/src/tests/__isograph/Query/startUpdate/resolver_reader.ts +1 -1
  308. package/src/tests/__isograph/Query/subquery/entrypoint.ts +3 -1
  309. package/src/tests/__isograph/Query/subquery/raw_response_type.ts +9 -0
  310. package/src/tests/__isograph/Query/subquery/resolver_reader.ts +1 -1
  311. package/src/tests/__isograph/iso.ts +11 -1
  312. package/src/tests/garbageCollection.test.ts +10 -10
  313. package/src/tests/meNameSuccessor.ts +7 -4
  314. package/src/tests/nodeQuery.ts +6 -4
  315. package/src/tests/normalizeData.test.ts +94 -18
  316. package/src/tests/optimisticProxy.test.ts +862 -0
  317. package/src/tests/startUpdate.test.ts +11 -11
  318. package/vitest.config.ts +5 -0
  319. package/dist/core/areEqualWithDeepComparison.d.ts +0 -3
  320. package/dist/core/areEqualWithDeepComparison.d.ts.map +0 -1
  321. package/dist/core/brand.js +0 -2
  322. package/dist/core/componentCache.d.ts +0 -5
  323. package/dist/core/componentCache.d.ts.map +0 -1
  324. package/dist/core/reader.js +0 -2
  325. package/dist/core/startUpdate.d.ts +0 -8
  326. package/dist/core/startUpdate.d.ts.map +0 -1
  327. package/dist/index.d.ts.map +0 -1
@@ -0,0 +1,14 @@
1
+ export type Query__meNameSuccessor__raw_response_type = {
2
+ me: {
3
+ id: string,
4
+ name: string,
5
+ successor?: ({
6
+ id: string,
7
+ successor?: ({
8
+ id: string,
9
+ name: string,
10
+ } | null),
11
+ } | null),
12
+ },
13
+ }
14
+
@@ -58,7 +58,7 @@ const artifact: EagerReaderArtifact<
58
58
  Query__meNameSuccessor__output_type
59
59
  > = {
60
60
  kind: "EagerReaderArtifact",
61
- fieldName: "Query.meNameSuccessor",
61
+ fieldName: "meNameSuccessor",
62
62
  resolver,
63
63
  readerAst,
64
64
  hasUpdatable: false,
@@ -1,6 +1,7 @@
1
1
  import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
2
  import {Query__nodeField__param} from './param_type';
3
3
  import {Query__nodeField__output_type} from './output_type';
4
+ import type {Query__nodeField__raw_response_type} from './raw_response_type';
4
5
  import readerResolver from './resolver_reader';
5
6
  import queryText from './query_text';
6
7
  import normalizationAst from './normalization_ast';
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
10
  const artifact: IsographEntrypoint<
10
11
  Query__nodeField__param,
11
12
  Query__nodeField__output_type,
12
- NormalizationAst
13
+ NormalizationAst,
14
+ Query__nodeField__raw_response_type
13
15
  > = {
14
16
  kind: "Entrypoint",
15
17
  networkRequestInfo: {
@@ -0,0 +1,7 @@
1
+ export type Query__nodeField__raw_response_type = {
2
+ node____id___v_id?: ({
3
+ __typename: string,
4
+ id: string,
5
+ } | null),
6
+ }
7
+
@@ -34,7 +34,7 @@ const artifact: EagerReaderArtifact<
34
34
  Query__nodeField__output_type
35
35
  > = {
36
36
  kind: "EagerReaderArtifact",
37
- fieldName: "Query.nodeField",
37
+ fieldName: "nodeField",
38
38
  resolver,
39
39
  readerAst,
40
40
  hasUpdatable: false,
@@ -0,0 +1,33 @@
1
+ import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
+ import {Query__normalizeUndefinedField__param} from './param_type';
3
+ import {Query__normalizeUndefinedField__output_type} from './output_type';
4
+ import type {Query__normalizeUndefinedField__raw_response_type} from './raw_response_type';
5
+ import readerResolver from './resolver_reader';
6
+ import queryText from './query_text';
7
+ import normalizationAst from './normalization_ast';
8
+ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
+
10
+ const artifact: IsographEntrypoint<
11
+ Query__normalizeUndefinedField__param,
12
+ Query__normalizeUndefinedField__output_type,
13
+ NormalizationAst,
14
+ Query__normalizeUndefinedField__raw_response_type
15
+ > = {
16
+ kind: "Entrypoint",
17
+ networkRequestInfo: {
18
+ kind: "NetworkRequestInfo",
19
+ operation: {
20
+ kind: "Operation",
21
+ text: queryText,
22
+ },
23
+ normalizationAst,
24
+ },
25
+ concreteType: "Query",
26
+ readerWithRefetchQueries: {
27
+ kind: "ReaderWithRefetchQueries",
28
+ nestedRefetchQueries,
29
+ readerArtifact: readerResolver,
30
+ },
31
+ };
32
+
33
+ export default artifact;
@@ -0,0 +1,25 @@
1
+ import type {NormalizationAst} from '@isograph/react';
2
+ const normalizationAst: NormalizationAst = {
3
+ kind: "NormalizationAst",
4
+ selections: [
5
+ {
6
+ kind: "Linked",
7
+ fieldName: "me",
8
+ arguments: null,
9
+ concreteType: "Economist",
10
+ selections: [
11
+ {
12
+ kind: "Scalar",
13
+ fieldName: "id",
14
+ arguments: null,
15
+ },
16
+ {
17
+ kind: "Scalar",
18
+ fieldName: "name",
19
+ arguments: null,
20
+ },
21
+ ],
22
+ },
23
+ ],
24
+ };
25
+ export default normalizationAst;
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+ import { normalizeUndefinedField as resolver } from '../../../normalizeData.test';
3
+ export type Query__normalizeUndefinedField__output_type = ReturnType<typeof resolver>;
@@ -0,0 +1,9 @@
1
+
2
+ export type Query__normalizeUndefinedField__param = {
3
+ readonly data: {
4
+ readonly me: {
5
+ readonly name: string,
6
+ },
7
+ },
8
+ readonly parameters: Record<PropertyKey, never>,
9
+ };
@@ -0,0 +1,6 @@
1
+ export default 'query normalizeUndefinedField {\
2
+ me {\
3
+ id,\
4
+ name,\
5
+ },\
6
+ }';
@@ -0,0 +1,7 @@
1
+ export type Query__normalizeUndefinedField__raw_response_type = {
2
+ me: {
3
+ id: string,
4
+ name: string,
5
+ },
6
+ }
7
+
@@ -0,0 +1,38 @@
1
+ import type { EagerReaderArtifact, ReaderAst } from '@isograph/react';
2
+ import { Query__normalizeUndefinedField__param } from './param_type';
3
+ import { Query__normalizeUndefinedField__output_type } from './output_type';
4
+ import { normalizeUndefinedField as resolver } from '../../../normalizeData.test';
5
+
6
+ const readerAst: ReaderAst<Query__normalizeUndefinedField__param> = [
7
+ {
8
+ kind: "Linked",
9
+ fieldName: "me",
10
+ alias: null,
11
+ arguments: null,
12
+ condition: null,
13
+ isUpdatable: false,
14
+ refetchQueryIndex: null,
15
+ selections: [
16
+ {
17
+ kind: "Scalar",
18
+ fieldName: "name",
19
+ alias: null,
20
+ arguments: null,
21
+ isUpdatable: false,
22
+ },
23
+ ],
24
+ },
25
+ ];
26
+
27
+ const artifact: EagerReaderArtifact<
28
+ Query__normalizeUndefinedField__param,
29
+ Query__normalizeUndefinedField__output_type
30
+ > = {
31
+ kind: "EagerReaderArtifact",
32
+ fieldName: "normalizeUndefinedField",
33
+ resolver,
34
+ readerAst,
35
+ hasUpdatable: false,
36
+ };
37
+
38
+ export default artifact;
@@ -1,6 +1,7 @@
1
1
  import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
2
  import {Query__startUpdate__param} from './param_type';
3
3
  import {Query__startUpdate__output_type} from './output_type';
4
+ import type {Query__startUpdate__raw_response_type} from './raw_response_type';
4
5
  import readerResolver from './resolver_reader';
5
6
  import queryText from './query_text';
6
7
  import normalizationAst from './normalization_ast';
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
10
  const artifact: IsographEntrypoint<
10
11
  Query__startUpdate__param,
11
12
  Query__startUpdate__output_type,
12
- NormalizationAst
13
+ NormalizationAst,
14
+ Query__startUpdate__raw_response_type
13
15
  > = {
14
16
  kind: "Entrypoint",
15
17
  networkRequestInfo: {
@@ -0,0 +1,8 @@
1
+ export type Query__startUpdate__raw_response_type = {
2
+ node____id___v_id?: ({
3
+ __typename: "Economist",
4
+ id: string,
5
+ name: string,
6
+ } | null),
7
+ }
8
+
@@ -46,7 +46,7 @@ const artifact: EagerReaderArtifact<
46
46
  Query__startUpdate__output_type
47
47
  > = {
48
48
  kind: "EagerReaderArtifact",
49
- fieldName: "Query.startUpdate",
49
+ fieldName: "startUpdate",
50
50
  resolver,
51
51
  readerAst,
52
52
  hasUpdatable: true,
@@ -1,6 +1,7 @@
1
1
  import type {IsographEntrypoint, NormalizationAst, RefetchQueryNormalizationArtifactWrapper} from '@isograph/react';
2
2
  import {Query__subquery__param} from './param_type';
3
3
  import {Query__subquery__output_type} from './output_type';
4
+ import type {Query__subquery__raw_response_type} from './raw_response_type';
4
5
  import readerResolver from './resolver_reader';
5
6
  import queryText from './query_text';
6
7
  import normalizationAst from './normalization_ast';
@@ -9,7 +10,8 @@ const nestedRefetchQueries: RefetchQueryNormalizationArtifactWrapper[] = [];
9
10
  const artifact: IsographEntrypoint<
10
11
  Query__subquery__param,
11
12
  Query__subquery__output_type,
12
- NormalizationAst
13
+ NormalizationAst,
14
+ Query__subquery__raw_response_type
13
15
  > = {
14
16
  kind: "Entrypoint",
15
17
  networkRequestInfo: {
@@ -0,0 +1,9 @@
1
+ export type Query__subquery__raw_response_type = {
2
+ query: {
3
+ node____id___v_id?: ({
4
+ __typename: string,
5
+ id: string,
6
+ } | null),
7
+ },
8
+ }
9
+
@@ -45,7 +45,7 @@ const artifact: EagerReaderArtifact<
45
45
  Query__subquery__output_type
46
46
  > = {
47
47
  kind: "EagerReaderArtifact",
48
- fieldName: "Query.subquery",
48
+ fieldName: "subquery",
49
49
  resolver,
50
50
  readerAst,
51
51
  hasUpdatable: false,
@@ -3,12 +3,14 @@ import { type Query__linkedUpdate__param } from './Query/linkedUpdate/param_type
3
3
  import { type Query__meNameSuccessor__param } from './Query/meNameSuccessor/param_type';
4
4
  import { type Query__meName__param } from './Query/meName/param_type';
5
5
  import { type Query__nodeField__param } from './Query/nodeField/param_type';
6
+ import { type Query__normalizeUndefinedField__param } from './Query/normalizeUndefinedField/param_type';
6
7
  import { type Query__startUpdate__param } from './Query/startUpdate/param_type';
7
8
  import { type Query__subquery__param } from './Query/subquery/param_type';
8
9
  import entrypoint_Query__linkedUpdate from '../__isograph/Query/linkedUpdate/entrypoint';
9
10
  import entrypoint_Query__meNameSuccessor from '../__isograph/Query/meNameSuccessor/entrypoint';
10
11
  import entrypoint_Query__meName from '../__isograph/Query/meName/entrypoint';
11
12
  import entrypoint_Query__nodeField from '../__isograph/Query/nodeField/entrypoint';
13
+ import entrypoint_Query__normalizeUndefinedField from '../__isograph/Query/normalizeUndefinedField/entrypoint';
12
14
  import entrypoint_Query__startUpdate from '../__isograph/Query/startUpdate/entrypoint';
13
15
  import entrypoint_Query__subquery from '../__isograph/Query/subquery/entrypoint';
14
16
 
@@ -76,6 +78,10 @@ export function iso<T>(
76
78
  param: T & MatchesWhitespaceAndString<'field Query.nodeField', T>
77
79
  ): IdentityWithParam<Query__nodeField__param>;
78
80
 
81
+ export function iso<T>(
82
+ param: T & MatchesWhitespaceAndString<'field Query.normalizeUndefinedField', T>
83
+ ): IdentityWithParam<Query__normalizeUndefinedField__param>;
84
+
79
85
  export function iso<T>(
80
86
  param: T & MatchesWhitespaceAndString<'field Query.startUpdate', T>
81
87
  ): IdentityWithParam<Query__startUpdate__param>;
@@ -100,6 +106,10 @@ export function iso<T>(
100
106
  param: T & MatchesWhitespaceAndString<'entrypoint Query.nodeField', T>
101
107
  ): typeof entrypoint_Query__nodeField;
102
108
 
109
+ export function iso<T>(
110
+ param: T & MatchesWhitespaceAndString<'entrypoint Query.normalizeUndefinedField', T>
111
+ ): typeof entrypoint_Query__normalizeUndefinedField;
112
+
103
113
  export function iso<T>(
104
114
  param: T & MatchesWhitespaceAndString<'entrypoint Query.startUpdate', T>
105
115
  ): typeof entrypoint_Query__startUpdate;
@@ -111,7 +121,7 @@ export function iso<T>(
111
121
  export function iso(_isographLiteralText: string):
112
122
  | IdentityWithParam<any>
113
123
  | IdentityWithParamComponent<any>
114
- | IsographEntrypoint<any, any, any>
124
+ | IsographEntrypoint<any, any, any, any>
115
125
  {
116
126
  throw new Error('iso: Unexpected invocation at runtime. Either the Babel transform ' +
117
127
  'was not set up, or it failed to identify this call site. Make sure it ' +
@@ -1,18 +1,17 @@
1
+ import { iso } from '@iso';
1
2
  import { describe, expect, test } from 'vitest';
2
3
  import {
3
4
  garbageCollectEnvironment,
4
5
  retainQuery,
6
+ type RetainedQuery,
5
7
  } from '../core/garbageCollection';
6
- import {
7
- createIsographEnvironment,
8
- ROOT_ID,
9
- type IsographStore,
10
- } from '../core/IsographEnvironment';
11
- import { iso } from './__isograph/iso';
8
+ import { ROOT_ID, type BaseStoreLayerData } from '../core/IsographEnvironment';
9
+ import { wrapResolvedValue } from '../core/PromiseWrapper';
12
10
  import { meNameSuccessorRetainedQuery } from './meNameSuccessor';
13
11
  import { nodeFieldRetainedQuery } from './nodeQuery';
12
+ import { createIsographEnvironment } from '../react/createIsographEnvironment';
14
13
 
15
- const getDefaultStore = (): IsographStore => ({
14
+ const getDefaultStore = (): BaseStoreLayerData => ({
16
15
  Query: {
17
16
  [ROOT_ID]: {
18
17
  me: { __link: '0', __typename: 'Economist' },
@@ -55,9 +54,10 @@ export const meNameField = iso(`
55
54
  `)(() => {});
56
55
 
57
56
  const meNameEntrypoint = iso(`entrypoint Query.meName`);
58
- const meNameRetainedQuery = {
59
- normalizationAst:
60
- meNameEntrypoint.networkRequestInfo.normalizationAst.selections,
57
+ const meNameRetainedQuery: RetainedQuery = {
58
+ normalizationAst: wrapResolvedValue(
59
+ meNameEntrypoint.networkRequestInfo.normalizationAst,
60
+ ),
61
61
  variables: {},
62
62
  root: { __link: ROOT_ID, __typename: 'Query' },
63
63
  };
@@ -1,5 +1,7 @@
1
+ import type { RetainedQuery } from '../core/garbageCollection';
1
2
  import { ROOT_ID } from '../core/IsographEnvironment';
2
- import { iso } from './__isograph/iso';
3
+ import { wrapResolvedValue } from '../core/PromiseWrapper';
4
+ import { iso } from '@iso';
3
5
 
4
6
  export const meNameField = iso(`
5
7
  field Query.meNameSuccessor {
@@ -14,9 +16,10 @@ export const meNameField = iso(`
14
16
  }
15
17
  `)(() => {});
16
18
  const meNameSuccessorEntrypoint = iso(`entrypoint Query.meNameSuccessor`);
17
- export const meNameSuccessorRetainedQuery = {
18
- normalizationAst:
19
- meNameSuccessorEntrypoint.networkRequestInfo.normalizationAst.selections,
19
+ export const meNameSuccessorRetainedQuery: RetainedQuery = {
20
+ normalizationAst: wrapResolvedValue(
21
+ meNameSuccessorEntrypoint.networkRequestInfo.normalizationAst,
22
+ ),
20
23
  variables: {},
21
24
  root: {
22
25
  __link: ROOT_ID,
@@ -1,6 +1,7 @@
1
- import { RetainedQuery } from '../core/garbageCollection';
1
+ import type { RetainedQuery } from '../core/garbageCollection';
2
2
  import { ROOT_ID } from '../core/IsographEnvironment';
3
- import { iso } from './__isograph/iso';
3
+ import { wrapResolvedValue } from '../core/PromiseWrapper';
4
+ import { iso } from '@iso';
4
5
 
5
6
  // TODO investigate why this can't be in garbageCollection.test.ts without
6
7
  // typescript incorrectly thinking it is referenced in its own initializer
@@ -13,8 +14,9 @@ export const nodeField = iso(`
13
14
  `)(() => {});
14
15
  const nodeFieldEntrypoint = iso(`entrypoint Query.nodeField`);
15
16
  export const nodeFieldRetainedQuery: RetainedQuery = {
16
- normalizationAst:
17
- nodeFieldEntrypoint.networkRequestInfo.normalizationAst.selections,
17
+ normalizationAst: wrapResolvedValue(
18
+ nodeFieldEntrypoint.networkRequestInfo.normalizationAst,
19
+ ),
18
20
  variables: { id: 0 },
19
21
  root: { __link: ROOT_ID, __typename: 'Query' },
20
22
  };
@@ -1,18 +1,100 @@
1
- import { describe, expect, test, vi } from 'vitest';
2
- import { getOrCreateCacheForArtifact, normalizeData } from '../core/cache';
1
+ import { iso } from '@iso';
2
+ import { beforeEach, describe, expect, test, vi } from 'vitest';
3
+
3
4
  import {
4
- createIsographEnvironment,
5
5
  createIsographStore,
6
6
  ROOT_ID,
7
- type IsographStore,
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
 
18
+ let store: ReturnType<typeof createIsographStore>;
19
+ let environment: ReturnType<typeof createIsographEnvironment>;
20
+
21
+ beforeEach(() => {
22
+ store = createIsographStore();
23
+ const networkFunction = vi.fn().mockRejectedValue(new Error('Fetch failed'));
24
+ environment = createIsographEnvironment(store, networkFunction);
25
+ });
26
+
27
+ export const normalizeUndefinedField = iso(`
28
+ field Query.normalizeUndefinedField {
29
+ me {
30
+ name
31
+ }
32
+ }
33
+ `)(() => {});
34
+
35
+ const normalizeUndefinedFieldEntrypoint = iso(
36
+ `entrypoint Query.normalizeUndefinedField`,
37
+ );
38
+
39
+ describe('normalize undefined field', () => {
40
+ test('should normalize scalar field to null', () => {
41
+ normalizeData(
42
+ environment,
43
+ environment.store,
44
+ normalizeUndefinedFieldEntrypoint.networkRequestInfo.normalizationAst
45
+ .selections,
46
+ {
47
+ me: { __typename: 'Economist', id: '1' },
48
+ },
49
+ {},
50
+ {
51
+ __link: ROOT_ID,
52
+ __typename: normalizeUndefinedFieldEntrypoint.concreteType,
53
+ },
54
+ new Map(),
55
+ );
56
+ expect(store).toStrictEqual({
57
+ Economist: {
58
+ '1': {
59
+ id: '1',
60
+ name: null,
61
+ },
62
+ },
63
+ Query: {
64
+ [ROOT_ID]: {
65
+ me: {
66
+ __typename: 'Economist',
67
+ __link: '1',
68
+ },
69
+ },
70
+ },
71
+ });
72
+ });
73
+
74
+ test('should normalize linked field to null', () => {
75
+ normalizeData(
76
+ environment,
77
+ environment.store,
78
+ normalizeUndefinedFieldEntrypoint.networkRequestInfo.normalizationAst
79
+ .selections,
80
+ {},
81
+ {},
82
+ {
83
+ __link: ROOT_ID,
84
+ __typename: normalizeUndefinedFieldEntrypoint.concreteType,
85
+ },
86
+ new Map(),
87
+ );
88
+ expect(store).toStrictEqual({
89
+ Query: {
90
+ [ROOT_ID]: {
91
+ me: null,
92
+ },
93
+ },
94
+ });
95
+ });
96
+ });
97
+
16
98
  export const subquery = iso(`
17
99
  field Query.subquery($id: ID!) {
18
100
  query {
@@ -25,22 +107,18 @@ export const subquery = iso(`
25
107
 
26
108
  const entrypoint = iso(`entrypoint Query.subquery`);
27
109
 
28
- describe('normalizeData', () => {
29
- test('nested Query should be normalized', () => {
30
- const store = createIsographStore();
31
- const networkFunction = vi
32
- .fn()
33
- .mockRejectedValue(new Error('Fetch failed'));
34
- const environment = createIsographEnvironment(store, networkFunction);
35
-
110
+ describe('nested Query', () => {
111
+ test('should be normalized', () => {
36
112
  normalizeData(
37
113
  environment,
114
+ environment.store,
38
115
  entrypoint.networkRequestInfo.normalizationAst.selections,
39
116
  {
40
117
  query: { node____id___v_id: { __typename: 'Economist', id: '1' } },
41
118
  },
42
119
  { id: '1' },
43
120
  { __link: ROOT_ID, __typename: entrypoint.concreteType },
121
+ new Map(),
44
122
  );
45
123
 
46
124
  expect(store).toStrictEqual({
@@ -62,13 +140,11 @@ describe('normalizeData', () => {
62
140
  },
63
141
  },
64
142
  },
65
- } satisfies IsographStore);
143
+ } satisfies BaseStoreLayerData);
66
144
  });
67
- });
68
145
 
69
- describe('readData', () => {
70
- test('nested Query should be read', () => {
71
- const store: IsographStore = {
146
+ test('should be read', () => {
147
+ const store: BaseStoreLayerData = {
72
148
  Economist: {
73
149
  '1': {
74
150
  __typename: 'Economist',