@earendil-works/chord 1.4.0 → 1.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 (1299) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +115 -90
  3. package/dist/context/index.d.ts +1 -1
  4. package/dist/context/index.d.ts.map +1 -1
  5. package/dist/context/index.js +1 -1
  6. package/dist/context/index.js.map +1 -1
  7. package/dist/contracts/accepts.d.ts +81 -0
  8. package/dist/contracts/accepts.d.ts.map +1 -0
  9. package/dist/contracts/accepts.js +123 -0
  10. package/dist/contracts/accepts.js.map +1 -0
  11. package/dist/contracts/contract.d.ts +121 -0
  12. package/dist/contracts/contract.d.ts.map +1 -0
  13. package/dist/contracts/contract.js +50 -0
  14. package/dist/contracts/contract.js.map +1 -0
  15. package/dist/contracts/declare.d.ts +107 -0
  16. package/dist/contracts/declare.d.ts.map +1 -0
  17. package/dist/contracts/declare.js +136 -0
  18. package/dist/contracts/declare.js.map +1 -0
  19. package/dist/contracts/evolve.d.ts +92 -0
  20. package/dist/contracts/evolve.d.ts.map +1 -0
  21. package/dist/contracts/evolve.js +179 -0
  22. package/dist/contracts/evolve.js.map +1 -0
  23. package/dist/contracts/fingerprint.d.ts +16 -0
  24. package/dist/contracts/fingerprint.d.ts.map +1 -0
  25. package/dist/contracts/fingerprint.js +50 -0
  26. package/dist/contracts/fingerprint.js.map +1 -0
  27. package/dist/contracts/history.d.ts +71 -0
  28. package/dist/contracts/history.d.ts.map +1 -0
  29. package/dist/contracts/history.js +3 -0
  30. package/dist/contracts/history.js.map +1 -0
  31. package/dist/contracts/host-kind.d.ts +40 -0
  32. package/dist/contracts/host-kind.d.ts.map +1 -0
  33. package/dist/contracts/host-kind.js +37 -0
  34. package/dist/contracts/host-kind.js.map +1 -0
  35. package/dist/contracts/index.d.ts +7 -0
  36. package/dist/contracts/index.d.ts.map +1 -0
  37. package/dist/contracts/index.js +6 -0
  38. package/dist/contracts/index.js.map +1 -0
  39. package/dist/contracts/internal.d.ts +10 -0
  40. package/dist/contracts/internal.d.ts.map +1 -0
  41. package/dist/contracts/internal.js +9 -0
  42. package/dist/contracts/internal.js.map +1 -0
  43. package/dist/contracts/names.d.ts +3 -0
  44. package/dist/contracts/names.d.ts.map +1 -0
  45. package/dist/contracts/names.js +13 -0
  46. package/dist/contracts/names.js.map +1 -0
  47. package/dist/contracts/params.d.ts +28 -0
  48. package/dist/contracts/params.d.ts.map +1 -0
  49. package/dist/contracts/params.js +50 -0
  50. package/dist/contracts/params.js.map +1 -0
  51. package/dist/contracts/schema.d.ts +102 -0
  52. package/dist/contracts/schema.d.ts.map +1 -0
  53. package/dist/contracts/schema.js +103 -0
  54. package/dist/contracts/schema.js.map +1 -0
  55. package/dist/contracts/snapshot.d.ts +16 -0
  56. package/dist/contracts/snapshot.d.ts.map +1 -0
  57. package/dist/contracts/snapshot.js +167 -0
  58. package/dist/contracts/snapshot.js.map +1 -0
  59. package/dist/data/args.d.ts +50 -0
  60. package/dist/data/args.d.ts.map +1 -0
  61. package/dist/data/args.js +83 -0
  62. package/dist/data/args.js.map +1 -0
  63. package/dist/data/errors.d.ts +80 -0
  64. package/dist/data/errors.d.ts.map +1 -0
  65. package/dist/data/errors.js +116 -0
  66. package/dist/data/errors.js.map +1 -0
  67. package/dist/data/failure.d.ts +26 -0
  68. package/dist/data/failure.d.ts.map +1 -0
  69. package/dist/data/failure.js +77 -0
  70. package/dist/data/failure.js.map +1 -0
  71. package/dist/data/index.d.ts +4 -0
  72. package/dist/data/index.d.ts.map +1 -0
  73. package/dist/data/index.js +5 -0
  74. package/dist/data/index.js.map +1 -0
  75. package/dist/data/internal.d.ts +7 -0
  76. package/dist/data/internal.d.ts.map +1 -0
  77. package/dist/data/internal.js +8 -0
  78. package/dist/data/internal.js.map +1 -0
  79. package/dist/data/params.d.ts +20 -0
  80. package/dist/data/params.d.ts.map +1 -0
  81. package/dist/data/params.js +31 -0
  82. package/dist/data/params.js.map +1 -0
  83. package/dist/data/principal.d.ts +22 -0
  84. package/dist/data/principal.d.ts.map +1 -0
  85. package/dist/data/principal.js +49 -0
  86. package/dist/data/principal.js.map +1 -0
  87. package/dist/data/validator.d.ts +12 -0
  88. package/dist/data/validator.d.ts.map +1 -0
  89. package/dist/data/validator.js +35 -0
  90. package/dist/data/validator.js.map +1 -0
  91. package/dist/delta/apply-immutable-trusted.js +3 -4
  92. package/dist/delta/apply-immutable-trusted.js.map +1 -1
  93. package/dist/delta/diff.d.ts.map +1 -1
  94. package/dist/delta/diff.js +5 -3
  95. package/dist/delta/diff.js.map +1 -1
  96. package/dist/delta/index.d.ts +9 -1
  97. package/dist/delta/index.d.ts.map +1 -1
  98. package/dist/delta/index.js +15 -11
  99. package/dist/delta/index.js.map +1 -1
  100. package/dist/delta/pending.d.ts +36 -0
  101. package/dist/delta/pending.d.ts.map +1 -0
  102. package/dist/delta/pending.js +143 -0
  103. package/dist/delta/pending.js.map +1 -0
  104. package/dist/delta/tracker.d.ts +12 -0
  105. package/dist/delta/tracker.d.ts.map +1 -1
  106. package/dist/delta/tracker.js +109 -39
  107. package/dist/delta/tracker.js.map +1 -1
  108. package/dist/documents/address-source.d.ts +20 -0
  109. package/dist/documents/address-source.d.ts.map +1 -0
  110. package/dist/documents/address-source.js +44 -0
  111. package/dist/documents/address-source.js.map +1 -0
  112. package/dist/documents/definition.d.ts +84 -0
  113. package/dist/documents/definition.d.ts.map +1 -0
  114. package/dist/documents/definition.js +74 -0
  115. package/dist/documents/definition.js.map +1 -0
  116. package/dist/documents/documents.d.ts +126 -0
  117. package/dist/documents/documents.d.ts.map +1 -0
  118. package/dist/documents/documents.js +248 -0
  119. package/dist/documents/documents.js.map +1 -0
  120. package/dist/documents/fence.d.ts +9 -0
  121. package/dist/documents/fence.d.ts.map +1 -0
  122. package/dist/documents/fence.js +15 -0
  123. package/dist/documents/fence.js.map +1 -0
  124. package/dist/documents/handles.d.ts +76 -0
  125. package/dist/documents/handles.d.ts.map +1 -0
  126. package/dist/documents/handles.js +66 -0
  127. package/dist/documents/handles.js.map +1 -0
  128. package/dist/documents/index.d.ts +4 -0
  129. package/dist/documents/index.d.ts.map +1 -0
  130. package/dist/documents/index.js +3 -0
  131. package/dist/documents/index.js.map +1 -0
  132. package/dist/documents/internal.d.ts +9 -0
  133. package/dist/documents/internal.d.ts.map +1 -0
  134. package/dist/documents/internal.js +9 -0
  135. package/dist/documents/internal.js.map +1 -0
  136. package/dist/documents/keyed-slot.d.ts +103 -0
  137. package/dist/documents/keyed-slot.d.ts.map +1 -0
  138. package/dist/documents/keyed-slot.js +395 -0
  139. package/dist/documents/keyed-slot.js.map +1 -0
  140. package/dist/documents/line.d.ts +7 -0
  141. package/dist/documents/line.d.ts.map +1 -0
  142. package/dist/documents/line.js +14 -0
  143. package/dist/documents/line.js.map +1 -0
  144. package/dist/documents/persistence.d.ts +104 -0
  145. package/dist/documents/persistence.d.ts.map +1 -0
  146. package/dist/documents/persistence.js +129 -0
  147. package/dist/documents/persistence.js.map +1 -0
  148. package/dist/documents/residency.d.ts +31 -0
  149. package/dist/documents/residency.d.ts.map +1 -0
  150. package/dist/documents/residency.js +93 -0
  151. package/dist/documents/residency.js.map +1 -0
  152. package/dist/documents/slot.d.ts +109 -0
  153. package/dist/documents/slot.d.ts.map +1 -0
  154. package/dist/documents/slot.js +181 -0
  155. package/dist/documents/slot.js.map +1 -0
  156. package/dist/documents/transaction.d.ts +143 -0
  157. package/dist/documents/transaction.d.ts.map +1 -0
  158. package/dist/documents/transaction.js +442 -0
  159. package/dist/documents/transaction.js.map +1 -0
  160. package/dist/host/activity.d.ts +31 -0
  161. package/dist/host/activity.d.ts.map +1 -0
  162. package/dist/host/activity.js +40 -0
  163. package/dist/host/activity.js.map +1 -0
  164. package/dist/host/adapted.d.ts +49 -0
  165. package/dist/host/adapted.d.ts.map +1 -0
  166. package/dist/host/adapted.js +214 -0
  167. package/dist/host/adapted.js.map +1 -0
  168. package/dist/host/attempt.d.ts +308 -0
  169. package/dist/host/attempt.d.ts.map +1 -0
  170. package/dist/host/attempt.js +1199 -0
  171. package/dist/host/attempt.js.map +1 -0
  172. package/dist/host/backoff.d.ts +29 -0
  173. package/dist/host/backoff.d.ts.map +1 -0
  174. package/dist/host/backoff.js +69 -0
  175. package/dist/host/backoff.js.map +1 -0
  176. package/dist/host/ctx.d.ts +94 -0
  177. package/dist/host/ctx.d.ts.map +1 -0
  178. package/dist/host/ctx.js +200 -0
  179. package/dist/host/ctx.js.map +1 -0
  180. package/dist/host/deadline.d.ts +12 -0
  181. package/dist/host/deadline.d.ts.map +1 -0
  182. package/dist/host/deadline.js +40 -0
  183. package/dist/host/deadline.js.map +1 -0
  184. package/dist/host/dependencies.d.ts +65 -0
  185. package/dist/host/dependencies.d.ts.map +1 -0
  186. package/dist/host/dependencies.js +115 -0
  187. package/dist/host/dependencies.js.map +1 -0
  188. package/dist/host/destination.d.ts +48 -0
  189. package/dist/host/destination.d.ts.map +1 -0
  190. package/dist/host/destination.js +101 -0
  191. package/dist/host/destination.js.map +1 -0
  192. package/dist/host/facet.d.ts +84 -0
  193. package/dist/host/facet.d.ts.map +1 -0
  194. package/dist/host/facet.js +55 -0
  195. package/dist/host/facet.js.map +1 -0
  196. package/dist/host/follow.d.ts +52 -0
  197. package/dist/host/follow.d.ts.map +1 -0
  198. package/dist/host/follow.js +207 -0
  199. package/dist/host/follow.js.map +1 -0
  200. package/dist/host/host.d.ts +571 -0
  201. package/dist/host/host.d.ts.map +1 -0
  202. package/dist/host/host.js +1318 -0
  203. package/dist/host/host.js.map +1 -0
  204. package/dist/host/index.d.ts +17 -0
  205. package/dist/host/index.d.ts.map +1 -0
  206. package/dist/host/index.js +6 -0
  207. package/dist/host/index.js.map +1 -0
  208. package/dist/host/internal.d.ts +11 -0
  209. package/dist/host/internal.d.ts.map +1 -0
  210. package/dist/host/internal.js +9 -0
  211. package/dist/host/internal.js.map +1 -0
  212. package/dist/host/members.d.ts +50 -0
  213. package/dist/host/members.d.ts.map +1 -0
  214. package/dist/host/members.js +107 -0
  215. package/dist/host/members.js.map +1 -0
  216. package/dist/host/native.d.ts +64 -0
  217. package/dist/host/native.d.ts.map +1 -0
  218. package/dist/host/native.js +126 -0
  219. package/dist/host/native.js.map +1 -0
  220. package/dist/host/object.d.ts +331 -0
  221. package/dist/host/object.d.ts.map +1 -0
  222. package/dist/host/object.js +1296 -0
  223. package/dist/host/object.js.map +1 -0
  224. package/dist/host/old-work.d.ts +34 -0
  225. package/dist/host/old-work.d.ts.map +1 -0
  226. package/dist/host/old-work.js +52 -0
  227. package/dist/host/old-work.js.map +1 -0
  228. package/dist/host/parked.d.ts +23 -0
  229. package/dist/host/parked.d.ts.map +1 -0
  230. package/dist/host/parked.js +79 -0
  231. package/dist/host/parked.js.map +1 -0
  232. package/dist/host/presence.d.ts +34 -0
  233. package/dist/host/presence.d.ts.map +1 -0
  234. package/dist/host/presence.js +117 -0
  235. package/dist/host/presence.js.map +1 -0
  236. package/dist/host/readiness.d.ts +27 -0
  237. package/dist/host/readiness.d.ts.map +1 -0
  238. package/dist/host/readiness.js +134 -0
  239. package/dist/host/readiness.js.map +1 -0
  240. package/dist/host/ref-state.d.ts +53 -0
  241. package/dist/host/ref-state.d.ts.map +1 -0
  242. package/dist/host/ref-state.js +83 -0
  243. package/dist/host/ref-state.js.map +1 -0
  244. package/dist/host/reference-keys.d.ts +36 -0
  245. package/dist/host/reference-keys.d.ts.map +1 -0
  246. package/dist/host/reference-keys.js +168 -0
  247. package/dist/host/reference-keys.js.map +1 -0
  248. package/dist/host/reference-source.d.ts +65 -0
  249. package/dist/host/reference-source.d.ts.map +1 -0
  250. package/dist/host/reference-source.js +285 -0
  251. package/dist/host/reference-source.js.map +1 -0
  252. package/dist/host/reference.d.ts +321 -0
  253. package/dist/host/reference.d.ts.map +1 -0
  254. package/dist/host/reference.js +797 -0
  255. package/dist/host/reference.js.map +1 -0
  256. package/dist/host/reload-cycle.d.ts +16 -0
  257. package/dist/host/reload-cycle.d.ts.map +1 -0
  258. package/dist/host/reload-cycle.js +81 -0
  259. package/dist/host/reload-cycle.js.map +1 -0
  260. package/dist/host/retry-on.d.ts +28 -0
  261. package/dist/host/retry-on.d.ts.map +1 -0
  262. package/dist/host/retry-on.js +52 -0
  263. package/dist/host/retry-on.js.map +1 -0
  264. package/dist/host/revocation.d.ts +16 -0
  265. package/dist/host/revocation.d.ts.map +1 -0
  266. package/dist/host/revocation.js +27 -0
  267. package/dist/host/revocation.js.map +1 -0
  268. package/dist/host/root.d.ts +37 -0
  269. package/dist/host/root.d.ts.map +1 -0
  270. package/dist/host/root.js +68 -0
  271. package/dist/host/root.js.map +1 -0
  272. package/dist/host/route.d.ts +64 -0
  273. package/dist/host/route.d.ts.map +1 -0
  274. package/dist/host/route.js +227 -0
  275. package/dist/host/route.js.map +1 -0
  276. package/dist/host/routines.d.ts +78 -0
  277. package/dist/host/routines.d.ts.map +1 -0
  278. package/dist/host/routines.js +398 -0
  279. package/dist/host/routines.js.map +1 -0
  280. package/dist/host/sleep.d.ts +9 -0
  281. package/dist/host/sleep.d.ts.map +1 -0
  282. package/dist/host/sleep.js +40 -0
  283. package/dist/host/sleep.js.map +1 -0
  284. package/dist/host/staging.d.ts +94 -0
  285. package/dist/host/staging.d.ts.map +1 -0
  286. package/dist/host/staging.js +304 -0
  287. package/dist/host/staging.js.map +1 -0
  288. package/dist/host/unbound-clock.d.ts +23 -0
  289. package/dist/host/unbound-clock.d.ts.map +1 -0
  290. package/dist/host/unbound-clock.js +58 -0
  291. package/dist/host/unbound-clock.js.map +1 -0
  292. package/dist/host/unbound.d.ts +37 -0
  293. package/dist/host/unbound.d.ts.map +1 -0
  294. package/dist/host/unbound.js +88 -0
  295. package/dist/host/unbound.js.map +1 -0
  296. package/dist/host/uuid.d.ts +3 -0
  297. package/dist/host/uuid.d.ts.map +1 -0
  298. package/dist/host/uuid.js +38 -0
  299. package/dist/host/uuid.js.map +1 -0
  300. package/dist/index.d.ts +29 -18
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +20 -9
  303. package/dist/index.js.map +1 -1
  304. package/dist/jobs/definition.d.ts +96 -0
  305. package/dist/jobs/definition.d.ts.map +1 -0
  306. package/dist/jobs/definition.js +83 -0
  307. package/dist/jobs/definition.js.map +1 -0
  308. package/dist/jobs/index.d.ts +5 -0
  309. package/dist/jobs/index.d.ts.map +1 -0
  310. package/dist/jobs/index.js +3 -0
  311. package/dist/jobs/index.js.map +1 -0
  312. package/dist/jobs/internal.d.ts +3 -0
  313. package/dist/jobs/internal.d.ts.map +1 -0
  314. package/dist/jobs/internal.js +4 -0
  315. package/dist/jobs/internal.js.map +1 -0
  316. package/dist/jobs/job.d.ts +149 -0
  317. package/dist/jobs/job.d.ts.map +1 -0
  318. package/dist/jobs/job.js +387 -0
  319. package/dist/jobs/job.js.map +1 -0
  320. package/dist/jobs/persisted.d.ts +38 -0
  321. package/dist/jobs/persisted.d.ts.map +1 -0
  322. package/dist/jobs/persisted.js +95 -0
  323. package/dist/jobs/persisted.js.map +1 -0
  324. package/dist/jobs/records.d.ts +231 -0
  325. package/dist/jobs/records.d.ts.map +1 -0
  326. package/dist/jobs/records.js +871 -0
  327. package/dist/jobs/records.js.map +1 -0
  328. package/dist/jobs/run-states.d.ts +69 -0
  329. package/dist/jobs/run-states.d.ts.map +1 -0
  330. package/dist/jobs/run-states.js +228 -0
  331. package/dist/jobs/run-states.js.map +1 -0
  332. package/dist/jobs/run.d.ts +117 -0
  333. package/dist/jobs/run.d.ts.map +1 -0
  334. package/dist/jobs/run.js +204 -0
  335. package/dist/jobs/run.js.map +1 -0
  336. package/dist/jobs/running.d.ts +44 -0
  337. package/dist/jobs/running.d.ts.map +1 -0
  338. package/dist/jobs/running.js +117 -0
  339. package/dist/jobs/running.js.map +1 -0
  340. package/dist/jobs/stored.d.ts +63 -0
  341. package/dist/jobs/stored.d.ts.map +1 -0
  342. package/dist/jobs/stored.js +55 -0
  343. package/dist/jobs/stored.js.map +1 -0
  344. package/dist/link/binary.d.ts +4 -0
  345. package/dist/link/binary.d.ts.map +1 -0
  346. package/dist/link/binary.js +544 -0
  347. package/dist/link/binary.js.map +1 -0
  348. package/dist/link/channel.d.ts +68 -0
  349. package/dist/link/channel.d.ts.map +1 -0
  350. package/dist/link/channel.js +215 -0
  351. package/dist/link/channel.js.map +1 -0
  352. package/dist/link/errors.d.ts +7 -0
  353. package/dist/link/errors.d.ts.map +1 -0
  354. package/dist/link/errors.js +21 -0
  355. package/dist/link/errors.js.map +1 -0
  356. package/dist/link/index.d.ts +8 -0
  357. package/dist/link/index.d.ts.map +1 -0
  358. package/dist/link/index.js +8 -0
  359. package/dist/link/index.js.map +1 -0
  360. package/dist/link/internal.d.ts +9 -0
  361. package/dist/link/internal.d.ts.map +1 -0
  362. package/dist/link/internal.js +10 -0
  363. package/dist/link/internal.js.map +1 -0
  364. package/dist/link/ipc.d.ts +22 -0
  365. package/dist/link/ipc.d.ts.map +1 -0
  366. package/dist/link/ipc.js +64 -0
  367. package/dist/link/ipc.js.map +1 -0
  368. package/dist/link/link.d.ts +34 -0
  369. package/dist/link/link.d.ts.map +1 -0
  370. package/dist/link/link.js +87 -0
  371. package/dist/link/link.js.map +1 -0
  372. package/dist/link/message.d.ts +262 -0
  373. package/dist/link/message.d.ts.map +1 -0
  374. package/dist/link/message.js +156 -0
  375. package/dist/link/message.js.map +1 -0
  376. package/dist/link/part.d.ts +80 -0
  377. package/dist/link/part.d.ts.map +1 -0
  378. package/dist/link/part.js +165 -0
  379. package/dist/link/part.js.map +1 -0
  380. package/dist/link/text.d.ts +6 -0
  381. package/dist/link/text.d.ts.map +1 -0
  382. package/dist/link/text.js +355 -0
  383. package/dist/link/text.js.map +1 -0
  384. package/dist/link/values.d.ts +40 -0
  385. package/dist/link/values.d.ts.map +1 -0
  386. package/dist/link/values.js +121 -0
  387. package/dist/link/values.js.map +1 -0
  388. package/dist/link/websocket.d.ts +26 -0
  389. package/dist/link/websocket.d.ts.map +1 -0
  390. package/dist/link/websocket.js +91 -0
  391. package/dist/link/websocket.js.map +1 -0
  392. package/dist/node/app/app.d.ts +269 -0
  393. package/dist/node/app/app.d.ts.map +1 -0
  394. package/dist/node/app/app.js +513 -0
  395. package/dist/node/app/app.js.map +1 -0
  396. package/dist/node/app/archive.d.ts +37 -0
  397. package/dist/node/app/archive.d.ts.map +1 -0
  398. package/dist/node/app/archive.js +204 -0
  399. package/dist/node/app/archive.js.map +1 -0
  400. package/dist/node/app/blobs.d.ts +23 -0
  401. package/dist/node/app/blobs.d.ts.map +1 -0
  402. package/dist/node/app/blobs.js +64 -0
  403. package/dist/node/app/blobs.js.map +1 -0
  404. package/dist/node/app/data.d.ts +35 -0
  405. package/dist/node/app/data.d.ts.map +1 -0
  406. package/dist/node/app/data.js +44 -0
  407. package/dist/node/app/data.js.map +1 -0
  408. package/dist/node/app/ephemeral-sessions.d.ts +20 -0
  409. package/dist/node/app/ephemeral-sessions.d.ts.map +1 -0
  410. package/dist/node/app/ephemeral-sessions.js +69 -0
  411. package/dist/node/app/ephemeral-sessions.js.map +1 -0
  412. package/dist/node/app/ephemeral.d.ts +11 -0
  413. package/dist/node/app/ephemeral.d.ts.map +1 -0
  414. package/dist/node/app/ephemeral.js +34 -0
  415. package/dist/node/app/ephemeral.js.map +1 -0
  416. package/dist/node/app/files-copy.d.ts +13 -0
  417. package/dist/node/app/files-copy.d.ts.map +1 -0
  418. package/dist/node/app/files-copy.js +86 -0
  419. package/dist/node/app/files-copy.js.map +1 -0
  420. package/dist/node/app/files-entry.d.ts +4 -0
  421. package/dist/node/app/files-entry.d.ts.map +1 -0
  422. package/dist/node/app/files-entry.js +7 -0
  423. package/dist/node/app/files-entry.js.map +1 -0
  424. package/dist/node/app/files-index.d.ts +180 -0
  425. package/dist/node/app/files-index.d.ts.map +1 -0
  426. package/dist/node/app/files-index.js +535 -0
  427. package/dist/node/app/files-index.js.map +1 -0
  428. package/dist/node/app/files.d.ts +363 -0
  429. package/dist/node/app/files.d.ts.map +1 -0
  430. package/dist/node/app/files.js +368 -0
  431. package/dist/node/app/files.js.map +1 -0
  432. package/dist/node/app/folder-views.d.ts +21 -0
  433. package/dist/node/app/folder-views.d.ts.map +1 -0
  434. package/dist/node/app/folder-views.js +55 -0
  435. package/dist/node/app/folder-views.js.map +1 -0
  436. package/dist/node/app/index.d.ts +12 -0
  437. package/dist/node/app/index.d.ts.map +1 -0
  438. package/dist/node/app/index.js +15 -0
  439. package/dist/node/app/index.js.map +1 -0
  440. package/dist/node/app/info.d.ts +66 -0
  441. package/dist/node/app/info.d.ts.map +1 -0
  442. package/dist/node/app/info.js +37 -0
  443. package/dist/node/app/info.js.map +1 -0
  444. package/dist/node/app/invite.d.ts +5 -0
  445. package/dist/node/app/invite.d.ts.map +1 -0
  446. package/dist/node/app/invite.js +64 -0
  447. package/dist/node/app/invite.js.map +1 -0
  448. package/dist/node/app/layout.d.ts +36 -0
  449. package/dist/node/app/layout.d.ts.map +1 -0
  450. package/dist/node/app/layout.js +87 -0
  451. package/dist/node/app/layout.js.map +1 -0
  452. package/dist/node/app/owner.d.ts +31 -0
  453. package/dist/node/app/owner.d.ts.map +1 -0
  454. package/dist/node/app/owner.js +104 -0
  455. package/dist/node/app/owner.js.map +1 -0
  456. package/dist/node/app/pairing.d.ts +55 -0
  457. package/dist/node/app/pairing.d.ts.map +1 -0
  458. package/dist/node/app/pairing.js +183 -0
  459. package/dist/node/app/pairing.js.map +1 -0
  460. package/dist/node/app/secrets.d.ts +16 -0
  461. package/dist/node/app/secrets.d.ts.map +1 -0
  462. package/dist/node/app/secrets.js +72 -0
  463. package/dist/node/app/secrets.js.map +1 -0
  464. package/dist/node/app/sessions.d.ts +72 -0
  465. package/dist/node/app/sessions.d.ts.map +1 -0
  466. package/dist/node/app/sessions.js +222 -0
  467. package/dist/node/app/sessions.js.map +1 -0
  468. package/dist/node/app/tar.d.ts +24 -0
  469. package/dist/node/app/tar.d.ts.map +1 -0
  470. package/dist/node/app/tar.js +167 -0
  471. package/dist/node/app/tar.js.map +1 -0
  472. package/dist/node/app/uploads.d.ts +37 -0
  473. package/dist/node/app/uploads.d.ts.map +1 -0
  474. package/dist/node/app/uploads.js +157 -0
  475. package/dist/node/app/uploads.js.map +1 -0
  476. package/dist/node/app/users.d.ts +37 -0
  477. package/dist/node/app/users.d.ts.map +1 -0
  478. package/dist/node/app/users.js +62 -0
  479. package/dist/node/app/users.js.map +1 -0
  480. package/dist/node/app/worker.d.ts +18 -0
  481. package/dist/node/app/worker.d.ts.map +1 -0
  482. package/dist/node/app/worker.js +84 -0
  483. package/dist/node/app/worker.js.map +1 -0
  484. package/dist/node/compression.d.ts +7 -0
  485. package/dist/node/compression.d.ts.map +1 -0
  486. package/dist/node/compression.js +25 -0
  487. package/dist/node/compression.js.map +1 -0
  488. package/dist/node/http/admission.d.ts +63 -0
  489. package/dist/node/http/admission.d.ts.map +1 -0
  490. package/dist/node/http/admission.js +134 -0
  491. package/dist/node/http/admission.js.map +1 -0
  492. package/dist/node/http/authenticate.d.ts +21 -0
  493. package/dist/node/http/authenticate.d.ts.map +1 -0
  494. package/dist/node/http/authenticate.js +34 -0
  495. package/dist/node/http/authenticate.js.map +1 -0
  496. package/dist/node/http/cookies.d.ts +32 -0
  497. package/dist/node/http/cookies.d.ts.map +1 -0
  498. package/dist/node/http/cookies.js +70 -0
  499. package/dist/node/http/cookies.js.map +1 -0
  500. package/dist/node/http/file.d.ts +23 -0
  501. package/dist/node/http/file.d.ts.map +1 -0
  502. package/dist/node/http/file.js +94 -0
  503. package/dist/node/http/file.js.map +1 -0
  504. package/dist/node/http/headers.d.ts +37 -0
  505. package/dist/node/http/headers.d.ts.map +1 -0
  506. package/dist/node/http/headers.js +136 -0
  507. package/dist/node/http/headers.js.map +1 -0
  508. package/dist/node/http/http.d.ts +111 -0
  509. package/dist/node/http/http.d.ts.map +1 -0
  510. package/dist/node/http/http.js +524 -0
  511. package/dist/node/http/http.js.map +1 -0
  512. package/dist/node/http/incoming.d.ts +19 -0
  513. package/dist/node/http/incoming.d.ts.map +1 -0
  514. package/dist/node/http/incoming.js +31 -0
  515. package/dist/node/http/incoming.js.map +1 -0
  516. package/dist/node/http/index.d.ts +11 -0
  517. package/dist/node/http/index.d.ts.map +1 -0
  518. package/dist/node/http/index.js +12 -0
  519. package/dist/node/http/index.js.map +1 -0
  520. package/dist/node/http/node.d.ts +78 -0
  521. package/dist/node/http/node.d.ts.map +1 -0
  522. package/dist/node/http/node.js +291 -0
  523. package/dist/node/http/node.js.map +1 -0
  524. package/dist/node/http/request.d.ts +60 -0
  525. package/dist/node/http/request.d.ts.map +1 -0
  526. package/dist/node/http/request.js +118 -0
  527. package/dist/node/http/request.js.map +1 -0
  528. package/dist/node/http/response.d.ts +63 -0
  529. package/dist/node/http/response.d.ts.map +1 -0
  530. package/dist/node/http/response.js +202 -0
  531. package/dist/node/http/response.js.map +1 -0
  532. package/dist/node/http/router.d.ts +132 -0
  533. package/dist/node/http/router.d.ts.map +1 -0
  534. package/dist/node/http/router.js +267 -0
  535. package/dist/node/http/router.js.map +1 -0
  536. package/dist/node/http/upgrades.d.ts +61 -0
  537. package/dist/node/http/upgrades.d.ts.map +1 -0
  538. package/dist/node/http/upgrades.js +192 -0
  539. package/dist/node/http/upgrades.js.map +1 -0
  540. package/dist/node/plugins/base-inputs.d.ts +14 -0
  541. package/dist/node/plugins/base-inputs.d.ts.map +1 -0
  542. package/dist/node/plugins/base-inputs.js +33 -0
  543. package/dist/node/plugins/base-inputs.js.map +1 -0
  544. package/dist/node/plugins/build.d.ts +77 -0
  545. package/dist/node/plugins/build.d.ts.map +1 -0
  546. package/dist/node/plugins/build.js +576 -0
  547. package/dist/node/plugins/build.js.map +1 -0
  548. package/dist/node/plugins/css-modules.d.ts +13 -0
  549. package/dist/node/plugins/css-modules.d.ts.map +1 -0
  550. package/dist/node/plugins/css-modules.js +58 -0
  551. package/dist/node/plugins/css-modules.js.map +1 -0
  552. package/dist/node/plugins/discover.d.ts +67 -0
  553. package/dist/node/plugins/discover.d.ts.map +1 -0
  554. package/dist/node/plugins/discover.js +369 -0
  555. package/dist/node/plugins/discover.js.map +1 -0
  556. package/dist/node/plugins/evaluate.d.ts +33 -0
  557. package/dist/node/plugins/evaluate.d.ts.map +1 -0
  558. package/dist/node/plugins/evaluate.js +121 -0
  559. package/dist/node/plugins/evaluate.js.map +1 -0
  560. package/dist/node/plugins/index.d.ts +11 -0
  561. package/dist/node/plugins/index.d.ts.map +1 -0
  562. package/dist/node/plugins/index.js +13 -0
  563. package/dist/node/plugins/index.js.map +1 -0
  564. package/dist/node/plugins/install.d.ts +38 -0
  565. package/dist/node/plugins/install.d.ts.map +1 -0
  566. package/dist/node/plugins/install.js +213 -0
  567. package/dist/node/plugins/install.js.map +1 -0
  568. package/dist/node/plugins/plugins.d.ts +162 -0
  569. package/dist/node/plugins/plugins.d.ts.map +1 -0
  570. package/dist/node/plugins/plugins.js +244 -0
  571. package/dist/node/plugins/plugins.js.map +1 -0
  572. package/dist/node/plugins/runtime.d.ts +57 -0
  573. package/dist/node/plugins/runtime.d.ts.map +1 -0
  574. package/dist/node/plugins/runtime.js +92 -0
  575. package/dist/node/plugins/runtime.js.map +1 -0
  576. package/dist/node/plugins/stack.d.ts +16 -0
  577. package/dist/node/plugins/stack.d.ts.map +1 -0
  578. package/dist/node/plugins/stack.js +61 -0
  579. package/dist/node/plugins/stack.js.map +1 -0
  580. package/dist/node/plugins/testing.d.ts +58 -0
  581. package/dist/node/plugins/testing.d.ts.map +1 -0
  582. package/dist/node/plugins/testing.js +210 -0
  583. package/dist/node/plugins/testing.js.map +1 -0
  584. package/dist/node/plugins/watcher.d.ts +69 -0
  585. package/dist/node/plugins/watcher.d.ts.map +1 -0
  586. package/dist/node/plugins/watcher.js +622 -0
  587. package/dist/node/plugins/watcher.js.map +1 -0
  588. package/dist/node/surfaces/bundle.d.ts +31 -0
  589. package/dist/node/surfaces/bundle.d.ts.map +1 -0
  590. package/dist/node/surfaces/bundle.js +118 -0
  591. package/dist/node/surfaces/bundle.js.map +1 -0
  592. package/dist/node/surfaces/current.d.ts +17 -0
  593. package/dist/node/surfaces/current.d.ts.map +1 -0
  594. package/dist/node/surfaces/current.js +54 -0
  595. package/dist/node/surfaces/current.js.map +1 -0
  596. package/dist/node/surfaces/index.d.ts +6 -0
  597. package/dist/node/surfaces/index.d.ts.map +1 -0
  598. package/dist/node/surfaces/index.js +6 -0
  599. package/dist/node/surfaces/index.js.map +1 -0
  600. package/dist/node/surfaces/published.d.ts +27 -0
  601. package/dist/node/surfaces/published.d.ts.map +1 -0
  602. package/dist/node/surfaces/published.js +142 -0
  603. package/dist/node/surfaces/published.js.map +1 -0
  604. package/dist/node/surfaces/served.d.ts +15 -0
  605. package/dist/node/surfaces/served.d.ts.map +1 -0
  606. package/dist/node/surfaces/served.js +42 -0
  607. package/dist/node/surfaces/served.js.map +1 -0
  608. package/dist/node/surfaces/surface-build.d.ts +53 -0
  609. package/dist/node/surfaces/surface-build.d.ts.map +1 -0
  610. package/dist/node/surfaces/surface-build.js +105 -0
  611. package/dist/node/surfaces/surface-build.js.map +1 -0
  612. package/dist/node/surfaces/tui.d.ts +40 -0
  613. package/dist/node/surfaces/tui.d.ts.map +1 -0
  614. package/dist/node/surfaces/tui.js +55 -0
  615. package/dist/node/surfaces/tui.js.map +1 -0
  616. package/dist/node/surfaces/web.d.ts +56 -0
  617. package/dist/node/surfaces/web.d.ts.map +1 -0
  618. package/dist/node/surfaces/web.js +108 -0
  619. package/dist/node/surfaces/web.js.map +1 -0
  620. package/dist/node/tui/actions.d.ts +49 -0
  621. package/dist/node/tui/actions.d.ts.map +1 -0
  622. package/dist/node/tui/actions.js +195 -0
  623. package/dist/node/tui/actions.js.map +1 -0
  624. package/dist/node/tui/credentials.d.ts +17 -0
  625. package/dist/node/tui/credentials.d.ts.map +1 -0
  626. package/dist/node/tui/credentials.js +54 -0
  627. package/dist/node/tui/credentials.js.map +1 -0
  628. package/dist/node/tui/filter.d.ts +5 -0
  629. package/dist/node/tui/filter.d.ts.map +1 -0
  630. package/dist/node/tui/filter.js +79 -0
  631. package/dist/node/tui/filter.js.map +1 -0
  632. package/dist/node/tui/index.d.ts +6 -0
  633. package/dist/node/tui/index.d.ts.map +1 -0
  634. package/dist/node/tui/index.js +6 -0
  635. package/dist/node/tui/index.js.map +1 -0
  636. package/dist/node/tui/launcher.d.ts +40 -0
  637. package/dist/node/tui/launcher.d.ts.map +1 -0
  638. package/dist/node/tui/launcher.js +439 -0
  639. package/dist/node/tui/launcher.js.map +1 -0
  640. package/dist/node/tui/pipe.d.ts +18 -0
  641. package/dist/node/tui/pipe.d.ts.map +1 -0
  642. package/dist/node/tui/pipe.js +134 -0
  643. package/dist/node/tui/pipe.js.map +1 -0
  644. package/dist/node/tui/sandbox.d.ts +54 -0
  645. package/dist/node/tui/sandbox.d.ts.map +1 -0
  646. package/dist/node/tui/sandbox.js +431 -0
  647. package/dist/node/tui/sandbox.js.map +1 -0
  648. package/dist/node/workers/base.d.ts +30 -0
  649. package/dist/node/workers/base.d.ts.map +1 -0
  650. package/dist/node/workers/base.js +255 -0
  651. package/dist/node/workers/base.js.map +1 -0
  652. package/dist/node/workers/child.d.ts +4 -0
  653. package/dist/node/workers/child.d.ts.map +1 -0
  654. package/dist/node/workers/child.js +6 -0
  655. package/dist/node/workers/child.js.map +1 -0
  656. package/dist/node/workers/control.d.ts +83 -0
  657. package/dist/node/workers/control.d.ts.map +1 -0
  658. package/dist/node/workers/control.js +77 -0
  659. package/dist/node/workers/control.js.map +1 -0
  660. package/dist/node/workers/index.d.ts +4 -0
  661. package/dist/node/workers/index.d.ts.map +1 -0
  662. package/dist/node/workers/index.js +7 -0
  663. package/dist/node/workers/index.js.map +1 -0
  664. package/dist/node/workers/lock.d.ts +30 -0
  665. package/dist/node/workers/lock.d.ts.map +1 -0
  666. package/dist/node/workers/lock.js +180 -0
  667. package/dist/node/workers/lock.js.map +1 -0
  668. package/dist/node/workers/main.d.ts +46 -0
  669. package/dist/node/workers/main.d.ts.map +1 -0
  670. package/dist/node/workers/main.js +230 -0
  671. package/dist/node/workers/main.js.map +1 -0
  672. package/dist/node/workers/process.d.ts +42 -0
  673. package/dist/node/workers/process.d.ts.map +1 -0
  674. package/dist/node/workers/process.js +125 -0
  675. package/dist/node/workers/process.js.map +1 -0
  676. package/dist/node/workers/workers.d.ts +122 -0
  677. package/dist/node/workers/workers.d.ts.map +1 -0
  678. package/dist/node/workers/workers.js +677 -0
  679. package/dist/node/workers/workers.js.map +1 -0
  680. package/dist/output.d.ts +1 -1
  681. package/dist/output.d.ts.map +1 -1
  682. package/dist/output.js +4 -2
  683. package/dist/output.js.map +1 -1
  684. package/dist/react/hooks.d.ts +43 -0
  685. package/dist/react/hooks.d.ts.map +1 -0
  686. package/dist/react/hooks.js +82 -0
  687. package/dist/react/hooks.js.map +1 -0
  688. package/dist/react/index.d.ts +3 -0
  689. package/dist/react/index.d.ts.map +1 -0
  690. package/dist/react/index.js +4 -0
  691. package/dist/react/index.js.map +1 -0
  692. package/dist/react/stores.d.ts +9 -0
  693. package/dist/react/stores.d.ts.map +1 -0
  694. package/dist/react/stores.js +37 -0
  695. package/dist/react/stores.js.map +1 -0
  696. package/dist/registries/contribution.d.ts +50 -0
  697. package/dist/registries/contribution.d.ts.map +1 -0
  698. package/dist/registries/contribution.js +129 -0
  699. package/dist/registries/contribution.js.map +1 -0
  700. package/dist/registries/entries.d.ts +18 -0
  701. package/dist/registries/entries.d.ts.map +1 -0
  702. package/dist/registries/entries.js +42 -0
  703. package/dist/registries/entries.js.map +1 -0
  704. package/dist/registries/index.d.ts +3 -0
  705. package/dist/registries/index.d.ts.map +1 -0
  706. package/dist/registries/index.js +5 -0
  707. package/dist/registries/index.js.map +1 -0
  708. package/dist/registries/internal.d.ts +4 -0
  709. package/dist/registries/internal.d.ts.map +1 -0
  710. package/dist/registries/internal.js +5 -0
  711. package/dist/registries/internal.js.map +1 -0
  712. package/dist/registries/record.d.ts +115 -0
  713. package/dist/registries/record.d.ts.map +1 -0
  714. package/dist/registries/record.js +283 -0
  715. package/dist/registries/record.js.map +1 -0
  716. package/dist/registries/registry.d.ts +74 -0
  717. package/dist/registries/registry.d.ts.map +1 -0
  718. package/dist/registries/registry.js +14 -0
  719. package/dist/registries/registry.js.map +1 -0
  720. package/dist/registries/value.d.ts +48 -0
  721. package/dist/registries/value.d.ts.map +1 -0
  722. package/dist/registries/value.js +224 -0
  723. package/dist/registries/value.js.map +1 -0
  724. package/dist/remote/calls.d.ts +25 -0
  725. package/dist/remote/calls.d.ts.map +1 -0
  726. package/dist/remote/calls.js +62 -0
  727. package/dist/remote/calls.js.map +1 -0
  728. package/dist/remote/consumer.d.ts +43 -0
  729. package/dist/remote/consumer.d.ts.map +1 -0
  730. package/dist/remote/consumer.js +350 -0
  731. package/dist/remote/consumer.js.map +1 -0
  732. package/dist/remote/hold.d.ts +141 -0
  733. package/dist/remote/hold.d.ts.map +1 -0
  734. package/dist/remote/hold.js +579 -0
  735. package/dist/remote/hold.js.map +1 -0
  736. package/dist/remote/host-link.d.ts +77 -0
  737. package/dist/remote/host-link.d.ts.map +1 -0
  738. package/dist/remote/host-link.js +184 -0
  739. package/dist/remote/host-link.js.map +1 -0
  740. package/dist/remote/internal.d.ts +6 -0
  741. package/dist/remote/internal.d.ts.map +1 -0
  742. package/dist/remote/internal.js +6 -0
  743. package/dist/remote/internal.js.map +1 -0
  744. package/dist/remote/path.d.ts +46 -0
  745. package/dist/remote/path.d.ts.map +1 -0
  746. package/dist/remote/path.js +73 -0
  747. package/dist/remote/path.js.map +1 -0
  748. package/dist/remote/provider.d.ts +89 -0
  749. package/dist/remote/provider.d.ts.map +1 -0
  750. package/dist/remote/provider.js +597 -0
  751. package/dist/remote/provider.js.map +1 -0
  752. package/dist/remote/relay.d.ts +69 -0
  753. package/dist/remote/relay.d.ts.map +1 -0
  754. package/dist/remote/relay.js +219 -0
  755. package/dist/remote/relay.js.map +1 -0
  756. package/dist/remote/remote-object.d.ts +138 -0
  757. package/dist/remote/remote-object.d.ts.map +1 -0
  758. package/dist/remote/remote-object.js +492 -0
  759. package/dist/remote/remote-object.js.map +1 -0
  760. package/dist/remote/replica.d.ts +59 -0
  761. package/dist/remote/replica.d.ts.map +1 -0
  762. package/dist/remote/replica.js +125 -0
  763. package/dist/remote/replica.js.map +1 -0
  764. package/dist/sqlite/cloudflare.d.ts +2 -0
  765. package/dist/sqlite/cloudflare.d.ts.map +1 -1
  766. package/dist/sqlite/cloudflare.js +10 -0
  767. package/dist/sqlite/cloudflare.js.map +1 -1
  768. package/dist/sqlite/database.d.ts +5 -2
  769. package/dist/sqlite/database.d.ts.map +1 -1
  770. package/dist/sqlite/database.js.map +1 -1
  771. package/dist/sqlite/node.d.ts +13 -2
  772. package/dist/sqlite/node.d.ts.map +1 -1
  773. package/dist/sqlite/node.js +31 -8
  774. package/dist/sqlite/node.js.map +1 -1
  775. package/dist/state/batch.d.ts +64 -0
  776. package/dist/state/batch.d.ts.map +1 -0
  777. package/dist/state/batch.js +164 -0
  778. package/dist/state/batch.js.map +1 -0
  779. package/dist/state/derive.d.ts +52 -0
  780. package/dist/state/derive.d.ts.map +1 -0
  781. package/dist/state/derive.js +182 -0
  782. package/dist/state/derive.js.map +1 -0
  783. package/dist/state/index.d.ts +6 -0
  784. package/dist/state/index.d.ts.map +1 -0
  785. package/dist/state/index.js +4 -0
  786. package/dist/state/index.js.map +1 -0
  787. package/dist/state/internal.d.ts +6 -0
  788. package/dist/state/internal.d.ts.map +1 -0
  789. package/dist/state/internal.js +8 -0
  790. package/dist/state/internal.js.map +1 -0
  791. package/dist/state/native-source.d.ts +106 -0
  792. package/dist/state/native-source.d.ts.map +1 -0
  793. package/dist/state/native-source.js +240 -0
  794. package/dist/state/native-source.js.map +1 -0
  795. package/dist/state/watchable.d.ts +114 -0
  796. package/dist/state/watchable.d.ts.map +1 -0
  797. package/dist/state/watchable.js +156 -0
  798. package/dist/state/watchable.js.map +1 -0
  799. package/dist/state/writable.d.ts +32 -0
  800. package/dist/state/writable.d.ts.map +1 -0
  801. package/dist/state/writable.js +49 -0
  802. package/dist/state/writable.js.map +1 -0
  803. package/dist/store/adapter.d.ts +67 -0
  804. package/dist/store/adapter.d.ts.map +1 -0
  805. package/dist/store/adapter.js +118 -0
  806. package/dist/store/adapter.js.map +1 -0
  807. package/dist/store/allocator.d.ts +17 -0
  808. package/dist/store/allocator.d.ts.map +1 -0
  809. package/dist/store/allocator.js +30 -0
  810. package/dist/store/allocator.js.map +1 -0
  811. package/dist/store/applier.d.ts +8 -0
  812. package/dist/store/applier.d.ts.map +1 -0
  813. package/dist/store/applier.js +375 -0
  814. package/dist/store/applier.js.map +1 -0
  815. package/dist/store/apply-batch.d.ts +12 -0
  816. package/dist/store/apply-batch.d.ts.map +1 -0
  817. package/dist/store/apply-batch.js +83 -0
  818. package/dist/store/apply-batch.js.map +1 -0
  819. package/dist/store/archive.d.ts +32 -0
  820. package/dist/store/archive.d.ts.map +1 -0
  821. package/dist/store/archive.js +130 -0
  822. package/dist/store/archive.js.map +1 -0
  823. package/dist/store/backend.d.ts +10 -0
  824. package/dist/store/backend.d.ts.map +1 -0
  825. package/dist/store/backend.js +15 -0
  826. package/dist/store/backend.js.map +1 -0
  827. package/dist/store/catalog.d.ts +24 -0
  828. package/dist/store/catalog.d.ts.map +1 -0
  829. package/dist/store/catalog.js +17 -0
  830. package/dist/store/catalog.js.map +1 -0
  831. package/dist/store/claims.d.ts +23 -0
  832. package/dist/store/claims.d.ts.map +1 -0
  833. package/dist/store/claims.js +65 -0
  834. package/dist/store/claims.js.map +1 -0
  835. package/dist/store/columns.d.ts +77 -0
  836. package/dist/store/columns.d.ts.map +1 -0
  837. package/dist/store/columns.js +77 -0
  838. package/dist/store/columns.js.map +1 -0
  839. package/dist/store/engine.d.ts +176 -0
  840. package/dist/store/engine.d.ts.map +1 -0
  841. package/dist/store/engine.js +283 -0
  842. package/dist/store/engine.js.map +1 -0
  843. package/dist/store/evaluate.d.ts +17 -0
  844. package/dist/store/evaluate.d.ts.map +1 -0
  845. package/dist/store/evaluate.js +128 -0
  846. package/dist/store/evaluate.js.map +1 -0
  847. package/dist/store/export.d.ts +17 -0
  848. package/dist/store/export.d.ts.map +1 -0
  849. package/dist/store/export.js +200 -0
  850. package/dist/store/export.js.map +1 -0
  851. package/dist/store/expression.d.ts +150 -0
  852. package/dist/store/expression.d.ts.map +1 -0
  853. package/dist/store/expression.js +268 -0
  854. package/dist/store/expression.js.map +1 -0
  855. package/dist/store/import.d.ts +10 -0
  856. package/dist/store/import.d.ts.map +1 -0
  857. package/dist/store/import.js +276 -0
  858. package/dist/store/import.js.map +1 -0
  859. package/dist/store/index.d.ts +16 -0
  860. package/dist/store/index.d.ts.map +1 -0
  861. package/dist/store/index.js +13 -0
  862. package/dist/store/index.js.map +1 -0
  863. package/dist/store/json-column.d.ts +33 -0
  864. package/dist/store/json-column.d.ts.map +1 -0
  865. package/dist/store/json-column.js +62 -0
  866. package/dist/store/json-column.js.map +1 -0
  867. package/dist/store/jsonl.d.ts +9 -0
  868. package/dist/store/jsonl.d.ts.map +1 -0
  869. package/dist/store/jsonl.js +61 -0
  870. package/dist/store/jsonl.js.map +1 -0
  871. package/dist/store/live-query.d.ts +108 -0
  872. package/dist/store/live-query.d.ts.map +1 -0
  873. package/dist/store/live-query.js +254 -0
  874. package/dist/store/live-query.js.map +1 -0
  875. package/dist/store/outbox.d.ts +26 -0
  876. package/dist/store/outbox.d.ts.map +1 -0
  877. package/dist/store/outbox.js +80 -0
  878. package/dist/store/outbox.js.map +1 -0
  879. package/dist/store/query.d.ts +39 -0
  880. package/dist/store/query.d.ts.map +1 -0
  881. package/dist/store/query.js +97 -0
  882. package/dist/store/query.js.map +1 -0
  883. package/dist/store/refusal.d.ts +15 -0
  884. package/dist/store/refusal.d.ts.map +1 -0
  885. package/dist/store/refusal.js +36 -0
  886. package/dist/store/refusal.js.map +1 -0
  887. package/dist/store/rows.d.ts +80 -0
  888. package/dist/store/rows.d.ts.map +1 -0
  889. package/dist/store/rows.js +183 -0
  890. package/dist/store/rows.js.map +1 -0
  891. package/dist/store/schema.d.ts +25 -0
  892. package/dist/store/schema.d.ts.map +1 -0
  893. package/dist/store/schema.js +115 -0
  894. package/dist/store/schema.js.map +1 -0
  895. package/dist/store/sql.d.ts +73 -0
  896. package/dist/store/sql.d.ts.map +1 -0
  897. package/dist/store/sql.js +234 -0
  898. package/dist/store/sql.js.map +1 -0
  899. package/dist/store/step.d.ts +50 -0
  900. package/dist/store/step.d.ts.map +1 -0
  901. package/dist/store/step.js +52 -0
  902. package/dist/store/step.js.map +1 -0
  903. package/dist/store/store.d.ts +171 -0
  904. package/dist/store/store.d.ts.map +1 -0
  905. package/dist/store/store.js +818 -0
  906. package/dist/store/store.js.map +1 -0
  907. package/dist/store/table-changes.d.ts +29 -0
  908. package/dist/store/table-changes.d.ts.map +1 -0
  909. package/dist/store/table-changes.js +102 -0
  910. package/dist/store/table-changes.js.map +1 -0
  911. package/dist/store/table-evolve.d.ts +74 -0
  912. package/dist/store/table-evolve.d.ts.map +1 -0
  913. package/dist/store/table-evolve.js +201 -0
  914. package/dist/store/table-evolve.js.map +1 -0
  915. package/dist/store/table-handle.d.ts +73 -0
  916. package/dist/store/table-handle.d.ts.map +1 -0
  917. package/dist/store/table-handle.js +101 -0
  918. package/dist/store/table-handle.js.map +1 -0
  919. package/dist/store/table-history.d.ts +75 -0
  920. package/dist/store/table-history.d.ts.map +1 -0
  921. package/dist/store/table-history.js +42 -0
  922. package/dist/store/table-history.js.map +1 -0
  923. package/dist/store/table-migration.d.ts +16 -0
  924. package/dist/store/table-migration.d.ts.map +1 -0
  925. package/dist/store/table-migration.js +202 -0
  926. package/dist/store/table-migration.js.map +1 -0
  927. package/dist/store/table-writes.d.ts +125 -0
  928. package/dist/store/table-writes.d.ts.map +1 -0
  929. package/dist/store/table-writes.js +170 -0
  930. package/dist/store/table-writes.js.map +1 -0
  931. package/dist/store/table.d.ts +80 -0
  932. package/dist/store/table.d.ts.map +1 -0
  933. package/dist/store/table.js +103 -0
  934. package/dist/store/table.js.map +1 -0
  935. package/dist/store/text.d.ts +14 -0
  936. package/dist/store/text.d.ts.map +1 -0
  937. package/dist/store/text.js +51 -0
  938. package/dist/store/text.js.map +1 -0
  939. package/dist/store/writes.d.ts +5 -0
  940. package/dist/store/writes.d.ts.map +1 -0
  941. package/dist/store/writes.js +4 -0
  942. package/dist/store/writes.js.map +1 -0
  943. package/dist/surfaces/active-language.d.ts +20 -0
  944. package/dist/surfaces/active-language.d.ts.map +1 -0
  945. package/dist/surfaces/active-language.js +78 -0
  946. package/dist/surfaces/active-language.js.map +1 -0
  947. package/dist/surfaces/active-theme.d.ts +16 -0
  948. package/dist/surfaces/active-theme.d.ts.map +1 -0
  949. package/dist/surfaces/active-theme.js +47 -0
  950. package/dist/surfaces/active-theme.js.map +1 -0
  951. package/dist/surfaces/client.d.ts +96 -0
  952. package/dist/surfaces/client.d.ts.map +1 -0
  953. package/dist/surfaces/client.js +264 -0
  954. package/dist/surfaces/client.js.map +1 -0
  955. package/dist/surfaces/connection.d.ts +49 -0
  956. package/dist/surfaces/connection.d.ts.map +1 -0
  957. package/dist/surfaces/connection.js +142 -0
  958. package/dist/surfaces/connection.js.map +1 -0
  959. package/dist/surfaces/format.d.ts +5 -0
  960. package/dist/surfaces/format.d.ts.map +1 -0
  961. package/dist/surfaces/format.js +37 -0
  962. package/dist/surfaces/format.js.map +1 -0
  963. package/dist/surfaces/index.d.ts +15 -0
  964. package/dist/surfaces/index.d.ts.map +1 -0
  965. package/dist/surfaces/index.js +18 -0
  966. package/dist/surfaces/index.js.map +1 -0
  967. package/dist/surfaces/language.d.ts +53 -0
  968. package/dist/surfaces/language.d.ts.map +1 -0
  969. package/dist/surfaces/language.js +74 -0
  970. package/dist/surfaces/language.js.map +1 -0
  971. package/dist/surfaces/loaded.d.ts +42 -0
  972. package/dist/surfaces/loaded.d.ts.map +1 -0
  973. package/dist/surfaces/loaded.js +116 -0
  974. package/dist/surfaces/loaded.js.map +1 -0
  975. package/dist/surfaces/locale-choice.d.ts +25 -0
  976. package/dist/surfaces/locale-choice.d.ts.map +1 -0
  977. package/dist/surfaces/locale-choice.js +14 -0
  978. package/dist/surfaces/locale-choice.js.map +1 -0
  979. package/dist/surfaces/messages.d.ts +67 -0
  980. package/dist/surfaces/messages.d.ts.map +1 -0
  981. package/dist/surfaces/messages.js +112 -0
  982. package/dist/surfaces/messages.js.map +1 -0
  983. package/dist/surfaces/page-state.d.ts +14 -0
  984. package/dist/surfaces/page-state.d.ts.map +1 -0
  985. package/dist/surfaces/page-state.js +43 -0
  986. package/dist/surfaces/page-state.js.map +1 -0
  987. package/dist/surfaces/preference.d.ts +32 -0
  988. package/dist/surfaces/preference.d.ts.map +1 -0
  989. package/dist/surfaces/preference.js +72 -0
  990. package/dist/surfaces/preference.js.map +1 -0
  991. package/dist/surfaces/registered.d.ts +33 -0
  992. package/dist/surfaces/registered.d.ts.map +1 -0
  993. package/dist/surfaces/registered.js +51 -0
  994. package/dist/surfaces/registered.js.map +1 -0
  995. package/dist/surfaces/scripts.d.ts +84 -0
  996. package/dist/surfaces/scripts.d.ts.map +1 -0
  997. package/dist/surfaces/scripts.js +28 -0
  998. package/dist/surfaces/scripts.js.map +1 -0
  999. package/dist/surfaces/theme-choice.d.ts +31 -0
  1000. package/dist/surfaces/theme-choice.d.ts.map +1 -0
  1001. package/dist/surfaces/theme-choice.js +18 -0
  1002. package/dist/surfaces/theme-choice.js.map +1 -0
  1003. package/dist/surfaces/themes.d.ts +43 -0
  1004. package/dist/surfaces/themes.d.ts.map +1 -0
  1005. package/dist/surfaces/themes.js +110 -0
  1006. package/dist/surfaces/themes.js.map +1 -0
  1007. package/dist/surfaces/translations.d.ts +29 -0
  1008. package/dist/surfaces/translations.d.ts.map +1 -0
  1009. package/dist/surfaces/translations.js +57 -0
  1010. package/dist/surfaces/translations.js.map +1 -0
  1011. package/dist/sync/batch.d.ts +18 -0
  1012. package/dist/sync/batch.d.ts.map +1 -0
  1013. package/dist/sync/batch.js +125 -0
  1014. package/dist/sync/batch.js.map +1 -0
  1015. package/dist/sync/client.d.ts +166 -0
  1016. package/dist/sync/client.d.ts.map +1 -0
  1017. package/dist/sync/client.js +438 -0
  1018. package/dist/sync/client.js.map +1 -0
  1019. package/dist/sync/files.d.ts +46 -0
  1020. package/dist/sync/files.d.ts.map +1 -0
  1021. package/dist/sync/files.js +13 -0
  1022. package/dist/sync/files.js.map +1 -0
  1023. package/dist/sync/filesystem.d.ts +37 -0
  1024. package/dist/sync/filesystem.d.ts.map +1 -0
  1025. package/dist/sync/filesystem.js +185 -0
  1026. package/dist/sync/filesystem.js.map +1 -0
  1027. package/dist/sync/index.d.ts +8 -0
  1028. package/dist/sync/index.d.ts.map +1 -0
  1029. package/dist/sync/index.js +9 -0
  1030. package/dist/sync/index.js.map +1 -0
  1031. package/dist/sync/lines.d.ts +18 -0
  1032. package/dist/sync/lines.d.ts.map +1 -0
  1033. package/dist/sync/lines.js +46 -0
  1034. package/dist/sync/lines.js.map +1 -0
  1035. package/dist/sync/remote.d.ts +130 -0
  1036. package/dist/sync/remote.d.ts.map +1 -0
  1037. package/dist/sync/remote.js +46 -0
  1038. package/dist/sync/remote.js.map +1 -0
  1039. package/dist/sync/state.d.ts +17 -0
  1040. package/dist/sync/state.d.ts.map +1 -0
  1041. package/dist/sync/state.js +40 -0
  1042. package/dist/sync/state.js.map +1 -0
  1043. package/dist/telemetry-ingest/batch.d.ts +70 -0
  1044. package/dist/telemetry-ingest/batch.d.ts.map +1 -0
  1045. package/dist/telemetry-ingest/batch.js +110 -0
  1046. package/dist/telemetry-ingest/batch.js.map +1 -0
  1047. package/dist/telemetry-ingest/facet.d.ts +21 -0
  1048. package/dist/telemetry-ingest/facet.d.ts.map +1 -0
  1049. package/dist/telemetry-ingest/facet.js +96 -0
  1050. package/dist/telemetry-ingest/facet.js.map +1 -0
  1051. package/dist/telemetry-ingest/index.d.ts +5 -0
  1052. package/dist/telemetry-ingest/index.d.ts.map +1 -0
  1053. package/dist/telemetry-ingest/index.js +8 -0
  1054. package/dist/telemetry-ingest/index.js.map +1 -0
  1055. package/dist/telemetry-ingest/recorder.d.ts +50 -0
  1056. package/dist/telemetry-ingest/recorder.d.ts.map +1 -0
  1057. package/dist/telemetry-ingest/recorder.js +298 -0
  1058. package/dist/telemetry-ingest/recorder.js.map +1 -0
  1059. package/dist/telemetry-ingest/sender.d.ts +14 -0
  1060. package/dist/telemetry-ingest/sender.d.ts.map +1 -0
  1061. package/dist/telemetry-ingest/sender.js +64 -0
  1062. package/dist/telemetry-ingest/sender.js.map +1 -0
  1063. package/dist/telemetry-sqlite/index.d.ts +13 -4
  1064. package/dist/telemetry-sqlite/index.d.ts.map +1 -1
  1065. package/dist/telemetry-sqlite/index.js +81 -241
  1066. package/dist/telemetry-sqlite/index.js.map +1 -1
  1067. package/dist/telemetry-sqlite/node.d.ts +13 -0
  1068. package/dist/telemetry-sqlite/node.d.ts.map +1 -0
  1069. package/dist/telemetry-sqlite/node.js +27 -0
  1070. package/dist/telemetry-sqlite/node.js.map +1 -0
  1071. package/dist/telemetry-sqlite/schema.d.ts +9 -0
  1072. package/dist/telemetry-sqlite/schema.d.ts.map +1 -0
  1073. package/dist/telemetry-sqlite/schema.js +61 -0
  1074. package/dist/telemetry-sqlite/schema.js.map +1 -0
  1075. package/dist/telemetry-sqlite/store.d.ts +3 -0
  1076. package/dist/telemetry-sqlite/store.d.ts.map +1 -1
  1077. package/dist/telemetry-sqlite/store.js +24 -13
  1078. package/dist/telemetry-sqlite/store.js.map +1 -1
  1079. package/dist/telemetry.d.ts +937 -0
  1080. package/dist/telemetry.d.ts.map +1 -0
  1081. package/dist/telemetry.js +470 -0
  1082. package/dist/telemetry.js.map +1 -0
  1083. package/dist/tui/bridge.d.ts +112 -0
  1084. package/dist/tui/bridge.d.ts.map +1 -0
  1085. package/dist/tui/bridge.js +9 -0
  1086. package/dist/tui/bridge.js.map +1 -0
  1087. package/dist/tui/channel.d.ts +44 -0
  1088. package/dist/tui/channel.d.ts.map +1 -0
  1089. package/dist/tui/channel.js +150 -0
  1090. package/dist/tui/channel.js.map +1 -0
  1091. package/dist/tui/frames.d.ts +5 -0
  1092. package/dist/tui/frames.d.ts.map +1 -0
  1093. package/dist/tui/frames.js +52 -0
  1094. package/dist/tui/frames.js.map +1 -0
  1095. package/dist/tui/index.d.ts +7 -0
  1096. package/dist/tui/index.d.ts.map +1 -0
  1097. package/dist/tui/index.js +8 -0
  1098. package/dist/tui/index.js.map +1 -0
  1099. package/dist/tui/runtime.d.ts +46 -0
  1100. package/dist/tui/runtime.d.ts.map +1 -0
  1101. package/dist/tui/runtime.js +101 -0
  1102. package/dist/tui/runtime.js.map +1 -0
  1103. package/dist/tui/scope.d.ts +46 -0
  1104. package/dist/tui/scope.d.ts.map +1 -0
  1105. package/dist/tui/scope.js +141 -0
  1106. package/dist/tui/scope.js.map +1 -0
  1107. package/dist/tui/terminal.d.ts +15 -0
  1108. package/dist/tui/terminal.d.ts.map +1 -0
  1109. package/dist/tui/terminal.js +37 -0
  1110. package/dist/tui/terminal.js.map +1 -0
  1111. package/dist/tui/theme.d.ts +17 -0
  1112. package/dist/tui/theme.d.ts.map +1 -0
  1113. package/dist/tui/theme.js +38 -0
  1114. package/dist/tui/theme.js.map +1 -0
  1115. package/dist/watch.d.ts +194 -0
  1116. package/dist/watch.d.ts.map +1 -0
  1117. package/dist/watch.js +383 -0
  1118. package/dist/watch.js.map +1 -0
  1119. package/dist/web/environment.d.ts +4 -0
  1120. package/dist/web/environment.d.ts.map +1 -0
  1121. package/dist/web/environment.js +37 -0
  1122. package/dist/web/environment.js.map +1 -0
  1123. package/dist/web/index.d.ts +5 -0
  1124. package/dist/web/index.d.ts.map +1 -0
  1125. package/dist/web/index.js +7 -0
  1126. package/dist/web/index.js.map +1 -0
  1127. package/dist/web/language.d.ts +7 -0
  1128. package/dist/web/language.d.ts.map +1 -0
  1129. package/dist/web/language.js +21 -0
  1130. package/dist/web/language.js.map +1 -0
  1131. package/dist/web/page.d.ts +29 -0
  1132. package/dist/web/page.d.ts.map +1 -0
  1133. package/dist/web/page.js +92 -0
  1134. package/dist/web/page.js.map +1 -0
  1135. package/dist/web/scripts.d.ts +23 -0
  1136. package/dist/web/scripts.d.ts.map +1 -0
  1137. package/dist/web/scripts.js +50 -0
  1138. package/dist/web/scripts.js.map +1 -0
  1139. package/dist/web/styles.d.ts +17 -0
  1140. package/dist/web/styles.d.ts.map +1 -0
  1141. package/dist/web/styles.js +218 -0
  1142. package/dist/web/styles.js.map +1 -0
  1143. package/dist/web/themes.d.ts +6 -0
  1144. package/dist/web/themes.d.ts.map +1 -0
  1145. package/dist/web/themes.js +31 -0
  1146. package/dist/web/themes.js.map +1 -0
  1147. package/docs/benchmarks.md +1036 -0
  1148. package/docs/decisions.md +3436 -0
  1149. package/docs/dependencies/book.md +1671 -0
  1150. package/docs/dependencies/index.html +2641 -0
  1151. package/docs/dependencies/model.md +330 -0
  1152. package/docs/design.md +3065 -0
  1153. package/docs/durable-observers/book.md +432 -0
  1154. package/docs/durable-observers/index.html +517 -0
  1155. package/docs/flow-control/book.md +333 -0
  1156. package/docs/flow-control/fold/index.html +265 -0
  1157. package/docs/flow-control/index.html +548 -0
  1158. package/docs/flow-control/window/index.html +228 -0
  1159. package/docs/guide-plugins-hosts/book.md +957 -0
  1160. package/docs/guide-plugins-hosts/index.html +952 -0
  1161. package/docs/http-workers/book.md +378 -0
  1162. package/docs/http-workers/index.html +515 -0
  1163. package/docs/i18n/book.md +217 -0
  1164. package/docs/i18n/index.html +344 -0
  1165. package/docs/layer-1.md +311 -0
  1166. package/docs/layer-2.md +216 -0
  1167. package/docs/p3-features/README.md +6 -0
  1168. package/docs/p3-features/book.md +478 -0
  1169. package/docs/plugin-authoring.md +276 -0
  1170. package/docs/plugin-model/book.md +186 -0
  1171. package/docs/plugin-model/index.html +310 -0
  1172. package/docs/plugin-primer/book.md +273 -0
  1173. package/docs/plugin-primer/index.html +430 -0
  1174. package/docs/slice-1.md +236 -0
  1175. package/docs/slice-10.md +288 -0
  1176. package/docs/slice-11.md +114 -0
  1177. package/docs/slice-12.md +132 -0
  1178. package/docs/slice-13.md +121 -0
  1179. package/docs/slice-2.md +174 -0
  1180. package/docs/slice-3a.md +296 -0
  1181. package/docs/slice-3b.md +197 -0
  1182. package/docs/slice-4.md +146 -0
  1183. package/docs/slice-4a.md +418 -0
  1184. package/docs/slice-4b.md +208 -0
  1185. package/docs/slice-5.md +281 -0
  1186. package/docs/slice-6a.md +676 -0
  1187. package/docs/slice-6b.md +332 -0
  1188. package/docs/slice-7a.md +130 -0
  1189. package/docs/slice-7b/book.md +608 -0
  1190. package/docs/slice-7b/index.html +842 -0
  1191. package/docs/slice-7b.md +255 -0
  1192. package/docs/slice-7c.md +165 -0
  1193. package/docs/slice-8.md +194 -0
  1194. package/docs/slice-9.md +110 -0
  1195. package/docs/slices.md +241 -0
  1196. package/docs/store/book.md +670 -0
  1197. package/docs/store/index.html +861 -0
  1198. package/docs/store/walkthrough.md +193 -0
  1199. package/docs/theming/book.md +223 -0
  1200. package/docs/theming/index.html +371 -0
  1201. package/docs/tutorial/book.md +2169 -0
  1202. package/docs/tutorial/index.html +2112 -0
  1203. package/docs/tutorial/screens/click-after.png +0 -0
  1204. package/docs/tutorial/screens/click-before.png +0 -0
  1205. package/docs/tutorial/screens/edited.png +0 -0
  1206. package/docs/tutorial/screens/french.png +0 -0
  1207. package/docs/tutorial/screens/harbor.png +0 -0
  1208. package/docs/tutorial/screens/page.png +0 -0
  1209. package/docs/tutorial/screens/traces-ada.png +0 -0
  1210. package/docs/tutorial/screens/traces.png +0 -0
  1211. package/package.json +114 -20
  1212. package/src/delta/README.md +69 -0
  1213. package/dist/cell.d.ts +0 -122
  1214. package/dist/cell.d.ts.map +0 -1
  1215. package/dist/cell.js +0 -356
  1216. package/dist/cell.js.map +0 -1
  1217. package/dist/cluster.d.ts +0 -27
  1218. package/dist/cluster.d.ts.map +0 -1
  1219. package/dist/cluster.js +0 -230
  1220. package/dist/cluster.js.map +0 -1
  1221. package/dist/connection.d.ts +0 -270
  1222. package/dist/connection.d.ts.map +0 -1
  1223. package/dist/connection.js +0 -1216
  1224. package/dist/connection.js.map +0 -1
  1225. package/dist/contract.d.ts +0 -208
  1226. package/dist/contract.d.ts.map +0 -1
  1227. package/dist/contract.js +0 -246
  1228. package/dist/contract.js.map +0 -1
  1229. package/dist/declare.d.ts +0 -33
  1230. package/dist/declare.d.ts.map +0 -1
  1231. package/dist/declare.js +0 -2
  1232. package/dist/declare.js.map +0 -1
  1233. package/dist/errors.d.ts +0 -28
  1234. package/dist/errors.d.ts.map +0 -1
  1235. package/dist/errors.js +0 -59
  1236. package/dist/errors.js.map +0 -1
  1237. package/dist/host.d.ts +0 -348
  1238. package/dist/host.d.ts.map +0 -1
  1239. package/dist/host.js +0 -1000
  1240. package/dist/host.js.map +0 -1
  1241. package/dist/link.d.ts +0 -107
  1242. package/dist/link.d.ts.map +0 -1
  1243. package/dist/link.js +0 -355
  1244. package/dist/link.js.map +0 -1
  1245. package/dist/loader.d.ts +0 -4
  1246. package/dist/loader.d.ts.map +0 -1
  1247. package/dist/loader.js +0 -73
  1248. package/dist/loader.js.map +0 -1
  1249. package/dist/manager.d.ts +0 -115
  1250. package/dist/manager.d.ts.map +0 -1
  1251. package/dist/manager.js +0 -345
  1252. package/dist/manager.js.map +0 -1
  1253. package/dist/node.d.ts +0 -4
  1254. package/dist/node.d.ts.map +0 -1
  1255. package/dist/node.js +0 -4
  1256. package/dist/node.js.map +0 -1
  1257. package/dist/object.d.ts +0 -438
  1258. package/dist/object.d.ts.map +0 -1
  1259. package/dist/object.js +0 -1571
  1260. package/dist/object.js.map +0 -1
  1261. package/dist/publish.d.ts +0 -5
  1262. package/dist/publish.d.ts.map +0 -1
  1263. package/dist/publish.js +0 -40
  1264. package/dist/publish.js.map +0 -1
  1265. package/dist/registry.d.ts +0 -25
  1266. package/dist/registry.d.ts.map +0 -1
  1267. package/dist/registry.js +0 -6
  1268. package/dist/registry.js.map +0 -1
  1269. package/dist/reload.d.ts +0 -126
  1270. package/dist/reload.d.ts.map +0 -1
  1271. package/dist/reload.js +0 -653
  1272. package/dist/reload.js.map +0 -1
  1273. package/dist/remote.d.ts +0 -165
  1274. package/dist/remote.d.ts.map +0 -1
  1275. package/dist/remote.js +0 -612
  1276. package/dist/remote.js.map +0 -1
  1277. package/dist/schema.d.ts +0 -21
  1278. package/dist/schema.d.ts.map +0 -1
  1279. package/dist/schema.js +0 -228
  1280. package/dist/schema.js.map +0 -1
  1281. package/dist/state.d.ts +0 -92
  1282. package/dist/state.d.ts.map +0 -1
  1283. package/dist/state.js +0 -287
  1284. package/dist/state.js.map +0 -1
  1285. package/dist/types.d.ts +0 -88
  1286. package/dist/types.d.ts.map +0 -1
  1287. package/dist/types.js +0 -2
  1288. package/dist/types.js.map +0 -1
  1289. package/dist/websocket.d.ts +0 -15
  1290. package/dist/websocket.d.ts.map +0 -1
  1291. package/dist/websocket.js +0 -16
  1292. package/dist/websocket.js.map +0 -1
  1293. package/dist/wire.d.ts +0 -216
  1294. package/dist/wire.d.ts.map +0 -1
  1295. package/dist/wire.js +0 -165
  1296. package/dist/wire.js.map +0 -1
  1297. package/docs/guide.md +0 -814
  1298. package/docs/spec.md +0 -288
  1299. package/docs/tutorial.md +0 -931
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/remote/provider.ts"],"names":[],"mappings":"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","sourcesContent":["// The provider side of one origin on a link (§3, §22, W1; decision \"Relay flow control per origin\"): the holds the\n// peer sent for that origin, served here or relayed, by their ids; the calls on them, at most this side's N at once;\n// and the window: at most K unacknowledged `bound` and `state` messages of this host's own, with what waits meanwhile\n// (a call's answer sends the waiting state first, past the window), and the sender of every message in flight, so each\n// `ack` reaches the host that sent its message. A served call's method runs under the call's carrier (slice 9).\n\nimport type { TelemetryContext } from \"@earendil-works/pi-telemetry\";\nimport { type Context, withAbortSignal } from \"../context/index.ts\";\nimport { ChordError, isChordError, type Principal } from \"../data/index.ts\";\nimport { asRemoteOldWork, type Caller } from \"../host/internal.ts\";\nimport {\n\ttype BoundEntry,\n\ttype ConsumerMessage,\n\tDeflatedPart,\n\ttype Message,\n\ttype OriginMessage,\n\toversized,\n\ttype ProviderMessage,\n\tparsePayload,\n\tpayloadPart,\n\ttype StateEntry,\n\twireError,\n} from \"../link/internal.ts\";\nimport { type OpenSpan, parentOf } from \"../telemetry.ts\";\nimport { Hold } from \"./hold.ts\";\nimport type { HostLink } from \"./host-link.ts\";\nimport { type RelayedHold, relayEnded } from \"./relay.ts\";\n\n/**\n * A call being handled: on a hold served here, with whether its result carries byte segments and the abort of its\n * handler's context; or relayed, its reply forwarded from upstream.\n */\ntype RunningCall =\n\t| { readonly kind: \"served\"; readonly hold: Hold; readonly bytes: boolean; readonly abort: AbortController }\n\t/** `span`: its `chord.relay` span while its reply is awaited, when this host records. */\n\t| { readonly kind: \"relayed\"; readonly hold: RelayedHold; span?: OpenSpan<\"chord.relay\"> };\n\n/** Who sent a `bound` or `state` message in flight: this host, or the upstream link a relay forwarded it from. */\ntype Sender = \"local\" | HostLink;\n\n/** A relaying origin: its number on upstream links, and the open upstream links it relayed holds to. */\ntype Relay = { readonly origin: number; readonly links: Set<HostLink> };\n\n/**\n * At most this many of this host's own `bound` and `state` messages unacknowledged per origin; past it only the waiting\n * state a call's answer sends first.\n */\nconst WINDOW = 2;\n\n/**\n * The provider side of one origin on a link. Ids are the origin's; a message naming an id this side does not know is\n * ignored (Q1), one reusing a live id is a protocol error, and so are more concurrent calls than this side announced.\n * This host's own `bound` and `state` messages go through the window: locally served holds wait while it is full\n * (their ops in their members' pending queues, their bindings for the next slot); a call's answer, its own or a\n * relayed one, sends the waiting state first. A relay forwards upstream messages at once (each upstream host keeps its\n * own window for the origin it sees), so a slow consumer stalls only its origin.\n */\nexport class ProviderSide {\n\treadonly link: HostLink;\n\t/** Whose work this side serves: 0 for the peer's own, a relay's number for one of its downstream links. */\n\treadonly origin: number;\n\treadonly #calls = new Map<number, RunningCall>();\n\treadonly #entries = new Map<number, Hold | RelayedHold>();\n\treadonly #limit: number;\n\t/** The sender of each `bound` and `state` message in flight, in order: the consumer acknowledges in order. */\n\treadonly #sent: Sender[] = [];\n\t/** This host's own messages in flight. */\n\t#inFlight = 0;\n\t/** How many of this host's own `bound` and `state` messages it sent, and how many its consumer acknowledged. */\n\t#ownSent = 0;\n\t#ownAcked = 0;\n\t/** The holds the current batch touched, in order; its flush sends or queues them. */\n\t#touched: Hold[] = [];\n\t/** Holds whose ops wait in their pending queues for a slot. */\n\treadonly #waiting = new Set<Hold>();\n\t/** Holds waiting for a slot to send their first binding. */\n\treadonly #binding = new Set<Hold>();\n\t/** The waiting bindings take the next slot: the last one went to waiting state while they waited. */\n\t#bindingTurn = false;\n\t/** Set once a hold of this origin is relayed. */\n\t#relay: Relay | undefined;\n\t/** When state began waiting for a slot (`performance.now()`), while some waits: `chord.backpressure.wait`. */\n\t#waitingSince: number | undefined;\n\n\tconstructor(link: HostLink, origin: number, limit: number) {\n\t\tthis.link = link;\n\t\tthis.origin = origin;\n\t\tthis.#limit = limit;\n\t}\n\n\t/** Handles one message of this origin; a call whose arguments wait for an asynchronous inflate returns its promise. */\n\tmessage(message: ProviderMessage): void | Promise<void> {\n\t\tswitch (message.kind) {\n\t\t\tcase \"hold\":\n\t\t\t\tthis.#hold(message);\n\t\t\t\tbreak;\n\t\t\tcase \"release\":\n\t\t\t\tthis.#release(message.hold);\n\t\t\t\tthis.#settle();\n\t\t\t\tbreak;\n\t\t\tcase \"call\":\n\t\t\t\treturn this.#call(message);\n\t\t\tcase \"abort\":\n\t\t\t\tthis.#abort(message.call);\n\t\t\t\tthis.#settle();\n\t\t\t\tbreak;\n\t\t\tcase \"retry\":\n\t\t\t\tthis.#entries.get(message.hold)?.retry(message);\n\t\t\t\tbreak;\n\t\t\tcase \"ack\":\n\t\t\t\tthis.#ack();\n\t\t\t\tthis.#settle();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * The link closed, or the origin did (`closed`): every hold is released (relayed ones by one `closed` to each\n\t * upstream link) and every call aborted.\n\t */\n\tclosed(): void {\n\t\tconst closing = this.link.host.closing;\n\t\tconst entries = [...this.#entries.values()];\n\t\tthis.#entries.clear();\n\t\tconst closed = new ChordError({ code: \"unavailable\", message: \"the link closed\" });\n\t\tfor (const call of this.#calls.values()) {\n\t\t\tif (call.kind === \"served\") call.abort.abort(closed);\n\t\t\telse if (call.span !== undefined) relayEnded(call.span, undefined);\n\t\t}\n\t\tthis.#calls.clear();\n\t\t// While the host closes, it ends its objects itself.\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.kind === \"served\" && !closing) entry.release();\n\t\t\telse entry.drop();\n\t\t}\n\t\t// A batch flushing later finds nothing of this side.\n\t\tthis.#touched = [];\n\t\tconst relay = this.#relay;\n\t\tif (relay === undefined) return;\n\t\tthis.link.host.relays.delete(relay.origin);\n\t\tfor (const link of relay.links) link.send({ kind: \"closed\", origin: relay.origin });\n\t}\n\n\t/** Sends `message` on the link with this origin. */\n\tsend(message: OriginMessage): void {\n\t\tthis.link.send(this.origin === 0 ? message : { ...message, origin: this.origin });\n\t}\n\n\t/**\n\t * Ends with `error` every hold of this origin that acts for a principal `revoked` names and holds nothing: served\n\t * here but unbound (before the publication, refused), or relayed and waiting for its route's link.\n\t */\n\trevokeUnbound(revoked: (principal: Principal) => boolean, error: ChordError): void {\n\t\tfor (const hold of [...this.#entries.values()]) {\n\t\t\t// A hold arriving on a link acts for a principal: the link's, or one its parent named.\n\t\t\tif (!revoked(hold.caller.principal!)) continue;\n\t\t\tif (hold.kind === \"served\" && hold.unbound) hold.end(error);\n\t\t\telse if (hold.kind === \"relayed\" && hold.waiting) hold.revoked(error);\n\t\t}\n\t}\n\n\t/** A pending hold turned out to be relayed: it takes the hold's place in the table. */\n\trelayed(hold: RelayedHold): void {\n\t\tthis.#entries.set(hold.id, hold);\n\t}\n\n\t/** This origin's number on upstream links (one per host, never reused), with `link` as one it relays to. */\n\trelayTo(link: HostLink): number {\n\t\tlet relay = this.#relay;\n\t\tif (relay === undefined) {\n\t\t\trelay = { origin: this.link.host.relayOrigin(this), links: new Set() };\n\t\t\tthis.#relay = relay;\n\t\t}\n\t\trelay.links.add(link);\n\t\treturn relay.origin;\n\t}\n\n\t/**\n\t * A message from upstream link `from` for this origin's relayed holds, forwarded with this origin: `bound` and\n\t * `state` join the window's senders (their `ack` goes back to `from`), a reply ends its call (after this host's own\n\t * waiting state: `reply`), `gone` forgets its hold. A link answers only for what was relayed over it: an entry, a\n\t * notice or a reply naming a hold (or a call) this origin did not relay over `from` is dropped (Q1); a `bound` or\n\t * `state` left without entries is acknowledged to `from` at once. Parts travel unchecked and unparsed: the end that\n\t * parses a part checks it against its own link's limits.\n\t */\n\tforward(message: ConsumerMessage, from: HostLink): void {\n\t\tconst relay = this.#relay;\n\t\tif (relay === undefined || !relay.links.has(from)) return;\n\t\tconst { origin: _, ...forwarded } = message;\n\t\tswitch (forwarded.kind) {\n\t\t\tcase \"bound\":\n\t\t\tcase \"state\": {\n\t\t\t\tconst holds = this.#relayedOver<BoundEntry | StateEntry>(forwarded.holds, from);\n\t\t\t\tif (holds.length === 0) {\n\t\t\t\t\tfrom.send({ kind: \"ack\", origin: relay.origin });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#sent.push(from);\n\t\t\t\t// The entries of the message's own kind.\n\t\t\t\tthis.send(holds === forwarded.holds ? forwarded : ({ ...forwarded, holds } as typeof forwarded));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"result\":\n\t\t\tcase \"error\": {\n\t\t\t\tconst call = this.#calls.get(forwarded.call);\n\t\t\t\tif (call?.kind === \"relayed\" && call.hold.heldOn(from)) this.reply(forwarded.call, forwarded);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"gone\": {\n\t\t\t\tconst hold = this.#relayedHold(forwarded.hold, from);\n\t\t\t\tif (hold === undefined) return;\n\t\t\t\thold.lost();\n\t\t\t\tthis.send(forwarded);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif (this.#relayedHold(forwarded.hold, from) !== undefined) this.send(forwarded);\n\t\t}\n\t}\n\n\t/** An upstream link closed: nothing more is relayed to it, nor accepted from it. */\n\tunlinked(link: HostLink): void {\n\t\tthis.#relay?.links.delete(link);\n\t}\n\n\t/**\n\t * The upstream link of relayed hold `hold` dropped with `error`: its calls in flight fail, the hold goes loading\n\t * downstream, and its path's next link holds it again.\n\t */\n\tupstreamDropped(hold: RelayedHold, error: ChordError): void {\n\t\tfor (const [id, call] of this.#calls) {\n\t\t\tif (call.hold === hold) this.reply(id, { kind: \"error\", call: id, error: wireError(error) });\n\t\t}\n\t\tthis.send({ kind: \"loading\", hold: hold.id });\n\t}\n\n\t/**\n\t * Forgets a hold (released, refused or gone) and every call on it; local calls are aborted with `error` (its\n\t * object's end for a gone hold, `released` otherwise).\n\t */\n\tforget(hold: Hold | RelayedHold, error?: ChordError): void {\n\t\tif (this.#entries.get(hold.id) === hold) this.#entries.delete(hold.id);\n\t\tconst reason = error ?? new ChordError({ code: \"released\", message: `hold ${hold.id}: released` });\n\t\tfor (const [id, call] of this.#calls) {\n\t\t\tif (call.hold !== hold) continue;\n\t\t\tthis.#calls.delete(id);\n\t\t\tif (call.kind === \"served\") call.abort.abort(reason);\n\t\t\telse if (call.span !== undefined) relayEnded(call.span, undefined);\n\t\t}\n\t\tif (hold.kind === \"served\") this.unbind(hold);\n\t\tthis.#settle();\n\t}\n\n\t/**\n\t * A call ended with `reply` (a result or an error, its own or forwarded from upstream): its slot is free; nothing is\n\t * sent for one already gone. The state waiting for a slot goes first, past the window if it is full (decision \"A\n\t * call's answer follows its state\"): when the call settles at the consumer, every change this host committed before\n\t * answering is applied there.\n\t */\n\treply(id: number, reply: Extract<OriginMessage, { readonly kind: \"result\" | \"error\" }>): void {\n\t\tconst call = this.#calls.get(id);\n\t\tif (call === undefined) return;\n\t\tthis.#calls.delete(id);\n\t\t// At most one extra message per answer, acknowledged before the call its answer frees a slot for (one direction keeps\n\t\t// its order): running calls and messages past the window stay within this side's N together.\n\t\tif (this.#waiting.size > 0) this.#sendWaiting(this.link.context);\n\t\tthis.send(reply);\n\t\tif (call.kind === \"relayed\" && call.span !== undefined) relayEnded(call.span, reply);\n\t\tthis.#settle();\n\t}\n\n\t/**\n\t * Drops this side from its link once it holds nothing: no holds, no calls, nothing in flight. Its origin's next hold\n\t * makes a new one (origins are never reused), so a long-lived link keeps records only for live work.\n\t */\n\t#settle(): void {\n\t\tif (this.#entries.size === 0 && this.#calls.size === 0 && this.#sent.length === 0) this.link.drop(this);\n\t}\n\n\t/** A hold's object is live: its `bound` goes now when a slot is free, else with the next free slot's bindings. */\n\tbind(hold: Hold, context: Context): void {\n\t\tif (this.#free) {\n\t\t\tthis.#sendOwn({ kind: \"bound\", holds: [hold.boundEntry(context)] });\n\t\t} else {\n\t\t\tthis.#binding.add(hold);\n\t\t}\n\t}\n\n\t/** A hold stopped waiting for a slot: it was forgotten. */\n\tunbind(hold: Hold): void {\n\t\tthis.#waiting.delete(hold);\n\t\tthis.#binding.delete(hold);\n\t\t// Nothing waits any more: no wait to record.\n\t\tif (this.#waiting.size === 0) this.#waitingSince = undefined;\n\t}\n\n\t/**\n\t * A served hold left its object's binding with `error` (a failure, a removal or a version no longer bound; slice 7b\n\t * §6, model §5): as `unbind`, and its calls in flight rejected with `error` (each slot freed once). A hold unbinding\n\t * with `loading` keeps them (`unbind` alone).\n\t */\n\tunbound(hold: Hold, error: ChordError): void {\n\t\tthis.unbind(hold);\n\t\tfor (const [id, call] of this.#calls) {\n\t\t\tif (call.hold !== hold) continue;\n\t\t\tif (call.kind === \"served\") call.abort.abort(error);\n\t\t\tthis.reply(id, { kind: \"error\", call: id, error: wireError(error) });\n\t\t}\n\t}\n\n\t/** A hold's members changed in the current batch; its flush sends or queues it. */\n\ttouched(hold: Hold): void {\n\t\tif (this.#touched.length === 0) this.link.host.batch.flushing((context) => this.#flush(context));\n\t\tthis.#touched.push(hold);\n\t}\n\n\t/**\n\t * `entries` whose holds this origin relayed over `from`, in one pass: the same array when all are, else a copy made\n\t * at the first one that is not.\n\t */\n\t#relayedOver<E extends { readonly hold: number }>(entries: readonly E[], from: HostLink): readonly E[] {\n\t\tlet kept: E[] | undefined;\n\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\tconst entry = entries[i]!;\n\t\t\tconst relayed = this.#relayedHold(entry.hold, from) !== undefined;\n\t\t\tif (kept !== undefined) {\n\t\t\t\tif (relayed) kept.push(entry);\n\t\t\t} else if (!relayed) {\n\t\t\t\tkept = entries.slice(0, i);\n\t\t\t}\n\t\t}\n\t\treturn kept ?? entries;\n\t}\n\n\t/** The hold `id` of this origin when it is relayed over `from`. */\n\t#relayedHold(id: number, from: HostLink): RelayedHold | undefined {\n\t\tconst hold = this.#entries.get(id);\n\t\treturn hold?.kind === \"relayed\" && hold.heldOn(from) ? hold : undefined;\n\t}\n\n\t/**\n\t * A hold message: a protocol error for a live id or compressed params (params are never compressed), otherwise\n\t * admitted (`Hold.start`, placed once the host published). Its activation chain is kept only from a trusted link (Q5); its\n\t * decoded limit is the link's, or the smaller one a parent stamped (Q2), and travels with it when it is relayed.\n\t */\n\t#hold(message: Extract<Message, { readonly kind: \"hold\" }>): void {\n\t\tif (this.#entries.has(message.hold)) throw new Error(`hold ${message.hold}: the id is in use`);\n\t\tif (message.params instanceof DeflatedPart) throw new Error(`hold ${message.hold}: compressed params`);\n\t\t// Whom it acts for is decided here once (`#caller`), never passed on: a relay names it only on a route link.\n\t\tconst {\n\t\t\tkind: _kind,\n\t\t\torigin: _origin,\n\t\t\thold: id,\n\t\t\tprincipal: _principal,\n\t\t\tincarnation: _incarnation,\n\t\t\tchain,\n\t\t\tlimit: stamped,\n\t\t\t...fields\n\t\t} = message;\n\t\tconst { link } = this;\n\t\tconst limit = Math.min(link.limits.decoded, (link.role === \"parent\" ? stamped : undefined) ?? Infinity);\n\t\tconst request = {\n\t\t\t...fields,\n\t\t\t...(chain !== undefined && link.trusted ? { chain } : {}),\n\t\t\t...(limit === Infinity ? {} : { limit }),\n\t\t};\n\t\tconst limits = limit === link.limits.decoded ? link.limits : { part: link.limits.part, decoded: limit };\n\t\tconst hold = new Hold(id, this, this.#caller(message), limits);\n\t\tthis.#entries.set(id, hold);\n\t\thold.start(request);\n\t}\n\n\t/**\n\t * Whom a hold acts for: on a parent link the hold's own principal and incarnation when it names them, everywhere\n\t * else the link's principal and the peer's incarnation (a child cannot claim to be someone else).\n\t */\n\t#caller(message: Extract<Message, { readonly kind: \"hold\" }>): Caller {\n\t\tconst { link } = this;\n\t\tif (link.role !== \"parent\") return { principal: link.principal, incarnation: link.peer };\n\t\t// The message schema checked a principal's shape on an untrusted link; a trusted parent is believed.\n\t\tconst principal = (message.principal as Caller[\"principal\"]) ?? link.principal;\n\t\treturn { principal, incarnation: message.incarnation ?? link.peer };\n\t}\n\n\t#release(id: number): void {\n\t\tconst hold = this.#entries.get(id);\n\t\tif (hold === undefined) return;\n\t\tthis.forget(hold);\n\t\thold.release();\n\t}\n\n\t/**\n\t * A call: one on a hold this side does not know is ignored (Q1), more than this side's N at once and compressed\n\t * arguments from a child (clients never compress) are protocol errors. On a relayed hold it is forwarded, its\n\t * arguments checked against this link's part limit first (the bytes are here). On a served hold that is not callable\n\t * (not bound yet, nor rebinding by the names its consumer still has after a `loading`) it is\n\t * refused `not_ready`; its method is an index into the bound variant (one outside it is a protocol error) and its\n\t * arguments are opened and parsed here within the hold's limits (past one the call fails `too_large/part`; a\n\t * malformed part is a protocol error), absent ones `null`. Arguments this host must inflate asynchronously are\n\t * inflated first, then the call is handled again.\n\t */\n\t#call(message: Extract<Message, { readonly kind: \"call\" }>): void | Promise<void> {\n\t\tif (this.#calls.has(message.call)) throw new Error(`call ${message.call}: the id is in use`);\n\t\tconst hold = this.#entries.get(message.hold);\n\t\tif (hold === undefined) return;\n\t\tif (this.#calls.size >= this.#limit) throw new Error(`call ${message.call}: more than ${this.#limit} calls`);\n\t\tconst { args: part, segments } = message;\n\t\tif (part instanceof DeflatedPart && this.link.role === \"child\") {\n\t\t\tthrow new Error(`call ${message.call}: compressed arguments from a child`);\n\t\t}\n\t\tif (hold.kind === \"relayed\") {\n\t\t\tconst error = part === undefined ? undefined : oversized(part, this.link.limits.part);\n\t\t\tif (error !== undefined) {\n\t\t\t\tthis.#refuse(message.call, error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst relayed: RunningCall = { kind: \"relayed\", hold };\n\t\t\tthis.#calls.set(message.call, relayed);\n\t\t\t// Registered first: a hold without an upstream link answers at once.\n\t\t\trelayed.span = hold.call(message);\n\t\t\treturn;\n\t\t}\n\t\tif (!hold.callable) {\n\t\t\tthis.#refuse(message.call, hold.refusal);\n\t\t\treturn;\n\t\t}\n\t\tconst method = hold.method(message.method);\n\t\tif (this.link.inflates(part, hold.limits)) {\n\t\t\treturn this.link.inflate([[part, hold.limits.decoded]], () => this.#call(message));\n\t\t}\n\t\tlet json: string | Uint8Array | undefined;\n\t\ttry {\n\t\t\tjson = part === undefined ? undefined : this.link.openPart(part, hold.limits, this.link.context);\n\t\t} catch (error) {\n\t\t\tif (!isChordError(error, \"too_large\")) throw error;\n\t\t\tthis.#refuse(message.call, error);\n\t\t\treturn;\n\t\t}\n\t\tconst args = json === undefined ? null : parsePayload(json, segments);\n\t\tconst call = { kind: \"served\", hold, bytes: method.resultBytes, abort: new AbortController() } as const;\n\t\tthis.#calls.set(message.call, call);\n\t\t// The caller's span over the link: its carrier with this host's adapter (absent or unknown: the adapter's root).\n\t\tconst parent = parentOf(message.trace, this.link.host.telemetry);\n\t\t// Old work of another host's reload (`call.old`), honoured only from a trusted link (decision \"Reload restarts\n\t\t// every affected object\"): it runs on open old attempts here, and counts as this host's old work while it runs.\n\t\tif (message.old === true && this.link.trusted) {\n\t\t\tconst { oldWork } = this.link.host;\n\t\t\toldWork.open();\n\t\t\tconst close = (): void => oldWork.close();\n\t\t\tthis.#run(message.call, call, method.name, args, parent, asRemoteOldWork(this.link.context)).then(\n\t\t\t\tclose,\n\t\t\t\tclose,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tthis.#run(message.call, call, method.name, args, parent, this.link.context);\n\t}\n\n\t/**\n\t * Runs a call under `scope` (the link's context, marked when it is another host's old work) and sends its result\n\t * (absent when `null`) or error, unless it was aborted, released or gone meanwhile. A result that cannot be encoded\n\t * is sent as its error. Returns the handler's settling.\n\t */\n\t#run(\n\t\tid: number,\n\t\tcall: Extract<RunningCall, { readonly kind: \"served\" }>,\n\t\tmethod: string,\n\t\targs: unknown,\n\t\tparent: TelemetryContext,\n\t\tscope: Context,\n\t): Promise<unknown> {\n\t\tconst context = withAbortSignal(call.abort.signal, scope);\n\t\tlet running: Promise<unknown>;\n\t\ttry {\n\t\t\trunning = call.hold.call(method, args, parent, context);\n\t\t} catch (error) {\n\t\t\trunning = Promise.reject(error);\n\t\t}\n\t\trunning.then(\n\t\t\t(result) => {\n\t\t\t\tlet reply: Extract<OriginMessage, { readonly kind: \"result\" | \"error\" }>;\n\t\t\t\ttry {\n\t\t\t\t\treply =\n\t\t\t\t\t\tresult === null || result === undefined\n\t\t\t\t\t\t\t? { kind: \"result\", call: id }\n\t\t\t\t\t\t\t: this.#result(id, result, call.bytes, this.link.context);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treply = { kind: \"error\", call: id, error: wireError(error) };\n\t\t\t\t}\n\t\t\t\tthis.reply(id, reply);\n\t\t\t},\n\t\t\t(error: unknown) => this.reply(id, { kind: \"error\", call: id, error: wireError(error) }),\n\t\t);\n\t\treturn running;\n\t}\n\n\t/** Answers call `id` with `error` before it was admitted: it took no slot. */\n\t#refuse(id: number, error: ChordError): void {\n\t\tthis.send({ kind: \"error\", call: id, error: wireError(error) });\n\t}\n\n\t#abort(id: number): void {\n\t\tconst call = this.#calls.get(id);\n\t\tif (call === undefined) return;\n\t\tthis.#calls.delete(id);\n\t\tif (call.kind === \"served\") {\n\t\t\tcall.abort.abort(new ChordError({ code: \"aborted\", message: `call ${id}: aborted by its caller` }));\n\t\t\treturn;\n\t\t}\n\t\tcall.hold.abort(id);\n\t\tif (call.span !== undefined) relayEnded(call.span, undefined);\n\t}\n\n\t/**\n\t * An `ack` answers the oldest message in flight: this host's own frees a slot, a relayed one is acknowledged to its\n\t * upstream link (closed meanwhile: nothing to do). An ack crossing nothing in flight is ignored.\n\t */\n\t#ack(): void {\n\t\tconst sender = this.#sent.shift();\n\t\tif (sender === undefined) return;\n\t\tif (sender !== \"local\") {\n\t\t\t// A relayed message implies the relay's number.\n\t\t\tsender.send({ kind: \"ack\", origin: this.#relay!.origin });\n\t\t\treturn;\n\t\t}\n\t\tthis.#inFlight--;\n\t\tthis.#ownAcked++;\n\t\tthis.#slotFreed();\n\t}\n\n\t/** The number the next of this host's own `bound` and `state` messages gets (counted from 1). */\n\tget nextOwn(): number {\n\t\treturn this.#ownSent + 1;\n\t}\n\n\t/**\n\t * Whether its consumer acknowledged this host's own message number `own`, so applied it: a call it sent after that\n\t * arrives after the `ack` (one direction keeps its order).\n\t */\n\tacknowledged(own: number): boolean {\n\t\treturn this.#ownAcked >= own;\n\t}\n\n\t/**\n\t * The end of a batch: while a slot is free and nothing waits, one `state` message with an entry per touched hold;\n\t * otherwise each touched hold's ops join its pending queues until a slot frees.\n\t */\n\t#flush(context: Context): void {\n\t\tconst holds = this.#touched;\n\t\t// The side closed during the batch: nothing is sent.\n\t\tif (holds.length === 0) return;\n\t\tthis.#touched = [];\n\t\t// A hold touched in this batch may have left its binding since (a reload unbound it).\n\t\tif (this.#free) {\n\t\t\tconst entries: StateEntry[] = [];\n\t\t\tfor (const hold of holds) if (hold.bound) entries.push(hold.entry(context));\n\t\t\tif (entries.length > 0) this.#sendOwn({ kind: \"state\", holds: entries });\n\t\t\treturn;\n\t\t}\n\t\t// A bound hold never waits for its binding.\n\t\tfor (const hold of holds) {\n\t\t\tif (!hold.bound) continue;\n\t\t\thold.queue();\n\t\t\tthis.#waiting.add(hold);\n\t\t\tthis.#waitingSince ??= performance.now();\n\t\t}\n\t}\n\n\t/** Whether this host's next message goes out now: a slot is free and nothing waits for one. */\n\tget #free(): boolean {\n\t\treturn this.#binding.size === 0 && this.#waiting.size === 0 && this.#inFlight < WINDOW;\n\t}\n\n\t/**\n\t * A slot may be free: while there is room, the waiting state goes out as one message and the waiting bindings as\n\t * one `bound`, taking turns when both wait (state first), so neither a hold that keeps changing nor a stream of new\n\t * holds starves the other.\n\t */\n\t#slotFreed(): void {\n\t\tconst context = this.link.context;\n\t\twhile (this.#inFlight < WINDOW) {\n\t\t\tif (this.#binding.size > 0 && (this.#waiting.size === 0 || this.#bindingTurn)) {\n\t\t\t\tconst holds = [...this.#binding];\n\t\t\t\tthis.#binding.clear();\n\t\t\t\tthis.#bindingTurn = false;\n\t\t\t\t// Every snapshot in one synchronous step: the binding shows all of them at one moment.\n\t\t\t\tthis.#sendOwn({ kind: \"bound\", holds: holds.map((hold) => hold.boundEntry(context)) });\n\t\t\t} else if (this.#waiting.size > 0) {\n\t\t\t\tthis.#sendWaiting(context);\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * The waiting state as one `state` message, taking a slot: a freed one, or one past the window before an answer.\n\t * Waiting bindings take the next slot.\n\t */\n\t#sendWaiting(context: Context): void {\n\t\tconst holds = [...this.#waiting];\n\t\tthis.#waiting.clear();\n\t\tthis.#waited();\n\t\tthis.#bindingTurn = this.#binding.size > 0;\n\t\tthis.#sendOwn({ kind: \"state\", holds: holds.map((hold) => hold.pendingEntry(context)) });\n\t}\n\n\t/**\n\t * A call's result message, its part deflated above the threshold when this host compresses; with byte segments when\n\t * its method's result schema has a `bytes()` leaf.\n\t */\n\t#result(\n\t\tid: number,\n\t\tresult: unknown,\n\t\tbytes: boolean,\n\t\tcontext: Context,\n\t): Extract<OriginMessage, { readonly kind: \"result\" }> {\n\t\tconst { json, segments } = payloadPart(result, bytes);\n\t\tconst value = this.link.part(json, context);\n\t\treturn { kind: \"result\", call: id, value, ...(segments === undefined ? {} : { segments }) };\n\t}\n\n\t/** The waiting state went out (or its holds left): how long it waited for its slot is recorded. */\n\t#waited(): void {\n\t\tif (this.#waitingSince === undefined) return;\n\t\tthis.link.host.metrics.histogram(\"chord.backpressure.wait\").record(performance.now() - this.#waitingSince);\n\t\tthis.#waitingSince = undefined;\n\t}\n\n\t/** Sends one of this host's own `bound` or `state` messages, taking a slot. */\n\t#sendOwn(message: Extract<OriginMessage, { readonly kind: \"bound\" | \"state\" }>): void {\n\t\tthis.#inFlight++;\n\t\tthis.#ownSent++;\n\t\tthis.#sent.push(\"local\");\n\t\tif (message.kind === \"state\") this.link.host.metrics.counter(\"chord.link.state_messages\").add(1);\n\t\tthis.send(message);\n\t}\n}\n"]}
@@ -0,0 +1,69 @@
1
+ import type { TelemetrySpan } from "@earendil-works/pi-telemetry";
2
+ import { ChordError } from "../data/index.ts";
3
+ import type { Caller } from "../host/internal.ts";
4
+ import { type Message, type OriginMessage } from "../link/internal.ts";
5
+ import { OpenSpan } from "../telemetry.ts";
6
+ import { type HoldRequest } from "./hold.ts";
7
+ import type { HostLink } from "./host-link.ts";
8
+ import type { Path } from "./path.ts";
9
+ import type { ProviderSide } from "./provider.ts";
10
+ /**
11
+ * One relayed hold: `id` on its downstream origin, and the same id upstream on its path's current link (none while
12
+ * the path has no link). It keeps its `hold` message to hold again on the next link. Calls, `abort`, `retry` and
13
+ * `release` go upstream at once; what comes back is forwarded by its downstream origin (`ProviderSide.forward`). Two
14
+ * downstream holds are two upstream holds, each with its own encoders (R1).
15
+ */
16
+ export declare class RelayedHold {
17
+ #private;
18
+ readonly kind = "relayed";
19
+ readonly id: number;
20
+ /** Whom the hold acts for, sent on route links. */
21
+ readonly caller: Caller;
22
+ constructor(id: number, downstream: ProviderSide, request: HoldRequest, caller: Caller, path: Path);
23
+ /** Its `chord.relay` span until it is held upstream (a route's resolve links to it); none when not recorded. */
24
+ get span(): TelemetrySpan | undefined;
25
+ /** Takes the pending hold's place downstream and holds upstream (now, or when the path has a link). */
26
+ start(): void;
27
+ /** Whether it is held on `link` now: only that link answers for it. */
28
+ heldOn(link: HostLink): boolean;
29
+ /** Holds on `link`, the path's link now: its kept `hold` message, with whom it acts for on a route link. */
30
+ attach(link: HostLink): void;
31
+ /** The upstream link dropped: downstream its calls fail and the hold goes loading until the path's next link. */
32
+ dropped(error: ChordError): void;
33
+ /** Its path's address cannot be reached for now: downstream it fails `waiting` with `error` until the next link. */
34
+ unreachable(error: ChordError): void;
35
+ /**
36
+ * Whether it waits for its path's link (a route still resolving, or a dropped link's next): a revocation ends it then,
37
+ * since the link it is held on next gets no past `revoke` (§4).
38
+ */
39
+ get waiting(): boolean;
40
+ /** Revoked while it waited for its path's link: forgotten, and `gone` with `error` downstream. */
41
+ revoked(error: ChordError): void;
42
+ /** `gone` from upstream: the hold is forgotten (the downstream origin forwards the message). */
43
+ lost(): void;
44
+ /**
45
+ * A call from downstream (registered there under its id), forwarded upstream at once; its reply comes back by the
46
+ * origin. Without an upstream link it is answered `unavailable` at once (it crossed the `loading` notice).
47
+ */
48
+ call(message: Extract<Message, {
49
+ readonly kind: "call";
50
+ }>): OpenSpan<"chord.relay"> | undefined;
51
+ /** A downstream `abort` of call `id`, forwarded. */
52
+ abort(id: number): void;
53
+ /** A downstream `retry`, forwarded with its hop budget as it is (a relay visits no object). */
54
+ retry(message: Extract<Message, {
55
+ readonly kind: "retry";
56
+ }>): void;
57
+ /** Released downstream: released upstream (its calls with it) and no later link holds it. */
58
+ release(): void;
59
+ /** No later link holds it (gone, or its downstream origin closed, which `closed` tells the upstream links). */
60
+ drop(): void;
61
+ }
62
+ /**
63
+ * A relayed call's `chord.relay` span ends with its `reply` forwarded downstream (`ok`, or the error's: `aborted` for
64
+ * a cancel), or `aborted` without one (an abort, a release, a closed link).
65
+ */
66
+ export declare function relayEnded(span: OpenSpan<"chord.relay">, reply: Extract<OriginMessage, {
67
+ readonly kind: "result" | "error";
68
+ }> | undefined): void;
69
+ //# sourceMappingURL=relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/remote/relay.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAoB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAiB,KAAK,OAAO,EAAE,KAAK,aAAa,EAAa,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAA4B,QAAQ,EAAkC,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;GAKG;AACH,qBAAa,WAAW;;IACvB,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAOpB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAcxB,YAAY,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAgBjG;IAED,gHAAgH;IAChH,IAAI,IAAI,IAAI,aAAa,GAAG,SAAS,CAEpC;IAED,uGAAuG;IACvG,KAAK,IAAI,IAAI,CAGZ;IAED,uEAAuE;IACvE,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAE9B;IAED,4GAA4G;IAC5G,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAa3B;IAgCD,iHAAiH;IACjH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAI/B;IAED,oHAAoH;IACpH,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAGnC;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,kGAAkG;IAClG,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAI/B;IAED,gGAAgG;IAChG,IAAI,IAAI,IAAI,CAGX;IAED;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,SAAS,CAsB9F;IAED,oDAAoD;IACpD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGtB;IAED,+FAA+F;IAC/F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAGjE;IAED,6FAA6F;IAC7F,OAAO,IAAI,IAAI,CAId;IAED,+GAA+G;IAC/G,IAAI,IAAI,IAAI,CAIX;CAWD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACzB,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC7B,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAC,GAAG,SAAS,GAC9E,IAAI,CASN"}
@@ -0,0 +1,219 @@
1
+ // Relayed holds (§4, §22, R1; decision "Relay flow control per origin"): a hold that arrived on one link (downstream)
2
+ // and that this host neither serves nor parses, held again on its path's link (upstream) with the same id under its
3
+ // downstream origin's number there; messages are forwarded between the two with the origin rewritten and parts
4
+ // untouched. Forwarding a hold or a call is a `chord.relay` span under the arriving carrier, whose own carrier goes
5
+ // upstream (slice 9).
6
+ import { ChordError } from "../data/index.js";
7
+ import { errorFromWire, wireError } from "../link/internal.js";
8
+ import { capped, carrierOf, ended, OpenSpan, parentOf, spanFailed, untraced } from "../telemetry.js";
9
+ import { actingFor } from "./hold.js";
10
+ /**
11
+ * One relayed hold: `id` on its downstream origin, and the same id upstream on its path's current link (none while
12
+ * the path has no link). It keeps its `hold` message to hold again on the next link. Calls, `abort`, `retry` and
13
+ * `release` go upstream at once; what comes back is forwarded by its downstream origin (`ProviderSide.forward`). Two
14
+ * downstream holds are two upstream holds, each with its own encoders (R1).
15
+ */
16
+ export class RelayedHold {
17
+ kind = "relayed";
18
+ id;
19
+ #downstream;
20
+ /**
21
+ * What the upstream hold asks for, with the chain and decoded limit this host honoured; its params owned, not a view
22
+ * of the message they came in.
23
+ */
24
+ #request;
25
+ /** Whom the hold acts for, sent on route links. */
26
+ caller;
27
+ #path;
28
+ /** The upstream link while the path has one, and the downstream origin's number on it. */
29
+ #upstream;
30
+ /** Its `chord.relay` span until it is first held upstream (or dropped); none when this host records nothing. */
31
+ #relaying;
32
+ /**
33
+ * The carrier of its first upstream hold: the relay span's, or the arriving one as it came when this host records
34
+ * nothing; a re-hold's span links to it.
35
+ */
36
+ #trace;
37
+ /** How many times it was held upstream. */
38
+ #holds = 0;
39
+ constructor(id, downstream, request, caller, path) {
40
+ this.id = id;
41
+ this.#downstream = downstream;
42
+ const { params, trace, ...fields } = request;
43
+ // Params are never deflated: the provider side refused deflated ones.
44
+ const owned = typeof params === "string" ? params : params.slice();
45
+ this.#request = { ...fields, params: owned };
46
+ this.#trace = trace;
47
+ const adapter = downstream.link.host.telemetry;
48
+ if (!untraced(adapter)) {
49
+ this.#relaying = new OpenSpan(parentOf(trace, adapter), "chord.relay", this.#attributes("hold"));
50
+ // Upstream the hold carries the relay's span (a relay that records nothing passes the carrier on as it came).
51
+ this.#trace = carrierOf(this.#relaying.span) ?? trace;
52
+ }
53
+ this.caller = caller;
54
+ this.#path = path;
55
+ }
56
+ /** Its `chord.relay` span until it is held upstream (a route's resolve links to it); none when not recorded. */
57
+ get span() {
58
+ return this.#relaying?.span;
59
+ }
60
+ /** Takes the pending hold's place downstream and holds upstream (now, or when the path has a link). */
61
+ start() {
62
+ this.#downstream.relayed(this);
63
+ this.#path.attach(this);
64
+ }
65
+ /** Whether it is held on `link` now: only that link answers for it. */
66
+ heldOn(link) {
67
+ return this.#upstream?.link === link;
68
+ }
69
+ /** Holds on `link`, the path's link now: its kept `hold` message, with whom it acts for on a route link. */
70
+ attach(link) {
71
+ const origin = this.#downstream.relayTo(link);
72
+ this.#upstream = { link, origin };
73
+ const trace = this.#holdTrace(link);
74
+ link.send({
75
+ kind: "hold",
76
+ origin,
77
+ hold: this.id,
78
+ ...this.#request,
79
+ ...(trace === undefined ? {} : { trace }),
80
+ ...actingFor(link, this.caller),
81
+ });
82
+ this.#relayed("ok");
83
+ }
84
+ /**
85
+ * The carrier of this upstream hold: the first one's; a re-hold after an upstream drop is a fresh `chord.relay` root
86
+ * linked to the first (none when this host records nothing), never the first's again (review L1).
87
+ */
88
+ #holdTrace(link) {
89
+ if (this.#holds++ === 0)
90
+ return this.#trace;
91
+ const adapter = link.host.telemetry;
92
+ if (this.#trace === undefined || untraced(adapter))
93
+ return undefined;
94
+ const again = new OpenSpan(adapter, "chord.relay", this.#attributes("hold"));
95
+ again.span.addLink({ context: parentOf(this.#trace, adapter) });
96
+ const carrier = carrierOf(again.span);
97
+ again.span.setAttributes({ outcome: "ok" });
98
+ again.end();
99
+ return carrier;
100
+ }
101
+ /**
102
+ * A relay span's attributes: its host's `chord.host` (the downstream link's host), and names from the wire, bounded
103
+ * by the message schema (untrusted links) and capped here.
104
+ */
105
+ #attributes(member) {
106
+ const { type, address } = this.#request;
107
+ return {
108
+ "chord.host": this.#downstream.link.host.spanHost,
109
+ type: capped(type),
110
+ member,
111
+ "upstream.kind": capped(address.kind),
112
+ };
113
+ }
114
+ /** The upstream link dropped: downstream its calls fail and the hold goes loading until the path's next link. */
115
+ dropped(error) {
116
+ const upstream = this.#upstream;
117
+ this.#upstream = undefined;
118
+ if (upstream !== undefined)
119
+ this.#downstream.upstreamDropped(this, error);
120
+ }
121
+ /** Its path's address cannot be reached for now: downstream it fails `waiting` with `error` until the next link. */
122
+ unreachable(error) {
123
+ this.#relayed("error", error);
124
+ this.#downstream.send({ kind: "failed", hold: this.id, cause: { kind: "waiting", error: wireError(error) } });
125
+ }
126
+ /**
127
+ * Whether it waits for its path's link (a route still resolving, or a dropped link's next): a revocation ends it then,
128
+ * since the link it is held on next gets no past `revoke` (§4).
129
+ */
130
+ get waiting() {
131
+ return this.#upstream === undefined;
132
+ }
133
+ /** Revoked while it waited for its path's link: forgotten, and `gone` with `error` downstream. */
134
+ revoked(error) {
135
+ this.drop();
136
+ this.#downstream.forget(this);
137
+ this.#downstream.send({ kind: "gone", hold: this.id, error: wireError(error) });
138
+ }
139
+ /** `gone` from upstream: the hold is forgotten (the downstream origin forwards the message). */
140
+ lost() {
141
+ this.drop();
142
+ this.#downstream.forget(this);
143
+ }
144
+ /**
145
+ * A call from downstream (registered there under its id), forwarded upstream at once; its reply comes back by the
146
+ * origin. Without an upstream link it is answered `unavailable` at once (it crossed the `loading` notice).
147
+ */
148
+ call(message) {
149
+ const upstream = this.#upstream;
150
+ if (upstream === undefined) {
151
+ const error = new ChordError({ code: "unavailable", message: `hold ${this.id}: its upstream link is down` });
152
+ this.#downstream.reply(message.call, { kind: "error", call: message.call, error: wireError(error) });
153
+ return undefined;
154
+ }
155
+ // A downstream link that is not trusted (a page) cannot claim old work: its flag is dropped here.
156
+ const forwarded = message.old === true && !this.#downstream.link.trusted ? unmarked(message) : message;
157
+ const adapter = upstream.link.host.telemetry;
158
+ if (untraced(adapter)) {
159
+ upstream.link.send({ ...forwarded, origin: upstream.origin });
160
+ return undefined;
161
+ }
162
+ const span = new OpenSpan(parentOf(message.trace, adapter), "chord.relay", this.#attributes(`#${message.method}`));
163
+ const trace = carrierOf(span.span) ?? message.trace;
164
+ upstream.link.send({ ...forwarded, origin: upstream.origin, ...(trace === undefined ? {} : { trace }) });
165
+ return span;
166
+ }
167
+ /** A downstream `abort` of call `id`, forwarded. */
168
+ abort(id) {
169
+ const upstream = this.#upstream;
170
+ upstream?.link.send({ kind: "abort", origin: upstream.origin, call: id });
171
+ }
172
+ /** A downstream `retry`, forwarded with its hop budget as it is (a relay visits no object). */
173
+ retry(message) {
174
+ const upstream = this.#upstream;
175
+ upstream?.link.send({ ...message, origin: upstream.origin });
176
+ }
177
+ /** Released downstream: released upstream (its calls with it) and no later link holds it. */
178
+ release() {
179
+ const upstream = this.#upstream;
180
+ this.drop();
181
+ upstream?.link.send({ kind: "release", origin: upstream.origin, hold: this.id });
182
+ }
183
+ /** No later link holds it (gone, or its downstream origin closed, which `closed` tells the upstream links). */
184
+ drop() {
185
+ this.#relayed("aborted");
186
+ this.#upstream = undefined;
187
+ this.#path.detach(this);
188
+ }
189
+ /** It was held upstream, failed or dropped first: its `chord.relay` span ends with `outcome`. */
190
+ #relayed(outcome, error) {
191
+ const relaying = this.#relaying;
192
+ if (relaying === undefined)
193
+ return;
194
+ this.#relaying = undefined;
195
+ if (error !== undefined)
196
+ spanFailed(relaying.span, "relay_failed", error);
197
+ relaying.span.setAttributes({ outcome });
198
+ relaying.end();
199
+ }
200
+ }
201
+ /**
202
+ * A relayed call's `chord.relay` span ends with its `reply` forwarded downstream (`ok`, or the error's: `aborted` for
203
+ * a cancel), or `aborted` without one (an abort, a release, a closed link).
204
+ */
205
+ export function relayEnded(span, reply) {
206
+ const outcome = reply === undefined
207
+ ? "aborted"
208
+ : reply.kind === "result"
209
+ ? "ok"
210
+ : ended(span.span, "relay_failed", errorFromWire(reply.error), undefined);
211
+ span.span.setAttributes({ outcome });
212
+ span.end();
213
+ }
214
+ /** `message` without its old-work flag (`call.old`), as a relay forwards it from a link that is not trusted. */
215
+ function unmarked(message) {
216
+ const { old: _old, ...rest } = message;
217
+ return rest;
218
+ }
219
+ //# sourceMappingURL=relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../src/remote/relay.ts"],"names":[],"mappings":"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","sourcesContent":["// Relayed holds (§4, §22, R1; decision \"Relay flow control per origin\"): a hold that arrived on one link (downstream)\n// and that this host neither serves nor parses, held again on its path's link (upstream) with the same id under its\n// downstream origin's number there; messages are forwarded between the two with the origin rewritten and parts\n// untouched. Forwarding a hold or a call is a `chord.relay` span under the arriving carrier, whose own carrier goes\n// upstream (slice 9).\n\nimport type { TelemetryCarrier, TelemetrySpan } from \"@earendil-works/pi-telemetry\";\nimport { ChordError } from \"../data/index.ts\";\nimport type { Caller } from \"../host/internal.ts\";\nimport { errorFromWire, type Message, type OriginMessage, wireError } from \"../link/internal.ts\";\nimport { capped, carrierOf, ended, OpenSpan, parentOf, spanFailed, untraced } from \"../telemetry.ts\";\nimport { actingFor, type HoldRequest } from \"./hold.ts\";\nimport type { HostLink } from \"./host-link.ts\";\nimport type { Path } from \"./path.ts\";\nimport type { ProviderSide } from \"./provider.ts\";\n\n/**\n * One relayed hold: `id` on its downstream origin, and the same id upstream on its path's current link (none while\n * the path has no link). It keeps its `hold` message to hold again on the next link. Calls, `abort`, `retry` and\n * `release` go upstream at once; what comes back is forwarded by its downstream origin (`ProviderSide.forward`). Two\n * downstream holds are two upstream holds, each with its own encoders (R1).\n */\nexport class RelayedHold {\n\treadonly kind = \"relayed\";\n\treadonly id: number;\n\treadonly #downstream: ProviderSide;\n\t/**\n\t * What the upstream hold asks for, with the chain and decoded limit this host honoured; its params owned, not a view\n\t * of the message they came in.\n\t */\n\treadonly #request: HoldRequest;\n\t/** Whom the hold acts for, sent on route links. */\n\treadonly caller: Caller;\n\treadonly #path: Path;\n\t/** The upstream link while the path has one, and the downstream origin's number on it. */\n\t#upstream: { readonly link: HostLink; readonly origin: number } | undefined;\n\t/** Its `chord.relay` span until it is first held upstream (or dropped); none when this host records nothing. */\n\t#relaying: OpenSpan<\"chord.relay\"> | undefined;\n\t/**\n\t * The carrier of its first upstream hold: the relay span's, or the arriving one as it came when this host records\n\t * nothing; a re-hold's span links to it.\n\t */\n\treadonly #trace: TelemetryCarrier | undefined;\n\t/** How many times it was held upstream. */\n\t#holds = 0;\n\n\tconstructor(id: number, downstream: ProviderSide, request: HoldRequest, caller: Caller, path: Path) {\n\t\tthis.id = id;\n\t\tthis.#downstream = downstream;\n\t\tconst { params, trace, ...fields } = request;\n\t\t// Params are never deflated: the provider side refused deflated ones.\n\t\tconst owned = typeof params === \"string\" ? params : (params as Uint8Array).slice();\n\t\tthis.#request = { ...fields, params: owned };\n\t\tthis.#trace = trace;\n\t\tconst adapter = downstream.link.host.telemetry;\n\t\tif (!untraced(adapter)) {\n\t\t\tthis.#relaying = new OpenSpan(parentOf(trace, adapter), \"chord.relay\", this.#attributes(\"hold\"));\n\t\t\t// Upstream the hold carries the relay's span (a relay that records nothing passes the carrier on as it came).\n\t\t\tthis.#trace = carrierOf(this.#relaying.span) ?? trace;\n\t\t}\n\t\tthis.caller = caller;\n\t\tthis.#path = path;\n\t}\n\n\t/** Its `chord.relay` span until it is held upstream (a route's resolve links to it); none when not recorded. */\n\tget span(): TelemetrySpan | undefined {\n\t\treturn this.#relaying?.span;\n\t}\n\n\t/** Takes the pending hold's place downstream and holds upstream (now, or when the path has a link). */\n\tstart(): void {\n\t\tthis.#downstream.relayed(this);\n\t\tthis.#path.attach(this);\n\t}\n\n\t/** Whether it is held on `link` now: only that link answers for it. */\n\theldOn(link: HostLink): boolean {\n\t\treturn this.#upstream?.link === link;\n\t}\n\n\t/** Holds on `link`, the path's link now: its kept `hold` message, with whom it acts for on a route link. */\n\tattach(link: HostLink): void {\n\t\tconst origin = this.#downstream.relayTo(link);\n\t\tthis.#upstream = { link, origin };\n\t\tconst trace = this.#holdTrace(link);\n\t\tlink.send({\n\t\t\tkind: \"hold\",\n\t\t\torigin,\n\t\t\thold: this.id,\n\t\t\t...this.#request,\n\t\t\t...(trace === undefined ? {} : { trace }),\n\t\t\t...actingFor(link, this.caller),\n\t\t});\n\t\tthis.#relayed(\"ok\");\n\t}\n\n\t/**\n\t * The carrier of this upstream hold: the first one's; a re-hold after an upstream drop is a fresh `chord.relay` root\n\t * linked to the first (none when this host records nothing), never the first's again (review L1).\n\t */\n\t#holdTrace(link: HostLink): TelemetryCarrier | undefined {\n\t\tif (this.#holds++ === 0) return this.#trace;\n\t\tconst adapter = link.host.telemetry;\n\t\tif (this.#trace === undefined || untraced(adapter)) return undefined;\n\t\tconst again = new OpenSpan(adapter, \"chord.relay\", this.#attributes(\"hold\"));\n\t\tagain.span.addLink({ context: parentOf(this.#trace, adapter) });\n\t\tconst carrier = carrierOf(again.span);\n\t\tagain.span.setAttributes({ outcome: \"ok\" });\n\t\tagain.end();\n\t\treturn carrier;\n\t}\n\n\t/**\n\t * A relay span's attributes: its host's `chord.host` (the downstream link's host), and names from the wire, bounded\n\t * by the message schema (untrusted links) and capped here.\n\t */\n\t#attributes(member: string): { \"chord.host\": string; type: string; member: string; \"upstream.kind\": string } {\n\t\tconst { type, address } = this.#request;\n\t\treturn {\n\t\t\t\"chord.host\": this.#downstream.link.host.spanHost,\n\t\t\ttype: capped(type),\n\t\t\tmember,\n\t\t\t\"upstream.kind\": capped(address.kind),\n\t\t};\n\t}\n\n\t/** The upstream link dropped: downstream its calls fail and the hold goes loading until the path's next link. */\n\tdropped(error: ChordError): void {\n\t\tconst upstream = this.#upstream;\n\t\tthis.#upstream = undefined;\n\t\tif (upstream !== undefined) this.#downstream.upstreamDropped(this, error);\n\t}\n\n\t/** Its path's address cannot be reached for now: downstream it fails `waiting` with `error` until the next link. */\n\tunreachable(error: ChordError): void {\n\t\tthis.#relayed(\"error\", error);\n\t\tthis.#downstream.send({ kind: \"failed\", hold: this.id, cause: { kind: \"waiting\", error: wireError(error) } });\n\t}\n\n\t/**\n\t * Whether it waits for its path's link (a route still resolving, or a dropped link's next): a revocation ends it then,\n\t * since the link it is held on next gets no past `revoke` (§4).\n\t */\n\tget waiting(): boolean {\n\t\treturn this.#upstream === undefined;\n\t}\n\n\t/** Revoked while it waited for its path's link: forgotten, and `gone` with `error` downstream. */\n\trevoked(error: ChordError): void {\n\t\tthis.drop();\n\t\tthis.#downstream.forget(this);\n\t\tthis.#downstream.send({ kind: \"gone\", hold: this.id, error: wireError(error) });\n\t}\n\n\t/** `gone` from upstream: the hold is forgotten (the downstream origin forwards the message). */\n\tlost(): void {\n\t\tthis.drop();\n\t\tthis.#downstream.forget(this);\n\t}\n\n\t/**\n\t * A call from downstream (registered there under its id), forwarded upstream at once; its reply comes back by the\n\t * origin. Without an upstream link it is answered `unavailable` at once (it crossed the `loading` notice).\n\t */\n\tcall(message: Extract<Message, { readonly kind: \"call\" }>): OpenSpan<\"chord.relay\"> | undefined {\n\t\tconst upstream = this.#upstream;\n\t\tif (upstream === undefined) {\n\t\t\tconst error = new ChordError({ code: \"unavailable\", message: `hold ${this.id}: its upstream link is down` });\n\t\t\tthis.#downstream.reply(message.call, { kind: \"error\", call: message.call, error: wireError(error) });\n\t\t\treturn undefined;\n\t\t}\n\t\t// A downstream link that is not trusted (a page) cannot claim old work: its flag is dropped here.\n\t\tconst forwarded = message.old === true && !this.#downstream.link.trusted ? unmarked(message) : message;\n\t\tconst adapter = upstream.link.host.telemetry;\n\t\tif (untraced(adapter)) {\n\t\t\tupstream.link.send({ ...forwarded, origin: upstream.origin });\n\t\t\treturn undefined;\n\t\t}\n\t\tconst span = new OpenSpan(\n\t\t\tparentOf(message.trace, adapter),\n\t\t\t\"chord.relay\",\n\t\t\tthis.#attributes(`#${message.method}`),\n\t\t);\n\t\tconst trace = carrierOf(span.span) ?? message.trace;\n\t\tupstream.link.send({ ...forwarded, origin: upstream.origin, ...(trace === undefined ? {} : { trace }) });\n\t\treturn span;\n\t}\n\n\t/** A downstream `abort` of call `id`, forwarded. */\n\tabort(id: number): void {\n\t\tconst upstream = this.#upstream;\n\t\tupstream?.link.send({ kind: \"abort\", origin: upstream.origin, call: id });\n\t}\n\n\t/** A downstream `retry`, forwarded with its hop budget as it is (a relay visits no object). */\n\tretry(message: Extract<Message, { readonly kind: \"retry\" }>): void {\n\t\tconst upstream = this.#upstream;\n\t\tupstream?.link.send({ ...message, origin: upstream.origin });\n\t}\n\n\t/** Released downstream: released upstream (its calls with it) and no later link holds it. */\n\trelease(): void {\n\t\tconst upstream = this.#upstream;\n\t\tthis.drop();\n\t\tupstream?.link.send({ kind: \"release\", origin: upstream.origin, hold: this.id });\n\t}\n\n\t/** No later link holds it (gone, or its downstream origin closed, which `closed` tells the upstream links). */\n\tdrop(): void {\n\t\tthis.#relayed(\"aborted\");\n\t\tthis.#upstream = undefined;\n\t\tthis.#path.detach(this);\n\t}\n\n\t/** It was held upstream, failed or dropped first: its `chord.relay` span ends with `outcome`. */\n\t#relayed(outcome: \"ok\" | \"error\" | \"aborted\", error?: ChordError): void {\n\t\tconst relaying = this.#relaying;\n\t\tif (relaying === undefined) return;\n\t\tthis.#relaying = undefined;\n\t\tif (error !== undefined) spanFailed(relaying.span, \"relay_failed\", error);\n\t\trelaying.span.setAttributes({ outcome });\n\t\trelaying.end();\n\t}\n}\n\n/**\n * A relayed call's `chord.relay` span ends with its `reply` forwarded downstream (`ok`, or the error's: `aborted` for\n * a cancel), or `aborted` without one (an abort, a release, a closed link).\n */\nexport function relayEnded(\n\tspan: OpenSpan<\"chord.relay\">,\n\treply: Extract<OriginMessage, { readonly kind: \"result\" | \"error\" }> | undefined,\n): void {\n\tconst outcome =\n\t\treply === undefined\n\t\t\t? \"aborted\"\n\t\t\t: reply.kind === \"result\"\n\t\t\t\t? \"ok\"\n\t\t\t\t: ended(span.span, \"relay_failed\", errorFromWire(reply.error), undefined);\n\tspan.span.setAttributes({ outcome });\n\tspan.end();\n}\n\n/** `message` without its old-work flag (`call.old`), as a relay forwards it from a link that is not trusted. */\nfunction unmarked(message: Extract<Message, { readonly kind: \"call\" }>): Extract<Message, { readonly kind: \"call\" }> {\n\tconst { old: _old, ...rest } = message;\n\treturn rest;\n}\n"]}
@@ -0,0 +1,138 @@
1
+ import type { TelemetryContext, TelemetrySpan } from "@earendil-works/pi-telemetry";
2
+ import { type Context } from "../context/index.ts";
3
+ import type { Contract } from "../contracts/index.ts";
4
+ import { ChordError } from "../data/index.ts";
5
+ import { type AnyHost, type Attachable, type Binding, type Caller, type CheckedParams, type ChordObject, type Followed, type PinnedKey, type RefState, type RetryWalk, type Target } from "../host/internal.ts";
6
+ import { type BoundEntry, type Message, type StateEntry, type WireAddress } from "../link/internal.ts";
7
+ import type { DeriveSource } from "../state/internal.ts";
8
+ import type { HoldRequest } from "./hold.ts";
9
+ import type { HostLink } from "./host-link.ts";
10
+ import type { Path } from "./path.ts";
11
+ /**
12
+ * One remote reference's object, owned by its host across the links of its path. It is `loading` until a link's hold
13
+ * of it is bound, and again whenever that link drops or its relay's upstream starts over; each link holds it with its
14
+ * own id. Two references are two holds, each member of each with its own Delta decoder.
15
+ */
16
+ export declare class RemoteObject implements Target {
17
+ #private;
18
+ readonly kind = "remote";
19
+ /** The object in errors: its type, and its params key when it has params. */
20
+ readonly label: string;
21
+ readonly contract: Contract;
22
+ /** What its holds ask for: the params as a part (checked by L1 when the reference was made), the address. */
23
+ readonly request: HoldRequest;
24
+ /** Whom its reference acts for: named on route links (`actingFor`). */
25
+ readonly caller: Caller;
26
+ constructor(host: AnyHost, contract: Contract, { params, key }: CheckedParams, address: WireAddress, caller: Caller, path: Path, dependent: ChordObject | undefined, holder: TelemetryContext);
27
+ get state(): RefState;
28
+ /** Over a link the provider decides what each version sees: its state as it is. */
29
+ stateFor(): RefState;
30
+ /** Its `chord.hold` span until its first `bound` or failure (a route's resolve links to it); none when not recorded. */
31
+ get span(): TelemetrySpan | undefined;
32
+ /** An object over a link is no blocker of this host's first pass. */
33
+ get blocksFirstPass(): false;
34
+ /** The error of the last `failed`, until `bound`. */
35
+ get lastFailure(): ChordError | undefined;
36
+ /** The variant last bound; `undefined` before the first binding. */
37
+ get variant(): string | undefined;
38
+ /** Whether its state members have values: bound once. */
39
+ get hydrated(): boolean;
40
+ /** Its one reference bound to it. */
41
+ hold(binding: Binding): void;
42
+ /** The reference was released: the current link's provider is told and the reference's sent calls rejected. */
43
+ unhold(_binding: Binding): void;
44
+ /**
45
+ * Holds on `link`, the path's link now (a first hold, or a re-hold on a new link), with the activation chain of its
46
+ * dependent while that activates (Q5).
47
+ */
48
+ attach(link: HostLink): void;
49
+ /**
50
+ * Its path's address cannot be reached for now (a route's `resolve` failed, a suspension): `failed { waiting }` with
51
+ * `error`, still on the path, bound by its next link.
52
+ */
53
+ unreachable(error: ChordError): void;
54
+ /** The link dropped: loading until a new link's hold is bound (`#startOver`). */
55
+ dropped(_error: ChordError): void;
56
+ /**
57
+ * Calls a method of the bound variant over the link; one outside it fails `invalid/member`. Only a live object is
58
+ * called: bound on an open link.
59
+ */
60
+ call(method: string, args: unknown, context: Context): Promise<unknown>;
61
+ /**
62
+ * The replica of `member`; `not_ready` before the first binding, `invalid/member` for a member no binding had (one
63
+ * a later variant lacks reads its `invalid/member` failure).
64
+ */
65
+ member(member: string): DeriveSource;
66
+ /**
67
+ * What its reference follows of `member` (a consumer over a link binds at its own version, mapped at the provider):
68
+ * the replica while live, a member the bound variant lacks (`invalid/member`); while loading or failed nothing, the
69
+ * replica (kept until the next binding) giving its last value (rule 5).
70
+ */
71
+ followed(member: string, _version: number): Followed;
72
+ /** Its binding while live (its replicas change); `undefined` while loading or failed. */
73
+ get attachable(): Attachable | undefined;
74
+ /** Keyed members are only in local contracts: no instance to pin a key on. */
75
+ get instance(): undefined;
76
+ /** Keyed members are only in local contracts (`keyedMember`). */
77
+ keyedMapping(member: string): never;
78
+ /** Keyed members are only in local contracts (`keyedMember`). */
79
+ pinKey(member: string): Promise<PinnedKey>;
80
+ /** Keyed members are only in local contracts, whose objects are never held over a link (slice 6a §12). */
81
+ keyedMember(member: string): never;
82
+ /** An object over a link activates on another host: it is in no chain here (Q5). */
83
+ get activationId(): undefined;
84
+ /** An object over a link waits for nothing on this host: no chain of waits (its holds carry the chain, Q5). */
85
+ pathTo(): undefined;
86
+ /**
87
+ * `ref.retry()`, as a step of `walk`: a failed object's provider is asked for an attempt with the walk's hop budget,
88
+ * none left: nothing is sent (a hold it refused is started there again; a parked object there passes it on with one
89
+ * hop less). One that failed for a part past the link's limits is placed anew and held with a new id, now or on its
90
+ * path's next link (a `hostAddress` that throws fails it broken again).
91
+ */
92
+ retry(walk: RetryWalk): void;
93
+ /**
94
+ * A part of its snapshot or of a state change was past the link's limits (`too_large/part`): the hold is released
95
+ * at the provider, and the reference fails broken with `error`, final: no link holds it again (a reconnect
96
+ * included) until `retry`.
97
+ */
98
+ tooLarge(error: ChordError): void;
99
+ /**
100
+ * Prepares one entry of a `bound` message (a first binding, a re-hold; a live hold is bound again): the
101
+ * variant and every state member once, as a value or as failed. Returns what applies it inside the batch of the
102
+ * whole message: a member it had gets the snapshot as one frame `[["r", value]]` and a fresh decoder, a member
103
+ * outside the new variant fails (its replica stays, for a later binding that has it again), a new one gets its first
104
+ * value. Throws on a snapshot that
105
+ * does not fit (a protocol error), and `too_large/part` for a value past the link's limits, before anything changed.
106
+ * `wentLive` follows the batch.
107
+ */
108
+ prepareBound(entry: BoundEntry, link: HostLink): () => void;
109
+ /** After a `bound` message's batch: the reference goes live (its parked calls are sent, a parked dependent goes on). */
110
+ wentLive(): void;
111
+ /**
112
+ * `failed`: the provider's object failed and no attempt runs (`retryIn`: the rest of its backoff window), or the hold
113
+ * is unbound there or its object parked on a failed dependency (`waiting`), each new cause a new message. On a bound
114
+ * hold it unbinds it (slice 7b, model §5): the members keep their last values until the next `bound`.
115
+ */
116
+ failed(message: Extract<Message, {
117
+ readonly kind: "failed";
118
+ }>): void;
119
+ /**
120
+ * `loading`: the provider's object started a new attempt after a failure, or its relay's upstream link dropped
121
+ * (`#startOver`).
122
+ */
123
+ loading(): void;
124
+ /**
125
+ * Decodes and applies one entry of a state message (its members by index, each with its ops), without changing
126
+ * anything yet: returns what adopts it into the replicas, run inside the batch that applies the whole message.
127
+ * Throws on an entry that does not fit (a protocol error), and `too_large/part` for ops past the link's limits.
128
+ */
129
+ prepare({ hold: id, members, failed, retired }: StateEntry, link: HostLink): () => void;
130
+ /**
131
+ * Its principal was revoked on this host (`host.revoke`): released at its provider if it is held there, then ended
132
+ * with `error` as `lost` does; no later link holds it.
133
+ */
134
+ revoke(error: ChordError): void;
135
+ /** `gone`, or the host closes: the reference ends, its calls reject with `error`. */
136
+ lost(error: ChordError): void;
137
+ }
138
+ //# sourceMappingURL=remote-object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-object.d.ts","sourceRoot":"","sources":["../../src/remote/remote-object.ts"],"names":[],"mappings":"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"}