@astrale-os/kernel-client 0.5.1 → 0.6.0-beta.10

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 (661) hide show
  1. package/dist/auth/auth.d.ts +18 -0
  2. package/dist/auth/auth.js +15 -0
  3. package/dist/auth/authorization.d.ts +13 -0
  4. package/dist/auth/authorization.js +17 -0
  5. package/dist/auth/credential.d.ts +19 -0
  6. package/dist/auth/credential.js +21 -0
  7. package/dist/auth/identity.d.ts +14 -0
  8. package/dist/auth/identity.js +15 -0
  9. package/dist/auth/index.d.ts +6 -16
  10. package/dist/auth/index.js +5 -10
  11. package/dist/auth/provision.d.ts +8 -0
  12. package/dist/auth/provision.js +10 -0
  13. package/dist/client/admission.d.ts +4 -0
  14. package/dist/client/admission.js +34 -0
  15. package/dist/client/client.d.ts +24 -109
  16. package/dist/client/client.js +80 -381
  17. package/dist/client/credential.d.ts +12 -0
  18. package/dist/client/credential.js +51 -0
  19. package/dist/client/index.d.ts +6 -0
  20. package/dist/client/index.js +4 -0
  21. package/dist/client/request.d.ts +26 -0
  22. package/dist/client/request.js +100 -0
  23. package/dist/client/result.d.ts +35 -0
  24. package/dist/client/result.js +28 -0
  25. package/dist/client/routing-control.d.ts +10 -0
  26. package/dist/client/routing-control.js +23 -0
  27. package/dist/errors/client-error.d.ts +3 -0
  28. package/dist/errors/client-error.js +8 -0
  29. package/dist/errors/index.d.ts +7 -6
  30. package/dist/errors/index.js +7 -4
  31. package/dist/errors/miss-error.d.ts +8 -0
  32. package/dist/errors/miss-error.js +10 -0
  33. package/dist/errors/protocol-error.d.ts +9 -0
  34. package/dist/errors/protocol-error.js +9 -0
  35. package/dist/errors/response-error.d.ts +11 -0
  36. package/dist/errors/response-error.js +16 -0
  37. package/dist/errors/session-error.d.ts +8 -20
  38. package/dist/errors/session-error.js +6 -22
  39. package/dist/errors/stale-route-error.d.ts +9 -0
  40. package/dist/errors/stale-route-error.js +12 -0
  41. package/dist/errors/transport-error.d.ts +30 -0
  42. package/dist/errors/transport-error.js +18 -0
  43. package/dist/graph/domain/binding.d.ts +22 -0
  44. package/dist/graph/domain/binding.js +123 -0
  45. package/dist/graph/domain/domain.typecheck.d.ts +1 -0
  46. package/dist/graph/domain/domain.typecheck.js +139 -0
  47. package/dist/graph/domain/index.d.ts +3 -0
  48. package/dist/graph/domain/index.js +1 -0
  49. package/dist/graph/domain/model.d.ts +18 -0
  50. package/dist/graph/domain/model.js +1 -0
  51. package/dist/graph/domain/page.d.ts +23 -0
  52. package/dist/graph/domain/page.js +42 -0
  53. package/dist/graph/domain/project.d.ts +8 -0
  54. package/dist/graph/domain/project.js +120 -0
  55. package/dist/graph/domain/provenance.d.ts +6 -0
  56. package/dist/graph/domain/provenance.js +11 -0
  57. package/dist/graph/errors.d.ts +8 -0
  58. package/dist/graph/errors.js +14 -0
  59. package/dist/graph/graph.d.ts +26 -0
  60. package/dist/graph/graph.js +18 -0
  61. package/dist/graph/index.d.ts +8 -26
  62. package/dist/graph/index.js +6 -21
  63. package/dist/graph/mutation.d.ts +5 -0
  64. package/dist/graph/mutation.js +17 -0
  65. package/dist/graph/page/index.d.ts +2 -0
  66. package/dist/graph/page/index.js +1 -0
  67. package/dist/graph/page/neighbors.d.ts +9 -0
  68. package/dist/graph/page/neighbors.js +34 -0
  69. package/dist/graph/page/page.d.ts +37 -0
  70. package/dist/graph/page/page.js +55 -0
  71. package/dist/graph/page-contract.d.ts +13 -0
  72. package/dist/graph/page-contract.js +1 -0
  73. package/dist/graph/provenance.d.ts +12 -0
  74. package/dist/graph/provenance.js +37 -0
  75. package/dist/graph/query.d.ts +4 -0
  76. package/dist/graph/query.js +69 -0
  77. package/dist/graph/read.d.ts +6 -0
  78. package/dist/graph/read.js +17 -0
  79. package/dist/index.d.ts +6 -25
  80. package/dist/index.js +6 -21
  81. package/dist/pacer/batcher/batcher.d.ts +7 -0
  82. package/dist/pacer/batcher/batcher.js +13 -0
  83. package/dist/pacer/batcher/defaults.d.ts +2 -0
  84. package/dist/pacer/batcher/defaults.js +2 -0
  85. package/dist/pacer/batcher/index.d.ts +1 -0
  86. package/dist/pacer/batcher/index.js +1 -0
  87. package/dist/pacer/index.d.ts +4 -10
  88. package/dist/pacer/index.js +4 -11
  89. package/dist/pacer/limiter/defaults.d.ts +2 -0
  90. package/dist/pacer/limiter/defaults.js +2 -0
  91. package/dist/pacer/limiter/index.d.ts +1 -0
  92. package/dist/pacer/limiter/index.js +1 -0
  93. package/dist/pacer/limiter/limiter.d.ts +7 -0
  94. package/dist/pacer/limiter/limiter.js +14 -0
  95. package/dist/pacer/queue/defaults.d.ts +1 -0
  96. package/dist/pacer/queue/defaults.js +1 -0
  97. package/dist/pacer/queue/index.d.ts +1 -0
  98. package/dist/pacer/queue/index.js +1 -0
  99. package/dist/pacer/queue/queue.d.ts +6 -0
  100. package/dist/pacer/queue/queue.js +12 -0
  101. package/dist/pacer/retry/defaults.d.ts +6 -0
  102. package/dist/pacer/retry/defaults.js +16 -0
  103. package/dist/pacer/retry/index.d.ts +1 -0
  104. package/dist/pacer/retry/index.js +1 -0
  105. package/dist/pacer/retry/retry.d.ts +9 -0
  106. package/dist/pacer/retry/retry.js +55 -0
  107. package/dist/pool/index.d.ts +2 -4
  108. package/dist/pool/index.js +0 -2
  109. package/dist/pool/pool.d.ts +19 -59
  110. package/dist/pool/pool.js +46 -64
  111. package/dist/pool/target.d.ts +15 -0
  112. package/dist/pool/target.js +49 -0
  113. package/dist/schema/admission.d.ts +12 -0
  114. package/dist/schema/admission.js +17 -0
  115. package/dist/schema/contracts.d.ts +12 -0
  116. package/dist/schema/contracts.js +1 -0
  117. package/dist/schema/index.d.ts +3 -16
  118. package/dist/schema/index.js +2 -12
  119. package/dist/schema/introspection.d.ts +5 -0
  120. package/dist/schema/introspection.js +15 -0
  121. package/dist/schema/operation.d.ts +5 -0
  122. package/dist/schema/operation.js +9 -0
  123. package/dist/schema/schema.d.ts +19 -0
  124. package/dist/schema/schema.js +43 -0
  125. package/dist/session/bound.d.ts +42 -9
  126. package/dist/session/bound.js +70 -37
  127. package/dist/session/context/control.d.ts +5 -0
  128. package/dist/session/context/control.js +17 -0
  129. package/dist/session/context/index.d.ts +4 -0
  130. package/dist/session/context/index.js +4 -0
  131. package/dist/session/context/limits.d.ts +7 -0
  132. package/dist/session/context/limits.js +18 -0
  133. package/dist/session/context/operation.d.ts +19 -0
  134. package/dist/session/context/operation.js +72 -0
  135. package/dist/session/context/policy.d.ts +11 -0
  136. package/dist/session/context/policy.js +69 -0
  137. package/dist/session/discovery/bundle.d.ts +17 -0
  138. package/dist/session/discovery/bundle.js +55 -0
  139. package/dist/session/discovery/discovery.d.ts +19 -0
  140. package/dist/session/discovery/discovery.js +55 -0
  141. package/dist/session/discovery/index.d.ts +20 -0
  142. package/dist/session/discovery/index.js +15 -0
  143. package/dist/session/discovery/publication.d.ts +23 -0
  144. package/dist/session/discovery/publication.js +123 -0
  145. package/dist/session/discovery/snapshot.d.ts +12 -0
  146. package/dist/session/discovery/snapshot.js +3 -0
  147. package/dist/session/discovery/transport.d.ts +6 -0
  148. package/dist/session/discovery/transport.js +13 -0
  149. package/dist/session/index.d.ts +10 -16
  150. package/dist/session/index.js +3 -9
  151. package/dist/session/reference.d.ts +36 -0
  152. package/dist/session/reference.js +74 -0
  153. package/dist/session/routing/auth.d.ts +18 -0
  154. package/dist/session/routing/auth.js +39 -0
  155. package/dist/session/routing/cache.d.ts +20 -0
  156. package/dist/session/routing/cache.js +115 -0
  157. package/dist/session/routing/dispatch.d.ts +34 -0
  158. package/dist/session/routing/dispatch.js +137 -0
  159. package/dist/session/routing/envelope.d.ts +13 -0
  160. package/dist/session/routing/envelope.js +35 -0
  161. package/dist/session/routing/expectation.d.ts +6 -0
  162. package/dist/session/routing/expectation.js +1 -0
  163. package/dist/session/routing/index.d.ts +6 -0
  164. package/dist/session/routing/index.js +5 -0
  165. package/dist/session/routing/request.d.ts +8 -0
  166. package/dist/session/routing/request.js +25 -0
  167. package/dist/session/session.d.ts +67 -0
  168. package/dist/session/session.js +257 -0
  169. package/dist/session/session.typecheck.d.ts +1 -0
  170. package/dist/session/session.typecheck.js +31 -0
  171. package/dist/session/views/catalog.d.ts +15 -0
  172. package/dist/session/views/catalog.js +70 -0
  173. package/dist/session/views/index.d.ts +2 -0
  174. package/dist/session/views/index.js +2 -0
  175. package/dist/session/views/resolve.d.ts +11 -0
  176. package/dist/session/views/resolve.js +13 -0
  177. package/dist/store/entity-index.d.ts +22 -0
  178. package/dist/store/entity-index.js +94 -0
  179. package/dist/store/index.d.ts +1 -26
  180. package/dist/store/index.js +1 -19
  181. package/dist/store/memory.d.ts +46 -97
  182. package/dist/store/memory.js +346 -763
  183. package/dist/store/mutation.d.ts +5 -0
  184. package/dist/store/mutation.js +34 -0
  185. package/dist/store/observe.d.ts +3 -0
  186. package/dist/store/observe.js +17 -0
  187. package/dist/store/optimistic.d.ts +12 -0
  188. package/dist/store/optimistic.js +43 -0
  189. package/dist/store/query-key.d.ts +5 -0
  190. package/dist/store/query-key.js +22 -0
  191. package/dist/store/shape.d.ts +25 -0
  192. package/dist/store/shape.js +29 -0
  193. package/dist/store/store.d.ts +68 -0
  194. package/dist/store/store.js +144 -0
  195. package/dist/store/store.typecheck.d.ts +1 -0
  196. package/dist/store/store.typecheck.js +40 -0
  197. package/dist/transport/auto/decision.d.ts +22 -0
  198. package/dist/transport/auto/decision.js +48 -0
  199. package/dist/transport/auto/fallback.d.ts +16 -0
  200. package/dist/transport/auto/fallback.js +75 -0
  201. package/dist/transport/auto/index.d.ts +2 -0
  202. package/dist/transport/auto/index.js +2 -0
  203. package/dist/transport/auto/transport.d.ts +37 -0
  204. package/dist/transport/auto/transport.js +140 -0
  205. package/dist/transport/auto/warning.d.ts +13 -0
  206. package/dist/transport/auto/warning.js +18 -0
  207. package/dist/transport/deadline.d.ts +11 -0
  208. package/dist/transport/deadline.js +39 -0
  209. package/dist/transport/failure.d.ts +7 -0
  210. package/dist/transport/failure.js +9 -0
  211. package/dist/transport/http/index.d.ts +1 -0
  212. package/dist/transport/http/index.js +1 -0
  213. package/dist/transport/http/response.d.ts +8 -0
  214. package/dist/transport/http/response.js +79 -0
  215. package/dist/transport/http/stream.d.ts +26 -0
  216. package/dist/transport/http/stream.js +214 -0
  217. package/dist/transport/http/transport.d.ts +32 -0
  218. package/dist/transport/http/transport.js +343 -0
  219. package/dist/transport/index.d.ts +2 -8
  220. package/dist/transport/index.js +1 -6
  221. package/dist/transport/transport.d.ts +34 -0
  222. package/dist/transport/transport.js +1 -0
  223. package/dist/transport/websocket/connection.d.ts +38 -0
  224. package/dist/transport/websocket/connection.js +284 -0
  225. package/dist/transport/websocket/exchange.d.ts +46 -0
  226. package/dist/transport/websocket/exchange.js +300 -0
  227. package/dist/transport/websocket/index.d.ts +1 -0
  228. package/dist/transport/websocket/index.js +1 -0
  229. package/dist/transport/websocket/transport.d.ts +46 -0
  230. package/dist/transport/websocket/transport.js +164 -0
  231. package/package.json +41 -35
  232. package/dist/auth/addressing.d.ts +0 -32
  233. package/dist/auth/addressing.d.ts.map +0 -1
  234. package/dist/auth/addressing.js +0 -36
  235. package/dist/auth/addressing.js.map +0 -1
  236. package/dist/auth/api.d.ts +0 -70
  237. package/dist/auth/api.d.ts.map +0 -1
  238. package/dist/auth/api.js +0 -36
  239. package/dist/auth/api.js.map +0 -1
  240. package/dist/auth/batch.d.ts +0 -18
  241. package/dist/auth/batch.d.ts.map +0 -1
  242. package/dist/auth/batch.js +0 -25
  243. package/dist/auth/batch.js.map +0 -1
  244. package/dist/auth/composition.d.ts +0 -27
  245. package/dist/auth/composition.d.ts.map +0 -1
  246. package/dist/auth/composition.js +0 -83
  247. package/dist/auth/composition.js.map +0 -1
  248. package/dist/auth/defaults.d.ts +0 -3
  249. package/dist/auth/defaults.d.ts.map +0 -1
  250. package/dist/auth/defaults.js +0 -3
  251. package/dist/auth/defaults.js.map +0 -1
  252. package/dist/auth/index.d.ts.map +0 -1
  253. package/dist/auth/index.js.map +0 -1
  254. package/dist/auth/minting.d.ts +0 -35
  255. package/dist/auth/minting.d.ts.map +0 -1
  256. package/dist/auth/minting.js +0 -31
  257. package/dist/auth/minting.js.map +0 -1
  258. package/dist/auth/permissions.d.ts +0 -55
  259. package/dist/auth/permissions.d.ts.map +0 -1
  260. package/dist/auth/permissions.js +0 -47
  261. package/dist/auth/permissions.js.map +0 -1
  262. package/dist/auth/principal.d.ts +0 -19
  263. package/dist/auth/principal.d.ts.map +0 -1
  264. package/dist/auth/principal.js +0 -46
  265. package/dist/auth/principal.js.map +0 -1
  266. package/dist/auth/shorthands.d.ts +0 -19
  267. package/dist/auth/shorthands.d.ts.map +0 -1
  268. package/dist/auth/shorthands.js +0 -27
  269. package/dist/auth/shorthands.js.map +0 -1
  270. package/dist/client/batch.d.ts +0 -26
  271. package/dist/client/batch.d.ts.map +0 -1
  272. package/dist/client/batch.js +0 -8
  273. package/dist/client/batch.js.map +0 -1
  274. package/dist/client/bound.d.ts +0 -27
  275. package/dist/client/bound.d.ts.map +0 -1
  276. package/dist/client/bound.js +0 -14
  277. package/dist/client/bound.js.map +0 -1
  278. package/dist/client/client.d.ts.map +0 -1
  279. package/dist/client/client.js.map +0 -1
  280. package/dist/client/config.d.ts +0 -112
  281. package/dist/client/config.d.ts.map +0 -1
  282. package/dist/client/config.js +0 -10
  283. package/dist/client/config.js.map +0 -1
  284. package/dist/client/fn-map.d.ts +0 -61
  285. package/dist/client/fn-map.d.ts.map +0 -1
  286. package/dist/client/fn-map.js +0 -2
  287. package/dist/client/fn-map.js.map +0 -1
  288. package/dist/client/freeze.d.ts +0 -32
  289. package/dist/client/freeze.d.ts.map +0 -1
  290. package/dist/client/freeze.js +0 -42
  291. package/dist/client/freeze.js.map +0 -1
  292. package/dist/client/hooks.d.ts +0 -49
  293. package/dist/client/hooks.d.ts.map +0 -1
  294. package/dist/client/hooks.js +0 -2
  295. package/dist/client/hooks.js.map +0 -1
  296. package/dist/errors/errors.d.ts +0 -156
  297. package/dist/errors/errors.d.ts.map +0 -1
  298. package/dist/errors/errors.js +0 -238
  299. package/dist/errors/errors.js.map +0 -1
  300. package/dist/errors/guards.d.ts +0 -39
  301. package/dist/errors/guards.d.ts.map +0 -1
  302. package/dist/errors/guards.js +0 -127
  303. package/dist/errors/guards.js.map +0 -1
  304. package/dist/errors/index.d.ts.map +0 -1
  305. package/dist/errors/index.js.map +0 -1
  306. package/dist/errors/session-error.d.ts.map +0 -1
  307. package/dist/errors/session-error.js.map +0 -1
  308. package/dist/graph/api.d.ts +0 -85
  309. package/dist/graph/api.d.ts.map +0 -1
  310. package/dist/graph/api.js +0 -66
  311. package/dist/graph/api.js.map +0 -1
  312. package/dist/graph/index.d.ts.map +0 -1
  313. package/dist/graph/index.js.map +0 -1
  314. package/dist/graph/mutate/builder.d.ts +0 -108
  315. package/dist/graph/mutate/builder.d.ts.map +0 -1
  316. package/dist/graph/mutate/builder.js +0 -127
  317. package/dist/graph/mutate/builder.js.map +0 -1
  318. package/dist/graph/mutate/index.d.ts +0 -5
  319. package/dist/graph/mutate/index.d.ts.map +0 -1
  320. package/dist/graph/mutate/index.js +0 -3
  321. package/dist/graph/mutate/index.js.map +0 -1
  322. package/dist/graph/mutate/shorthands.d.ts +0 -42
  323. package/dist/graph/mutate/shorthands.d.ts.map +0 -1
  324. package/dist/graph/mutate/shorthands.js +0 -65
  325. package/dist/graph/mutate/shorthands.js.map +0 -1
  326. package/dist/graph/named.d.ts +0 -38
  327. package/dist/graph/named.d.ts.map +0 -1
  328. package/dist/graph/named.js +0 -47
  329. package/dist/graph/named.js.map +0 -1
  330. package/dist/graph/query/builder.d.ts +0 -116
  331. package/dist/graph/query/builder.d.ts.map +0 -1
  332. package/dist/graph/query/builder.js +0 -136
  333. package/dist/graph/query/builder.js.map +0 -1
  334. package/dist/graph/query/edge-ref.d.ts +0 -13
  335. package/dist/graph/query/edge-ref.d.ts.map +0 -1
  336. package/dist/graph/query/edge-ref.js +0 -56
  337. package/dist/graph/query/edge-ref.js.map +0 -1
  338. package/dist/graph/query/edges.d.ts +0 -10
  339. package/dist/graph/query/edges.d.ts.map +0 -1
  340. package/dist/graph/query/edges.js +0 -11
  341. package/dist/graph/query/edges.js.map +0 -1
  342. package/dist/graph/query/errors.d.ts +0 -31
  343. package/dist/graph/query/errors.d.ts.map +0 -1
  344. package/dist/graph/query/errors.js +0 -28
  345. package/dist/graph/query/errors.js.map +0 -1
  346. package/dist/graph/query/filter.d.ts +0 -50
  347. package/dist/graph/query/filter.d.ts.map +0 -1
  348. package/dist/graph/query/filter.js +0 -32
  349. package/dist/graph/query/filter.js.map +0 -1
  350. package/dist/graph/query/index.d.ts +0 -12
  351. package/dist/graph/query/index.d.ts.map +0 -1
  352. package/dist/graph/query/index.js +0 -7
  353. package/dist/graph/query/index.js.map +0 -1
  354. package/dist/graph/query/lower.d.ts +0 -30
  355. package/dist/graph/query/lower.d.ts.map +0 -1
  356. package/dist/graph/query/lower.js +0 -171
  357. package/dist/graph/query/lower.js.map +0 -1
  358. package/dist/graph/query/shorthands.d.ts +0 -34
  359. package/dist/graph/query/shorthands.d.ts.map +0 -1
  360. package/dist/graph/query/shorthands.js +0 -71
  361. package/dist/graph/query/shorthands.js.map +0 -1
  362. package/dist/graph/query/traverse.d.ts +0 -59
  363. package/dist/graph/query/traverse.d.ts.map +0 -1
  364. package/dist/graph/query/traverse.js +0 -144
  365. package/dist/graph/query/traverse.js.map +0 -1
  366. package/dist/graph/reconcile/execute.d.ts +0 -8
  367. package/dist/graph/reconcile/execute.d.ts.map +0 -1
  368. package/dist/graph/reconcile/execute.js +0 -56
  369. package/dist/graph/reconcile/execute.js.map +0 -1
  370. package/dist/graph/reconcile/index.d.ts +0 -5
  371. package/dist/graph/reconcile/index.d.ts.map +0 -1
  372. package/dist/graph/reconcile/index.js +0 -3
  373. package/dist/graph/reconcile/index.js.map +0 -1
  374. package/dist/graph/reconcile/input.d.ts +0 -80
  375. package/dist/graph/reconcile/input.d.ts.map +0 -1
  376. package/dist/graph/reconcile/input.js +0 -5
  377. package/dist/graph/reconcile/input.js.map +0 -1
  378. package/dist/graph/reconcile/normalize.d.ts +0 -3
  379. package/dist/graph/reconcile/normalize.d.ts.map +0 -1
  380. package/dist/graph/reconcile/normalize.js +0 -144
  381. package/dist/graph/reconcile/normalize.js.map +0 -1
  382. package/dist/graph/reconcile/result.d.ts +0 -19
  383. package/dist/graph/reconcile/result.d.ts.map +0 -1
  384. package/dist/graph/reconcile/result.js +0 -95
  385. package/dist/graph/reconcile/result.js.map +0 -1
  386. package/dist/graph/reconcile/scope.d.ts +0 -6
  387. package/dist/graph/reconcile/scope.d.ts.map +0 -1
  388. package/dist/graph/reconcile/scope.js +0 -69
  389. package/dist/graph/reconcile/scope.js.map +0 -1
  390. package/dist/graph/result/envelope.d.ts +0 -37
  391. package/dist/graph/result/envelope.d.ts.map +0 -1
  392. package/dist/graph/result/envelope.js +0 -59
  393. package/dist/graph/result/envelope.js.map +0 -1
  394. package/dist/graph/result/index.d.ts +0 -6
  395. package/dist/graph/result/index.d.ts.map +0 -1
  396. package/dist/graph/result/index.js +0 -4
  397. package/dist/graph/result/index.js.map +0 -1
  398. package/dist/graph/result/next.d.ts +0 -16
  399. package/dist/graph/result/next.d.ts.map +0 -1
  400. package/dist/graph/result/next.js +0 -77
  401. package/dist/graph/result/next.js.map +0 -1
  402. package/dist/graph/result/paged.d.ts +0 -30
  403. package/dist/graph/result/paged.d.ts.map +0 -1
  404. package/dist/graph/result/paged.js +0 -41
  405. package/dist/graph/result/paged.js.map +0 -1
  406. package/dist/graph/wire.d.ts +0 -33
  407. package/dist/graph/wire.d.ts.map +0 -1
  408. package/dist/graph/wire.js +0 -16
  409. package/dist/graph/wire.js.map +0 -1
  410. package/dist/index.d.ts.map +0 -1
  411. package/dist/index.js.map +0 -1
  412. package/dist/pacer/batcher.d.ts +0 -11
  413. package/dist/pacer/batcher.d.ts.map +0 -1
  414. package/dist/pacer/batcher.js +0 -15
  415. package/dist/pacer/batcher.js.map +0 -1
  416. package/dist/pacer/defaults.d.ts +0 -18
  417. package/dist/pacer/defaults.d.ts.map +0 -1
  418. package/dist/pacer/defaults.js +0 -18
  419. package/dist/pacer/defaults.js.map +0 -1
  420. package/dist/pacer/index.d.ts.map +0 -1
  421. package/dist/pacer/index.js.map +0 -1
  422. package/dist/pacer/queue.d.ts +0 -11
  423. package/dist/pacer/queue.d.ts.map +0 -1
  424. package/dist/pacer/queue.js +0 -15
  425. package/dist/pacer/queue.js.map +0 -1
  426. package/dist/pacer/rate-limiter.d.ts +0 -11
  427. package/dist/pacer/rate-limiter.d.ts.map +0 -1
  428. package/dist/pacer/rate-limiter.js +0 -15
  429. package/dist/pacer/rate-limiter.js.map +0 -1
  430. package/dist/pacer/retry.d.ts +0 -14
  431. package/dist/pacer/retry.d.ts.map +0 -1
  432. package/dist/pacer/retry.js +0 -50
  433. package/dist/pacer/retry.js.map +0 -1
  434. package/dist/pool/errors.d.ts +0 -13
  435. package/dist/pool/errors.d.ts.map +0 -1
  436. package/dist/pool/errors.js +0 -16
  437. package/dist/pool/errors.js.map +0 -1
  438. package/dist/pool/index.d.ts.map +0 -1
  439. package/dist/pool/index.js.map +0 -1
  440. package/dist/pool/pool.d.ts.map +0 -1
  441. package/dist/pool/pool.js.map +0 -1
  442. package/dist/schema/bound/binder.d.ts +0 -49
  443. package/dist/schema/bound/binder.d.ts.map +0 -1
  444. package/dist/schema/bound/binder.js +0 -195
  445. package/dist/schema/bound/binder.js.map +0 -1
  446. package/dist/schema/bound/bound-node.d.ts +0 -105
  447. package/dist/schema/bound/bound-node.d.ts.map +0 -1
  448. package/dist/schema/bound/bound-node.js +0 -128
  449. package/dist/schema/bound/bound-node.js.map +0 -1
  450. package/dist/schema/bound/index.d.ts +0 -10
  451. package/dist/schema/bound/index.d.ts.map +0 -1
  452. package/dist/schema/bound/index.js +0 -5
  453. package/dist/schema/bound/index.js.map +0 -1
  454. package/dist/schema/bound/view.d.ts +0 -44
  455. package/dist/schema/bound/view.d.ts.map +0 -1
  456. package/dist/schema/bound/view.js +0 -117
  457. package/dist/schema/bound/view.js.map +0 -1
  458. package/dist/schema/bound/write-props.d.ts +0 -38
  459. package/dist/schema/bound/write-props.d.ts.map +0 -1
  460. package/dist/schema/bound/write-props.js +0 -2
  461. package/dist/schema/bound/write-props.js.map +0 -1
  462. package/dist/schema/call-args.d.ts +0 -6
  463. package/dist/schema/call-args.d.ts.map +0 -1
  464. package/dist/schema/call-args.js +0 -21
  465. package/dist/schema/call-args.js.map +0 -1
  466. package/dist/schema/class-proxy.d.ts +0 -11
  467. package/dist/schema/class-proxy.d.ts.map +0 -1
  468. package/dist/schema/class-proxy.js +0 -46
  469. package/dist/schema/class-proxy.js.map +0 -1
  470. package/dist/schema/extract.d.ts +0 -24
  471. package/dist/schema/extract.d.ts.map +0 -1
  472. package/dist/schema/extract.js +0 -45
  473. package/dist/schema/extract.js.map +0 -1
  474. package/dist/schema/from-entries.d.ts +0 -12
  475. package/dist/schema/from-entries.d.ts.map +0 -1
  476. package/dist/schema/from-entries.js +0 -39
  477. package/dist/schema/from-entries.js.map +0 -1
  478. package/dist/schema/index.d.ts.map +0 -1
  479. package/dist/schema/index.js.map +0 -1
  480. package/dist/schema/known-dispatch.d.ts +0 -6
  481. package/dist/schema/known-dispatch.d.ts.map +0 -1
  482. package/dist/schema/known-dispatch.js +0 -39
  483. package/dist/schema/known-dispatch.js.map +0 -1
  484. package/dist/schema/node-proxy.d.ts +0 -21
  485. package/dist/schema/node-proxy.d.ts.map +0 -1
  486. package/dist/schema/node-proxy.js +0 -75
  487. package/dist/schema/node-proxy.js.map +0 -1
  488. package/dist/schema/persistence.d.ts +0 -31
  489. package/dist/schema/persistence.d.ts.map +0 -1
  490. package/dist/schema/persistence.js +0 -2
  491. package/dist/schema/persistence.js.map +0 -1
  492. package/dist/schema/proxy-types.d.ts +0 -131
  493. package/dist/schema/proxy-types.d.ts.map +0 -1
  494. package/dist/schema/proxy-types.js +0 -2
  495. package/dist/schema/proxy-types.js.map +0 -1
  496. package/dist/schema/registry.d.ts +0 -50
  497. package/dist/schema/registry.d.ts.map +0 -1
  498. package/dist/schema/registry.js +0 -110
  499. package/dist/schema/registry.js.map +0 -1
  500. package/dist/schema/resolve.d.ts +0 -26
  501. package/dist/schema/resolve.d.ts.map +0 -1
  502. package/dist/schema/resolve.js +0 -27
  503. package/dist/schema/resolve.js.map +0 -1
  504. package/dist/schema/typed-client.d.ts +0 -10
  505. package/dist/schema/typed-client.d.ts.map +0 -1
  506. package/dist/schema/typed-client.js +0 -26
  507. package/dist/schema/typed-client.js.map +0 -1
  508. package/dist/schema/types.d.ts +0 -9
  509. package/dist/schema/types.d.ts.map +0 -1
  510. package/dist/schema/types.js +0 -2
  511. package/dist/schema/types.js.map +0 -1
  512. package/dist/session/bound.d.ts.map +0 -1
  513. package/dist/session/bound.js.map +0 -1
  514. package/dist/session/client-session.d.ts +0 -72
  515. package/dist/session/client-session.d.ts.map +0 -1
  516. package/dist/session/client-session.js +0 -673
  517. package/dist/session/client-session.js.map +0 -1
  518. package/dist/session/config.d.ts +0 -168
  519. package/dist/session/config.d.ts.map +0 -1
  520. package/dist/session/config.js +0 -2
  521. package/dist/session/config.js.map +0 -1
  522. package/dist/session/delegation/cache.d.ts +0 -139
  523. package/dist/session/delegation/cache.d.ts.map +0 -1
  524. package/dist/session/delegation/cache.js +0 -256
  525. package/dist/session/delegation/cache.js.map +0 -1
  526. package/dist/session/delegation/errors.d.ts +0 -44
  527. package/dist/session/delegation/errors.d.ts.map +0 -1
  528. package/dist/session/delegation/errors.js +0 -62
  529. package/dist/session/delegation/errors.js.map +0 -1
  530. package/dist/session/delegation/policy.d.ts +0 -183
  531. package/dist/session/delegation/policy.d.ts.map +0 -1
  532. package/dist/session/delegation/policy.js +0 -114
  533. package/dist/session/delegation/policy.js.map +0 -1
  534. package/dist/session/delegation/utils.d.ts +0 -4
  535. package/dist/session/delegation/utils.d.ts.map +0 -1
  536. package/dist/session/delegation/utils.js +0 -12
  537. package/dist/session/delegation/utils.js.map +0 -1
  538. package/dist/session/delegation-mint.d.ts +0 -13
  539. package/dist/session/delegation-mint.d.ts.map +0 -1
  540. package/dist/session/delegation-mint.js +0 -39
  541. package/dist/session/delegation-mint.js.map +0 -1
  542. package/dist/session/dispatch-routes.d.ts +0 -27
  543. package/dist/session/dispatch-routes.d.ts.map +0 -1
  544. package/dist/session/dispatch-routes.js +0 -77
  545. package/dist/session/dispatch-routes.js.map +0 -1
  546. package/dist/session/errors/index.d.ts +0 -6
  547. package/dist/session/errors/index.d.ts.map +0 -1
  548. package/dist/session/errors/index.js +0 -8
  549. package/dist/session/errors/index.js.map +0 -1
  550. package/dist/session/errors/session-errors.d.ts +0 -52
  551. package/dist/session/errors/session-errors.d.ts.map +0 -1
  552. package/dist/session/errors/session-errors.js +0 -70
  553. package/dist/session/errors/session-errors.js.map +0 -1
  554. package/dist/session/forward.d.ts +0 -15
  555. package/dist/session/forward.d.ts.map +0 -1
  556. package/dist/session/forward.js +0 -40
  557. package/dist/session/forward.js.map +0 -1
  558. package/dist/session/helpers.d.ts +0 -23
  559. package/dist/session/helpers.d.ts.map +0 -1
  560. package/dist/session/helpers.js +0 -56
  561. package/dist/session/helpers.js.map +0 -1
  562. package/dist/session/hooks.d.ts +0 -140
  563. package/dist/session/hooks.d.ts.map +0 -1
  564. package/dist/session/hooks.js +0 -2
  565. package/dist/session/hooks.js.map +0 -1
  566. package/dist/session/index.d.ts.map +0 -1
  567. package/dist/session/index.js.map +0 -1
  568. package/dist/session/redirect/errors.d.ts +0 -45
  569. package/dist/session/redirect/errors.d.ts.map +0 -1
  570. package/dist/session/redirect/errors.js +0 -52
  571. package/dist/session/redirect/errors.js.map +0 -1
  572. package/dist/session/redirect/policy.d.ts +0 -79
  573. package/dist/session/redirect/policy.d.ts.map +0 -1
  574. package/dist/session/redirect/policy.js +0 -69
  575. package/dist/session/redirect/policy.js.map +0 -1
  576. package/dist/session/types.d.ts +0 -54
  577. package/dist/session/types.d.ts.map +0 -1
  578. package/dist/session/types.js +0 -2
  579. package/dist/session/types.js.map +0 -1
  580. package/dist/store/canonicalize.d.ts +0 -44
  581. package/dist/store/canonicalize.d.ts.map +0 -1
  582. package/dist/store/canonicalize.js +0 -0
  583. package/dist/store/canonicalize.js.map +0 -1
  584. package/dist/store/entities.d.ts +0 -81
  585. package/dist/store/entities.d.ts.map +0 -1
  586. package/dist/store/entities.js +0 -202
  587. package/dist/store/entities.js.map +0 -1
  588. package/dist/store/index.d.ts.map +0 -1
  589. package/dist/store/index.js.map +0 -1
  590. package/dist/store/invalidate.d.ts +0 -66
  591. package/dist/store/invalidate.d.ts.map +0 -1
  592. package/dist/store/invalidate.js +0 -117
  593. package/dist/store/invalidate.js.map +0 -1
  594. package/dist/store/memory.d.ts.map +0 -1
  595. package/dist/store/memory.js.map +0 -1
  596. package/dist/store/overlay.d.ts +0 -118
  597. package/dist/store/overlay.d.ts.map +0 -1
  598. package/dist/store/overlay.js +0 -237
  599. package/dist/store/overlay.js.map +0 -1
  600. package/dist/store/schedule.d.ts +0 -31
  601. package/dist/store/schedule.d.ts.map +0 -1
  602. package/dist/store/schedule.js +0 -76
  603. package/dist/store/schedule.js.map +0 -1
  604. package/dist/store/shapes.d.ts +0 -92
  605. package/dist/store/shapes.d.ts.map +0 -1
  606. package/dist/store/shapes.js +0 -369
  607. package/dist/store/shapes.js.map +0 -1
  608. package/dist/store/types.d.ts +0 -168
  609. package/dist/store/types.d.ts.map +0 -1
  610. package/dist/store/types.js +0 -7
  611. package/dist/store/types.js.map +0 -1
  612. package/dist/transport/binary.d.ts +0 -15
  613. package/dist/transport/binary.d.ts.map +0 -1
  614. package/dist/transport/binary.js +0 -2
  615. package/dist/transport/binary.js.map +0 -1
  616. package/dist/transport/contract.d.ts +0 -58
  617. package/dist/transport/contract.d.ts.map +0 -1
  618. package/dist/transport/contract.js +0 -11
  619. package/dist/transport/contract.js.map +0 -1
  620. package/dist/transport/fetch.d.ts +0 -31
  621. package/dist/transport/fetch.d.ts.map +0 -1
  622. package/dist/transport/fetch.js +0 -78
  623. package/dist/transport/fetch.js.map +0 -1
  624. package/dist/transport/http-envelope.d.ts +0 -49
  625. package/dist/transport/http-envelope.d.ts.map +0 -1
  626. package/dist/transport/http-envelope.js +0 -418
  627. package/dist/transport/http-envelope.js.map +0 -1
  628. package/dist/transport/http-routed.d.ts +0 -61
  629. package/dist/transport/http-routed.d.ts.map +0 -1
  630. package/dist/transport/http-routed.js +0 -409
  631. package/dist/transport/http-routed.js.map +0 -1
  632. package/dist/transport/index.d.ts.map +0 -1
  633. package/dist/transport/index.js.map +0 -1
  634. package/dist/transport/request-id.d.ts +0 -9
  635. package/dist/transport/request-id.d.ts.map +0 -1
  636. package/dist/transport/request-id.js +0 -12
  637. package/dist/transport/request-id.js.map +0 -1
  638. package/dist/transport/ws-envelope.d.ts +0 -74
  639. package/dist/transport/ws-envelope.d.ts.map +0 -1
  640. package/dist/transport/ws-envelope.js +0 -567
  641. package/dist/transport/ws-envelope.js.map +0 -1
  642. package/dist/util/race-signal.d.ts +0 -12
  643. package/dist/util/race-signal.d.ts.map +0 -1
  644. package/dist/util/race-signal.js +0 -34
  645. package/dist/util/race-signal.js.map +0 -1
  646. package/dist/wire/controller.d.ts +0 -38
  647. package/dist/wire/controller.d.ts.map +0 -1
  648. package/dist/wire/controller.js +0 -38
  649. package/dist/wire/controller.js.map +0 -1
  650. package/dist/wire/index.d.ts +0 -7
  651. package/dist/wire/index.d.ts.map +0 -1
  652. package/dist/wire/index.js +0 -4
  653. package/dist/wire/index.js.map +0 -1
  654. package/dist/wire/meta.d.ts +0 -81
  655. package/dist/wire/meta.d.ts.map +0 -1
  656. package/dist/wire/meta.js +0 -44
  657. package/dist/wire/meta.js.map +0 -1
  658. package/dist/wire/sse.d.ts +0 -67
  659. package/dist/wire/sse.d.ts.map +0 -1
  660. package/dist/wire/sse.js +0 -170
  661. package/dist/wire/sse.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import type { MutationAST as MutationASTValue, MutationInput, MutationResult } from '@astrale-os/kernel-core/graph/mutate';
2
+ import type { GraphApi, MutationAuthor } from '../graph/index.js';
3
+ import type { GraphMemory } from './memory.js';
4
+ import type { StoreMutationOptions } from './store.js';
5
+ export declare function mutateStore(graph: GraphApi, memory: GraphMemory, input: MutationAuthor | MutationASTValue | MutationInput, options?: StoreMutationOptions): Promise<MutationResult>;
@@ -0,0 +1,34 @@
1
+ import { MutationAST } from '@astrale-os/kernel-core/graph/mutate';
2
+ export async function mutateStore(graph, memory, input, options = {}) {
3
+ if (options === null || typeof options !== 'object') {
4
+ throw new TypeError('Store mutation options are invalid.');
5
+ }
6
+ if (options.optimistic !== undefined && typeof options.optimistic !== 'boolean') {
7
+ throw new TypeError('Store optimistic option is invalid.');
8
+ }
9
+ const ast = typeof input === 'function'
10
+ ? MutationAST.build(input)
11
+ : 'format' in input
12
+ ? MutationAST.decode(input)
13
+ : MutationAST.create(input);
14
+ const transaction = options.optimistic === false ? undefined : memory.overlay.add(ast);
15
+ if (transaction !== undefined)
16
+ memory.optimistic();
17
+ const { optimistic: _optimistic, ...request } = options;
18
+ try {
19
+ const result = await graph.mutate(ast, request);
20
+ if (transaction !== undefined) {
21
+ memory.overlay.delete(transaction);
22
+ memory.settleOptimistic();
23
+ }
24
+ memory.invalidate();
25
+ return result;
26
+ }
27
+ catch (error) {
28
+ if (transaction !== undefined) {
29
+ memory.overlay.delete(transaction);
30
+ memory.settleOptimistic();
31
+ }
32
+ throw error;
33
+ }
34
+ }
@@ -0,0 +1,3 @@
1
+ import type { StoreQuery, StoreReadOptions, StoreSnapshot } from './store.js';
2
+ import type { GraphStore } from './store.js';
3
+ export declare function observeStore<Query extends StoreQuery>(store: GraphStore, query: Query, listener: (snapshot: StoreSnapshot<Query>) => void, options: StoreReadOptions): () => void;
@@ -0,0 +1,17 @@
1
+ import { admitQuery } from './query-key.js';
2
+ export function observeStore(store, query, listener, options) {
3
+ if (typeof listener !== 'function')
4
+ throw new TypeError('Store observer listener is invalid.');
5
+ const admitted = admitQuery(query);
6
+ const publish = () => listener(store.getSnapshot(admitted, options));
7
+ const unsubscribe = store.subscribe(admitted, publish, options);
8
+ try {
9
+ publish();
10
+ }
11
+ catch (error) {
12
+ unsubscribe();
13
+ throw error;
14
+ }
15
+ void store.read(admitted, options).catch(() => undefined);
16
+ return unsubscribe;
17
+ }
@@ -0,0 +1,12 @@
1
+ import type { MutationAST } from '@astrale-os/kernel-core/graph/mutate';
2
+ import type { Node, NodeId } from '@astrale-os/kernel-core/graph/node';
3
+ import type { EntityIndex } from './entity-index.js';
4
+ export declare class OptimisticOverlay {
5
+ private readonly transactions;
6
+ private sequence;
7
+ add(ast: MutationAST): number;
8
+ delete(id: number): void;
9
+ hasAny(): boolean;
10
+ node(id: NodeId, entities: EntityIndex): Node | undefined;
11
+ clear(): void;
12
+ }
@@ -0,0 +1,43 @@
1
+ import { apply } from '@astrale-os/kernel-core/graph/properties';
2
+ import { Path } from '@astrale-os/kernel-core/path';
3
+ export class OptimisticOverlay {
4
+ transactions = new Map();
5
+ sequence = 0;
6
+ add(ast) {
7
+ const id = ++this.sequence;
8
+ this.transactions.set(id, ast);
9
+ return id;
10
+ }
11
+ delete(id) {
12
+ this.transactions.delete(id);
13
+ }
14
+ hasAny() {
15
+ return this.transactions.size > 0;
16
+ }
17
+ node(id, entities) {
18
+ let value = entities.node(id);
19
+ for (const ast of this.transactions.values()) {
20
+ for (const operation of ast.operations) {
21
+ if (operation.op !== 'node.update' && operation.op !== 'node.delete')
22
+ continue;
23
+ if (nodeId(operation.node) !== id)
24
+ continue;
25
+ if (operation.op === 'node.delete')
26
+ value = undefined;
27
+ else if (value !== undefined && value.class === operation.class) {
28
+ value = Object.freeze({ ...value, props: apply(value.props, operation.props) });
29
+ }
30
+ }
31
+ }
32
+ return value;
33
+ }
34
+ clear() {
35
+ this.transactions.clear();
36
+ }
37
+ }
38
+ function nodeId(input) {
39
+ const path = Path.parse(input);
40
+ return path.ast.anchor.kind === 'id' && path.ast.steps.length === 0
41
+ ? path.ast.anchor.id
42
+ : undefined;
43
+ }
@@ -0,0 +1,5 @@
1
+ import type { QueryAST as QueryASTValue } from '@astrale-os/kernel-core/graph/query';
2
+ import type { QueryPageRequest } from '../graph/index.js';
3
+ export declare function admitQuery(input: QueryASTValue): QueryASTValue;
4
+ export declare function admitPage(input: QueryPageRequest): QueryPageRequest;
5
+ export declare function queryKey(ast: QueryASTValue, page: QueryPageRequest): string;
@@ -0,0 +1,22 @@
1
+ import { QueryAST } from '@astrale-os/kernel-core/graph/query';
2
+ export function admitQuery(input) {
3
+ return QueryAST.decode(input);
4
+ }
5
+ export function admitPage(input) {
6
+ if (input === null || typeof input !== 'object' || Array.isArray(input)) {
7
+ throw new TypeError('Store query page is invalid.');
8
+ }
9
+ if (!Number.isSafeInteger(input.size) || input.size < 1) {
10
+ throw new TypeError('Store query page size must be a positive safe integer.');
11
+ }
12
+ if (input.after !== undefined && (typeof input.after !== 'string' || input.after.length === 0)) {
13
+ throw new TypeError('Store query page continuation is invalid.');
14
+ }
15
+ return Object.freeze({
16
+ size: input.size,
17
+ ...(input.after === undefined ? {} : { after: input.after }),
18
+ });
19
+ }
20
+ export function queryKey(ast, page) {
21
+ return JSON.stringify([QueryAST.fingerprint(ast), page.size, page.after ?? null]);
22
+ }
@@ -0,0 +1,25 @@
1
+ import type { NodeId } from '@astrale-os/kernel-core/graph/node';
2
+ import type { QueryAST } from '@astrale-os/kernel-core/graph/query';
3
+ import type { QueryPageRequest } from '../graph/index.js';
4
+ import type { FactReferences } from './entity-index.js';
5
+ import type { StoreQueryResponse, StoreSnapshot } from './store.js';
6
+ export type ShapeState = StoreSnapshot['state'];
7
+ export declare class QueryShape {
8
+ readonly key: string;
9
+ readonly ast: QueryAST;
10
+ readonly page: QueryPageRequest;
11
+ readonly listeners: Set<() => void>;
12
+ state: ShapeState;
13
+ confirmed?: StoreQueryResponse;
14
+ response?: StoreQueryResponse;
15
+ references?: FactReferences;
16
+ inflight?: Promise<StoreQueryResponse>;
17
+ releasedAt?: number;
18
+ accessedAt: number;
19
+ refreshedAt?: number;
20
+ snapshot: StoreSnapshot;
21
+ constructor(key: string, ast: QueryAST, page: QueryPageRequest, now: number);
22
+ get observed(): boolean;
23
+ referencesAny(nodes: ReadonlySet<NodeId>, edges: ReadonlySet<string>): boolean;
24
+ }
25
+ export declare const COLD_SNAPSHOT: StoreSnapshot;
@@ -0,0 +1,29 @@
1
+ export class QueryShape {
2
+ key;
3
+ ast;
4
+ page;
5
+ listeners = new Set();
6
+ state = 'cold';
7
+ confirmed;
8
+ response;
9
+ references;
10
+ inflight;
11
+ releasedAt;
12
+ accessedAt;
13
+ refreshedAt;
14
+ snapshot = COLD_SNAPSHOT;
15
+ constructor(key, ast, page, now) {
16
+ this.key = key;
17
+ this.ast = ast;
18
+ this.page = page;
19
+ this.accessedAt = now;
20
+ }
21
+ get observed() {
22
+ return this.listeners.size > 0;
23
+ }
24
+ referencesAny(nodes, edges) {
25
+ return (this.references?.nodes.some((id) => nodes.has(id)) === true ||
26
+ this.references?.edges.some((key) => edges.has(key)) === true);
27
+ }
28
+ }
29
+ export const COLD_SNAPSHOT = Object.freeze({ state: 'cold' });
@@ -0,0 +1,68 @@
1
+ import type { MutationAST, MutationInput, MutationResult } from '@astrale-os/kernel-core/graph/mutate';
2
+ import type { QueryAST, QueryResultFor } from '@astrale-os/kernel-core/graph/query';
3
+ import type { QueryResponse } from '../graph/index.js';
4
+ import type { GraphApi, GraphQueryOptions, MutationAuthor } from '../graph/index.js';
5
+ import type { RequestOptions } from '../transport/index.js';
6
+ export type StoreQuery = QueryAST;
7
+ export type StoreQueryResponse<Query extends StoreQuery = StoreQuery> = QueryResponse<QueryResultFor<Query>>;
8
+ export interface StoreReadOptions extends GraphQueryOptions {
9
+ readonly freshness?: 'cached' | 'refresh';
10
+ }
11
+ export interface StoreMutationOptions extends RequestOptions {
12
+ readonly optimistic?: boolean;
13
+ }
14
+ export type StoreSnapshot<Query extends StoreQuery = StoreQuery> = {
15
+ readonly state: 'cold';
16
+ } | {
17
+ readonly state: 'loading';
18
+ }
19
+ /** Last read succeeded and no local invalidation occurred; no remote recency is implied. */
20
+ | {
21
+ readonly state: 'ready';
22
+ readonly response: StoreQueryResponse<Query>;
23
+ } | {
24
+ readonly state: 'stale';
25
+ readonly response: StoreQueryResponse<Query>;
26
+ } | {
27
+ readonly state: 'refreshing';
28
+ readonly response: StoreQueryResponse<Query>;
29
+ } | {
30
+ readonly state: 'optimistic';
31
+ readonly response: StoreQueryResponse<Query>;
32
+ } | {
33
+ readonly state: 'failed';
34
+ readonly error: unknown;
35
+ readonly response?: StoreQueryResponse<Query>;
36
+ };
37
+ export interface StoreOptions {
38
+ /** Must retain one effective authority and semantic schema revision for this Store lifetime. */
39
+ readonly graph: GraphApi;
40
+ readonly ttlMs?: number;
41
+ readonly concurrency?: number;
42
+ readonly maximumShapes?: number;
43
+ readonly now?: () => number;
44
+ readonly onError?: (error: unknown) => void;
45
+ }
46
+ /** Framework-neutral normalized graph memory scoped to one caller-bound GraphApi. */
47
+ export declare class GraphStore {
48
+ readonly graph: GraphApi;
49
+ private readonly memory;
50
+ private readonly lifecycle;
51
+ private closed;
52
+ constructor(options: StoreOptions);
53
+ read<Query extends StoreQuery>(query: Query, options: StoreReadOptions): Promise<StoreQueryResponse<Query>>;
54
+ peek<Query extends StoreQuery>(query: Query, options: GraphQueryOptions): StoreQueryResponse<Query> | undefined;
55
+ preload<Query extends StoreQuery>(query: Query, options: StoreReadOptions): Promise<void>;
56
+ subscribe<Query extends StoreQuery>(query: Query, listener: () => void, options: GraphQueryOptions): () => void;
57
+ getSnapshot<Query extends StoreQuery>(query: Query, options: GraphQueryOptions): StoreSnapshot<Query>;
58
+ observe<Query extends StoreQuery>(query: Query, listener: (snapshot: StoreSnapshot<Query>) => void, options: StoreReadOptions): () => void;
59
+ mutate(author: MutationAuthor, options?: StoreMutationOptions): Promise<MutationResult>;
60
+ mutate(input: MutationAST | MutationInput, options?: StoreMutationOptions): Promise<MutationResult>;
61
+ invalidate(): void;
62
+ invalidate(query: StoreQuery, options: GraphQueryOptions): void;
63
+ sweep(): void;
64
+ close(): void;
65
+ private admit;
66
+ private identity;
67
+ private requireOpen;
68
+ }
@@ -0,0 +1,144 @@
1
+ import { ClientError } from '../errors/index.js';
2
+ import { GraphMemory } from './memory.js';
3
+ import { mutateStore } from './mutation.js';
4
+ import { observeStore } from './observe.js';
5
+ import { admitPage, admitQuery, queryKey } from './query-key.js';
6
+ /** Framework-neutral normalized graph memory scoped to one caller-bound GraphApi. */
7
+ export class GraphStore {
8
+ graph;
9
+ memory;
10
+ lifecycle = new AbortController();
11
+ closed = false;
12
+ constructor(options) {
13
+ if (options === null || typeof options !== 'object') {
14
+ throw new TypeError('GraphStore options are invalid.');
15
+ }
16
+ if (options.graph === null ||
17
+ typeof options.graph !== 'object' ||
18
+ typeof options.graph.query !== 'function' ||
19
+ typeof options.graph.mutate !== 'function' ||
20
+ typeof options.graph.get !== 'function' ||
21
+ typeof options.graph.getOrThrow !== 'function' ||
22
+ typeof options.graph.neighbors !== 'function') {
23
+ throw new TypeError('GraphStore graph capability is invalid.');
24
+ }
25
+ if (options.now !== undefined && typeof options.now !== 'function') {
26
+ throw new TypeError('GraphStore clock is invalid.');
27
+ }
28
+ if (options.onError !== undefined && typeof options.onError !== 'function') {
29
+ throw new TypeError('GraphStore error observer is invalid.');
30
+ }
31
+ const ttlMs = positive(options.ttlMs ?? 30_000, 'ttlMs');
32
+ const concurrency = positive(options.concurrency ?? 4, 'concurrency');
33
+ const maximumShapes = positive(options.maximumShapes ?? 256, 'maximumShapes');
34
+ this.graph = Object.freeze({
35
+ query: options.graph.query.bind(options.graph),
36
+ mutate: options.graph.mutate.bind(options.graph),
37
+ get: options.graph.get.bind(options.graph),
38
+ getOrThrow: options.graph.getOrThrow.bind(options.graph),
39
+ neighbors: options.graph.neighbors.bind(options.graph),
40
+ });
41
+ this.memory = new GraphMemory({
42
+ graph: this.graph,
43
+ ttlMs,
44
+ concurrency,
45
+ maximumShapes,
46
+ now: options.now ?? Date.now,
47
+ ...(options.onError === undefined ? {} : { onError: options.onError }),
48
+ lifecycle: this.lifecycle.signal,
49
+ requireOpen: () => this.requireOpen(),
50
+ });
51
+ }
52
+ read(query, options) {
53
+ const admitted = this.admit(query, options);
54
+ return this.memory.read(admitted.shape, admitted.options);
55
+ }
56
+ peek(query, options) {
57
+ const { key } = this.identity(query, options);
58
+ return this.memory.get(key)?.response;
59
+ }
60
+ async preload(query, options) {
61
+ await this.read(query, options);
62
+ }
63
+ subscribe(query, listener, options) {
64
+ if (typeof listener !== 'function')
65
+ throw new TypeError('Store listener is invalid.');
66
+ const admitted = this.admit(query, options);
67
+ return this.memory.subscribe(admitted.shape, listener);
68
+ }
69
+ getSnapshot(query, options) {
70
+ const { key } = this.identity(query, options);
71
+ return this.memory.snapshot(this.memory.get(key));
72
+ }
73
+ observe(query, listener, options) {
74
+ return observeStore(this, query, listener, options);
75
+ }
76
+ mutate(input, options) {
77
+ this.requireOpen();
78
+ return mutateStore(this.graph, this.memory, input, options);
79
+ }
80
+ invalidate(query, options) {
81
+ this.requireOpen();
82
+ if (query === undefined)
83
+ this.memory.invalidate();
84
+ else {
85
+ if (options === undefined)
86
+ throw new TypeError('Store query page is required.');
87
+ const { key } = this.identity(query, options);
88
+ const shape = this.memory.get(key);
89
+ if (shape !== undefined)
90
+ this.memory.invalidate(shape);
91
+ }
92
+ }
93
+ sweep() {
94
+ this.memory.sweep();
95
+ }
96
+ close() {
97
+ if (this.closed)
98
+ return;
99
+ this.closed = true;
100
+ const error = new ClientError('GraphStore is closed.');
101
+ this.lifecycle.abort(error);
102
+ this.memory.close(error);
103
+ }
104
+ admit(query, options) {
105
+ const identity = this.identity(query, options);
106
+ return {
107
+ ...identity,
108
+ shape: this.memory.ensure(identity.key, identity.ast, identity.page),
109
+ options: options,
110
+ };
111
+ }
112
+ identity(query, options) {
113
+ this.requireOpen();
114
+ if (options === null || typeof options !== 'object') {
115
+ throw new TypeError('Store read options are invalid.');
116
+ }
117
+ if ('freshness' in options &&
118
+ options.freshness !== undefined &&
119
+ options.freshness !== 'cached' &&
120
+ options.freshness !== 'refresh') {
121
+ throw new TypeError('Store freshness option is invalid.');
122
+ }
123
+ const page = admitPage(options.page);
124
+ if (options.timeoutMs !== undefined &&
125
+ (!Number.isSafeInteger(options.timeoutMs) ||
126
+ options.timeoutMs < 1 ||
127
+ options.timeoutMs > 2_147_483_647)) {
128
+ throw new TypeError('Store read timeoutMs must be a positive platform integer.');
129
+ }
130
+ const ast = admitQuery(query);
131
+ const key = queryKey(ast, page);
132
+ return { key, ast, page };
133
+ }
134
+ requireOpen() {
135
+ if (this.closed)
136
+ throw new ClientError('GraphStore is closed.');
137
+ }
138
+ }
139
+ function positive(input, label) {
140
+ if (!Number.isSafeInteger(input) || input < 1) {
141
+ throw new TypeError(`${label} must be a positive safe integer.`);
142
+ }
143
+ return input;
144
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
1
+ import { Query } from '../graph/index.js';
2
+ const options = { page: { size: 32 } };
3
+ const nodeGraph = Query.from({ nodes: [path] }).select({ kind: 'graph' });
4
+ const nodeProjection = Query.from({ nodes: [path] }).select({
5
+ kind: 'nodes',
6
+ projection: { kind: 'reference' },
7
+ });
8
+ const edgeSource = Query.from({ edges: [edge] });
9
+ const edgeProjection = edgeSource.select({
10
+ kind: 'edges',
11
+ projection: { edge: 'reference', source: 'value', target: 'reference' },
12
+ });
13
+ const read = store.read(nodeGraph, options);
14
+ const peek = store.peek(nodeProjection, options);
15
+ const snapshot = store.getSnapshot(edgeProjection, options);
16
+ // @ts-expect-error ready is the successful local snapshot state; fresh is retired.
17
+ const retiredFreshSnapshot = { state: 'fresh' };
18
+ void retiredFreshSnapshot;
19
+ store.subscribe(nodeGraph, () => undefined, options);
20
+ store.observe(nodeProjection, (value) => {
21
+ if ('response' in value && value.response !== undefined) {
22
+ const result = value.response.result;
23
+ void result;
24
+ }
25
+ }, options);
26
+ // @ts-expect-error Query-page identity is required for every observed Store shape.
27
+ store.read(nodeGraph);
28
+ // @ts-expect-error Query-page identity is required for cache peeks.
29
+ store.peek(nodeGraph);
30
+ // @ts-expect-error Query-page identity is required for preloading.
31
+ store.preload(nodeGraph);
32
+ // @ts-expect-error Query-page identity is required for subscriptions.
33
+ store.subscribe(nodeGraph, () => undefined);
34
+ // @ts-expect-error Query-page identity is required for snapshot lookup.
35
+ store.getSnapshot(nodeGraph);
36
+ // @ts-expect-error Query-page identity is required for observations.
37
+ store.observe(nodeGraph, () => undefined);
38
+ // @ts-expect-error watch is reserved for a future remote-liveness protocol.
39
+ store.watch(nodeGraph, () => undefined, options);
40
+ void {};
@@ -0,0 +1,22 @@
1
+ export type AutoSelection = 'websocket' | 'http';
2
+ export type AutoDecisionTicket = {
3
+ readonly kind: 'selected';
4
+ readonly selection: AutoSelection;
5
+ } | {
6
+ readonly kind: 'wait';
7
+ readonly selection: Promise<AutoSelection | undefined>;
8
+ } | {
9
+ readonly kind: 'probe';
10
+ };
11
+ /** Serializes the one initial transport decision without retaining invocation values. */
12
+ export declare class AutoDecision {
13
+ private selected;
14
+ private pending;
15
+ private closed;
16
+ begin(): AutoDecisionTicket;
17
+ select(selection: AutoSelection): void;
18
+ /** Permanently degrade a prior or pending WebSocket selection to HTTP. */
19
+ demote(): void;
20
+ release(): void;
21
+ close(): void;
22
+ }
@@ -0,0 +1,48 @@
1
+ /** Serializes the one initial transport decision without retaining invocation values. */
2
+ export class AutoDecision {
3
+ selected;
4
+ pending;
5
+ closed = false;
6
+ begin() {
7
+ if (this.closed)
8
+ return { kind: 'wait', selection: Promise.resolve(undefined) };
9
+ if (this.selected)
10
+ return { kind: 'selected', selection: this.selected };
11
+ if (this.pending)
12
+ return { kind: 'wait', selection: this.pending.promise };
13
+ let resolve;
14
+ const promise = new Promise((settle) => {
15
+ resolve = settle;
16
+ });
17
+ this.pending = { promise, resolve };
18
+ return { kind: 'probe' };
19
+ }
20
+ select(selection) {
21
+ if (this.closed || this.selected)
22
+ return;
23
+ this.selected = selection;
24
+ this.pending?.resolve(selection);
25
+ this.pending = undefined;
26
+ }
27
+ /** Permanently degrade a prior or pending WebSocket selection to HTTP. */
28
+ demote() {
29
+ if (this.closed || this.selected === 'http')
30
+ return;
31
+ this.selected = 'http';
32
+ this.pending?.resolve('http');
33
+ this.pending = undefined;
34
+ }
35
+ release() {
36
+ if (this.closed || this.selected)
37
+ return;
38
+ this.pending?.resolve(undefined);
39
+ this.pending = undefined;
40
+ }
41
+ close() {
42
+ if (this.closed)
43
+ return;
44
+ this.closed = true;
45
+ this.pending?.resolve(undefined);
46
+ this.pending = undefined;
47
+ }
48
+ }
@@ -0,0 +1,16 @@
1
+ import type { RequestOptions, TransportRequest } from '../index.js';
2
+ import { TransportError } from '../../errors/index.js';
3
+ /** One invocation-owned total timeout budget shared by selection and fallback. */
4
+ export declare class InvocationBudget {
5
+ private readonly input;
6
+ private readonly started;
7
+ private readonly timeoutMs;
8
+ constructor(input: RequestOptions | undefined, defaultTimeoutMs: number);
9
+ options(): RequestOptions;
10
+ get cancelled(): boolean;
11
+ get idempotency(): 'supplied' | 'absent';
12
+ wait(decision: Promise<'websocket' | 'http' | undefined>): Promise<'websocket' | 'http' | undefined>;
13
+ private remaining;
14
+ }
15
+ export declare function mayFallback(error: unknown): error is TransportError;
16
+ export declare function warningTarget(input: TransportRequest): TransportRequest['call']['target'];
@@ -0,0 +1,75 @@
1
+ import { TransportError } from '../../errors/index.js';
2
+ import { invocationFailure } from '../failure.js';
3
+ import { positiveInteger } from '../index.js';
4
+ const MAXIMUM_TIMEOUT_MS = 2_147_483_647;
5
+ /** One invocation-owned total timeout budget shared by selection and fallback. */
6
+ export class InvocationBudget {
7
+ input;
8
+ started = Date.now();
9
+ timeoutMs;
10
+ constructor(input, defaultTimeoutMs) {
11
+ this.input = input;
12
+ this.timeoutMs = positiveInteger(input?.timeoutMs ?? defaultTimeoutMs, 'timeoutMs');
13
+ }
14
+ options() {
15
+ const remaining = this.remaining();
16
+ return Object.freeze({
17
+ ...(this.input?.signal === undefined ? {} : { signal: this.input.signal }),
18
+ timeoutMs: remaining,
19
+ ...(this.input?.idempotencyKey === undefined
20
+ ? {}
21
+ : { idempotencyKey: this.input.idempotencyKey }),
22
+ });
23
+ }
24
+ get cancelled() {
25
+ return this.input?.signal?.aborted === true;
26
+ }
27
+ get idempotency() {
28
+ return this.input?.idempotencyKey === undefined ? 'absent' : 'supplied';
29
+ }
30
+ async wait(decision) {
31
+ if (this.input?.signal?.aborted)
32
+ throw abortReason(this.input.signal);
33
+ const remaining = this.remaining();
34
+ let timer;
35
+ let abort;
36
+ const interrupted = new Promise((_resolve, reject) => {
37
+ timer = setTimeout(() => reject(invocationFailure('Automatic transport decision exceeded its timeout.', 'timeout')), remaining);
38
+ if (this.input?.signal) {
39
+ abort = () => reject(abortReason(this.input.signal));
40
+ this.input.signal.addEventListener('abort', abort, { once: true });
41
+ }
42
+ });
43
+ try {
44
+ return await Promise.race([decision, interrupted]);
45
+ }
46
+ finally {
47
+ if (timer)
48
+ clearTimeout(timer);
49
+ if (abort && this.input?.signal)
50
+ this.input.signal.removeEventListener('abort', abort);
51
+ }
52
+ }
53
+ remaining() {
54
+ const remaining = Math.min(MAXIMUM_TIMEOUT_MS, this.timeoutMs - (Date.now() - this.started));
55
+ if (remaining < 1) {
56
+ throw invocationFailure('Automatic transport invocation exceeded its timeout.', 'timeout');
57
+ }
58
+ return remaining;
59
+ }
60
+ }
61
+ export function mayFallback(error) {
62
+ return (error instanceof TransportError &&
63
+ error.context.kind === 'invocation' &&
64
+ error.context.delivery === 'not-sent' &&
65
+ error.phase !== 'closed' &&
66
+ error.phase !== 'timeout');
67
+ }
68
+ export function warningTarget(input) {
69
+ return input.call.target;
70
+ }
71
+ function abortReason(signal) {
72
+ return signal.reason instanceof Error
73
+ ? signal.reason
74
+ : new Error(signal.reason === undefined ? 'request was cancelled' : String(signal.reason));
75
+ }
@@ -0,0 +1,2 @@
1
+ export { AutoTransport, type AutoTransportOptions } from './transport.js';
2
+ export { formatClientWarning, type ClientWarning } from './warning.js';
@@ -0,0 +1,2 @@
1
+ export { AutoTransport } from './transport.js';
2
+ export { formatClientWarning } from './warning.js';