@earendil-works/chord 1.4.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 (820) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +79 -14
  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 +1 -1
  7. package/dist/context/index.d.ts.map +1 -1
  8. package/dist/context/index.js +1 -1
  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 +1 -1
  743. package/dist/output.d.ts.map +1 -1
  744. package/dist/output.js +4 -2
  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 +2 -0
  754. package/dist/sqlite/cloudflare.d.ts.map +1 -1
  755. package/dist/sqlite/cloudflare.js +10 -0
  756. package/dist/sqlite/cloudflare.js.map +1 -1
  757. package/dist/sqlite/database.d.ts +5 -2
  758. package/dist/sqlite/database.d.ts.map +1 -1
  759. package/dist/sqlite/database.js.map +1 -1
  760. package/dist/sqlite/node.d.ts +4 -1
  761. package/dist/sqlite/node.d.ts.map +1 -1
  762. package/dist/sqlite/node.js +22 -5
  763. package/dist/sqlite/node.js.map +1 -1
  764. package/dist/watch.d.ts +194 -0
  765. package/dist/watch.d.ts.map +1 -0
  766. package/dist/watch.js +383 -0
  767. package/dist/watch.js.map +1 -0
  768. package/dist/wire.d.ts +174 -193
  769. package/dist/wire.d.ts.map +1 -1
  770. package/dist/wire.js +81 -80
  771. package/dist/wire.js.map +1 -1
  772. package/docs/guide.md +15 -15
  773. package/docs/next/benchmarks.md +959 -0
  774. package/docs/next/decisions.md +2957 -0
  775. package/docs/next/dependencies/book.md +1671 -0
  776. package/docs/next/dependencies/index.html +2641 -0
  777. package/docs/next/dependencies/model.md +330 -0
  778. package/docs/next/design.md +2554 -0
  779. package/docs/next/durable-observers/book.md +432 -0
  780. package/docs/next/durable-observers/index.html +517 -0
  781. package/docs/next/flow-control/book.md +333 -0
  782. package/docs/next/flow-control/fold/index.html +265 -0
  783. package/docs/next/flow-control/index.html +548 -0
  784. package/docs/next/flow-control/window/index.html +228 -0
  785. package/docs/next/guide-plugins-hosts/book.md +607 -0
  786. package/docs/next/guide-plugins-hosts/index.html +652 -0
  787. package/docs/next/http-workers/book.md +378 -0
  788. package/docs/next/http-workers/index.html +515 -0
  789. package/docs/next/layer-1.md +311 -0
  790. package/docs/next/layer-2.md +216 -0
  791. package/docs/next/plugin-model/book.md +186 -0
  792. package/docs/next/plugin-model/index.html +310 -0
  793. package/docs/next/plugin-primer/book.md +273 -0
  794. package/docs/next/plugin-primer/index.html +430 -0
  795. package/docs/next/slice-1.md +236 -0
  796. package/docs/next/slice-10.md +285 -0
  797. package/docs/next/slice-11.md +93 -0
  798. package/docs/next/slice-2.md +174 -0
  799. package/docs/next/slice-3a.md +296 -0
  800. package/docs/next/slice-3b.md +197 -0
  801. package/docs/next/slice-4.md +146 -0
  802. package/docs/next/slice-4a.md +418 -0
  803. package/docs/next/slice-4b.md +208 -0
  804. package/docs/next/slice-5.md +281 -0
  805. package/docs/next/slice-6a.md +676 -0
  806. package/docs/next/slice-6b.md +332 -0
  807. package/docs/next/slice-7a.md +130 -0
  808. package/docs/next/slice-7b/book.md +608 -0
  809. package/docs/next/slice-7b/index.html +842 -0
  810. package/docs/next/slice-7b.md +255 -0
  811. package/docs/next/slice-7c.md +165 -0
  812. package/docs/next/slice-8.md +194 -0
  813. package/docs/next/slices.md +230 -0
  814. package/docs/next/store/book.md +665 -0
  815. package/docs/next/store/index.html +861 -0
  816. package/docs/next/store/walkthrough.md +193 -0
  817. package/docs/spec.md +9 -9
  818. package/docs/tutorial.md +26 -25
  819. package/package.json +22 -6
  820. package/src/delta/README.md +69 -0
@@ -0,0 +1,627 @@
1
+ // The store (slice 6a §2, §3, slice 6b §1): opened over a backend, one commit queue that serializes only the commit step
2
+ // (the seal fence's admission check, `BEGIN`, the writes in their order, the outbox commit, `lastSeq` and the
3
+ // allocator's value, `COMMIT`, then the owner's adoption), the id allocator, the claims of its tables and documents,
4
+ // reads guarded as Durable's `GuardedStorage` guards them, Durable's Storage semantics for a refused step (D4), and the
5
+ // stop after an unknown outcome.
6
+ import { awaitWithContext } from "../../context/index.js";
7
+ import { ChordError } from "../data/index.js";
8
+ import { invalid } from "../data/internal.js";
9
+ import { IdAllocator } from "./allocator.js";
10
+ import { readCatalog, writeCatalog } from "./catalog.js";
11
+ import { Claims } from "./claims.js";
12
+ import { StoreExport } from "./export.js";
13
+ import { OUTBOX_FORMAT, Outbox } from "./outbox.js";
14
+ import { applyStoreSchema, TABLES } from "./schema.js";
15
+ import { Step } from "./step.js";
16
+ /**
17
+ * Opens a store over `backend`: the store's schema migrations, the UTF-8 check, the metadata read once, the outbox
18
+ * switched when asked. A failure closes the backend and rejects (rule 12).
19
+ */
20
+ export async function openStore(backend, context, options = {}) {
21
+ const { db } = backend;
22
+ try {
23
+ context.abortSignal?.throwIfAborted();
24
+ const meta = await switchOutbox(db, await applyStoreSchema(db), options.outbox);
25
+ return new ChordStore(db, meta, await readCatalog(db));
26
+ }
27
+ catch (error) {
28
+ try {
29
+ await db.close();
30
+ }
31
+ catch {
32
+ // The open's own failure is the one to report.
33
+ }
34
+ throw error;
35
+ }
36
+ }
37
+ /** Turns the outbox on (from the current `lastSeq`) or off (its commits dropped) when `outbox` asks for the other. */
38
+ async function switchOutbox(db, meta, outbox) {
39
+ if (outbox === undefined || outbox === (meta.outbox === 1))
40
+ return meta;
41
+ const floor = outbox ? meta.last_seq : 0;
42
+ await db.transaction(async (executor) => {
43
+ await executor.run(`UPDATE ${TABLES.meta} SET outbox = ?, outbox_floor = ? WHERE singleton = 1`, outbox ? 1 : 0, floor);
44
+ if (!outbox)
45
+ await executor.run(`DELETE FROM ${TABLES.outbox}`);
46
+ });
47
+ return { ...meta, outbox: outbox ? 1 : 0, outbox_floor: floor };
48
+ }
49
+ const ORDER = ["retire", "create", "write"];
50
+ const NOTHING = () => { };
51
+ /** The step's own error, until its callback throws one: a distinct value no thrown error can be. */
52
+ const NONE = Symbol("none");
53
+ /** The store behind `Store`, with what Chord's layers use: commits, guarded reads, the host's failure listener. */
54
+ export class ChordStore {
55
+ #db;
56
+ #lastSeq;
57
+ /** The allocator's value as the last commit persisted it (an export's manifest). */
58
+ #committedNextId;
59
+ #ids;
60
+ /** The claims of its tables and documents (slice 6b). */
61
+ claims = new Claims();
62
+ #outbox;
63
+ #state = { kind: "open" };
64
+ /** Set once a batch's recorded count did not reproduce (S17): no batch applies any more. */
65
+ #diverged = false;
66
+ /** The commit queue's tail: each step starts after the one before it settled. */
67
+ #tail = Promise.resolve();
68
+ /** Reads and maintenance writes underway, which `close` waits for. */
69
+ #underway = 0;
70
+ /** Resolves `close`'s wait once no read is underway. */
71
+ #drained;
72
+ /** The open host's listener for `storage_failed` (told once) and batch; one host per store (rule 7). */
73
+ #attachment;
74
+ #closing;
75
+ /** The versions migrations of tables announced (`announceTable`), by SQL name, until their last commit. */
76
+ #announced = new Map();
77
+ /** The recorded tables, by SQL name; changed only after a step's `COMMIT`. */
78
+ #catalog;
79
+ /** The ends of the exports holding the queue or waiting for it, which closing the store calls. */
80
+ #held = new Set();
81
+ constructor(db, meta, catalog) {
82
+ this.#db = db;
83
+ this.#catalog = catalog;
84
+ this.#lastSeq = meta.last_seq;
85
+ this.#committedNextId = meta.next_id;
86
+ this.#ids = new IdAllocator(meta.next_id);
87
+ this.#outbox = meta.outbox === 1 ? new Outbox(this, meta.outbox_floor) : undefined;
88
+ }
89
+ get lastSeq() {
90
+ return this.#lastSeq;
91
+ }
92
+ get outbox() {
93
+ return this.#outbox;
94
+ }
95
+ /** The allocator's value as the last commit persisted it. */
96
+ get nextId() {
97
+ return this.#committedNextId;
98
+ }
99
+ /** The id allocator: `mint` takes the next id, `raise` makes room above an explicit one (D3). */
100
+ get ids() {
101
+ return this.#ids;
102
+ }
103
+ /** Takes the next id from the allocator (Durable's `mintId`); refused once the store stopped or closed. */
104
+ mintId() {
105
+ this.assertUsable();
106
+ return this.#ids.mint();
107
+ }
108
+ /** The open host's batch, in which an adapter publishes its commits; `undefined` without a host. */
109
+ get batch() {
110
+ return this.#attachment?.batch;
111
+ }
112
+ /** Every recorded table, by SQL name, as of the last commit. */
113
+ get tables() {
114
+ return this.#catalog;
115
+ }
116
+ export(context) {
117
+ this.assertUsable();
118
+ return new StoreExport(this, context);
119
+ }
120
+ /**
121
+ * Takes the commit queue (an export): resolves once every earlier commit settled, with the release that lets the
122
+ * later ones run (idempotent). Closing the store calls `end` (from the call on, also while waiting, and at once for a
123
+ * store closed before the call took the queue), which must release.
124
+ */
125
+ take(end) {
126
+ const held = Promise.withResolvers();
127
+ const release = () => {
128
+ this.#held.delete(end);
129
+ held.resolve();
130
+ };
131
+ this.#held.add(end);
132
+ const taken = this.#tail.then(() => {
133
+ // A store closed meanwhile (also before the export's first `next()`) holds nothing: the export ends.
134
+ if (this.#state.kind === "closed") {
135
+ release();
136
+ end();
137
+ }
138
+ return release;
139
+ });
140
+ this.#tail = taken.then(() => held.promise);
141
+ return taken;
142
+ }
143
+ /** The recorded table `name` (its SQL name), as of the last commit. */
144
+ table(name) {
145
+ return this.#catalog.get(name);
146
+ }
147
+ /**
148
+ * The version table `name` is at or is being migrated to: the recorded one, or a higher one a migration announced
149
+ * before its first commit (`announceTable`), so an old handle is refused before its SQL could queue behind the
150
+ * migration's DDL (fix round 1, Sol 8).
151
+ */
152
+ tableVersion(name) {
153
+ const recorded = this.#catalog.get(name)?.version;
154
+ const announced = this.#announced.get(name);
155
+ return announced === undefined || (recorded !== undefined && recorded >= announced) ? recorded : announced;
156
+ }
157
+ /** Announces a migration of table `name` to `version` until the returned withdrawal (after its last commit). */
158
+ announceTable(name, version) {
159
+ this.#announced.set(name, version);
160
+ return () => {
161
+ if (this.#announced.get(name) === version)
162
+ this.#announced.delete(name);
163
+ };
164
+ }
165
+ /** Attaches the open host; a store attached to an open host is refused (rule 7). */
166
+ attach(attachment) {
167
+ if (this.#attachment !== undefined) {
168
+ throw new ChordError({ code: "invalid", reason: "args", message: "store: already attached to an open host" });
169
+ }
170
+ this.#attachment = attachment;
171
+ }
172
+ /** The host closed: the store may serve another one. */
173
+ detach() {
174
+ this.#attachment = undefined;
175
+ }
176
+ /**
177
+ * Commits `writes` as one seq when the commit queue reaches it: `fence.admit()` at the step's entry, the writes in
178
+ * their order (retirements, creations, the rest), the outbox commit, `lastSeq` and the allocator's value, `COMMIT`,
179
+ * then `fence.adopt` before the next step starts. Resolves with the seq. A refused admission rejects `released`. A
180
+ * step the backend rolled back after the step's own code threw (a refusal, D4) rejects with that error unchanged and
181
+ * the store goes on; any other failure (`BEGIN`, `COMMIT`, `ROLLBACK`, a throwing `adopt`) is an unknown outcome
182
+ * that stops the store (`storage_failed`). `context` counts the step (no abort once queued).
183
+ */
184
+ commit(writes, fence, context) {
185
+ try {
186
+ this.assertUsable();
187
+ }
188
+ catch (error) {
189
+ return Promise.reject(error);
190
+ }
191
+ const step = this.#tail.then(() => this.#step(writes, fence, context));
192
+ this.#tail = step.then(NOTHING, NOTHING);
193
+ return step;
194
+ }
195
+ /**
196
+ * Commits `commits` in one backend transaction when the commit queue reaches them, one seq each, in order: each
197
+ * commit's `check`, which writes nothing, then its writes as `commit` writes them, with its own outbox commit and the
198
+ * metadata (a commit without writes takes no seq: it stands at the one before). A `check` that throws refuses its
199
+ * commit: the series stops there and the transaction commits the ones before it. A check whose backend statement
200
+ * failed, and a throw of a commit's writes, roll the whole series back and reject with that error, the store going
201
+ * on (D4); any other failure is an unknown outcome that stops the store, as for `commit`. After `COMMIT`,
202
+ * `receive(index, seq, ids)` is called per stored commit, in order, before the next step starts (`ids`: its created
203
+ * documents). Resolves with what it stored.
204
+ */
205
+ commitSeries(commits, receive, context) {
206
+ try {
207
+ this.assertUsable();
208
+ }
209
+ catch (error) {
210
+ return Promise.reject(error);
211
+ }
212
+ const series = this.#tail.then(() => this.#series(commits, receive, context));
213
+ this.#tail = series.then(NOTHING, NOTHING);
214
+ return series;
215
+ }
216
+ /**
217
+ * Runs `read` on the backend under the guard (rule 11, Durable's `GuardedStorage`): refused once the store stopped
218
+ * or closed; a backend error fails the store unless `context` was aborted (then `aborted`); a read settling after
219
+ * the store stopped rejects `unavailable/storage_failed`. `read` returns data and never throws for a request: an
220
+ * adapter checks a request from what it returned, after the guard (slice 6b §1.4).
221
+ */
222
+ read(read, context) {
223
+ return this.#guarded(() => read(this.#db), context);
224
+ }
225
+ /**
226
+ * `read` for several queries that must see one state (S4, a document from its record and revisions): one backend
227
+ * transaction, guarded as `read`.
228
+ */
229
+ readTransaction(read, context) {
230
+ return this.#guarded(() => this.#db.transaction(read), context);
231
+ }
232
+ async #guarded(run, context) {
233
+ this.assertUsable();
234
+ this.#underway++;
235
+ let result;
236
+ try {
237
+ // A read throwing before its first await is the backend's too: inside the `try`.
238
+ result = await run();
239
+ }
240
+ catch (error) {
241
+ this.assertUsable();
242
+ const signal = context.abortSignal;
243
+ if (signal?.aborted)
244
+ throw new ChordError({ code: "aborted", message: "store: read aborted" }, { cause: signal.reason });
245
+ throw this.#fail(error);
246
+ }
247
+ finally {
248
+ this.#settle();
249
+ }
250
+ this.assertUsable();
251
+ return result;
252
+ }
253
+ /** One read or maintenance write settled: `close` goes on once none is underway. */
254
+ #settle() {
255
+ if (--this.#underway === 0)
256
+ this.#drained?.();
257
+ }
258
+ /**
259
+ * Runs `write` on the backend outside the commit queue (the outbox's `trim`), in a backend transaction, guarded as
260
+ * a read without a context: any error stops the store.
261
+ */
262
+ async maintain(write) {
263
+ this.assertUsable();
264
+ this.#underway++;
265
+ try {
266
+ await this.#db.transaction(write);
267
+ }
268
+ catch (error) {
269
+ this.assertUsable();
270
+ throw this.#fail(error);
271
+ }
272
+ finally {
273
+ this.#settle();
274
+ }
275
+ }
276
+ close(context) {
277
+ this.#closing ??= this.#close();
278
+ return awaitWithContext(this.#closing, context);
279
+ }
280
+ async #close() {
281
+ this.#state = { kind: "closed" };
282
+ for (const end of [...this.#held])
283
+ end();
284
+ await this.#tail;
285
+ if (this.#underway > 0) {
286
+ await new Promise((resolve) => {
287
+ this.#drained = resolve;
288
+ });
289
+ }
290
+ await this.#db.close();
291
+ }
292
+ async #step(writes, fence, context) {
293
+ this.assertUsable();
294
+ if (!fence.admit()) {
295
+ throw new ChordError({ code: "released", reason: "discarded", message: "store: the commit's attempt ended" });
296
+ }
297
+ if (writes.length === 0) {
298
+ // An empty commit takes no seq; a throwing `adopt` stops the store as for any commit.
299
+ try {
300
+ fence.adopt(this.#lastSeq, []);
301
+ }
302
+ catch (error) {
303
+ throw this.#fail(error);
304
+ }
305
+ return this.#lastSeq;
306
+ }
307
+ const seq = this.#lastSeq + 1;
308
+ // Past the safe range seqs stop counting exactly (a later one would repeat): the store cannot number further.
309
+ if (seq > Number.MAX_SAFE_INTEGER)
310
+ throw this.#fail(new Error("store: no seq past Number.MAX_SAFE_INTEGER"));
311
+ let thrown = NONE;
312
+ let done;
313
+ try {
314
+ done = await this.#db.transaction(async (executor) => {
315
+ try {
316
+ const step = new Step(executor, seq, this.#ids, this.#catalog);
317
+ const nextId = await this.#write(step, writes);
318
+ await writeMeta(step, nextId);
319
+ return { step, nextId };
320
+ }
321
+ catch (error) {
322
+ thrown = error;
323
+ throw error;
324
+ }
325
+ });
326
+ }
327
+ catch (error) {
328
+ // The facade rolled back and rejects with the step's own error: a refusal, the store goes on (D4).
329
+ if (error === thrown)
330
+ throw error;
331
+ throw this.#fail(error);
332
+ }
333
+ // `COMMIT` returned: the commit is durable, and memory follows.
334
+ const { step, nextId } = done;
335
+ this.#lastSeq = seq;
336
+ this.#committedNextId = nextId;
337
+ for (const [name, record] of step.tables)
338
+ this.#catalog.set(name, record);
339
+ const metrics = context.telemetry.metrics;
340
+ metrics?.counter("chord.store.commits").add(1);
341
+ metrics?.counter("chord.store.statements").add(step.statements);
342
+ try {
343
+ fence.adopt(seq, step.created);
344
+ }
345
+ catch (error) {
346
+ throw this.#fail(error);
347
+ }
348
+ return seq;
349
+ }
350
+ /**
351
+ * A series inside one backend transaction: per commit a step at the next seq, its check (a throw refuses it, unless
352
+ * one of its statements failed), then its writes; then, after `COMMIT`, memory and the receipts as after `#step`.
353
+ */
354
+ async #series(commits, receive, context) {
355
+ this.assertUsable();
356
+ // Past the safe range seqs stop counting exactly (a later one would repeat): the store cannot number further. Only
357
+ // a commit with writes takes a seq, as for `commit`.
358
+ let seqs = 0;
359
+ for (const commit of commits)
360
+ if (commit.writes.length > 0)
361
+ seqs++;
362
+ if (this.#lastSeq + seqs > Number.MAX_SAFE_INTEGER) {
363
+ throw this.#fail(new Error("store: no seq past Number.MAX_SAFE_INTEGER"));
364
+ }
365
+ let thrown = NONE;
366
+ let refused;
367
+ let done;
368
+ try {
369
+ done = await this.#db.transaction(async (executor) => {
370
+ try {
371
+ return await this.#writeSeries(executor, commits, (error) => {
372
+ refused = { error };
373
+ });
374
+ }
375
+ catch (error) {
376
+ thrown = error;
377
+ throw error;
378
+ }
379
+ });
380
+ }
381
+ catch (error) {
382
+ // The facade rolled back and rejects with the series' own error: the store goes on (D4).
383
+ if (error === thrown)
384
+ throw error;
385
+ throw this.#fail(error);
386
+ }
387
+ // `COMMIT` returned: the stored commits are durable, and memory follows.
388
+ const { stored, last, written, statements } = done;
389
+ if (last !== undefined) {
390
+ this.#lastSeq = last.seq;
391
+ this.#committedNextId = last.nextId;
392
+ for (const [name, record] of last.tables)
393
+ this.#catalog.set(name, record);
394
+ }
395
+ const metrics = context.telemetry.metrics;
396
+ metrics?.counter("chord.store.commits").add(written);
397
+ metrics?.counter("chord.store.statements").add(statements);
398
+ try {
399
+ for (const [index, { seq, created }] of stored.entries())
400
+ receive(index, seq, created);
401
+ }
402
+ catch (error) {
403
+ throw this.#fail(error);
404
+ }
405
+ return refused === undefined ? { stored: stored.length } : { stored: stored.length, refused: refused.error };
406
+ }
407
+ /**
408
+ * The commits of a series in its backend transaction, until one is refused (`refuse`): each commit's check, then its
409
+ * writes; the metadata once, at the end.
410
+ */
411
+ async #writeSeries(executor, commits, refuse) {
412
+ const calls = { failed: false };
413
+ const watched = watchCalls(executor, calls);
414
+ const progress = {
415
+ stored: [],
416
+ last: undefined,
417
+ nextId: this.#ids.value,
418
+ changed: undefined,
419
+ statements: 0,
420
+ };
421
+ for (const commit of commits) {
422
+ const refusal = await this.#checkCommit(commit, watched, calls, progress);
423
+ if (refusal !== undefined) {
424
+ refuse(refusal.error);
425
+ break;
426
+ }
427
+ await this.#writeCommit(commit, executor, progress);
428
+ }
429
+ return this.#closeSeries(progress);
430
+ }
431
+ /**
432
+ * Runs `commit`'s check on a step at the series' next seq whose backend calls are watched; resolves with its refusal,
433
+ * if it refused. A check one of whose backend calls failed throws instead: a failure, not a refusal.
434
+ */
435
+ async #checkCommit(commit, watched, calls, progress) {
436
+ const step = new Step(watched, this.#nextSeq(progress), this.#ids, progress.changed ?? this.#catalog);
437
+ calls.failed = false;
438
+ try {
439
+ await commit.check(step);
440
+ return undefined;
441
+ }
442
+ catch (error) {
443
+ if (calls.failed)
444
+ throw error;
445
+ return { error };
446
+ }
447
+ finally {
448
+ progress.statements += step.statements;
449
+ }
450
+ }
451
+ /**
452
+ * Writes `commit` on its own step at the series' next seq (`#write`), unwatched, and keeps the table records it
453
+ * changed in a copy of the catalog, made only once one changed; a commit without writes takes no seq.
454
+ */
455
+ async #writeCommit(commit, executor, progress) {
456
+ const seq = this.#nextSeq(progress);
457
+ if (commit.writes.length === 0) {
458
+ progress.stored.push({ seq: seq - 1, created: [] });
459
+ return;
460
+ }
461
+ const step = new Step(executor, seq, this.#ids, progress.changed ?? this.#catalog);
462
+ progress.nextId = await this.#write(step, commit.writes);
463
+ progress.statements += step.statements;
464
+ if (step.tables.size > 0) {
465
+ progress.changed ??= new Map(this.#catalog);
466
+ for (const [name, record] of step.tables)
467
+ progress.changed.set(name, record);
468
+ }
469
+ progress.last = step;
470
+ progress.stored.push({ seq, created: step.created });
471
+ }
472
+ /** The seq the series' next commit takes. */
473
+ #nextSeq(progress) {
474
+ return (progress.last?.seq ?? this.#lastSeq) + 1;
475
+ }
476
+ /** Ends the series' writes with the metadata, once, after its last commit that wrote; returns what memory takes. */
477
+ async #closeSeries(progress) {
478
+ const { stored, last, nextId, changed, statements } = progress;
479
+ if (last === undefined)
480
+ return { stored, last: undefined, written: 0, statements };
481
+ await writeMeta(last, nextId);
482
+ return {
483
+ stored,
484
+ last: { seq: last.seq, nextId, tables: changed ?? new Map() },
485
+ written: last.seq - this.#lastSeq,
486
+ statements: statements + 1,
487
+ };
488
+ }
489
+ /**
490
+ * The step's writes inside its backend transaction: each staged write in its phase, the catalog, the outbox commit.
491
+ * Returns the allocator's value, taken once, after the writes applied (mints meanwhile only raise it); the metadata
492
+ * (`writeMeta`) is the caller's.
493
+ */
494
+ async #write(step, writes) {
495
+ const seq = step.seq;
496
+ const recorded = this.#outbox !== undefined ? [] : undefined;
497
+ for (const order of ORDER) {
498
+ for (const write of writes) {
499
+ if (write.order !== order)
500
+ continue;
501
+ const done = await write.apply(step);
502
+ recorded?.push(...done);
503
+ }
504
+ }
505
+ await writeCatalog(step);
506
+ const nextId = this.#ids.value;
507
+ if (recorded !== undefined) {
508
+ await step.run(`INSERT INTO ${TABLES.outbox} (seq, format, next_id, writes) VALUES (?, ?, ?, ?)`, seq, OUTBOX_FORMAT, nextId, JSON.stringify(recorded));
509
+ }
510
+ return nextId;
511
+ }
512
+ /**
513
+ * Batch apply's turn (slice 6b §1.6, S5): refused (`invalid/args`) while an owner holds a claim (its memory would
514
+ * go stale) and once the store diverged; otherwise `apply` runs in the commit queue, in one backend transaction, and
515
+ * returns the position its last commit leaves (`lastSeq`, the allocator's value) and the tables it changed, which
516
+ * memory takes after `COMMIT`. `apply`'s own error rolls back and rejects as a refusal (a `Diverged` one marks the
517
+ * store diverged); any other failure stops the store.
518
+ */
519
+ replay(apply, isDivergence) {
520
+ try {
521
+ this.#assertReplayable();
522
+ }
523
+ catch (error) {
524
+ return Promise.reject(error);
525
+ }
526
+ const turn = this.#tail.then(() => this.#replay(apply, isDivergence));
527
+ this.#tail = turn.then(NOTHING, NOTHING);
528
+ return turn;
529
+ }
530
+ /** At its call and again at its turn: a claim or a divergence may come between the two. */
531
+ #assertReplayable() {
532
+ this.assertUsable();
533
+ if (this.#diverged)
534
+ throw invalid("args", "store: diverged; a batch can no longer apply");
535
+ if (this.claims.held)
536
+ throw invalid("args", "store: an owner holds claims; a batch would stale its memory");
537
+ }
538
+ async #replay(apply, isDivergence) {
539
+ this.#assertReplayable();
540
+ // While it applies, no owner may claim (and read) what it is changing.
541
+ const unlock = this.claims.lock();
542
+ try {
543
+ await this.#applyReplay(apply, isDivergence);
544
+ }
545
+ finally {
546
+ unlock();
547
+ }
548
+ }
549
+ async #applyReplay(apply, isDivergence) {
550
+ let thrown = NONE;
551
+ let replayed;
552
+ try {
553
+ replayed = await this.#db.transaction(async (executor) => {
554
+ try {
555
+ return await apply(executor, this.#catalog);
556
+ }
557
+ catch (error) {
558
+ thrown = error;
559
+ throw error;
560
+ }
561
+ });
562
+ }
563
+ catch (error) {
564
+ if (error !== thrown)
565
+ throw this.#fail(error);
566
+ if (isDivergence(error))
567
+ this.#diverged = true;
568
+ throw error;
569
+ }
570
+ this.#lastSeq = replayed.lastSeq;
571
+ this.#committedNextId = replayed.nextId;
572
+ this.#ids.raise(replayed.nextId - 1);
573
+ for (const [name, record] of replayed.tables)
574
+ this.#catalog.set(name, record);
575
+ }
576
+ /** Whether the store has an outbox, which a replayed batch writes too. */
577
+ get recordsOutbox() {
578
+ return this.#outbox !== undefined;
579
+ }
580
+ /** Throws `unavailable/storage_failed` once the store stopped, `released` once it closed. */
581
+ assertUsable() {
582
+ const state = this.#state;
583
+ if (state.kind === "failed")
584
+ throw storageFailed(state.error);
585
+ if (state.kind === "closed")
586
+ throw new ChordError({ code: "released", reason: "closed", message: "store: closed" });
587
+ }
588
+ /** Stops the store after `error` (once; its host is told once); returns the error the caller rejects with. */
589
+ #fail(error) {
590
+ if (this.#state.kind === "open") {
591
+ this.#state = { kind: "failed", error };
592
+ this.#attachment?.failed(error);
593
+ }
594
+ return storageFailed(error);
595
+ }
596
+ }
597
+ /** Records `seq`, the step's, as the store's last, and the allocator's value `nextId`. */
598
+ function writeMeta(step, nextId) {
599
+ return step.run(`UPDATE ${TABLES.meta} SET last_seq = ?, next_id = ? WHERE singleton = 1`, step.seq, nextId);
600
+ }
601
+ /**
602
+ * `executor`, setting `calls.failed` when one of its calls throws, synchronously or by rejecting, with any value: a
603
+ * check that throws then failed in the backend, not by its own decision.
604
+ */
605
+ function watchCalls(executor, calls) {
606
+ const watched = async (call) => {
607
+ try {
608
+ return await call();
609
+ }
610
+ catch (error) {
611
+ calls.failed = true;
612
+ throw error;
613
+ }
614
+ };
615
+ return {
616
+ exec: (sql) => watched(() => executor.exec(sql)),
617
+ run: (sql, ...params) => watched(() => executor.run(sql, ...params)),
618
+ runCounted: (sql, ...params) => watched(() => executor.runCounted(sql, ...params)),
619
+ get: (sql, ...params) => watched(() => executor.get(sql, ...params)),
620
+ all: (sql, ...params) => watched(() => executor.all(sql, ...params)),
621
+ };
622
+ }
623
+ /** The `unavailable/storage_failed` error of a stopped store, its backend error as the cause. */
624
+ function storageFailed(error) {
625
+ return new ChordError({ code: "unavailable", reason: "storage_failed", message: "store: storage failed" }, { cause: error });
626
+ }
627
+ //# sourceMappingURL=store.js.map