@earendil-works/chord 1.3.0 → 1.5.0

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 (841) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +129 -10
  3. package/dist/cell.d.ts +7 -7
  4. package/dist/cell.d.ts.map +1 -1
  5. package/dist/cell.js.map +1 -1
  6. package/dist/context/index.d.ts +8 -0
  7. package/dist/context/index.d.ts.map +1 -1
  8. package/dist/context/index.js +15 -0
  9. package/dist/context/index.js.map +1 -1
  10. package/dist/contract.d.ts +51 -52
  11. package/dist/contract.d.ts.map +1 -1
  12. package/dist/contract.js +19 -24
  13. package/dist/contract.js.map +1 -1
  14. package/dist/delta/apply-immutable-trusted.js +3 -4
  15. package/dist/delta/apply-immutable-trusted.js.map +1 -1
  16. package/dist/delta/diff.d.ts.map +1 -1
  17. package/dist/delta/diff.js +5 -3
  18. package/dist/delta/diff.js.map +1 -1
  19. package/dist/delta/index.d.ts +9 -1
  20. package/dist/delta/index.d.ts.map +1 -1
  21. package/dist/delta/index.js +15 -11
  22. package/dist/delta/index.js.map +1 -1
  23. package/dist/delta/pending.d.ts +36 -0
  24. package/dist/delta/pending.d.ts.map +1 -0
  25. package/dist/delta/pending.js +143 -0
  26. package/dist/delta/pending.js.map +1 -0
  27. package/dist/delta/tracker.d.ts +12 -0
  28. package/dist/delta/tracker.d.ts.map +1 -1
  29. package/dist/delta/tracker.js +109 -39
  30. package/dist/delta/tracker.js.map +1 -1
  31. package/dist/host.d.ts.map +1 -1
  32. package/dist/host.js +9 -7
  33. package/dist/host.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/next/contracts/accepts.d.ts +81 -0
  39. package/dist/next/contracts/accepts.d.ts.map +1 -0
  40. package/dist/next/contracts/accepts.js +123 -0
  41. package/dist/next/contracts/accepts.js.map +1 -0
  42. package/dist/next/contracts/contract.d.ts +121 -0
  43. package/dist/next/contracts/contract.d.ts.map +1 -0
  44. package/dist/next/contracts/contract.js +50 -0
  45. package/dist/next/contracts/contract.js.map +1 -0
  46. package/dist/next/contracts/declare.d.ts +107 -0
  47. package/dist/next/contracts/declare.d.ts.map +1 -0
  48. package/dist/next/contracts/declare.js +136 -0
  49. package/dist/next/contracts/declare.js.map +1 -0
  50. package/dist/next/contracts/evolve.d.ts +92 -0
  51. package/dist/next/contracts/evolve.d.ts.map +1 -0
  52. package/dist/next/contracts/evolve.js +179 -0
  53. package/dist/next/contracts/evolve.js.map +1 -0
  54. package/dist/next/contracts/fingerprint.d.ts +16 -0
  55. package/dist/next/contracts/fingerprint.d.ts.map +1 -0
  56. package/dist/next/contracts/fingerprint.js +50 -0
  57. package/dist/next/contracts/fingerprint.js.map +1 -0
  58. package/dist/next/contracts/history.d.ts +71 -0
  59. package/dist/next/contracts/history.d.ts.map +1 -0
  60. package/dist/next/contracts/history.js +3 -0
  61. package/dist/next/contracts/history.js.map +1 -0
  62. package/dist/next/contracts/host-kind.d.ts +40 -0
  63. package/dist/next/contracts/host-kind.d.ts.map +1 -0
  64. package/dist/next/contracts/host-kind.js +37 -0
  65. package/dist/next/contracts/host-kind.js.map +1 -0
  66. package/dist/next/contracts/index.d.ts +7 -0
  67. package/dist/next/contracts/index.d.ts.map +1 -0
  68. package/dist/next/contracts/index.js +6 -0
  69. package/dist/next/contracts/index.js.map +1 -0
  70. package/dist/next/contracts/internal.d.ts +10 -0
  71. package/dist/next/contracts/internal.d.ts.map +1 -0
  72. package/dist/next/contracts/internal.js +9 -0
  73. package/dist/next/contracts/internal.js.map +1 -0
  74. package/dist/next/contracts/names.d.ts +3 -0
  75. package/dist/next/contracts/names.d.ts.map +1 -0
  76. package/dist/next/contracts/names.js +13 -0
  77. package/dist/next/contracts/names.js.map +1 -0
  78. package/dist/next/contracts/params.d.ts +28 -0
  79. package/dist/next/contracts/params.d.ts.map +1 -0
  80. package/dist/next/contracts/params.js +50 -0
  81. package/dist/next/contracts/params.js.map +1 -0
  82. package/dist/next/contracts/schema.d.ts +102 -0
  83. package/dist/next/contracts/schema.d.ts.map +1 -0
  84. package/dist/next/contracts/schema.js +103 -0
  85. package/dist/next/contracts/schema.js.map +1 -0
  86. package/dist/next/contracts/snapshot.d.ts +16 -0
  87. package/dist/next/contracts/snapshot.d.ts.map +1 -0
  88. package/dist/next/contracts/snapshot.js +167 -0
  89. package/dist/next/contracts/snapshot.js.map +1 -0
  90. package/dist/next/data/args.d.ts +50 -0
  91. package/dist/next/data/args.d.ts.map +1 -0
  92. package/dist/next/data/args.js +83 -0
  93. package/dist/next/data/args.js.map +1 -0
  94. package/dist/next/data/errors.d.ts +73 -0
  95. package/dist/next/data/errors.d.ts.map +1 -0
  96. package/dist/next/data/errors.js +107 -0
  97. package/dist/next/data/errors.js.map +1 -0
  98. package/dist/next/data/failure.d.ts +26 -0
  99. package/dist/next/data/failure.d.ts.map +1 -0
  100. package/dist/next/data/failure.js +72 -0
  101. package/dist/next/data/failure.js.map +1 -0
  102. package/dist/next/data/index.d.ts +4 -0
  103. package/dist/next/data/index.d.ts.map +1 -0
  104. package/dist/next/data/index.js +4 -0
  105. package/dist/next/data/index.js.map +1 -0
  106. package/dist/next/data/internal.d.ts +7 -0
  107. package/dist/next/data/internal.d.ts.map +1 -0
  108. package/dist/next/data/internal.js +8 -0
  109. package/dist/next/data/internal.js.map +1 -0
  110. package/dist/next/data/params.d.ts +20 -0
  111. package/dist/next/data/params.d.ts.map +1 -0
  112. package/dist/next/data/params.js +31 -0
  113. package/dist/next/data/params.js.map +1 -0
  114. package/dist/next/data/principal.d.ts +17 -0
  115. package/dist/next/data/principal.d.ts.map +1 -0
  116. package/dist/next/data/principal.js +41 -0
  117. package/dist/next/data/principal.js.map +1 -0
  118. package/dist/next/data/validator.d.ts +12 -0
  119. package/dist/next/data/validator.d.ts.map +1 -0
  120. package/dist/next/data/validator.js +34 -0
  121. package/dist/next/data/validator.js.map +1 -0
  122. package/dist/next/documents/address-source.d.ts +20 -0
  123. package/dist/next/documents/address-source.d.ts.map +1 -0
  124. package/dist/next/documents/address-source.js +44 -0
  125. package/dist/next/documents/address-source.js.map +1 -0
  126. package/dist/next/documents/definition.d.ts +84 -0
  127. package/dist/next/documents/definition.d.ts.map +1 -0
  128. package/dist/next/documents/definition.js +73 -0
  129. package/dist/next/documents/definition.js.map +1 -0
  130. package/dist/next/documents/documents.d.ts +106 -0
  131. package/dist/next/documents/documents.d.ts.map +1 -0
  132. package/dist/next/documents/documents.js +224 -0
  133. package/dist/next/documents/documents.js.map +1 -0
  134. package/dist/next/documents/fence.d.ts +9 -0
  135. package/dist/next/documents/fence.d.ts.map +1 -0
  136. package/dist/next/documents/fence.js +15 -0
  137. package/dist/next/documents/fence.js.map +1 -0
  138. package/dist/next/documents/handles.d.ts +76 -0
  139. package/dist/next/documents/handles.d.ts.map +1 -0
  140. package/dist/next/documents/handles.js +66 -0
  141. package/dist/next/documents/handles.js.map +1 -0
  142. package/dist/next/documents/index.d.ts +4 -0
  143. package/dist/next/documents/index.d.ts.map +1 -0
  144. package/dist/next/documents/index.js +3 -0
  145. package/dist/next/documents/index.js.map +1 -0
  146. package/dist/next/documents/internal.d.ts +9 -0
  147. package/dist/next/documents/internal.d.ts.map +1 -0
  148. package/dist/next/documents/internal.js +9 -0
  149. package/dist/next/documents/internal.js.map +1 -0
  150. package/dist/next/documents/keyed-slot.d.ts +103 -0
  151. package/dist/next/documents/keyed-slot.d.ts.map +1 -0
  152. package/dist/next/documents/keyed-slot.js +395 -0
  153. package/dist/next/documents/keyed-slot.js.map +1 -0
  154. package/dist/next/documents/line.d.ts +7 -0
  155. package/dist/next/documents/line.d.ts.map +1 -0
  156. package/dist/next/documents/line.js +14 -0
  157. package/dist/next/documents/line.js.map +1 -0
  158. package/dist/next/documents/persistence.d.ts +104 -0
  159. package/dist/next/documents/persistence.d.ts.map +1 -0
  160. package/dist/next/documents/persistence.js +128 -0
  161. package/dist/next/documents/persistence.js.map +1 -0
  162. package/dist/next/documents/residency.d.ts +31 -0
  163. package/dist/next/documents/residency.d.ts.map +1 -0
  164. package/dist/next/documents/residency.js +93 -0
  165. package/dist/next/documents/residency.js.map +1 -0
  166. package/dist/next/documents/slot.d.ts +109 -0
  167. package/dist/next/documents/slot.d.ts.map +1 -0
  168. package/dist/next/documents/slot.js +181 -0
  169. package/dist/next/documents/slot.js.map +1 -0
  170. package/dist/next/documents/transaction.d.ts +133 -0
  171. package/dist/next/documents/transaction.d.ts.map +1 -0
  172. package/dist/next/documents/transaction.js +409 -0
  173. package/dist/next/documents/transaction.js.map +1 -0
  174. package/dist/next/host/activity.d.ts +31 -0
  175. package/dist/next/host/activity.d.ts.map +1 -0
  176. package/dist/next/host/activity.js +40 -0
  177. package/dist/next/host/activity.js.map +1 -0
  178. package/dist/next/host/adapted.d.ts +49 -0
  179. package/dist/next/host/adapted.d.ts.map +1 -0
  180. package/dist/next/host/adapted.js +214 -0
  181. package/dist/next/host/adapted.js.map +1 -0
  182. package/dist/next/host/attempt.d.ts +278 -0
  183. package/dist/next/host/attempt.d.ts.map +1 -0
  184. package/dist/next/host/attempt.js +1072 -0
  185. package/dist/next/host/attempt.js.map +1 -0
  186. package/dist/next/host/backoff.d.ts +29 -0
  187. package/dist/next/host/backoff.d.ts.map +1 -0
  188. package/dist/next/host/backoff.js +69 -0
  189. package/dist/next/host/backoff.js.map +1 -0
  190. package/dist/next/host/ctx.d.ts +47 -0
  191. package/dist/next/host/ctx.d.ts.map +1 -0
  192. package/dist/next/host/ctx.js +108 -0
  193. package/dist/next/host/ctx.js.map +1 -0
  194. package/dist/next/host/deadline.d.ts +12 -0
  195. package/dist/next/host/deadline.d.ts.map +1 -0
  196. package/dist/next/host/deadline.js +40 -0
  197. package/dist/next/host/deadline.js.map +1 -0
  198. package/dist/next/host/dependencies.d.ts +65 -0
  199. package/dist/next/host/dependencies.d.ts.map +1 -0
  200. package/dist/next/host/dependencies.js +115 -0
  201. package/dist/next/host/dependencies.js.map +1 -0
  202. package/dist/next/host/destination.d.ts +48 -0
  203. package/dist/next/host/destination.d.ts.map +1 -0
  204. package/dist/next/host/destination.js +101 -0
  205. package/dist/next/host/destination.js.map +1 -0
  206. package/dist/next/host/facet.d.ts +79 -0
  207. package/dist/next/host/facet.d.ts.map +1 -0
  208. package/dist/next/host/facet.js +55 -0
  209. package/dist/next/host/facet.js.map +1 -0
  210. package/dist/next/host/follow.d.ts +52 -0
  211. package/dist/next/host/follow.d.ts.map +1 -0
  212. package/dist/next/host/follow.js +207 -0
  213. package/dist/next/host/follow.js.map +1 -0
  214. package/dist/next/host/host.d.ts +495 -0
  215. package/dist/next/host/host.d.ts.map +1 -0
  216. package/dist/next/host/host.js +1075 -0
  217. package/dist/next/host/host.js.map +1 -0
  218. package/dist/next/host/index.d.ts +17 -0
  219. package/dist/next/host/index.d.ts.map +1 -0
  220. package/dist/next/host/index.js +6 -0
  221. package/dist/next/host/index.js.map +1 -0
  222. package/dist/next/host/internal.d.ts +10 -0
  223. package/dist/next/host/internal.d.ts.map +1 -0
  224. package/dist/next/host/internal.js +8 -0
  225. package/dist/next/host/internal.js.map +1 -0
  226. package/dist/next/host/members.d.ts +50 -0
  227. package/dist/next/host/members.d.ts.map +1 -0
  228. package/dist/next/host/members.js +107 -0
  229. package/dist/next/host/members.js.map +1 -0
  230. package/dist/next/host/native.d.ts +55 -0
  231. package/dist/next/host/native.d.ts.map +1 -0
  232. package/dist/next/host/native.js +92 -0
  233. package/dist/next/host/native.js.map +1 -0
  234. package/dist/next/host/object.d.ts +290 -0
  235. package/dist/next/host/object.d.ts.map +1 -0
  236. package/dist/next/host/object.js +1127 -0
  237. package/dist/next/host/object.js.map +1 -0
  238. package/dist/next/host/parked.d.ts +23 -0
  239. package/dist/next/host/parked.d.ts.map +1 -0
  240. package/dist/next/host/parked.js +79 -0
  241. package/dist/next/host/parked.js.map +1 -0
  242. package/dist/next/host/presence.d.ts +34 -0
  243. package/dist/next/host/presence.d.ts.map +1 -0
  244. package/dist/next/host/presence.js +117 -0
  245. package/dist/next/host/presence.js.map +1 -0
  246. package/dist/next/host/ref-state.d.ts +53 -0
  247. package/dist/next/host/ref-state.d.ts.map +1 -0
  248. package/dist/next/host/ref-state.js +83 -0
  249. package/dist/next/host/ref-state.js.map +1 -0
  250. package/dist/next/host/reference-keys.d.ts +36 -0
  251. package/dist/next/host/reference-keys.d.ts.map +1 -0
  252. package/dist/next/host/reference-keys.js +168 -0
  253. package/dist/next/host/reference-keys.js.map +1 -0
  254. package/dist/next/host/reference-source.d.ts +65 -0
  255. package/dist/next/host/reference-source.d.ts.map +1 -0
  256. package/dist/next/host/reference-source.js +285 -0
  257. package/dist/next/host/reference-source.js.map +1 -0
  258. package/dist/next/host/reference.d.ts +308 -0
  259. package/dist/next/host/reference.d.ts.map +1 -0
  260. package/dist/next/host/reference.js +775 -0
  261. package/dist/next/host/reference.js.map +1 -0
  262. package/dist/next/host/retry-on.d.ts +28 -0
  263. package/dist/next/host/retry-on.d.ts.map +1 -0
  264. package/dist/next/host/retry-on.js +52 -0
  265. package/dist/next/host/retry-on.js.map +1 -0
  266. package/dist/next/host/revocation.d.ts +16 -0
  267. package/dist/next/host/revocation.d.ts.map +1 -0
  268. package/dist/next/host/revocation.js +27 -0
  269. package/dist/next/host/revocation.js.map +1 -0
  270. package/dist/next/host/root.d.ts +27 -0
  271. package/dist/next/host/root.d.ts.map +1 -0
  272. package/dist/next/host/root.js +68 -0
  273. package/dist/next/host/root.js.map +1 -0
  274. package/dist/next/host/route.d.ts +64 -0
  275. package/dist/next/host/route.d.ts.map +1 -0
  276. package/dist/next/host/route.js +190 -0
  277. package/dist/next/host/route.js.map +1 -0
  278. package/dist/next/host/routines.d.ts +76 -0
  279. package/dist/next/host/routines.d.ts.map +1 -0
  280. package/dist/next/host/routines.js +350 -0
  281. package/dist/next/host/routines.js.map +1 -0
  282. package/dist/next/host/sleep.d.ts +9 -0
  283. package/dist/next/host/sleep.d.ts.map +1 -0
  284. package/dist/next/host/sleep.js +40 -0
  285. package/dist/next/host/sleep.js.map +1 -0
  286. package/dist/next/host/staging.d.ts +94 -0
  287. package/dist/next/host/staging.d.ts.map +1 -0
  288. package/dist/next/host/staging.js +302 -0
  289. package/dist/next/host/staging.js.map +1 -0
  290. package/dist/next/host/unbound.d.ts +30 -0
  291. package/dist/next/host/unbound.d.ts.map +1 -0
  292. package/dist/next/host/unbound.js +67 -0
  293. package/dist/next/host/unbound.js.map +1 -0
  294. package/dist/next/host/uuid.d.ts +3 -0
  295. package/dist/next/host/uuid.d.ts.map +1 -0
  296. package/dist/next/host/uuid.js +38 -0
  297. package/dist/next/host/uuid.js.map +1 -0
  298. package/dist/next/index.d.ts +28 -0
  299. package/dist/next/index.d.ts.map +1 -0
  300. package/dist/next/index.js +18 -0
  301. package/dist/next/index.js.map +1 -0
  302. package/dist/next/jobs/definition.d.ts +96 -0
  303. package/dist/next/jobs/definition.d.ts.map +1 -0
  304. package/dist/next/jobs/definition.js +83 -0
  305. package/dist/next/jobs/definition.js.map +1 -0
  306. package/dist/next/jobs/index.d.ts +5 -0
  307. package/dist/next/jobs/index.d.ts.map +1 -0
  308. package/dist/next/jobs/index.js +3 -0
  309. package/dist/next/jobs/index.js.map +1 -0
  310. package/dist/next/jobs/internal.d.ts +3 -0
  311. package/dist/next/jobs/internal.d.ts.map +1 -0
  312. package/dist/next/jobs/internal.js +4 -0
  313. package/dist/next/jobs/internal.js.map +1 -0
  314. package/dist/next/jobs/job.d.ts +152 -0
  315. package/dist/next/jobs/job.d.ts.map +1 -0
  316. package/dist/next/jobs/job.js +320 -0
  317. package/dist/next/jobs/job.js.map +1 -0
  318. package/dist/next/jobs/persisted.d.ts +38 -0
  319. package/dist/next/jobs/persisted.d.ts.map +1 -0
  320. package/dist/next/jobs/persisted.js +95 -0
  321. package/dist/next/jobs/persisted.js.map +1 -0
  322. package/dist/next/jobs/records.d.ts +231 -0
  323. package/dist/next/jobs/records.d.ts.map +1 -0
  324. package/dist/next/jobs/records.js +869 -0
  325. package/dist/next/jobs/records.js.map +1 -0
  326. package/dist/next/jobs/run-states.d.ts +69 -0
  327. package/dist/next/jobs/run-states.d.ts.map +1 -0
  328. package/dist/next/jobs/run-states.js +228 -0
  329. package/dist/next/jobs/run-states.js.map +1 -0
  330. package/dist/next/jobs/run.d.ts +113 -0
  331. package/dist/next/jobs/run.d.ts.map +1 -0
  332. package/dist/next/jobs/run.js +200 -0
  333. package/dist/next/jobs/run.js.map +1 -0
  334. package/dist/next/jobs/running.d.ts +44 -0
  335. package/dist/next/jobs/running.d.ts.map +1 -0
  336. package/dist/next/jobs/running.js +117 -0
  337. package/dist/next/jobs/running.js.map +1 -0
  338. package/dist/next/jobs/stored.d.ts +63 -0
  339. package/dist/next/jobs/stored.d.ts.map +1 -0
  340. package/dist/next/jobs/stored.js +55 -0
  341. package/dist/next/jobs/stored.js.map +1 -0
  342. package/dist/next/link/binary.d.ts +4 -0
  343. package/dist/next/link/binary.d.ts.map +1 -0
  344. package/dist/next/link/binary.js +534 -0
  345. package/dist/next/link/binary.js.map +1 -0
  346. package/dist/next/link/channel.d.ts +63 -0
  347. package/dist/next/link/channel.d.ts.map +1 -0
  348. package/dist/next/link/channel.js +202 -0
  349. package/dist/next/link/channel.js.map +1 -0
  350. package/dist/next/link/errors.d.ts +7 -0
  351. package/dist/next/link/errors.d.ts.map +1 -0
  352. package/dist/next/link/errors.js +21 -0
  353. package/dist/next/link/errors.js.map +1 -0
  354. package/dist/next/link/index.d.ts +8 -0
  355. package/dist/next/link/index.d.ts.map +1 -0
  356. package/dist/next/link/index.js +8 -0
  357. package/dist/next/link/index.js.map +1 -0
  358. package/dist/next/link/internal.d.ts +9 -0
  359. package/dist/next/link/internal.d.ts.map +1 -0
  360. package/dist/next/link/internal.js +10 -0
  361. package/dist/next/link/internal.js.map +1 -0
  362. package/dist/next/link/ipc.d.ts +22 -0
  363. package/dist/next/link/ipc.d.ts.map +1 -0
  364. package/dist/next/link/ipc.js +64 -0
  365. package/dist/next/link/ipc.js.map +1 -0
  366. package/dist/next/link/link.d.ts +34 -0
  367. package/dist/next/link/link.d.ts.map +1 -0
  368. package/dist/next/link/link.js +87 -0
  369. package/dist/next/link/link.js.map +1 -0
  370. package/dist/next/link/message.d.ts +249 -0
  371. package/dist/next/link/message.d.ts.map +1 -0
  372. package/dist/next/link/message.js +123 -0
  373. package/dist/next/link/message.js.map +1 -0
  374. package/dist/next/link/part.d.ts +80 -0
  375. package/dist/next/link/part.d.ts.map +1 -0
  376. package/dist/next/link/part.js +164 -0
  377. package/dist/next/link/part.js.map +1 -0
  378. package/dist/next/link/text.d.ts +6 -0
  379. package/dist/next/link/text.d.ts.map +1 -0
  380. package/dist/next/link/text.js +335 -0
  381. package/dist/next/link/text.js.map +1 -0
  382. package/dist/next/link/values.d.ts +40 -0
  383. package/dist/next/link/values.d.ts.map +1 -0
  384. package/dist/next/link/values.js +117 -0
  385. package/dist/next/link/values.js.map +1 -0
  386. package/dist/next/link/websocket.d.ts +26 -0
  387. package/dist/next/link/websocket.d.ts.map +1 -0
  388. package/dist/next/link/websocket.js +91 -0
  389. package/dist/next/link/websocket.js.map +1 -0
  390. package/dist/next/registries/contribution.d.ts +50 -0
  391. package/dist/next/registries/contribution.d.ts.map +1 -0
  392. package/dist/next/registries/contribution.js +129 -0
  393. package/dist/next/registries/contribution.js.map +1 -0
  394. package/dist/next/registries/entries.d.ts +18 -0
  395. package/dist/next/registries/entries.d.ts.map +1 -0
  396. package/dist/next/registries/entries.js +42 -0
  397. package/dist/next/registries/entries.js.map +1 -0
  398. package/dist/next/registries/index.d.ts +3 -0
  399. package/dist/next/registries/index.d.ts.map +1 -0
  400. package/dist/next/registries/index.js +5 -0
  401. package/dist/next/registries/index.js.map +1 -0
  402. package/dist/next/registries/internal.d.ts +4 -0
  403. package/dist/next/registries/internal.d.ts.map +1 -0
  404. package/dist/next/registries/internal.js +5 -0
  405. package/dist/next/registries/internal.js.map +1 -0
  406. package/dist/next/registries/record.d.ts +94 -0
  407. package/dist/next/registries/record.d.ts.map +1 -0
  408. package/dist/next/registries/record.js +253 -0
  409. package/dist/next/registries/record.js.map +1 -0
  410. package/dist/next/registries/registry.d.ts +74 -0
  411. package/dist/next/registries/registry.d.ts.map +1 -0
  412. package/dist/next/registries/registry.js +14 -0
  413. package/dist/next/registries/registry.js.map +1 -0
  414. package/dist/next/registries/value.d.ts +48 -0
  415. package/dist/next/registries/value.d.ts.map +1 -0
  416. package/dist/next/registries/value.js +199 -0
  417. package/dist/next/registries/value.js.map +1 -0
  418. package/dist/next/remote/calls.d.ts +25 -0
  419. package/dist/next/remote/calls.d.ts.map +1 -0
  420. package/dist/next/remote/calls.js +62 -0
  421. package/dist/next/remote/calls.js.map +1 -0
  422. package/dist/next/remote/consumer.d.ts +42 -0
  423. package/dist/next/remote/consumer.d.ts.map +1 -0
  424. package/dist/next/remote/consumer.js +343 -0
  425. package/dist/next/remote/consumer.js.map +1 -0
  426. package/dist/next/remote/hold.d.ts +130 -0
  427. package/dist/next/remote/hold.d.ts.map +1 -0
  428. package/dist/next/remote/hold.js +537 -0
  429. package/dist/next/remote/hold.js.map +1 -0
  430. package/dist/next/remote/host-link.d.ts +77 -0
  431. package/dist/next/remote/host-link.d.ts.map +1 -0
  432. package/dist/next/remote/host-link.js +182 -0
  433. package/dist/next/remote/host-link.js.map +1 -0
  434. package/dist/next/remote/internal.d.ts +6 -0
  435. package/dist/next/remote/internal.d.ts.map +1 -0
  436. package/dist/next/remote/internal.js +6 -0
  437. package/dist/next/remote/internal.js.map +1 -0
  438. package/dist/next/remote/path.d.ts +46 -0
  439. package/dist/next/remote/path.d.ts.map +1 -0
  440. package/dist/next/remote/path.js +73 -0
  441. package/dist/next/remote/path.js.map +1 -0
  442. package/dist/next/remote/provider.d.ts +76 -0
  443. package/dist/next/remote/provider.d.ts.map +1 -0
  444. package/dist/next/remote/provider.js +506 -0
  445. package/dist/next/remote/provider.js.map +1 -0
  446. package/dist/next/remote/relay.d.ts +58 -0
  447. package/dist/next/remote/relay.d.ts.map +1 -0
  448. package/dist/next/remote/relay.js +117 -0
  449. package/dist/next/remote/relay.js.map +1 -0
  450. package/dist/next/remote/remote-object.d.ts +133 -0
  451. package/dist/next/remote/remote-object.d.ts.map +1 -0
  452. package/dist/next/remote/remote-object.js +411 -0
  453. package/dist/next/remote/remote-object.js.map +1 -0
  454. package/dist/next/remote/replica.d.ts +59 -0
  455. package/dist/next/remote/replica.d.ts.map +1 -0
  456. package/dist/next/remote/replica.js +125 -0
  457. package/dist/next/remote/replica.js.map +1 -0
  458. package/dist/next/state/batch.d.ts +64 -0
  459. package/dist/next/state/batch.d.ts.map +1 -0
  460. package/dist/next/state/batch.js +163 -0
  461. package/dist/next/state/batch.js.map +1 -0
  462. package/dist/next/state/derive.d.ts +52 -0
  463. package/dist/next/state/derive.d.ts.map +1 -0
  464. package/dist/next/state/derive.js +182 -0
  465. package/dist/next/state/derive.js.map +1 -0
  466. package/dist/next/state/index.d.ts +6 -0
  467. package/dist/next/state/index.d.ts.map +1 -0
  468. package/dist/next/state/index.js +4 -0
  469. package/dist/next/state/index.js.map +1 -0
  470. package/dist/next/state/internal.d.ts +6 -0
  471. package/dist/next/state/internal.d.ts.map +1 -0
  472. package/dist/next/state/internal.js +8 -0
  473. package/dist/next/state/internal.js.map +1 -0
  474. package/dist/next/state/native-source.d.ts +106 -0
  475. package/dist/next/state/native-source.d.ts.map +1 -0
  476. package/dist/next/state/native-source.js +240 -0
  477. package/dist/next/state/native-source.js.map +1 -0
  478. package/dist/next/state/watchable.d.ts +114 -0
  479. package/dist/next/state/watchable.d.ts.map +1 -0
  480. package/dist/next/state/watchable.js +156 -0
  481. package/dist/next/state/watchable.js.map +1 -0
  482. package/dist/next/state/writable.d.ts +32 -0
  483. package/dist/next/state/writable.d.ts.map +1 -0
  484. package/dist/next/state/writable.js +49 -0
  485. package/dist/next/state/writable.js.map +1 -0
  486. package/dist/next/store/adapter.d.ts +67 -0
  487. package/dist/next/store/adapter.d.ts.map +1 -0
  488. package/dist/next/store/adapter.js +118 -0
  489. package/dist/next/store/adapter.js.map +1 -0
  490. package/dist/next/store/allocator.d.ts +17 -0
  491. package/dist/next/store/allocator.d.ts.map +1 -0
  492. package/dist/next/store/allocator.js +30 -0
  493. package/dist/next/store/allocator.js.map +1 -0
  494. package/dist/next/store/applier.d.ts +8 -0
  495. package/dist/next/store/applier.d.ts.map +1 -0
  496. package/dist/next/store/applier.js +375 -0
  497. package/dist/next/store/applier.js.map +1 -0
  498. package/dist/next/store/apply-batch.d.ts +12 -0
  499. package/dist/next/store/apply-batch.d.ts.map +1 -0
  500. package/dist/next/store/apply-batch.js +83 -0
  501. package/dist/next/store/apply-batch.js.map +1 -0
  502. package/dist/next/store/archive.d.ts +32 -0
  503. package/dist/next/store/archive.d.ts.map +1 -0
  504. package/dist/next/store/archive.js +129 -0
  505. package/dist/next/store/archive.js.map +1 -0
  506. package/dist/next/store/backend.d.ts +10 -0
  507. package/dist/next/store/backend.d.ts.map +1 -0
  508. package/dist/next/store/backend.js +15 -0
  509. package/dist/next/store/backend.js.map +1 -0
  510. package/dist/next/store/catalog.d.ts +24 -0
  511. package/dist/next/store/catalog.d.ts.map +1 -0
  512. package/dist/next/store/catalog.js +17 -0
  513. package/dist/next/store/catalog.js.map +1 -0
  514. package/dist/next/store/claims.d.ts +23 -0
  515. package/dist/next/store/claims.d.ts.map +1 -0
  516. package/dist/next/store/claims.js +65 -0
  517. package/dist/next/store/claims.js.map +1 -0
  518. package/dist/next/store/columns.d.ts +77 -0
  519. package/dist/next/store/columns.d.ts.map +1 -0
  520. package/dist/next/store/columns.js +77 -0
  521. package/dist/next/store/columns.js.map +1 -0
  522. package/dist/next/store/engine.d.ts +176 -0
  523. package/dist/next/store/engine.d.ts.map +1 -0
  524. package/dist/next/store/engine.js +283 -0
  525. package/dist/next/store/engine.js.map +1 -0
  526. package/dist/next/store/evaluate.d.ts +17 -0
  527. package/dist/next/store/evaluate.d.ts.map +1 -0
  528. package/dist/next/store/evaluate.js +128 -0
  529. package/dist/next/store/evaluate.js.map +1 -0
  530. package/dist/next/store/export.d.ts +17 -0
  531. package/dist/next/store/export.d.ts.map +1 -0
  532. package/dist/next/store/export.js +200 -0
  533. package/dist/next/store/export.js.map +1 -0
  534. package/dist/next/store/expression.d.ts +150 -0
  535. package/dist/next/store/expression.d.ts.map +1 -0
  536. package/dist/next/store/expression.js +268 -0
  537. package/dist/next/store/expression.js.map +1 -0
  538. package/dist/next/store/import.d.ts +10 -0
  539. package/dist/next/store/import.d.ts.map +1 -0
  540. package/dist/next/store/import.js +276 -0
  541. package/dist/next/store/import.js.map +1 -0
  542. package/dist/next/store/index.d.ts +16 -0
  543. package/dist/next/store/index.d.ts.map +1 -0
  544. package/dist/next/store/index.js +13 -0
  545. package/dist/next/store/index.js.map +1 -0
  546. package/dist/next/store/json-column.d.ts +33 -0
  547. package/dist/next/store/json-column.d.ts.map +1 -0
  548. package/dist/next/store/json-column.js +61 -0
  549. package/dist/next/store/json-column.js.map +1 -0
  550. package/dist/next/store/jsonl.d.ts +9 -0
  551. package/dist/next/store/jsonl.d.ts.map +1 -0
  552. package/dist/next/store/jsonl.js +61 -0
  553. package/dist/next/store/jsonl.js.map +1 -0
  554. package/dist/next/store/outbox.d.ts +26 -0
  555. package/dist/next/store/outbox.d.ts.map +1 -0
  556. package/dist/next/store/outbox.js +80 -0
  557. package/dist/next/store/outbox.js.map +1 -0
  558. package/dist/next/store/query.d.ts +39 -0
  559. package/dist/next/store/query.d.ts.map +1 -0
  560. package/dist/next/store/query.js +97 -0
  561. package/dist/next/store/query.js.map +1 -0
  562. package/dist/next/store/refusal.d.ts +15 -0
  563. package/dist/next/store/refusal.d.ts.map +1 -0
  564. package/dist/next/store/refusal.js +36 -0
  565. package/dist/next/store/refusal.js.map +1 -0
  566. package/dist/next/store/rows.d.ts +80 -0
  567. package/dist/next/store/rows.d.ts.map +1 -0
  568. package/dist/next/store/rows.js +183 -0
  569. package/dist/next/store/rows.js.map +1 -0
  570. package/dist/next/store/schema.d.ts +25 -0
  571. package/dist/next/store/schema.d.ts.map +1 -0
  572. package/dist/next/store/schema.js +115 -0
  573. package/dist/next/store/schema.js.map +1 -0
  574. package/dist/next/store/sql.d.ts +73 -0
  575. package/dist/next/store/sql.d.ts.map +1 -0
  576. package/dist/next/store/sql.js +234 -0
  577. package/dist/next/store/sql.js.map +1 -0
  578. package/dist/next/store/step.d.ts +48 -0
  579. package/dist/next/store/step.d.ts.map +1 -0
  580. package/dist/next/store/step.js +50 -0
  581. package/dist/next/store/step.js.map +1 -0
  582. package/dist/next/store/store.d.ts +161 -0
  583. package/dist/next/store/store.d.ts.map +1 -0
  584. package/dist/next/store/store.js +627 -0
  585. package/dist/next/store/store.js.map +1 -0
  586. package/dist/next/store/table-changes.d.ts +29 -0
  587. package/dist/next/store/table-changes.d.ts.map +1 -0
  588. package/dist/next/store/table-changes.js +102 -0
  589. package/dist/next/store/table-changes.js.map +1 -0
  590. package/dist/next/store/table-evolve.d.ts +74 -0
  591. package/dist/next/store/table-evolve.d.ts.map +1 -0
  592. package/dist/next/store/table-evolve.js +201 -0
  593. package/dist/next/store/table-evolve.js.map +1 -0
  594. package/dist/next/store/table-handle.d.ts +67 -0
  595. package/dist/next/store/table-handle.d.ts.map +1 -0
  596. package/dist/next/store/table-handle.js +101 -0
  597. package/dist/next/store/table-handle.js.map +1 -0
  598. package/dist/next/store/table-history.d.ts +75 -0
  599. package/dist/next/store/table-history.d.ts.map +1 -0
  600. package/dist/next/store/table-history.js +42 -0
  601. package/dist/next/store/table-history.js.map +1 -0
  602. package/dist/next/store/table-migration.d.ts +16 -0
  603. package/dist/next/store/table-migration.d.ts.map +1 -0
  604. package/dist/next/store/table-migration.js +202 -0
  605. package/dist/next/store/table-migration.js.map +1 -0
  606. package/dist/next/store/table-writes.d.ts +125 -0
  607. package/dist/next/store/table-writes.d.ts.map +1 -0
  608. package/dist/next/store/table-writes.js +165 -0
  609. package/dist/next/store/table-writes.js.map +1 -0
  610. package/dist/next/store/table.d.ts +80 -0
  611. package/dist/next/store/table.d.ts.map +1 -0
  612. package/dist/next/store/table.js +103 -0
  613. package/dist/next/store/table.js.map +1 -0
  614. package/dist/next/store/text.d.ts +14 -0
  615. package/dist/next/store/text.d.ts.map +1 -0
  616. package/dist/next/store/text.js +51 -0
  617. package/dist/next/store/text.js.map +1 -0
  618. package/dist/next/store/writes.d.ts +5 -0
  619. package/dist/next/store/writes.d.ts.map +1 -0
  620. package/dist/next/store/writes.js +4 -0
  621. package/dist/next/store/writes.js.map +1 -0
  622. package/dist/next-node/compression.d.ts +7 -0
  623. package/dist/next-node/compression.d.ts.map +1 -0
  624. package/dist/next-node/compression.js +24 -0
  625. package/dist/next-node/compression.js.map +1 -0
  626. package/dist/next-node/http/admission.d.ts +63 -0
  627. package/dist/next-node/http/admission.d.ts.map +1 -0
  628. package/dist/next-node/http/admission.js +134 -0
  629. package/dist/next-node/http/admission.js.map +1 -0
  630. package/dist/next-node/http/authenticate.d.ts +21 -0
  631. package/dist/next-node/http/authenticate.d.ts.map +1 -0
  632. package/dist/next-node/http/authenticate.js +34 -0
  633. package/dist/next-node/http/authenticate.js.map +1 -0
  634. package/dist/next-node/http/cookies.d.ts +24 -0
  635. package/dist/next-node/http/cookies.d.ts.map +1 -0
  636. package/dist/next-node/http/cookies.js +62 -0
  637. package/dist/next-node/http/cookies.js.map +1 -0
  638. package/dist/next-node/http/file.d.ts +23 -0
  639. package/dist/next-node/http/file.d.ts.map +1 -0
  640. package/dist/next-node/http/file.js +94 -0
  641. package/dist/next-node/http/file.js.map +1 -0
  642. package/dist/next-node/http/headers.d.ts +37 -0
  643. package/dist/next-node/http/headers.d.ts.map +1 -0
  644. package/dist/next-node/http/headers.js +129 -0
  645. package/dist/next-node/http/headers.js.map +1 -0
  646. package/dist/next-node/http/http.d.ts +100 -0
  647. package/dist/next-node/http/http.d.ts.map +1 -0
  648. package/dist/next-node/http/http.js +462 -0
  649. package/dist/next-node/http/http.js.map +1 -0
  650. package/dist/next-node/http/incoming.d.ts +19 -0
  651. package/dist/next-node/http/incoming.d.ts.map +1 -0
  652. package/dist/next-node/http/incoming.js +31 -0
  653. package/dist/next-node/http/incoming.js.map +1 -0
  654. package/dist/next-node/http/index.d.ts +11 -0
  655. package/dist/next-node/http/index.d.ts.map +1 -0
  656. package/dist/next-node/http/index.js +12 -0
  657. package/dist/next-node/http/index.js.map +1 -0
  658. package/dist/next-node/http/node.d.ts +78 -0
  659. package/dist/next-node/http/node.d.ts.map +1 -0
  660. package/dist/next-node/http/node.js +291 -0
  661. package/dist/next-node/http/node.js.map +1 -0
  662. package/dist/next-node/http/request.d.ts +54 -0
  663. package/dist/next-node/http/request.d.ts.map +1 -0
  664. package/dist/next-node/http/request.js +116 -0
  665. package/dist/next-node/http/request.js.map +1 -0
  666. package/dist/next-node/http/response.d.ts +63 -0
  667. package/dist/next-node/http/response.d.ts.map +1 -0
  668. package/dist/next-node/http/response.js +202 -0
  669. package/dist/next-node/http/response.js.map +1 -0
  670. package/dist/next-node/http/router.d.ts +114 -0
  671. package/dist/next-node/http/router.d.ts.map +1 -0
  672. package/dist/next-node/http/router.js +261 -0
  673. package/dist/next-node/http/router.js.map +1 -0
  674. package/dist/next-node/http/upgrades.d.ts +58 -0
  675. package/dist/next-node/http/upgrades.d.ts.map +1 -0
  676. package/dist/next-node/http/upgrades.js +184 -0
  677. package/dist/next-node/http/upgrades.js.map +1 -0
  678. package/dist/next-node/plugins/build.d.ts +57 -0
  679. package/dist/next-node/plugins/build.d.ts.map +1 -0
  680. package/dist/next-node/plugins/build.js +334 -0
  681. package/dist/next-node/plugins/build.js.map +1 -0
  682. package/dist/next-node/plugins/discover.d.ts +36 -0
  683. package/dist/next-node/plugins/discover.d.ts.map +1 -0
  684. package/dist/next-node/plugins/discover.js +91 -0
  685. package/dist/next-node/plugins/discover.js.map +1 -0
  686. package/dist/next-node/plugins/evaluate.d.ts +33 -0
  687. package/dist/next-node/plugins/evaluate.d.ts.map +1 -0
  688. package/dist/next-node/plugins/evaluate.js +98 -0
  689. package/dist/next-node/plugins/evaluate.js.map +1 -0
  690. package/dist/next-node/plugins/index.d.ts +9 -0
  691. package/dist/next-node/plugins/index.d.ts.map +1 -0
  692. package/dist/next-node/plugins/index.js +11 -0
  693. package/dist/next-node/plugins/index.js.map +1 -0
  694. package/dist/next-node/plugins/install.d.ts +13 -0
  695. package/dist/next-node/plugins/install.d.ts.map +1 -0
  696. package/dist/next-node/plugins/install.js +37 -0
  697. package/dist/next-node/plugins/install.js.map +1 -0
  698. package/dist/next-node/plugins/plugins.d.ts +135 -0
  699. package/dist/next-node/plugins/plugins.d.ts.map +1 -0
  700. package/dist/next-node/plugins/plugins.js +206 -0
  701. package/dist/next-node/plugins/plugins.js.map +1 -0
  702. package/dist/next-node/plugins/runtime.d.ts +41 -0
  703. package/dist/next-node/plugins/runtime.d.ts.map +1 -0
  704. package/dist/next-node/plugins/runtime.js +136 -0
  705. package/dist/next-node/plugins/runtime.js.map +1 -0
  706. package/dist/next-node/plugins/stack.d.ts +16 -0
  707. package/dist/next-node/plugins/stack.d.ts.map +1 -0
  708. package/dist/next-node/plugins/stack.js +61 -0
  709. package/dist/next-node/plugins/stack.js.map +1 -0
  710. package/dist/next-node/plugins/watcher.d.ts +58 -0
  711. package/dist/next-node/plugins/watcher.d.ts.map +1 -0
  712. package/dist/next-node/plugins/watcher.js +281 -0
  713. package/dist/next-node/plugins/watcher.js.map +1 -0
  714. package/dist/next-node/workers/control.d.ts +83 -0
  715. package/dist/next-node/workers/control.d.ts.map +1 -0
  716. package/dist/next-node/workers/control.js +77 -0
  717. package/dist/next-node/workers/control.js.map +1 -0
  718. package/dist/next-node/workers/index.d.ts +5 -0
  719. package/dist/next-node/workers/index.d.ts.map +1 -0
  720. package/dist/next-node/workers/index.js +7 -0
  721. package/dist/next-node/workers/index.js.map +1 -0
  722. package/dist/next-node/workers/lock.d.ts +21 -0
  723. package/dist/next-node/workers/lock.d.ts.map +1 -0
  724. package/dist/next-node/workers/lock.js +137 -0
  725. package/dist/next-node/workers/lock.js.map +1 -0
  726. package/dist/next-node/workers/main.d.ts +46 -0
  727. package/dist/next-node/workers/main.d.ts.map +1 -0
  728. package/dist/next-node/workers/main.js +230 -0
  729. package/dist/next-node/workers/main.js.map +1 -0
  730. package/dist/next-node/workers/process.d.ts +42 -0
  731. package/dist/next-node/workers/process.d.ts.map +1 -0
  732. package/dist/next-node/workers/process.js +125 -0
  733. package/dist/next-node/workers/process.js.map +1 -0
  734. package/dist/next-node/workers/workers.d.ts +80 -0
  735. package/dist/next-node/workers/workers.d.ts.map +1 -0
  736. package/dist/next-node/workers/workers.js +572 -0
  737. package/dist/next-node/workers/workers.js.map +1 -0
  738. package/dist/object.d.ts +4 -4
  739. package/dist/object.d.ts.map +1 -1
  740. package/dist/object.js +3 -4
  741. package/dist/object.js.map +1 -1
  742. package/dist/output.d.ts +9 -3
  743. package/dist/output.d.ts.map +1 -1
  744. package/dist/output.js +21 -9
  745. package/dist/output.js.map +1 -1
  746. package/dist/remote.d.ts.map +1 -1
  747. package/dist/remote.js +2 -2
  748. package/dist/remote.js.map +1 -1
  749. package/dist/schema.d.ts +8 -4
  750. package/dist/schema.d.ts.map +1 -1
  751. package/dist/schema.js +180 -5
  752. package/dist/schema.js.map +1 -1
  753. package/dist/sqlite/cloudflare.d.ts +54 -0
  754. package/dist/sqlite/cloudflare.d.ts.map +1 -0
  755. package/dist/sqlite/cloudflare.js +144 -0
  756. package/dist/sqlite/cloudflare.js.map +1 -0
  757. package/dist/sqlite/database.d.ts +40 -0
  758. package/dist/sqlite/database.d.ts.map +1 -0
  759. package/dist/sqlite/database.js +2 -0
  760. package/dist/sqlite/database.js.map +1 -0
  761. package/dist/sqlite/index.d.ts +4 -0
  762. package/dist/sqlite/index.d.ts.map +1 -0
  763. package/dist/sqlite/index.js +3 -0
  764. package/dist/sqlite/index.js.map +1 -0
  765. package/dist/sqlite/migrations.d.ts +10 -0
  766. package/dist/sqlite/migrations.d.ts.map +1 -0
  767. package/dist/sqlite/migrations.js +33 -0
  768. package/dist/sqlite/migrations.js.map +1 -0
  769. package/dist/sqlite/node.d.ts +41 -0
  770. package/dist/sqlite/node.d.ts.map +1 -0
  771. package/dist/sqlite/node.js +191 -0
  772. package/dist/sqlite/node.js.map +1 -0
  773. package/dist/sqlite/schema.d.ts +3 -0
  774. package/dist/sqlite/schema.d.ts.map +1 -0
  775. package/dist/sqlite/schema.js +10 -0
  776. package/dist/sqlite/schema.js.map +1 -0
  777. package/dist/telemetry-sqlite/index.d.ts +24 -0
  778. package/dist/telemetry-sqlite/index.d.ts.map +1 -0
  779. package/dist/telemetry-sqlite/index.js +273 -0
  780. package/dist/telemetry-sqlite/index.js.map +1 -0
  781. package/dist/telemetry-sqlite/store.d.ts +9 -0
  782. package/dist/telemetry-sqlite/store.d.ts.map +1 -0
  783. package/dist/telemetry-sqlite/store.js +110 -0
  784. package/dist/telemetry-sqlite/store.js.map +1 -0
  785. package/dist/watch.d.ts +194 -0
  786. package/dist/watch.d.ts.map +1 -0
  787. package/dist/watch.js +383 -0
  788. package/dist/watch.js.map +1 -0
  789. package/dist/wire.d.ts +174 -193
  790. package/dist/wire.d.ts.map +1 -1
  791. package/dist/wire.js +81 -80
  792. package/dist/wire.js.map +1 -1
  793. package/docs/guide.md +15 -15
  794. package/docs/next/benchmarks.md +959 -0
  795. package/docs/next/decisions.md +2957 -0
  796. package/docs/next/dependencies/book.md +1671 -0
  797. package/docs/next/dependencies/index.html +2641 -0
  798. package/docs/next/dependencies/model.md +330 -0
  799. package/docs/next/design.md +2554 -0
  800. package/docs/next/durable-observers/book.md +432 -0
  801. package/docs/next/durable-observers/index.html +517 -0
  802. package/docs/next/flow-control/book.md +333 -0
  803. package/docs/next/flow-control/fold/index.html +265 -0
  804. package/docs/next/flow-control/index.html +548 -0
  805. package/docs/next/flow-control/window/index.html +228 -0
  806. package/docs/next/guide-plugins-hosts/book.md +607 -0
  807. package/docs/next/guide-plugins-hosts/index.html +652 -0
  808. package/docs/next/http-workers/book.md +378 -0
  809. package/docs/next/http-workers/index.html +515 -0
  810. package/docs/next/layer-1.md +311 -0
  811. package/docs/next/layer-2.md +216 -0
  812. package/docs/next/plugin-model/book.md +186 -0
  813. package/docs/next/plugin-model/index.html +310 -0
  814. package/docs/next/plugin-primer/book.md +273 -0
  815. package/docs/next/plugin-primer/index.html +430 -0
  816. package/docs/next/slice-1.md +236 -0
  817. package/docs/next/slice-10.md +285 -0
  818. package/docs/next/slice-11.md +93 -0
  819. package/docs/next/slice-2.md +174 -0
  820. package/docs/next/slice-3a.md +296 -0
  821. package/docs/next/slice-3b.md +197 -0
  822. package/docs/next/slice-4.md +146 -0
  823. package/docs/next/slice-4a.md +418 -0
  824. package/docs/next/slice-4b.md +208 -0
  825. package/docs/next/slice-5.md +281 -0
  826. package/docs/next/slice-6a.md +676 -0
  827. package/docs/next/slice-6b.md +332 -0
  828. package/docs/next/slice-7a.md +130 -0
  829. package/docs/next/slice-7b/book.md +608 -0
  830. package/docs/next/slice-7b/index.html +842 -0
  831. package/docs/next/slice-7b.md +255 -0
  832. package/docs/next/slice-7c.md +165 -0
  833. package/docs/next/slice-8.md +194 -0
  834. package/docs/next/slices.md +230 -0
  835. package/docs/next/store/book.md +665 -0
  836. package/docs/next/store/index.html +861 -0
  837. package/docs/next/store/walkthrough.md +193 -0
  838. package/docs/spec.md +9 -9
  839. package/docs/tutorial.md +26 -25
  840. package/package.json +42 -5
  841. package/src/delta/README.md +69 -0
@@ -0,0 +1,775 @@
1
+ // References (§7): what `get` and `hold` return, a plain object built from the contract's members, and its binding to
2
+ // the object: counted as a reference, it follows the object's state, parks calls while loading, keeps the
3
+ // per-reference watches and is released once. A binding whose object a reload removed, or whose version it no longer
4
+ // binds, waits unbound and binds again (slice 7b §6); one of an older version reads adapted members (Q10).
5
+ import { BACKGROUND_CONTEXT } from "../../context/index.js";
6
+ import { currentVariants, LOCAL, takesNoArgs, } from "../contracts/internal.js";
7
+ import { ChordError } from "../data/index.js";
8
+ import { Keyed, Singleton } from "../documents/internal.js";
9
+ import { RETRY_HOPS } from "../link/internal.js";
10
+ import { Constant, Source } from "../state/internal.js";
11
+ import { withLinkedAbortSignal } from "./ctx.js";
12
+ import { ParkedCalls } from "./parked.js";
13
+ import { LOADING, ReferenceState } from "./ref-state.js";
14
+ import { ReferenceKeys } from "./reference-keys.js";
15
+ import { ReferenceSource } from "./reference-source.js";
16
+ /** A walk starting here: `ref.retry()`'s, with the first host's budget, or a `retry` message's, with one hop less. */
17
+ export function retryWalk(hops = RETRY_HOPS) {
18
+ return { visited: new Set(), hops };
19
+ }
20
+ const WAIT = { kind: "wait" };
21
+ const DONE = { kind: "done" };
22
+ /**
23
+ * A reference's binding to its object: counted by the object as one of its references while bound, and told of each
24
+ * change of its state. Calls run while live, park while loading (sent in order once live) and reject while failed.
25
+ * Released, or ended with its object, it ends the watches taken through it and rejects the calls made through it.
26
+ */
27
+ export class Binding {
28
+ reference;
29
+ /** Who calls through this reference: the principal it was got as, and this host's incarnation. */
30
+ caller;
31
+ /** The contract's name, for errors. */
32
+ #name;
33
+ /** The consumer's contract (its version is the binding's) until the reference is released (it keeps none then). */
34
+ #contract;
35
+ /** How long a call made while loading waits: the reference's `readyTimeout`. */
36
+ #parkTimeout;
37
+ #state;
38
+ #watches = new Set();
39
+ /**
40
+ * Aborted when the reference ends: its calls' callers are rejected and their handlers' contexts aborted. Made by the
41
+ * first call and dropped at the end, so a released reference keeps no error (whose stack keeps its frames).
42
+ */
43
+ #calls;
44
+ /** Calls made while loading; made by the first. */
45
+ #parked;
46
+ /** Waits for a state (getters, member watches before the first binding); each checks the state at every change. */
47
+ #waiters = new Set();
48
+ /** `ref.state`, made on first access. */
49
+ #refState;
50
+ /** The keys its object's factory pinned with `ref.member.at(key)`: pinned once bound, released with it. */
51
+ #ats = [];
52
+ /** Its state members as consumers follow them (`ReferenceSource`), by name; each made by its first use. */
53
+ #sources;
54
+ /** The keys of its object's keyed members it holds (key watches, `at(key)` pins); made by the first. */
55
+ #heldKeys;
56
+ /** The instance it attached to last: it takes last values only from that one (never one it never followed). */
57
+ #attached;
58
+ constructor(contract, batch, dependent, caller, parkTimeout) {
59
+ this.#name = contract.name;
60
+ this.#contract = contract;
61
+ this.caller = caller;
62
+ this.#parkTimeout = parkTimeout;
63
+ this.#state = { kind: "unbound", batch, dependent };
64
+ const reference = { release: () => this.release(), retry: () => this.retry() };
65
+ Object.defineProperty(reference, "state", { get: () => this.#watchableState(), enumerable: true });
66
+ // Every member of every variant (one kind and signature per name, D11); the bound variant decides which work.
67
+ const methods = new Map();
68
+ for (const variant of currentVariants(contract).values()) {
69
+ for (const member of variant.state.keys())
70
+ reference[member] = new ReferenceMember(this, member);
71
+ for (const member of variant.keyed.keys())
72
+ reference[member] = new ReferenceKeyed(this, member);
73
+ for (const [member, method] of variant.methods)
74
+ methods.set(member, method);
75
+ }
76
+ for (const [member, method] of methods) {
77
+ // A method without arguments omits them; `null` is their internal and wire form.
78
+ reference[member] = takesNoArgs(method)
79
+ ? async (context) => this.#call(member, null, context)
80
+ : async (args, context) => this.#call(member, args, context);
81
+ }
82
+ if (contract.kind === "remote") {
83
+ Object.defineProperty(reference, "variant", { get: () => this.#variant(), enumerable: true });
84
+ }
85
+ // Built from the contract's own member lists.
86
+ this.reference = reference;
87
+ }
88
+ /** The consumer's contract: its version is the binding's. Only an unreleased binding is asked. */
89
+ get contract() {
90
+ return this.#contract;
91
+ }
92
+ /** The object whose attempt declared this reference, until it is released. */
93
+ get dependent() {
94
+ const state = this.#state;
95
+ return state.kind === "released" ? undefined : state.dependent;
96
+ }
97
+ /** Whom it acts for (the unbound index's revocation). */
98
+ get principal() {
99
+ return this.caller.principal;
100
+ }
101
+ /** The reference's state. */
102
+ get refState() {
103
+ const state = this.#state;
104
+ if (state.kind === "bound")
105
+ return state.target.state;
106
+ if (state.kind === "waiting")
107
+ return state.failure ?? LOADING;
108
+ if (state.kind === "refused")
109
+ return state.failure;
110
+ return state.kind === "unbound" ? LOADING : state.state;
111
+ }
112
+ /** The object it is bound to; `undefined` while it is not bound. */
113
+ get target() {
114
+ return this.#state.kind === "bound" ? this.#state.target : undefined;
115
+ }
116
+ /** The object in errors: its label once bound, else the contract's name. */
117
+ get label() {
118
+ return this.#state.kind === "bound" ? this.#state.target.label : this.#name;
119
+ }
120
+ /** The error of the object's last failure while none went live since, or of the check that left it unbound. */
121
+ get lastFailure() {
122
+ const state = this.#state;
123
+ if (state.kind === "refused")
124
+ return state.failure.cause.error;
125
+ if (state.kind === "waiting")
126
+ return state.failure?.cause.error;
127
+ return state.kind === "bound" ? state.target.lastFailure : undefined;
128
+ }
129
+ /**
130
+ * Binds to `target`, which counts this binding as a reference; its members and keys follow what `target` shows now
131
+ * (one frame from their last values), and the reference takes its state.
132
+ */
133
+ bind(target) {
134
+ const state = this.#state;
135
+ if (state.kind !== "unbound")
136
+ return;
137
+ this.#state = { kind: "bound", batch: state.batch, dependent: state.dependent, target };
138
+ target.hold(this);
139
+ // `hold` may release it at once (a presence derive): `retarget` sees that. A batch only when members move.
140
+ if (this.following)
141
+ state.batch.within(() => this.retarget(), BACKGROUND_CONTEXT);
142
+ else
143
+ this.retarget();
144
+ this.moved();
145
+ }
146
+ /** Whether its members or keys were used: `retarget` moves them (in a batch). */
147
+ get following() {
148
+ return this.#sources !== undefined || this.#heldKeys !== undefined;
149
+ }
150
+ /**
151
+ * Inside a batch when `following`: its members and keys follow what its object shows now (`Target.followed`): the live instance's
152
+ * members (moved there, one frame each), or their last values (one `failed` call for a failure). The first time it
153
+ * points at nothing, every member of its version gets its last value, read or not.
154
+ */
155
+ retarget() {
156
+ const state = this.#state;
157
+ if (state.kind !== "bound")
158
+ return;
159
+ const { target } = state;
160
+ const { version } = this.contract;
161
+ const attachable = target.attachable;
162
+ if (attachable !== undefined)
163
+ this.#attached = attachable;
164
+ // Detaching from an instance it attached to: every member keeps its last value (none before it ever attached).
165
+ else if (this.#attached !== undefined)
166
+ this.#keepAll(this.#attached);
167
+ const attached = this.#attached;
168
+ for (const [member, source] of this.#sources ?? [])
169
+ place(source, target.followed(member, version), attached);
170
+ // Its last values taken: it keeps no node of that instance (GC).
171
+ if (attachable === undefined)
172
+ this.#attached = undefined;
173
+ this.#heldKeys?.follow(BACKGROUND_CONTEXT);
174
+ }
175
+ /**
176
+ * Its object left it (slice 7b §6): its type was removed, or its provider no longer binds its version. The request
177
+ * waits unbound with `removal.cause` in the host's index, its members and keys keeping their last values (taken from
178
+ * the instance it leaves; one `failed` call), and binds again, by name, when a publication serves it: its members
179
+ * move to the next object's instance and its keys pin there again (one frame each); parked calls flush or reject;
180
+ * presence lists it again.
181
+ */
182
+ removed(removal) {
183
+ const state = this.#state;
184
+ if (state.kind !== "bound")
185
+ return;
186
+ const { error } = removal.cause;
187
+ state.batch.within(() => {
188
+ // Its last values from the instance it attached to (one refused at its binding attached to none).
189
+ if (this.#attached !== undefined)
190
+ this.#keepAll(this.#attached);
191
+ for (const source of this.#sources?.values() ?? [])
192
+ source.fail(error, BACKGROUND_CONTEXT);
193
+ this.#heldKeys?.fail(error, BACKGROUND_CONTEXT);
194
+ }, BACKGROUND_CONTEXT);
195
+ // Its last values taken: it keeps no node of that instance (GC).
196
+ this.#attached = undefined;
197
+ this.#state = { kind: "unbound", batch: state.batch, dependent: state.dependent };
198
+ removal.host.rewait(this, this.contract, removal.params, removal.cause, removal.context);
199
+ }
200
+ /**
201
+ * Every state member of its version, in the variant of the instance it attached to (its object may be live no more),
202
+ * gets a source, read or not, so each keeps a last value while it points at nothing (no-op for one already made).
203
+ */
204
+ #keepAll(attached) {
205
+ const variant = currentVariants(this.contract).get(attached.variant ?? LOCAL);
206
+ for (const member of variant?.state.keys() ?? [])
207
+ this.#memberSource(member);
208
+ }
209
+ /**
210
+ * Leaves the reference unbound in the host's unbound index (`leave` takes it out): `loading` before the publication
211
+ * (no `cause`), else `failed` with `cause` (`waiting`); `place` checks it again when the index wakes it.
212
+ */
213
+ wait(cause, place, leave) {
214
+ const state = this.#state;
215
+ if (state.kind !== "unbound")
216
+ return;
217
+ // Kept while it waits: its stack made text now, so it keeps none of the frames' objects (an ended instance's).
218
+ if (cause !== undefined)
219
+ void cause.error.stack;
220
+ const failure = cause === undefined ? undefined : { kind: "failed", cause, retryAt: undefined };
221
+ const { batch, dependent } = state;
222
+ this.#state = { kind: "waiting", batch, dependent, failure, place, leave };
223
+ // Unchanged while loading: nothing to tell.
224
+ if (failure !== undefined)
225
+ this.moved();
226
+ }
227
+ /** Woken by the unbound index (out of it already): checked again where it goes. */
228
+ wake() {
229
+ const state = this.#state;
230
+ if (state.kind !== "waiting")
231
+ return;
232
+ const { batch, dependent } = state;
233
+ this.#state = { kind: "unbound", batch, dependent };
234
+ state.place();
235
+ }
236
+ /**
237
+ * A reference that cannot be bound (where it goes refused it): failed broken with `cause` until `ref.retry()` runs
238
+ * `bind` again (a route's `authorize` may admit it later).
239
+ */
240
+ refuse(cause, bind) {
241
+ const state = this.#state;
242
+ if (state.kind !== "unbound")
243
+ return;
244
+ const failure = { kind: "failed", cause, retryAt: undefined };
245
+ this.#state = { kind: "refused", batch: state.batch, dependent: state.dependent, failure, bind };
246
+ this.moved();
247
+ }
248
+ /**
249
+ * The state may have changed: `ref.state`'s watches are told; live sends the parked calls in order, failed
250
+ * rejects them with the cause; waits for a state decide; the object whose attempt declared it re-evaluates.
251
+ */
252
+ moved() {
253
+ this.#refState?.moved();
254
+ const state = this.refState;
255
+ if (state.kind === "live") {
256
+ this.#parked?.flush((method, args, context) => this.#send(method, args, context), () => this.refState.kind === "live");
257
+ }
258
+ else if (state.kind === "failed") {
259
+ this.#parked?.reject(state.cause.error);
260
+ }
261
+ for (const waiter of [...this.#waiters])
262
+ waiter.check();
263
+ this.dependent?.dependencyMoved();
264
+ }
265
+ /** Resolves when the reference is live; rejects with a broken failure's error, or its end. Getters wait for it. */
266
+ live(context) {
267
+ return this.#until((state) => {
268
+ if (state.kind === "live")
269
+ return DONE;
270
+ const broken = state.kind === "failed" && state.cause.kind === "broken";
271
+ return broken ? { kind: "failed", error: state.cause.error } : WAIT;
272
+ }, context);
273
+ }
274
+ /**
275
+ * The state member behind `member`, as consumers follow it (`ReferenceSource`): the instance's member while its
276
+ * object is live, its last value while it points at nothing; reads throw `released`, the failure's error, or
277
+ * `not_ready` when it never had a value.
278
+ */
279
+ member(member) {
280
+ return this.#memberSource(member);
281
+ }
282
+ /** The source of state member `member`, made by its first use, following what its target shows now. */
283
+ #memberSource(member) {
284
+ this.#sources ??= new Map();
285
+ let source = this.#sources.get(member);
286
+ if (source !== undefined)
287
+ return source;
288
+ const state = this.#state;
289
+ // A released reference throws its end (`#target`): it makes no source.
290
+ if (state.kind === "released")
291
+ throw state.state.error;
292
+ source = new ReferenceSource(state.batch, this);
293
+ this.#sources.set(member, source);
294
+ // New, nothing follows it yet: placing it needs no batch.
295
+ if (state.kind === "bound")
296
+ place(source, state.target.followed(member, this.contract.version), this.#attached);
297
+ return source;
298
+ }
299
+ /** What a read of a member that never had a value throws: `released`, the failure's error, or `not_ready`. */
300
+ none() {
301
+ try {
302
+ this.#target();
303
+ }
304
+ catch (error) {
305
+ return error;
306
+ }
307
+ return new ChordError({ code: "not_ready", message: `${this.label}: not live yet` });
308
+ }
309
+ /** The keyed member `member`'s slot (slice 6a §12), as `member` resolves a state member. */
310
+ keyedSlot(member) {
311
+ return this.#target().keyedMember(member);
312
+ }
313
+ /** How this reference reads keyed member `member`'s documents (`Target.keyedMapping`), as `keyedSlot` resolves. */
314
+ keyedMapping(member) {
315
+ return this.#target().keyedMapping(member, this.contract.version);
316
+ }
317
+ /**
318
+ * Holds `key` of keyed member `member` (a key watch, a factory's `at(key)`, an object re-exposing this member): its
319
+ * source, pinned on the live instance and following its object's instances (`ReferenceKeys`); `release` once.
320
+ */
321
+ pinKey(member, key, context) {
322
+ const state = this.#state;
323
+ if (state.kind === "released")
324
+ return Promise.reject(state.state.error);
325
+ this.#heldKeys ??= new ReferenceKeys({
326
+ batch: state.batch,
327
+ version: this.contract.version,
328
+ target: () => this.target,
329
+ none: () => this.none(),
330
+ });
331
+ return this.#heldKeys.hold(member, key, context);
332
+ }
333
+ /** The bound object unless it failed: throws `released`, the failure's error, `not_ready` before the binding. */
334
+ #target() {
335
+ const state = this.#state;
336
+ switch (state.kind) {
337
+ case "bound": {
338
+ const current = state.target.state;
339
+ if (current.kind === "failed")
340
+ throw current.cause.error;
341
+ return state.target;
342
+ }
343
+ case "unbound":
344
+ throw new ChordError({ code: "not_ready", message: `${this.#name}: not live yet` });
345
+ case "waiting":
346
+ if (state.failure === undefined) {
347
+ throw new ChordError({ code: "not_ready", message: `${this.#name}: not live yet` });
348
+ }
349
+ throw state.failure.cause.error;
350
+ case "refused":
351
+ throw state.failure.cause.error;
352
+ case "released":
353
+ throw state.state.error;
354
+ }
355
+ }
356
+ /**
357
+ * A watch of `member` that ends when this reference is released, through its member (`ReferenceSource`): opened at
358
+ * once once it has a value (its last one while its object is not live, frames again when it is); before its first
359
+ * value it waits for its object's (`firstValues`: through failures, until the reference ends or `context` aborts).
360
+ */
361
+ async watch(member, context) {
362
+ // Checked here too: a constant's own watch has no batch to check. A released reference throws below.
363
+ if (this.#state.kind !== "released")
364
+ this.#state.batch.assertOutside("watch");
365
+ const source = this.#memberSource(member);
366
+ // Never had a value: it waits for its object's, as before the first binding.
367
+ if (source.unbound)
368
+ await this.firstValues(context);
369
+ return this.follow(source.openWatch(context));
370
+ }
371
+ /**
372
+ * Resolves once its object's members have values (its first binding, for a watch on a reference that never had any);
373
+ * rejects only when the reference ends (released, revoked, its host closed) or `context` aborts: a failure is waited
374
+ * through (Opus G3).
375
+ */
376
+ async firstValues(context) {
377
+ if (this.#state.kind === "bound" && this.#state.target.hydrated)
378
+ return;
379
+ await this.#until((state) => (state.kind === "live" ? DONE : WAIT), context);
380
+ }
381
+ /** Resolves once the object's members have values; rejects when the reference fails or is released first. */
382
+ async hydrated(context) {
383
+ if (this.#state.kind === "bound" && this.#state.target.hydrated)
384
+ return;
385
+ await this.#until((state) => {
386
+ if (state.kind === "live")
387
+ return DONE;
388
+ if (state.kind === "failed")
389
+ return { kind: "failed", error: state.cause.error };
390
+ return WAIT;
391
+ }, context);
392
+ }
393
+ /**
394
+ * Ends `watch` when this reference is released; returns it. A watch opened while the reference was released (an
395
+ * async keyed watch racing `release`) is ended at once, its pin with it, and the caller gets `released`.
396
+ */
397
+ follow(watch) {
398
+ if (this.#state.kind === "released") {
399
+ watch.end({ kind: "ended" });
400
+ throw this.#state.state.error;
401
+ }
402
+ this.#watches.add(watch);
403
+ void watch.closed.then(() => this.#watches.delete(watch));
404
+ return watch;
405
+ }
406
+ /**
407
+ * `ref.member.at(key)`: only while its object's factory runs (the reference not yet bound); pinned once bound
408
+ * (`pinKeys`), released with the reference.
409
+ */
410
+ at(member, key) {
411
+ if (this.#state.kind !== "unbound" || this.#state.dependent === undefined) {
412
+ throw new Error(`${this.#name}: ${member}.at(key) is valid only in the factory`);
413
+ }
414
+ const at = new KeyedMemberAt(this, member, key);
415
+ this.#ats.push(at);
416
+ return at;
417
+ }
418
+ /** Whether its object's factory pinned keys on it (`at(key)`). */
419
+ get pinsKeys() {
420
+ return this.#ats.length > 0;
421
+ }
422
+ /**
423
+ * Pins the keys of `at(key)` on the live object's keyed members and loads those not in memory, before the
424
+ * dependent goes live (slice 6a §12); `undefined` when there are none. A failed load rejects.
425
+ */
426
+ pinKeys(context) {
427
+ if (this.#ats.length === 0)
428
+ return undefined;
429
+ return (async () => {
430
+ for (const at of this.#ats)
431
+ await at.pin(this, context);
432
+ })();
433
+ }
434
+ /**
435
+ * `ref.retry()`, as a step of `walk` (a new one for `ref.retry()`, passed on through parked objects): the object is
436
+ * asked for an attempt now (ignored unless failed; a parked one passes it on); a refused reference is placed again;
437
+ * one waiting in the index is left as it is (an event wakes it).
438
+ */
439
+ retry(walk = retryWalk()) {
440
+ const state = this.#state;
441
+ if (state.kind === "bound") {
442
+ state.target.retry(walk);
443
+ return;
444
+ }
445
+ if (state.kind !== "refused")
446
+ return;
447
+ this.#state = { kind: "unbound", batch: state.batch, dependent: state.dependent };
448
+ this.moved();
449
+ state.bind();
450
+ }
451
+ /** Releases the reference (idempotent); the object may end when it was its last. */
452
+ release() {
453
+ const state = this.#state;
454
+ if (state.kind === "released")
455
+ return;
456
+ state.batch.assertOutside("release");
457
+ // First: an object over a link rejects the calls itself and sends no cancel for them.
458
+ if (state.kind === "bound")
459
+ state.target.unhold(this);
460
+ this.end(this.#released());
461
+ }
462
+ /**
463
+ * Ends the reference without releasing it from its object (it ended): watches end, calls (running and parked)
464
+ * reject with `error`, `ref.state` is `ended` with it; the object whose attempt declared it checks again.
465
+ */
466
+ end(error) {
467
+ // Kept by `ref.state`: its stack is made text now, so the error holds none of the frames' objects.
468
+ void error.stack;
469
+ const ended = { kind: "ended", error };
470
+ const previous = this.#state;
471
+ this.#state = { kind: "released", state: ended };
472
+ this.#contract = undefined;
473
+ if (previous.kind === "waiting")
474
+ previous.leave();
475
+ for (const at of this.#ats)
476
+ at.release();
477
+ // Its members' and keys' watches end, derives over them are marked; their instance subscriptions go.
478
+ const sources = this.#sources;
479
+ const keys = this.#heldKeys;
480
+ this.#sources = undefined;
481
+ this.#heldKeys = undefined;
482
+ this.#attached = undefined;
483
+ if (previous.kind !== "released" && (sources !== undefined || keys !== undefined)) {
484
+ const end = () => {
485
+ for (const source of sources?.values() ?? [])
486
+ source.end(error);
487
+ keys?.end(error);
488
+ };
489
+ // A batch only when something still follows them (an ending object's derives detached already).
490
+ const used = keys !== undefined || [...(sources?.values() ?? [])].some((source) => source.inUse);
491
+ if (used)
492
+ previous.batch.within(end, BACKGROUND_CONTEXT);
493
+ else
494
+ end();
495
+ }
496
+ this.#calls?.abort(error);
497
+ this.#calls = undefined;
498
+ this.#parked?.reject(error);
499
+ this.#parked = undefined;
500
+ for (const watch of this.#watches)
501
+ watch.end({ kind: "ended" });
502
+ this.#refState?.released(ended);
503
+ // Each removes itself; promise reactions run later.
504
+ for (const waiter of this.#waiters)
505
+ waiter.end(error);
506
+ // An ended dependency breaks a parked dependent (it cannot come back).
507
+ if (previous.kind !== "released")
508
+ previous.dependent?.dependencyMoved();
509
+ }
510
+ #call(method, args, context) {
511
+ const state = this.refState;
512
+ switch (state.kind) {
513
+ case "live":
514
+ // Calls queued before it went live are still being sent: a new one never overtakes them.
515
+ if (this.#parked?.waiting)
516
+ return this.#parked.park(method, args, context);
517
+ return this.#send(method, args, context);
518
+ case "loading":
519
+ this.#parked ??= new ParkedCalls(this.#parkTimeout, this.label);
520
+ return this.#parked.park(method, args, context);
521
+ case "failed":
522
+ throw state.cause.error;
523
+ case "ended":
524
+ throw state.error;
525
+ }
526
+ }
527
+ /** Calls the live object; the call is aborted when the reference ends. */
528
+ #send(method, args, context) {
529
+ // Only a bound reference is live.
530
+ const { target } = this.#state;
531
+ this.#calls ??= new AbortController();
532
+ const linked = withLinkedAbortSignal(this.#calls.signal, context);
533
+ return target.call(method, args, linked.context, this.caller, this.contract.version).finally(linked.release);
534
+ }
535
+ /**
536
+ * Settles once `decide` does for the reference's state, checked now and at every change; rejects when the reference
537
+ * ends (with its error, `released` when it is released already) or `context` aborts.
538
+ */
539
+ #until(decide, context) {
540
+ if (this.#state.kind === "released")
541
+ return Promise.reject(this.#state.state.error);
542
+ const { promise, resolve, reject } = Promise.withResolvers();
543
+ const signal = context.abortSignal;
544
+ const settle = (done) => {
545
+ this.#waiters.delete(waiter);
546
+ signal?.removeEventListener("abort", abort);
547
+ done();
548
+ };
549
+ const waiter = {
550
+ check: () => {
551
+ const decision = decide(this.refState);
552
+ if (decision.kind === "done")
553
+ settle(resolve);
554
+ else if (decision.kind === "failed")
555
+ settle(() => reject(decision.error));
556
+ },
557
+ end: (error) => settle(() => reject(error)),
558
+ };
559
+ const abort = () => settle(() => reject(signal?.reason));
560
+ this.#waiters.add(waiter);
561
+ signal?.addEventListener("abort", abort, { once: true });
562
+ if (signal?.aborted)
563
+ abort();
564
+ else
565
+ waiter.check();
566
+ return promise;
567
+ }
568
+ #watchableState() {
569
+ if (this.#refState !== undefined)
570
+ return this.#refState;
571
+ const state = this.#state;
572
+ // A released reference's state never changes: it is made ended, keeping no batch.
573
+ if (state.kind === "released") {
574
+ const made = new ReferenceState(() => this.refState, undefined);
575
+ made.released(state.state);
576
+ this.#refState = made;
577
+ return made;
578
+ }
579
+ this.#refState = new ReferenceState(() => this.refState, state.batch);
580
+ return this.#refState;
581
+ }
582
+ #variant() {
583
+ const state = this.#state;
584
+ if (state.kind === "released")
585
+ throw state.state.error;
586
+ return state.kind === "bound" ? state.target.variant : undefined;
587
+ }
588
+ /** The error of this reference's release by its holder (`released`, no reason). */
589
+ #released() {
590
+ return new ChordError({ code: "released", message: `${this.#name}: released` });
591
+ }
592
+ }
593
+ /** A state member of a reference: the provider's member, followed through this reference. */
594
+ class ReferenceMember {
595
+ #binding;
596
+ #member;
597
+ constructor(binding, member) {
598
+ this.#binding = binding;
599
+ this.#member = member;
600
+ }
601
+ get value() {
602
+ return this.source.value;
603
+ }
604
+ watch(context) {
605
+ return this.#binding.watch(this.#member, context);
606
+ }
607
+ /** The provider's member: a source or a constant. */
608
+ get source() {
609
+ return this.#binding.member(this.#member);
610
+ }
611
+ }
612
+ /** A keyed member of a reference (slice 6a §12): reads by key behave as calls (they wait while loading). */
613
+ class ReferenceKeyed {
614
+ #binding;
615
+ #member;
616
+ constructor(binding, member) {
617
+ this.#binding = binding;
618
+ this.#member = member;
619
+ }
620
+ /** The provider's slot: the ultimate provider's, through re-exposures (rule 22). */
621
+ get slot() {
622
+ return this.#binding.keyedSlot(this.#member);
623
+ }
624
+ /** This member as another object re-exposing it has it: its keys held through this reference. */
625
+ get keyed() {
626
+ return { kind: "reexposed", binding: this.#binding, member: this.#member };
627
+ }
628
+ async get(key, context) {
629
+ await this.#binding.hydrated(context);
630
+ const slot = this.slot;
631
+ const map = this.#binding.keyedMapping(this.#member);
632
+ const value = await slot.get(key, ownAccess(slot), context);
633
+ return map === undefined || value === undefined ? value : map(value);
634
+ }
635
+ /**
636
+ * A watch of the document at `key` across the object's attempts (it holds the key through the object), `undefined`
637
+ * when absent; it ends with this reference.
638
+ */
639
+ async watch(key, context) {
640
+ await this.#binding.firstValues(context);
641
+ const slot = this.slot;
642
+ if ((await slot.get(key, ownAccess(slot), context)) === undefined)
643
+ return undefined;
644
+ // Mapped to its version when older (slice 7b §7), across its object's instances (`ReferenceKeys`).
645
+ const held = await this.#binding.pinKey(this.#member, key, context);
646
+ // Retired between the read and now: absent.
647
+ if (slot.current(slot.key(key)) === undefined) {
648
+ held.release();
649
+ return undefined;
650
+ }
651
+ let watch;
652
+ try {
653
+ watch = held.source.openWatch(context);
654
+ }
655
+ catch (error) {
656
+ held.release();
657
+ throw error;
658
+ }
659
+ void watch.closed.then(held.release);
660
+ return this.#binding.follow(watch);
661
+ }
662
+ at(key) {
663
+ // The pinned key's values are the member's documents.
664
+ return this.#binding.at(this.#member, key);
665
+ }
666
+ }
667
+ /** A consumer reads its provider's keyed documents as the provider's own code may: current version, own token. */
668
+ function ownAccess(slot) {
669
+ return { token: slot.owner.own, version: slot.definition.current.version };
670
+ }
671
+ /**
672
+ * `ref.member.at(key)`: the key's source across the object's attempts once the reference is bound and the key held
673
+ * (`pin`), until the reference ends (`release`, exactly once): then it drops the source (a retained reference keeps no
674
+ * provider).
675
+ */
676
+ class KeyedMemberAt {
677
+ #binding;
678
+ member;
679
+ key;
680
+ #state = { kind: "unpinned" };
681
+ constructor(binding, member, key) {
682
+ this.#binding = binding;
683
+ this.member = member;
684
+ this.key = key;
685
+ }
686
+ /** The key's source; `not_ready` before it is held, `released` after. */
687
+ get source() {
688
+ const state = this.#state;
689
+ if (state.kind === "pinned")
690
+ return state.source;
691
+ const what = `${this.member}.at(${this.key})`;
692
+ if (state.kind === "released")
693
+ throw new ChordError({ code: "released", message: `${what}: released` });
694
+ throw new ChordError({ code: "not_ready", message: `${what}: not loaded yet` });
695
+ }
696
+ get value() {
697
+ return this.source.value;
698
+ }
699
+ async watch(context) {
700
+ return this.#binding.follow(this.source.openWatch(context));
701
+ }
702
+ /**
703
+ * Holds the key through `binding` (once), loaded, mapped to an older binding's version (slice 7b §7); nothing once
704
+ * released (a hold that lands then is released).
705
+ */
706
+ async pin(binding, context) {
707
+ if (this.#state.kind !== "unpinned")
708
+ return;
709
+ const held = await binding.pinKey(this.member, this.key, context);
710
+ if (this.#state.kind !== "unpinned") {
711
+ held.release();
712
+ return;
713
+ }
714
+ this.#state = { kind: "pinned", source: held.source, release: held.release };
715
+ }
716
+ /** Releases the pin and drops the source (once). */
717
+ release() {
718
+ const state = this.#state;
719
+ this.#state = { kind: "released" };
720
+ if (state.kind === "pinned")
721
+ state.release();
722
+ }
723
+ }
724
+ /**
725
+ * What a keyed member's value is (slice 6a §12): a keyed document handle's slot, or a reference's keyed member
726
+ * (re-exposed); `undefined` for anything else.
727
+ */
728
+ export function resolveKeyed(value) {
729
+ if (value instanceof Keyed)
730
+ return { kind: "own", slot: value.slot };
731
+ if (value instanceof ReferenceKeyed)
732
+ return value.keyed;
733
+ return undefined;
734
+ }
735
+ /**
736
+ * The watchable Chord follows behind a state member or a derive source (Q14): a source or a constant itself, a
737
+ * singleton handle's slot, a reference member's provider member, a keyed member's pinned key (a key source itself for
738
+ * `handle.at(key)`); `undefined` for anything else, a native watchable included.
739
+ */
740
+ export function resolveWatchable(value) {
741
+ if (value instanceof Singleton)
742
+ return value.slot;
743
+ if (value instanceof ReferenceMember)
744
+ return value.source;
745
+ if (value instanceof KeyedMemberAt)
746
+ return value.source;
747
+ if (value instanceof Source || value instanceof Constant)
748
+ return value;
749
+ return undefined;
750
+ }
751
+ /**
752
+ * Points `source` at what its reference follows now (`Followed`), inside a batch; a new one takes its last value from
753
+ * the instance that stopped, only when its reference was attached to that one (`attached`).
754
+ */
755
+ function place(source, followed, attached) {
756
+ switch (followed.kind) {
757
+ case "live":
758
+ source.bind(followed.source);
759
+ return;
760
+ case "lacking":
761
+ source.vanish(followed.error, BACKGROUND_CONTEXT);
762
+ return;
763
+ case "loading":
764
+ if (source.unbound && followed.last !== undefined && followed.instance === attached)
765
+ source.bind(followed.last);
766
+ source.hold();
767
+ return;
768
+ case "failed":
769
+ if (source.unbound && followed.last !== undefined && followed.instance === attached)
770
+ source.bind(followed.last);
771
+ source.fail(followed.error, BACKGROUND_CONTEXT);
772
+ return;
773
+ }
774
+ }
775
+ //# sourceMappingURL=reference.js.map