@earendil-works/chord 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1299) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +115 -90
  3. package/dist/context/index.d.ts +1 -1
  4. package/dist/context/index.d.ts.map +1 -1
  5. package/dist/context/index.js +1 -1
  6. package/dist/context/index.js.map +1 -1
  7. package/dist/contracts/accepts.d.ts +81 -0
  8. package/dist/contracts/accepts.d.ts.map +1 -0
  9. package/dist/contracts/accepts.js +123 -0
  10. package/dist/contracts/accepts.js.map +1 -0
  11. package/dist/contracts/contract.d.ts +121 -0
  12. package/dist/contracts/contract.d.ts.map +1 -0
  13. package/dist/contracts/contract.js +50 -0
  14. package/dist/contracts/contract.js.map +1 -0
  15. package/dist/contracts/declare.d.ts +107 -0
  16. package/dist/contracts/declare.d.ts.map +1 -0
  17. package/dist/contracts/declare.js +136 -0
  18. package/dist/contracts/declare.js.map +1 -0
  19. package/dist/contracts/evolve.d.ts +92 -0
  20. package/dist/contracts/evolve.d.ts.map +1 -0
  21. package/dist/contracts/evolve.js +179 -0
  22. package/dist/contracts/evolve.js.map +1 -0
  23. package/dist/contracts/fingerprint.d.ts +16 -0
  24. package/dist/contracts/fingerprint.d.ts.map +1 -0
  25. package/dist/contracts/fingerprint.js +50 -0
  26. package/dist/contracts/fingerprint.js.map +1 -0
  27. package/dist/contracts/history.d.ts +71 -0
  28. package/dist/contracts/history.d.ts.map +1 -0
  29. package/dist/contracts/history.js +3 -0
  30. package/dist/contracts/history.js.map +1 -0
  31. package/dist/contracts/host-kind.d.ts +40 -0
  32. package/dist/contracts/host-kind.d.ts.map +1 -0
  33. package/dist/contracts/host-kind.js +37 -0
  34. package/dist/contracts/host-kind.js.map +1 -0
  35. package/dist/contracts/index.d.ts +7 -0
  36. package/dist/contracts/index.d.ts.map +1 -0
  37. package/dist/contracts/index.js +6 -0
  38. package/dist/contracts/index.js.map +1 -0
  39. package/dist/contracts/internal.d.ts +10 -0
  40. package/dist/contracts/internal.d.ts.map +1 -0
  41. package/dist/contracts/internal.js +9 -0
  42. package/dist/contracts/internal.js.map +1 -0
  43. package/dist/contracts/names.d.ts +3 -0
  44. package/dist/contracts/names.d.ts.map +1 -0
  45. package/dist/contracts/names.js +13 -0
  46. package/dist/contracts/names.js.map +1 -0
  47. package/dist/contracts/params.d.ts +28 -0
  48. package/dist/contracts/params.d.ts.map +1 -0
  49. package/dist/contracts/params.js +50 -0
  50. package/dist/contracts/params.js.map +1 -0
  51. package/dist/contracts/schema.d.ts +102 -0
  52. package/dist/contracts/schema.d.ts.map +1 -0
  53. package/dist/contracts/schema.js +103 -0
  54. package/dist/contracts/schema.js.map +1 -0
  55. package/dist/contracts/snapshot.d.ts +16 -0
  56. package/dist/contracts/snapshot.d.ts.map +1 -0
  57. package/dist/contracts/snapshot.js +167 -0
  58. package/dist/contracts/snapshot.js.map +1 -0
  59. package/dist/data/args.d.ts +50 -0
  60. package/dist/data/args.d.ts.map +1 -0
  61. package/dist/data/args.js +83 -0
  62. package/dist/data/args.js.map +1 -0
  63. package/dist/data/errors.d.ts +80 -0
  64. package/dist/data/errors.d.ts.map +1 -0
  65. package/dist/data/errors.js +116 -0
  66. package/dist/data/errors.js.map +1 -0
  67. package/dist/data/failure.d.ts +26 -0
  68. package/dist/data/failure.d.ts.map +1 -0
  69. package/dist/data/failure.js +77 -0
  70. package/dist/data/failure.js.map +1 -0
  71. package/dist/data/index.d.ts +4 -0
  72. package/dist/data/index.d.ts.map +1 -0
  73. package/dist/data/index.js +5 -0
  74. package/dist/data/index.js.map +1 -0
  75. package/dist/data/internal.d.ts +7 -0
  76. package/dist/data/internal.d.ts.map +1 -0
  77. package/dist/data/internal.js +8 -0
  78. package/dist/data/internal.js.map +1 -0
  79. package/dist/data/params.d.ts +20 -0
  80. package/dist/data/params.d.ts.map +1 -0
  81. package/dist/data/params.js +31 -0
  82. package/dist/data/params.js.map +1 -0
  83. package/dist/data/principal.d.ts +22 -0
  84. package/dist/data/principal.d.ts.map +1 -0
  85. package/dist/data/principal.js +49 -0
  86. package/dist/data/principal.js.map +1 -0
  87. package/dist/data/validator.d.ts +12 -0
  88. package/dist/data/validator.d.ts.map +1 -0
  89. package/dist/data/validator.js +35 -0
  90. package/dist/data/validator.js.map +1 -0
  91. package/dist/delta/apply-immutable-trusted.js +3 -4
  92. package/dist/delta/apply-immutable-trusted.js.map +1 -1
  93. package/dist/delta/diff.d.ts.map +1 -1
  94. package/dist/delta/diff.js +5 -3
  95. package/dist/delta/diff.js.map +1 -1
  96. package/dist/delta/index.d.ts +9 -1
  97. package/dist/delta/index.d.ts.map +1 -1
  98. package/dist/delta/index.js +15 -11
  99. package/dist/delta/index.js.map +1 -1
  100. package/dist/delta/pending.d.ts +36 -0
  101. package/dist/delta/pending.d.ts.map +1 -0
  102. package/dist/delta/pending.js +143 -0
  103. package/dist/delta/pending.js.map +1 -0
  104. package/dist/delta/tracker.d.ts +12 -0
  105. package/dist/delta/tracker.d.ts.map +1 -1
  106. package/dist/delta/tracker.js +109 -39
  107. package/dist/delta/tracker.js.map +1 -1
  108. package/dist/documents/address-source.d.ts +20 -0
  109. package/dist/documents/address-source.d.ts.map +1 -0
  110. package/dist/documents/address-source.js +44 -0
  111. package/dist/documents/address-source.js.map +1 -0
  112. package/dist/documents/definition.d.ts +84 -0
  113. package/dist/documents/definition.d.ts.map +1 -0
  114. package/dist/documents/definition.js +74 -0
  115. package/dist/documents/definition.js.map +1 -0
  116. package/dist/documents/documents.d.ts +126 -0
  117. package/dist/documents/documents.d.ts.map +1 -0
  118. package/dist/documents/documents.js +248 -0
  119. package/dist/documents/documents.js.map +1 -0
  120. package/dist/documents/fence.d.ts +9 -0
  121. package/dist/documents/fence.d.ts.map +1 -0
  122. package/dist/documents/fence.js +15 -0
  123. package/dist/documents/fence.js.map +1 -0
  124. package/dist/documents/handles.d.ts +76 -0
  125. package/dist/documents/handles.d.ts.map +1 -0
  126. package/dist/documents/handles.js +66 -0
  127. package/dist/documents/handles.js.map +1 -0
  128. package/dist/documents/index.d.ts +4 -0
  129. package/dist/documents/index.d.ts.map +1 -0
  130. package/dist/documents/index.js +3 -0
  131. package/dist/documents/index.js.map +1 -0
  132. package/dist/documents/internal.d.ts +9 -0
  133. package/dist/documents/internal.d.ts.map +1 -0
  134. package/dist/documents/internal.js +9 -0
  135. package/dist/documents/internal.js.map +1 -0
  136. package/dist/documents/keyed-slot.d.ts +103 -0
  137. package/dist/documents/keyed-slot.d.ts.map +1 -0
  138. package/dist/documents/keyed-slot.js +395 -0
  139. package/dist/documents/keyed-slot.js.map +1 -0
  140. package/dist/documents/line.d.ts +7 -0
  141. package/dist/documents/line.d.ts.map +1 -0
  142. package/dist/documents/line.js +14 -0
  143. package/dist/documents/line.js.map +1 -0
  144. package/dist/documents/persistence.d.ts +104 -0
  145. package/dist/documents/persistence.d.ts.map +1 -0
  146. package/dist/documents/persistence.js +129 -0
  147. package/dist/documents/persistence.js.map +1 -0
  148. package/dist/documents/residency.d.ts +31 -0
  149. package/dist/documents/residency.d.ts.map +1 -0
  150. package/dist/documents/residency.js +93 -0
  151. package/dist/documents/residency.js.map +1 -0
  152. package/dist/documents/slot.d.ts +109 -0
  153. package/dist/documents/slot.d.ts.map +1 -0
  154. package/dist/documents/slot.js +181 -0
  155. package/dist/documents/slot.js.map +1 -0
  156. package/dist/documents/transaction.d.ts +143 -0
  157. package/dist/documents/transaction.d.ts.map +1 -0
  158. package/dist/documents/transaction.js +442 -0
  159. package/dist/documents/transaction.js.map +1 -0
  160. package/dist/host/activity.d.ts +31 -0
  161. package/dist/host/activity.d.ts.map +1 -0
  162. package/dist/host/activity.js +40 -0
  163. package/dist/host/activity.js.map +1 -0
  164. package/dist/host/adapted.d.ts +49 -0
  165. package/dist/host/adapted.d.ts.map +1 -0
  166. package/dist/host/adapted.js +214 -0
  167. package/dist/host/adapted.js.map +1 -0
  168. package/dist/host/attempt.d.ts +308 -0
  169. package/dist/host/attempt.d.ts.map +1 -0
  170. package/dist/host/attempt.js +1199 -0
  171. package/dist/host/attempt.js.map +1 -0
  172. package/dist/host/backoff.d.ts +29 -0
  173. package/dist/host/backoff.d.ts.map +1 -0
  174. package/dist/host/backoff.js +69 -0
  175. package/dist/host/backoff.js.map +1 -0
  176. package/dist/host/ctx.d.ts +94 -0
  177. package/dist/host/ctx.d.ts.map +1 -0
  178. package/dist/host/ctx.js +200 -0
  179. package/dist/host/ctx.js.map +1 -0
  180. package/dist/host/deadline.d.ts +12 -0
  181. package/dist/host/deadline.d.ts.map +1 -0
  182. package/dist/host/deadline.js +40 -0
  183. package/dist/host/deadline.js.map +1 -0
  184. package/dist/host/dependencies.d.ts +65 -0
  185. package/dist/host/dependencies.d.ts.map +1 -0
  186. package/dist/host/dependencies.js +115 -0
  187. package/dist/host/dependencies.js.map +1 -0
  188. package/dist/host/destination.d.ts +48 -0
  189. package/dist/host/destination.d.ts.map +1 -0
  190. package/dist/host/destination.js +101 -0
  191. package/dist/host/destination.js.map +1 -0
  192. package/dist/host/facet.d.ts +84 -0
  193. package/dist/host/facet.d.ts.map +1 -0
  194. package/dist/host/facet.js +55 -0
  195. package/dist/host/facet.js.map +1 -0
  196. package/dist/host/follow.d.ts +52 -0
  197. package/dist/host/follow.d.ts.map +1 -0
  198. package/dist/host/follow.js +207 -0
  199. package/dist/host/follow.js.map +1 -0
  200. package/dist/host/host.d.ts +571 -0
  201. package/dist/host/host.d.ts.map +1 -0
  202. package/dist/host/host.js +1318 -0
  203. package/dist/host/host.js.map +1 -0
  204. package/dist/host/index.d.ts +17 -0
  205. package/dist/host/index.d.ts.map +1 -0
  206. package/dist/host/index.js +6 -0
  207. package/dist/host/index.js.map +1 -0
  208. package/dist/host/internal.d.ts +11 -0
  209. package/dist/host/internal.d.ts.map +1 -0
  210. package/dist/host/internal.js +9 -0
  211. package/dist/host/internal.js.map +1 -0
  212. package/dist/host/members.d.ts +50 -0
  213. package/dist/host/members.d.ts.map +1 -0
  214. package/dist/host/members.js +107 -0
  215. package/dist/host/members.js.map +1 -0
  216. package/dist/host/native.d.ts +64 -0
  217. package/dist/host/native.d.ts.map +1 -0
  218. package/dist/host/native.js +126 -0
  219. package/dist/host/native.js.map +1 -0
  220. package/dist/host/object.d.ts +331 -0
  221. package/dist/host/object.d.ts.map +1 -0
  222. package/dist/host/object.js +1296 -0
  223. package/dist/host/object.js.map +1 -0
  224. package/dist/host/old-work.d.ts +34 -0
  225. package/dist/host/old-work.d.ts.map +1 -0
  226. package/dist/host/old-work.js +52 -0
  227. package/dist/host/old-work.js.map +1 -0
  228. package/dist/host/parked.d.ts +23 -0
  229. package/dist/host/parked.d.ts.map +1 -0
  230. package/dist/host/parked.js +79 -0
  231. package/dist/host/parked.js.map +1 -0
  232. package/dist/host/presence.d.ts +34 -0
  233. package/dist/host/presence.d.ts.map +1 -0
  234. package/dist/host/presence.js +117 -0
  235. package/dist/host/presence.js.map +1 -0
  236. package/dist/host/readiness.d.ts +27 -0
  237. package/dist/host/readiness.d.ts.map +1 -0
  238. package/dist/host/readiness.js +134 -0
  239. package/dist/host/readiness.js.map +1 -0
  240. package/dist/host/ref-state.d.ts +53 -0
  241. package/dist/host/ref-state.d.ts.map +1 -0
  242. package/dist/host/ref-state.js +83 -0
  243. package/dist/host/ref-state.js.map +1 -0
  244. package/dist/host/reference-keys.d.ts +36 -0
  245. package/dist/host/reference-keys.d.ts.map +1 -0
  246. package/dist/host/reference-keys.js +168 -0
  247. package/dist/host/reference-keys.js.map +1 -0
  248. package/dist/host/reference-source.d.ts +65 -0
  249. package/dist/host/reference-source.d.ts.map +1 -0
  250. package/dist/host/reference-source.js +285 -0
  251. package/dist/host/reference-source.js.map +1 -0
  252. package/dist/host/reference.d.ts +321 -0
  253. package/dist/host/reference.d.ts.map +1 -0
  254. package/dist/host/reference.js +797 -0
  255. package/dist/host/reference.js.map +1 -0
  256. package/dist/host/reload-cycle.d.ts +16 -0
  257. package/dist/host/reload-cycle.d.ts.map +1 -0
  258. package/dist/host/reload-cycle.js +81 -0
  259. package/dist/host/reload-cycle.js.map +1 -0
  260. package/dist/host/retry-on.d.ts +28 -0
  261. package/dist/host/retry-on.d.ts.map +1 -0
  262. package/dist/host/retry-on.js +52 -0
  263. package/dist/host/retry-on.js.map +1 -0
  264. package/dist/host/revocation.d.ts +16 -0
  265. package/dist/host/revocation.d.ts.map +1 -0
  266. package/dist/host/revocation.js +27 -0
  267. package/dist/host/revocation.js.map +1 -0
  268. package/dist/host/root.d.ts +37 -0
  269. package/dist/host/root.d.ts.map +1 -0
  270. package/dist/host/root.js +68 -0
  271. package/dist/host/root.js.map +1 -0
  272. package/dist/host/route.d.ts +64 -0
  273. package/dist/host/route.d.ts.map +1 -0
  274. package/dist/host/route.js +227 -0
  275. package/dist/host/route.js.map +1 -0
  276. package/dist/host/routines.d.ts +78 -0
  277. package/dist/host/routines.d.ts.map +1 -0
  278. package/dist/host/routines.js +398 -0
  279. package/dist/host/routines.js.map +1 -0
  280. package/dist/host/sleep.d.ts +9 -0
  281. package/dist/host/sleep.d.ts.map +1 -0
  282. package/dist/host/sleep.js +40 -0
  283. package/dist/host/sleep.js.map +1 -0
  284. package/dist/host/staging.d.ts +94 -0
  285. package/dist/host/staging.d.ts.map +1 -0
  286. package/dist/host/staging.js +304 -0
  287. package/dist/host/staging.js.map +1 -0
  288. package/dist/host/unbound-clock.d.ts +23 -0
  289. package/dist/host/unbound-clock.d.ts.map +1 -0
  290. package/dist/host/unbound-clock.js +58 -0
  291. package/dist/host/unbound-clock.js.map +1 -0
  292. package/dist/host/unbound.d.ts +37 -0
  293. package/dist/host/unbound.d.ts.map +1 -0
  294. package/dist/host/unbound.js +88 -0
  295. package/dist/host/unbound.js.map +1 -0
  296. package/dist/host/uuid.d.ts +3 -0
  297. package/dist/host/uuid.d.ts.map +1 -0
  298. package/dist/host/uuid.js +38 -0
  299. package/dist/host/uuid.js.map +1 -0
  300. package/dist/index.d.ts +29 -18
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +20 -9
  303. package/dist/index.js.map +1 -1
  304. package/dist/jobs/definition.d.ts +96 -0
  305. package/dist/jobs/definition.d.ts.map +1 -0
  306. package/dist/jobs/definition.js +83 -0
  307. package/dist/jobs/definition.js.map +1 -0
  308. package/dist/jobs/index.d.ts +5 -0
  309. package/dist/jobs/index.d.ts.map +1 -0
  310. package/dist/jobs/index.js +3 -0
  311. package/dist/jobs/index.js.map +1 -0
  312. package/dist/jobs/internal.d.ts +3 -0
  313. package/dist/jobs/internal.d.ts.map +1 -0
  314. package/dist/jobs/internal.js +4 -0
  315. package/dist/jobs/internal.js.map +1 -0
  316. package/dist/jobs/job.d.ts +149 -0
  317. package/dist/jobs/job.d.ts.map +1 -0
  318. package/dist/jobs/job.js +387 -0
  319. package/dist/jobs/job.js.map +1 -0
  320. package/dist/jobs/persisted.d.ts +38 -0
  321. package/dist/jobs/persisted.d.ts.map +1 -0
  322. package/dist/jobs/persisted.js +95 -0
  323. package/dist/jobs/persisted.js.map +1 -0
  324. package/dist/jobs/records.d.ts +231 -0
  325. package/dist/jobs/records.d.ts.map +1 -0
  326. package/dist/jobs/records.js +871 -0
  327. package/dist/jobs/records.js.map +1 -0
  328. package/dist/jobs/run-states.d.ts +69 -0
  329. package/dist/jobs/run-states.d.ts.map +1 -0
  330. package/dist/jobs/run-states.js +228 -0
  331. package/dist/jobs/run-states.js.map +1 -0
  332. package/dist/jobs/run.d.ts +117 -0
  333. package/dist/jobs/run.d.ts.map +1 -0
  334. package/dist/jobs/run.js +204 -0
  335. package/dist/jobs/run.js.map +1 -0
  336. package/dist/jobs/running.d.ts +44 -0
  337. package/dist/jobs/running.d.ts.map +1 -0
  338. package/dist/jobs/running.js +117 -0
  339. package/dist/jobs/running.js.map +1 -0
  340. package/dist/jobs/stored.d.ts +63 -0
  341. package/dist/jobs/stored.d.ts.map +1 -0
  342. package/dist/jobs/stored.js +55 -0
  343. package/dist/jobs/stored.js.map +1 -0
  344. package/dist/link/binary.d.ts +4 -0
  345. package/dist/link/binary.d.ts.map +1 -0
  346. package/dist/link/binary.js +544 -0
  347. package/dist/link/binary.js.map +1 -0
  348. package/dist/link/channel.d.ts +68 -0
  349. package/dist/link/channel.d.ts.map +1 -0
  350. package/dist/link/channel.js +215 -0
  351. package/dist/link/channel.js.map +1 -0
  352. package/dist/link/errors.d.ts +7 -0
  353. package/dist/link/errors.d.ts.map +1 -0
  354. package/dist/link/errors.js +21 -0
  355. package/dist/link/errors.js.map +1 -0
  356. package/dist/link/index.d.ts +8 -0
  357. package/dist/link/index.d.ts.map +1 -0
  358. package/dist/link/index.js +8 -0
  359. package/dist/link/index.js.map +1 -0
  360. package/dist/link/internal.d.ts +9 -0
  361. package/dist/link/internal.d.ts.map +1 -0
  362. package/dist/link/internal.js +10 -0
  363. package/dist/link/internal.js.map +1 -0
  364. package/dist/link/ipc.d.ts +22 -0
  365. package/dist/link/ipc.d.ts.map +1 -0
  366. package/dist/link/ipc.js +64 -0
  367. package/dist/link/ipc.js.map +1 -0
  368. package/dist/link/link.d.ts +34 -0
  369. package/dist/link/link.d.ts.map +1 -0
  370. package/dist/link/link.js +87 -0
  371. package/dist/link/link.js.map +1 -0
  372. package/dist/link/message.d.ts +262 -0
  373. package/dist/link/message.d.ts.map +1 -0
  374. package/dist/link/message.js +156 -0
  375. package/dist/link/message.js.map +1 -0
  376. package/dist/link/part.d.ts +80 -0
  377. package/dist/link/part.d.ts.map +1 -0
  378. package/dist/link/part.js +165 -0
  379. package/dist/link/part.js.map +1 -0
  380. package/dist/link/text.d.ts +6 -0
  381. package/dist/link/text.d.ts.map +1 -0
  382. package/dist/link/text.js +355 -0
  383. package/dist/link/text.js.map +1 -0
  384. package/dist/link/values.d.ts +40 -0
  385. package/dist/link/values.d.ts.map +1 -0
  386. package/dist/link/values.js +121 -0
  387. package/dist/link/values.js.map +1 -0
  388. package/dist/link/websocket.d.ts +26 -0
  389. package/dist/link/websocket.d.ts.map +1 -0
  390. package/dist/link/websocket.js +91 -0
  391. package/dist/link/websocket.js.map +1 -0
  392. package/dist/node/app/app.d.ts +269 -0
  393. package/dist/node/app/app.d.ts.map +1 -0
  394. package/dist/node/app/app.js +513 -0
  395. package/dist/node/app/app.js.map +1 -0
  396. package/dist/node/app/archive.d.ts +37 -0
  397. package/dist/node/app/archive.d.ts.map +1 -0
  398. package/dist/node/app/archive.js +204 -0
  399. package/dist/node/app/archive.js.map +1 -0
  400. package/dist/node/app/blobs.d.ts +23 -0
  401. package/dist/node/app/blobs.d.ts.map +1 -0
  402. package/dist/node/app/blobs.js +64 -0
  403. package/dist/node/app/blobs.js.map +1 -0
  404. package/dist/node/app/data.d.ts +35 -0
  405. package/dist/node/app/data.d.ts.map +1 -0
  406. package/dist/node/app/data.js +44 -0
  407. package/dist/node/app/data.js.map +1 -0
  408. package/dist/node/app/ephemeral-sessions.d.ts +20 -0
  409. package/dist/node/app/ephemeral-sessions.d.ts.map +1 -0
  410. package/dist/node/app/ephemeral-sessions.js +69 -0
  411. package/dist/node/app/ephemeral-sessions.js.map +1 -0
  412. package/dist/node/app/ephemeral.d.ts +11 -0
  413. package/dist/node/app/ephemeral.d.ts.map +1 -0
  414. package/dist/node/app/ephemeral.js +34 -0
  415. package/dist/node/app/ephemeral.js.map +1 -0
  416. package/dist/node/app/files-copy.d.ts +13 -0
  417. package/dist/node/app/files-copy.d.ts.map +1 -0
  418. package/dist/node/app/files-copy.js +86 -0
  419. package/dist/node/app/files-copy.js.map +1 -0
  420. package/dist/node/app/files-entry.d.ts +4 -0
  421. package/dist/node/app/files-entry.d.ts.map +1 -0
  422. package/dist/node/app/files-entry.js +7 -0
  423. package/dist/node/app/files-entry.js.map +1 -0
  424. package/dist/node/app/files-index.d.ts +180 -0
  425. package/dist/node/app/files-index.d.ts.map +1 -0
  426. package/dist/node/app/files-index.js +535 -0
  427. package/dist/node/app/files-index.js.map +1 -0
  428. package/dist/node/app/files.d.ts +363 -0
  429. package/dist/node/app/files.d.ts.map +1 -0
  430. package/dist/node/app/files.js +368 -0
  431. package/dist/node/app/files.js.map +1 -0
  432. package/dist/node/app/folder-views.d.ts +21 -0
  433. package/dist/node/app/folder-views.d.ts.map +1 -0
  434. package/dist/node/app/folder-views.js +55 -0
  435. package/dist/node/app/folder-views.js.map +1 -0
  436. package/dist/node/app/index.d.ts +12 -0
  437. package/dist/node/app/index.d.ts.map +1 -0
  438. package/dist/node/app/index.js +15 -0
  439. package/dist/node/app/index.js.map +1 -0
  440. package/dist/node/app/info.d.ts +66 -0
  441. package/dist/node/app/info.d.ts.map +1 -0
  442. package/dist/node/app/info.js +37 -0
  443. package/dist/node/app/info.js.map +1 -0
  444. package/dist/node/app/invite.d.ts +5 -0
  445. package/dist/node/app/invite.d.ts.map +1 -0
  446. package/dist/node/app/invite.js +64 -0
  447. package/dist/node/app/invite.js.map +1 -0
  448. package/dist/node/app/layout.d.ts +36 -0
  449. package/dist/node/app/layout.d.ts.map +1 -0
  450. package/dist/node/app/layout.js +87 -0
  451. package/dist/node/app/layout.js.map +1 -0
  452. package/dist/node/app/owner.d.ts +31 -0
  453. package/dist/node/app/owner.d.ts.map +1 -0
  454. package/dist/node/app/owner.js +104 -0
  455. package/dist/node/app/owner.js.map +1 -0
  456. package/dist/node/app/pairing.d.ts +55 -0
  457. package/dist/node/app/pairing.d.ts.map +1 -0
  458. package/dist/node/app/pairing.js +183 -0
  459. package/dist/node/app/pairing.js.map +1 -0
  460. package/dist/node/app/secrets.d.ts +16 -0
  461. package/dist/node/app/secrets.d.ts.map +1 -0
  462. package/dist/node/app/secrets.js +72 -0
  463. package/dist/node/app/secrets.js.map +1 -0
  464. package/dist/node/app/sessions.d.ts +72 -0
  465. package/dist/node/app/sessions.d.ts.map +1 -0
  466. package/dist/node/app/sessions.js +222 -0
  467. package/dist/node/app/sessions.js.map +1 -0
  468. package/dist/node/app/tar.d.ts +24 -0
  469. package/dist/node/app/tar.d.ts.map +1 -0
  470. package/dist/node/app/tar.js +167 -0
  471. package/dist/node/app/tar.js.map +1 -0
  472. package/dist/node/app/uploads.d.ts +37 -0
  473. package/dist/node/app/uploads.d.ts.map +1 -0
  474. package/dist/node/app/uploads.js +157 -0
  475. package/dist/node/app/uploads.js.map +1 -0
  476. package/dist/node/app/users.d.ts +37 -0
  477. package/dist/node/app/users.d.ts.map +1 -0
  478. package/dist/node/app/users.js +62 -0
  479. package/dist/node/app/users.js.map +1 -0
  480. package/dist/node/app/worker.d.ts +18 -0
  481. package/dist/node/app/worker.d.ts.map +1 -0
  482. package/dist/node/app/worker.js +84 -0
  483. package/dist/node/app/worker.js.map +1 -0
  484. package/dist/node/compression.d.ts +7 -0
  485. package/dist/node/compression.d.ts.map +1 -0
  486. package/dist/node/compression.js +25 -0
  487. package/dist/node/compression.js.map +1 -0
  488. package/dist/node/http/admission.d.ts +63 -0
  489. package/dist/node/http/admission.d.ts.map +1 -0
  490. package/dist/node/http/admission.js +134 -0
  491. package/dist/node/http/admission.js.map +1 -0
  492. package/dist/node/http/authenticate.d.ts +21 -0
  493. package/dist/node/http/authenticate.d.ts.map +1 -0
  494. package/dist/node/http/authenticate.js +34 -0
  495. package/dist/node/http/authenticate.js.map +1 -0
  496. package/dist/node/http/cookies.d.ts +32 -0
  497. package/dist/node/http/cookies.d.ts.map +1 -0
  498. package/dist/node/http/cookies.js +70 -0
  499. package/dist/node/http/cookies.js.map +1 -0
  500. package/dist/node/http/file.d.ts +23 -0
  501. package/dist/node/http/file.d.ts.map +1 -0
  502. package/dist/node/http/file.js +94 -0
  503. package/dist/node/http/file.js.map +1 -0
  504. package/dist/node/http/headers.d.ts +37 -0
  505. package/dist/node/http/headers.d.ts.map +1 -0
  506. package/dist/node/http/headers.js +136 -0
  507. package/dist/node/http/headers.js.map +1 -0
  508. package/dist/node/http/http.d.ts +111 -0
  509. package/dist/node/http/http.d.ts.map +1 -0
  510. package/dist/node/http/http.js +524 -0
  511. package/dist/node/http/http.js.map +1 -0
  512. package/dist/node/http/incoming.d.ts +19 -0
  513. package/dist/node/http/incoming.d.ts.map +1 -0
  514. package/dist/node/http/incoming.js +31 -0
  515. package/dist/node/http/incoming.js.map +1 -0
  516. package/dist/node/http/index.d.ts +11 -0
  517. package/dist/node/http/index.d.ts.map +1 -0
  518. package/dist/node/http/index.js +12 -0
  519. package/dist/node/http/index.js.map +1 -0
  520. package/dist/node/http/node.d.ts +78 -0
  521. package/dist/node/http/node.d.ts.map +1 -0
  522. package/dist/node/http/node.js +291 -0
  523. package/dist/node/http/node.js.map +1 -0
  524. package/dist/node/http/request.d.ts +60 -0
  525. package/dist/node/http/request.d.ts.map +1 -0
  526. package/dist/node/http/request.js +118 -0
  527. package/dist/node/http/request.js.map +1 -0
  528. package/dist/node/http/response.d.ts +63 -0
  529. package/dist/node/http/response.d.ts.map +1 -0
  530. package/dist/node/http/response.js +202 -0
  531. package/dist/node/http/response.js.map +1 -0
  532. package/dist/node/http/router.d.ts +132 -0
  533. package/dist/node/http/router.d.ts.map +1 -0
  534. package/dist/node/http/router.js +267 -0
  535. package/dist/node/http/router.js.map +1 -0
  536. package/dist/node/http/upgrades.d.ts +61 -0
  537. package/dist/node/http/upgrades.d.ts.map +1 -0
  538. package/dist/node/http/upgrades.js +192 -0
  539. package/dist/node/http/upgrades.js.map +1 -0
  540. package/dist/node/plugins/base-inputs.d.ts +14 -0
  541. package/dist/node/plugins/base-inputs.d.ts.map +1 -0
  542. package/dist/node/plugins/base-inputs.js +33 -0
  543. package/dist/node/plugins/base-inputs.js.map +1 -0
  544. package/dist/node/plugins/build.d.ts +77 -0
  545. package/dist/node/plugins/build.d.ts.map +1 -0
  546. package/dist/node/plugins/build.js +576 -0
  547. package/dist/node/plugins/build.js.map +1 -0
  548. package/dist/node/plugins/css-modules.d.ts +13 -0
  549. package/dist/node/plugins/css-modules.d.ts.map +1 -0
  550. package/dist/node/plugins/css-modules.js +58 -0
  551. package/dist/node/plugins/css-modules.js.map +1 -0
  552. package/dist/node/plugins/discover.d.ts +67 -0
  553. package/dist/node/plugins/discover.d.ts.map +1 -0
  554. package/dist/node/plugins/discover.js +369 -0
  555. package/dist/node/plugins/discover.js.map +1 -0
  556. package/dist/node/plugins/evaluate.d.ts +33 -0
  557. package/dist/node/plugins/evaluate.d.ts.map +1 -0
  558. package/dist/node/plugins/evaluate.js +121 -0
  559. package/dist/node/plugins/evaluate.js.map +1 -0
  560. package/dist/node/plugins/index.d.ts +11 -0
  561. package/dist/node/plugins/index.d.ts.map +1 -0
  562. package/dist/node/plugins/index.js +13 -0
  563. package/dist/node/plugins/index.js.map +1 -0
  564. package/dist/node/plugins/install.d.ts +38 -0
  565. package/dist/node/plugins/install.d.ts.map +1 -0
  566. package/dist/node/plugins/install.js +213 -0
  567. package/dist/node/plugins/install.js.map +1 -0
  568. package/dist/node/plugins/plugins.d.ts +162 -0
  569. package/dist/node/plugins/plugins.d.ts.map +1 -0
  570. package/dist/node/plugins/plugins.js +244 -0
  571. package/dist/node/plugins/plugins.js.map +1 -0
  572. package/dist/node/plugins/runtime.d.ts +57 -0
  573. package/dist/node/plugins/runtime.d.ts.map +1 -0
  574. package/dist/node/plugins/runtime.js +92 -0
  575. package/dist/node/plugins/runtime.js.map +1 -0
  576. package/dist/node/plugins/stack.d.ts +16 -0
  577. package/dist/node/plugins/stack.d.ts.map +1 -0
  578. package/dist/node/plugins/stack.js +61 -0
  579. package/dist/node/plugins/stack.js.map +1 -0
  580. package/dist/node/plugins/testing.d.ts +58 -0
  581. package/dist/node/plugins/testing.d.ts.map +1 -0
  582. package/dist/node/plugins/testing.js +210 -0
  583. package/dist/node/plugins/testing.js.map +1 -0
  584. package/dist/node/plugins/watcher.d.ts +69 -0
  585. package/dist/node/plugins/watcher.d.ts.map +1 -0
  586. package/dist/node/plugins/watcher.js +622 -0
  587. package/dist/node/plugins/watcher.js.map +1 -0
  588. package/dist/node/surfaces/bundle.d.ts +31 -0
  589. package/dist/node/surfaces/bundle.d.ts.map +1 -0
  590. package/dist/node/surfaces/bundle.js +118 -0
  591. package/dist/node/surfaces/bundle.js.map +1 -0
  592. package/dist/node/surfaces/current.d.ts +17 -0
  593. package/dist/node/surfaces/current.d.ts.map +1 -0
  594. package/dist/node/surfaces/current.js +54 -0
  595. package/dist/node/surfaces/current.js.map +1 -0
  596. package/dist/node/surfaces/index.d.ts +6 -0
  597. package/dist/node/surfaces/index.d.ts.map +1 -0
  598. package/dist/node/surfaces/index.js +6 -0
  599. package/dist/node/surfaces/index.js.map +1 -0
  600. package/dist/node/surfaces/published.d.ts +27 -0
  601. package/dist/node/surfaces/published.d.ts.map +1 -0
  602. package/dist/node/surfaces/published.js +142 -0
  603. package/dist/node/surfaces/published.js.map +1 -0
  604. package/dist/node/surfaces/served.d.ts +15 -0
  605. package/dist/node/surfaces/served.d.ts.map +1 -0
  606. package/dist/node/surfaces/served.js +42 -0
  607. package/dist/node/surfaces/served.js.map +1 -0
  608. package/dist/node/surfaces/surface-build.d.ts +53 -0
  609. package/dist/node/surfaces/surface-build.d.ts.map +1 -0
  610. package/dist/node/surfaces/surface-build.js +105 -0
  611. package/dist/node/surfaces/surface-build.js.map +1 -0
  612. package/dist/node/surfaces/tui.d.ts +40 -0
  613. package/dist/node/surfaces/tui.d.ts.map +1 -0
  614. package/dist/node/surfaces/tui.js +55 -0
  615. package/dist/node/surfaces/tui.js.map +1 -0
  616. package/dist/node/surfaces/web.d.ts +56 -0
  617. package/dist/node/surfaces/web.d.ts.map +1 -0
  618. package/dist/node/surfaces/web.js +108 -0
  619. package/dist/node/surfaces/web.js.map +1 -0
  620. package/dist/node/tui/actions.d.ts +49 -0
  621. package/dist/node/tui/actions.d.ts.map +1 -0
  622. package/dist/node/tui/actions.js +195 -0
  623. package/dist/node/tui/actions.js.map +1 -0
  624. package/dist/node/tui/credentials.d.ts +17 -0
  625. package/dist/node/tui/credentials.d.ts.map +1 -0
  626. package/dist/node/tui/credentials.js +54 -0
  627. package/dist/node/tui/credentials.js.map +1 -0
  628. package/dist/node/tui/filter.d.ts +5 -0
  629. package/dist/node/tui/filter.d.ts.map +1 -0
  630. package/dist/node/tui/filter.js +79 -0
  631. package/dist/node/tui/filter.js.map +1 -0
  632. package/dist/node/tui/index.d.ts +6 -0
  633. package/dist/node/tui/index.d.ts.map +1 -0
  634. package/dist/node/tui/index.js +6 -0
  635. package/dist/node/tui/index.js.map +1 -0
  636. package/dist/node/tui/launcher.d.ts +40 -0
  637. package/dist/node/tui/launcher.d.ts.map +1 -0
  638. package/dist/node/tui/launcher.js +439 -0
  639. package/dist/node/tui/launcher.js.map +1 -0
  640. package/dist/node/tui/pipe.d.ts +18 -0
  641. package/dist/node/tui/pipe.d.ts.map +1 -0
  642. package/dist/node/tui/pipe.js +134 -0
  643. package/dist/node/tui/pipe.js.map +1 -0
  644. package/dist/node/tui/sandbox.d.ts +54 -0
  645. package/dist/node/tui/sandbox.d.ts.map +1 -0
  646. package/dist/node/tui/sandbox.js +431 -0
  647. package/dist/node/tui/sandbox.js.map +1 -0
  648. package/dist/node/workers/base.d.ts +30 -0
  649. package/dist/node/workers/base.d.ts.map +1 -0
  650. package/dist/node/workers/base.js +255 -0
  651. package/dist/node/workers/base.js.map +1 -0
  652. package/dist/node/workers/child.d.ts +4 -0
  653. package/dist/node/workers/child.d.ts.map +1 -0
  654. package/dist/node/workers/child.js +6 -0
  655. package/dist/node/workers/child.js.map +1 -0
  656. package/dist/node/workers/control.d.ts +83 -0
  657. package/dist/node/workers/control.d.ts.map +1 -0
  658. package/dist/node/workers/control.js +77 -0
  659. package/dist/node/workers/control.js.map +1 -0
  660. package/dist/node/workers/index.d.ts +4 -0
  661. package/dist/node/workers/index.d.ts.map +1 -0
  662. package/dist/node/workers/index.js +7 -0
  663. package/dist/node/workers/index.js.map +1 -0
  664. package/dist/node/workers/lock.d.ts +30 -0
  665. package/dist/node/workers/lock.d.ts.map +1 -0
  666. package/dist/node/workers/lock.js +180 -0
  667. package/dist/node/workers/lock.js.map +1 -0
  668. package/dist/node/workers/main.d.ts +46 -0
  669. package/dist/node/workers/main.d.ts.map +1 -0
  670. package/dist/node/workers/main.js +230 -0
  671. package/dist/node/workers/main.js.map +1 -0
  672. package/dist/node/workers/process.d.ts +42 -0
  673. package/dist/node/workers/process.d.ts.map +1 -0
  674. package/dist/node/workers/process.js +125 -0
  675. package/dist/node/workers/process.js.map +1 -0
  676. package/dist/node/workers/workers.d.ts +122 -0
  677. package/dist/node/workers/workers.d.ts.map +1 -0
  678. package/dist/node/workers/workers.js +677 -0
  679. package/dist/node/workers/workers.js.map +1 -0
  680. package/dist/output.d.ts +1 -1
  681. package/dist/output.d.ts.map +1 -1
  682. package/dist/output.js +4 -2
  683. package/dist/output.js.map +1 -1
  684. package/dist/react/hooks.d.ts +43 -0
  685. package/dist/react/hooks.d.ts.map +1 -0
  686. package/dist/react/hooks.js +82 -0
  687. package/dist/react/hooks.js.map +1 -0
  688. package/dist/react/index.d.ts +3 -0
  689. package/dist/react/index.d.ts.map +1 -0
  690. package/dist/react/index.js +4 -0
  691. package/dist/react/index.js.map +1 -0
  692. package/dist/react/stores.d.ts +9 -0
  693. package/dist/react/stores.d.ts.map +1 -0
  694. package/dist/react/stores.js +37 -0
  695. package/dist/react/stores.js.map +1 -0
  696. package/dist/registries/contribution.d.ts +50 -0
  697. package/dist/registries/contribution.d.ts.map +1 -0
  698. package/dist/registries/contribution.js +129 -0
  699. package/dist/registries/contribution.js.map +1 -0
  700. package/dist/registries/entries.d.ts +18 -0
  701. package/dist/registries/entries.d.ts.map +1 -0
  702. package/dist/registries/entries.js +42 -0
  703. package/dist/registries/entries.js.map +1 -0
  704. package/dist/registries/index.d.ts +3 -0
  705. package/dist/registries/index.d.ts.map +1 -0
  706. package/dist/registries/index.js +5 -0
  707. package/dist/registries/index.js.map +1 -0
  708. package/dist/registries/internal.d.ts +4 -0
  709. package/dist/registries/internal.d.ts.map +1 -0
  710. package/dist/registries/internal.js +5 -0
  711. package/dist/registries/internal.js.map +1 -0
  712. package/dist/registries/record.d.ts +115 -0
  713. package/dist/registries/record.d.ts.map +1 -0
  714. package/dist/registries/record.js +283 -0
  715. package/dist/registries/record.js.map +1 -0
  716. package/dist/registries/registry.d.ts +74 -0
  717. package/dist/registries/registry.d.ts.map +1 -0
  718. package/dist/registries/registry.js +14 -0
  719. package/dist/registries/registry.js.map +1 -0
  720. package/dist/registries/value.d.ts +48 -0
  721. package/dist/registries/value.d.ts.map +1 -0
  722. package/dist/registries/value.js +224 -0
  723. package/dist/registries/value.js.map +1 -0
  724. package/dist/remote/calls.d.ts +25 -0
  725. package/dist/remote/calls.d.ts.map +1 -0
  726. package/dist/remote/calls.js +62 -0
  727. package/dist/remote/calls.js.map +1 -0
  728. package/dist/remote/consumer.d.ts +43 -0
  729. package/dist/remote/consumer.d.ts.map +1 -0
  730. package/dist/remote/consumer.js +350 -0
  731. package/dist/remote/consumer.js.map +1 -0
  732. package/dist/remote/hold.d.ts +141 -0
  733. package/dist/remote/hold.d.ts.map +1 -0
  734. package/dist/remote/hold.js +579 -0
  735. package/dist/remote/hold.js.map +1 -0
  736. package/dist/remote/host-link.d.ts +77 -0
  737. package/dist/remote/host-link.d.ts.map +1 -0
  738. package/dist/remote/host-link.js +184 -0
  739. package/dist/remote/host-link.js.map +1 -0
  740. package/dist/remote/internal.d.ts +6 -0
  741. package/dist/remote/internal.d.ts.map +1 -0
  742. package/dist/remote/internal.js +6 -0
  743. package/dist/remote/internal.js.map +1 -0
  744. package/dist/remote/path.d.ts +46 -0
  745. package/dist/remote/path.d.ts.map +1 -0
  746. package/dist/remote/path.js +73 -0
  747. package/dist/remote/path.js.map +1 -0
  748. package/dist/remote/provider.d.ts +89 -0
  749. package/dist/remote/provider.d.ts.map +1 -0
  750. package/dist/remote/provider.js +597 -0
  751. package/dist/remote/provider.js.map +1 -0
  752. package/dist/remote/relay.d.ts +69 -0
  753. package/dist/remote/relay.d.ts.map +1 -0
  754. package/dist/remote/relay.js +219 -0
  755. package/dist/remote/relay.js.map +1 -0
  756. package/dist/remote/remote-object.d.ts +138 -0
  757. package/dist/remote/remote-object.d.ts.map +1 -0
  758. package/dist/remote/remote-object.js +492 -0
  759. package/dist/remote/remote-object.js.map +1 -0
  760. package/dist/remote/replica.d.ts +59 -0
  761. package/dist/remote/replica.d.ts.map +1 -0
  762. package/dist/remote/replica.js +125 -0
  763. package/dist/remote/replica.js.map +1 -0
  764. package/dist/sqlite/cloudflare.d.ts +2 -0
  765. package/dist/sqlite/cloudflare.d.ts.map +1 -1
  766. package/dist/sqlite/cloudflare.js +10 -0
  767. package/dist/sqlite/cloudflare.js.map +1 -1
  768. package/dist/sqlite/database.d.ts +5 -2
  769. package/dist/sqlite/database.d.ts.map +1 -1
  770. package/dist/sqlite/database.js.map +1 -1
  771. package/dist/sqlite/node.d.ts +13 -2
  772. package/dist/sqlite/node.d.ts.map +1 -1
  773. package/dist/sqlite/node.js +31 -8
  774. package/dist/sqlite/node.js.map +1 -1
  775. package/dist/state/batch.d.ts +64 -0
  776. package/dist/state/batch.d.ts.map +1 -0
  777. package/dist/state/batch.js +164 -0
  778. package/dist/state/batch.js.map +1 -0
  779. package/dist/state/derive.d.ts +52 -0
  780. package/dist/state/derive.d.ts.map +1 -0
  781. package/dist/state/derive.js +182 -0
  782. package/dist/state/derive.js.map +1 -0
  783. package/dist/state/index.d.ts +6 -0
  784. package/dist/state/index.d.ts.map +1 -0
  785. package/dist/state/index.js +4 -0
  786. package/dist/state/index.js.map +1 -0
  787. package/dist/state/internal.d.ts +6 -0
  788. package/dist/state/internal.d.ts.map +1 -0
  789. package/dist/state/internal.js +8 -0
  790. package/dist/state/internal.js.map +1 -0
  791. package/dist/state/native-source.d.ts +106 -0
  792. package/dist/state/native-source.d.ts.map +1 -0
  793. package/dist/state/native-source.js +240 -0
  794. package/dist/state/native-source.js.map +1 -0
  795. package/dist/state/watchable.d.ts +114 -0
  796. package/dist/state/watchable.d.ts.map +1 -0
  797. package/dist/state/watchable.js +156 -0
  798. package/dist/state/watchable.js.map +1 -0
  799. package/dist/state/writable.d.ts +32 -0
  800. package/dist/state/writable.d.ts.map +1 -0
  801. package/dist/state/writable.js +49 -0
  802. package/dist/state/writable.js.map +1 -0
  803. package/dist/store/adapter.d.ts +67 -0
  804. package/dist/store/adapter.d.ts.map +1 -0
  805. package/dist/store/adapter.js +118 -0
  806. package/dist/store/adapter.js.map +1 -0
  807. package/dist/store/allocator.d.ts +17 -0
  808. package/dist/store/allocator.d.ts.map +1 -0
  809. package/dist/store/allocator.js +30 -0
  810. package/dist/store/allocator.js.map +1 -0
  811. package/dist/store/applier.d.ts +8 -0
  812. package/dist/store/applier.d.ts.map +1 -0
  813. package/dist/store/applier.js +375 -0
  814. package/dist/store/applier.js.map +1 -0
  815. package/dist/store/apply-batch.d.ts +12 -0
  816. package/dist/store/apply-batch.d.ts.map +1 -0
  817. package/dist/store/apply-batch.js +83 -0
  818. package/dist/store/apply-batch.js.map +1 -0
  819. package/dist/store/archive.d.ts +32 -0
  820. package/dist/store/archive.d.ts.map +1 -0
  821. package/dist/store/archive.js +130 -0
  822. package/dist/store/archive.js.map +1 -0
  823. package/dist/store/backend.d.ts +10 -0
  824. package/dist/store/backend.d.ts.map +1 -0
  825. package/dist/store/backend.js +15 -0
  826. package/dist/store/backend.js.map +1 -0
  827. package/dist/store/catalog.d.ts +24 -0
  828. package/dist/store/catalog.d.ts.map +1 -0
  829. package/dist/store/catalog.js +17 -0
  830. package/dist/store/catalog.js.map +1 -0
  831. package/dist/store/claims.d.ts +23 -0
  832. package/dist/store/claims.d.ts.map +1 -0
  833. package/dist/store/claims.js +65 -0
  834. package/dist/store/claims.js.map +1 -0
  835. package/dist/store/columns.d.ts +77 -0
  836. package/dist/store/columns.d.ts.map +1 -0
  837. package/dist/store/columns.js +77 -0
  838. package/dist/store/columns.js.map +1 -0
  839. package/dist/store/engine.d.ts +176 -0
  840. package/dist/store/engine.d.ts.map +1 -0
  841. package/dist/store/engine.js +283 -0
  842. package/dist/store/engine.js.map +1 -0
  843. package/dist/store/evaluate.d.ts +17 -0
  844. package/dist/store/evaluate.d.ts.map +1 -0
  845. package/dist/store/evaluate.js +128 -0
  846. package/dist/store/evaluate.js.map +1 -0
  847. package/dist/store/export.d.ts +17 -0
  848. package/dist/store/export.d.ts.map +1 -0
  849. package/dist/store/export.js +200 -0
  850. package/dist/store/export.js.map +1 -0
  851. package/dist/store/expression.d.ts +150 -0
  852. package/dist/store/expression.d.ts.map +1 -0
  853. package/dist/store/expression.js +268 -0
  854. package/dist/store/expression.js.map +1 -0
  855. package/dist/store/import.d.ts +10 -0
  856. package/dist/store/import.d.ts.map +1 -0
  857. package/dist/store/import.js +276 -0
  858. package/dist/store/import.js.map +1 -0
  859. package/dist/store/index.d.ts +16 -0
  860. package/dist/store/index.d.ts.map +1 -0
  861. package/dist/store/index.js +13 -0
  862. package/dist/store/index.js.map +1 -0
  863. package/dist/store/json-column.d.ts +33 -0
  864. package/dist/store/json-column.d.ts.map +1 -0
  865. package/dist/store/json-column.js +62 -0
  866. package/dist/store/json-column.js.map +1 -0
  867. package/dist/store/jsonl.d.ts +9 -0
  868. package/dist/store/jsonl.d.ts.map +1 -0
  869. package/dist/store/jsonl.js +61 -0
  870. package/dist/store/jsonl.js.map +1 -0
  871. package/dist/store/live-query.d.ts +108 -0
  872. package/dist/store/live-query.d.ts.map +1 -0
  873. package/dist/store/live-query.js +254 -0
  874. package/dist/store/live-query.js.map +1 -0
  875. package/dist/store/outbox.d.ts +26 -0
  876. package/dist/store/outbox.d.ts.map +1 -0
  877. package/dist/store/outbox.js +80 -0
  878. package/dist/store/outbox.js.map +1 -0
  879. package/dist/store/query.d.ts +39 -0
  880. package/dist/store/query.d.ts.map +1 -0
  881. package/dist/store/query.js +97 -0
  882. package/dist/store/query.js.map +1 -0
  883. package/dist/store/refusal.d.ts +15 -0
  884. package/dist/store/refusal.d.ts.map +1 -0
  885. package/dist/store/refusal.js +36 -0
  886. package/dist/store/refusal.js.map +1 -0
  887. package/dist/store/rows.d.ts +80 -0
  888. package/dist/store/rows.d.ts.map +1 -0
  889. package/dist/store/rows.js +183 -0
  890. package/dist/store/rows.js.map +1 -0
  891. package/dist/store/schema.d.ts +25 -0
  892. package/dist/store/schema.d.ts.map +1 -0
  893. package/dist/store/schema.js +115 -0
  894. package/dist/store/schema.js.map +1 -0
  895. package/dist/store/sql.d.ts +73 -0
  896. package/dist/store/sql.d.ts.map +1 -0
  897. package/dist/store/sql.js +234 -0
  898. package/dist/store/sql.js.map +1 -0
  899. package/dist/store/step.d.ts +50 -0
  900. package/dist/store/step.d.ts.map +1 -0
  901. package/dist/store/step.js +52 -0
  902. package/dist/store/step.js.map +1 -0
  903. package/dist/store/store.d.ts +171 -0
  904. package/dist/store/store.d.ts.map +1 -0
  905. package/dist/store/store.js +818 -0
  906. package/dist/store/store.js.map +1 -0
  907. package/dist/store/table-changes.d.ts +29 -0
  908. package/dist/store/table-changes.d.ts.map +1 -0
  909. package/dist/store/table-changes.js +102 -0
  910. package/dist/store/table-changes.js.map +1 -0
  911. package/dist/store/table-evolve.d.ts +74 -0
  912. package/dist/store/table-evolve.d.ts.map +1 -0
  913. package/dist/store/table-evolve.js +201 -0
  914. package/dist/store/table-evolve.js.map +1 -0
  915. package/dist/store/table-handle.d.ts +73 -0
  916. package/dist/store/table-handle.d.ts.map +1 -0
  917. package/dist/store/table-handle.js +101 -0
  918. package/dist/store/table-handle.js.map +1 -0
  919. package/dist/store/table-history.d.ts +75 -0
  920. package/dist/store/table-history.d.ts.map +1 -0
  921. package/dist/store/table-history.js +42 -0
  922. package/dist/store/table-history.js.map +1 -0
  923. package/dist/store/table-migration.d.ts +16 -0
  924. package/dist/store/table-migration.d.ts.map +1 -0
  925. package/dist/store/table-migration.js +202 -0
  926. package/dist/store/table-migration.js.map +1 -0
  927. package/dist/store/table-writes.d.ts +125 -0
  928. package/dist/store/table-writes.d.ts.map +1 -0
  929. package/dist/store/table-writes.js +170 -0
  930. package/dist/store/table-writes.js.map +1 -0
  931. package/dist/store/table.d.ts +80 -0
  932. package/dist/store/table.d.ts.map +1 -0
  933. package/dist/store/table.js +103 -0
  934. package/dist/store/table.js.map +1 -0
  935. package/dist/store/text.d.ts +14 -0
  936. package/dist/store/text.d.ts.map +1 -0
  937. package/dist/store/text.js +51 -0
  938. package/dist/store/text.js.map +1 -0
  939. package/dist/store/writes.d.ts +5 -0
  940. package/dist/store/writes.d.ts.map +1 -0
  941. package/dist/store/writes.js +4 -0
  942. package/dist/store/writes.js.map +1 -0
  943. package/dist/surfaces/active-language.d.ts +20 -0
  944. package/dist/surfaces/active-language.d.ts.map +1 -0
  945. package/dist/surfaces/active-language.js +78 -0
  946. package/dist/surfaces/active-language.js.map +1 -0
  947. package/dist/surfaces/active-theme.d.ts +16 -0
  948. package/dist/surfaces/active-theme.d.ts.map +1 -0
  949. package/dist/surfaces/active-theme.js +47 -0
  950. package/dist/surfaces/active-theme.js.map +1 -0
  951. package/dist/surfaces/client.d.ts +96 -0
  952. package/dist/surfaces/client.d.ts.map +1 -0
  953. package/dist/surfaces/client.js +264 -0
  954. package/dist/surfaces/client.js.map +1 -0
  955. package/dist/surfaces/connection.d.ts +49 -0
  956. package/dist/surfaces/connection.d.ts.map +1 -0
  957. package/dist/surfaces/connection.js +142 -0
  958. package/dist/surfaces/connection.js.map +1 -0
  959. package/dist/surfaces/format.d.ts +5 -0
  960. package/dist/surfaces/format.d.ts.map +1 -0
  961. package/dist/surfaces/format.js +37 -0
  962. package/dist/surfaces/format.js.map +1 -0
  963. package/dist/surfaces/index.d.ts +15 -0
  964. package/dist/surfaces/index.d.ts.map +1 -0
  965. package/dist/surfaces/index.js +18 -0
  966. package/dist/surfaces/index.js.map +1 -0
  967. package/dist/surfaces/language.d.ts +53 -0
  968. package/dist/surfaces/language.d.ts.map +1 -0
  969. package/dist/surfaces/language.js +74 -0
  970. package/dist/surfaces/language.js.map +1 -0
  971. package/dist/surfaces/loaded.d.ts +42 -0
  972. package/dist/surfaces/loaded.d.ts.map +1 -0
  973. package/dist/surfaces/loaded.js +116 -0
  974. package/dist/surfaces/loaded.js.map +1 -0
  975. package/dist/surfaces/locale-choice.d.ts +25 -0
  976. package/dist/surfaces/locale-choice.d.ts.map +1 -0
  977. package/dist/surfaces/locale-choice.js +14 -0
  978. package/dist/surfaces/locale-choice.js.map +1 -0
  979. package/dist/surfaces/messages.d.ts +67 -0
  980. package/dist/surfaces/messages.d.ts.map +1 -0
  981. package/dist/surfaces/messages.js +112 -0
  982. package/dist/surfaces/messages.js.map +1 -0
  983. package/dist/surfaces/page-state.d.ts +14 -0
  984. package/dist/surfaces/page-state.d.ts.map +1 -0
  985. package/dist/surfaces/page-state.js +43 -0
  986. package/dist/surfaces/page-state.js.map +1 -0
  987. package/dist/surfaces/preference.d.ts +32 -0
  988. package/dist/surfaces/preference.d.ts.map +1 -0
  989. package/dist/surfaces/preference.js +72 -0
  990. package/dist/surfaces/preference.js.map +1 -0
  991. package/dist/surfaces/registered.d.ts +33 -0
  992. package/dist/surfaces/registered.d.ts.map +1 -0
  993. package/dist/surfaces/registered.js +51 -0
  994. package/dist/surfaces/registered.js.map +1 -0
  995. package/dist/surfaces/scripts.d.ts +84 -0
  996. package/dist/surfaces/scripts.d.ts.map +1 -0
  997. package/dist/surfaces/scripts.js +28 -0
  998. package/dist/surfaces/scripts.js.map +1 -0
  999. package/dist/surfaces/theme-choice.d.ts +31 -0
  1000. package/dist/surfaces/theme-choice.d.ts.map +1 -0
  1001. package/dist/surfaces/theme-choice.js +18 -0
  1002. package/dist/surfaces/theme-choice.js.map +1 -0
  1003. package/dist/surfaces/themes.d.ts +43 -0
  1004. package/dist/surfaces/themes.d.ts.map +1 -0
  1005. package/dist/surfaces/themes.js +110 -0
  1006. package/dist/surfaces/themes.js.map +1 -0
  1007. package/dist/surfaces/translations.d.ts +29 -0
  1008. package/dist/surfaces/translations.d.ts.map +1 -0
  1009. package/dist/surfaces/translations.js +57 -0
  1010. package/dist/surfaces/translations.js.map +1 -0
  1011. package/dist/sync/batch.d.ts +18 -0
  1012. package/dist/sync/batch.d.ts.map +1 -0
  1013. package/dist/sync/batch.js +125 -0
  1014. package/dist/sync/batch.js.map +1 -0
  1015. package/dist/sync/client.d.ts +166 -0
  1016. package/dist/sync/client.d.ts.map +1 -0
  1017. package/dist/sync/client.js +438 -0
  1018. package/dist/sync/client.js.map +1 -0
  1019. package/dist/sync/files.d.ts +46 -0
  1020. package/dist/sync/files.d.ts.map +1 -0
  1021. package/dist/sync/files.js +13 -0
  1022. package/dist/sync/files.js.map +1 -0
  1023. package/dist/sync/filesystem.d.ts +37 -0
  1024. package/dist/sync/filesystem.d.ts.map +1 -0
  1025. package/dist/sync/filesystem.js +185 -0
  1026. package/dist/sync/filesystem.js.map +1 -0
  1027. package/dist/sync/index.d.ts +8 -0
  1028. package/dist/sync/index.d.ts.map +1 -0
  1029. package/dist/sync/index.js +9 -0
  1030. package/dist/sync/index.js.map +1 -0
  1031. package/dist/sync/lines.d.ts +18 -0
  1032. package/dist/sync/lines.d.ts.map +1 -0
  1033. package/dist/sync/lines.js +46 -0
  1034. package/dist/sync/lines.js.map +1 -0
  1035. package/dist/sync/remote.d.ts +130 -0
  1036. package/dist/sync/remote.d.ts.map +1 -0
  1037. package/dist/sync/remote.js +46 -0
  1038. package/dist/sync/remote.js.map +1 -0
  1039. package/dist/sync/state.d.ts +17 -0
  1040. package/dist/sync/state.d.ts.map +1 -0
  1041. package/dist/sync/state.js +40 -0
  1042. package/dist/sync/state.js.map +1 -0
  1043. package/dist/telemetry-ingest/batch.d.ts +70 -0
  1044. package/dist/telemetry-ingest/batch.d.ts.map +1 -0
  1045. package/dist/telemetry-ingest/batch.js +110 -0
  1046. package/dist/telemetry-ingest/batch.js.map +1 -0
  1047. package/dist/telemetry-ingest/facet.d.ts +21 -0
  1048. package/dist/telemetry-ingest/facet.d.ts.map +1 -0
  1049. package/dist/telemetry-ingest/facet.js +96 -0
  1050. package/dist/telemetry-ingest/facet.js.map +1 -0
  1051. package/dist/telemetry-ingest/index.d.ts +5 -0
  1052. package/dist/telemetry-ingest/index.d.ts.map +1 -0
  1053. package/dist/telemetry-ingest/index.js +8 -0
  1054. package/dist/telemetry-ingest/index.js.map +1 -0
  1055. package/dist/telemetry-ingest/recorder.d.ts +50 -0
  1056. package/dist/telemetry-ingest/recorder.d.ts.map +1 -0
  1057. package/dist/telemetry-ingest/recorder.js +298 -0
  1058. package/dist/telemetry-ingest/recorder.js.map +1 -0
  1059. package/dist/telemetry-ingest/sender.d.ts +14 -0
  1060. package/dist/telemetry-ingest/sender.d.ts.map +1 -0
  1061. package/dist/telemetry-ingest/sender.js +64 -0
  1062. package/dist/telemetry-ingest/sender.js.map +1 -0
  1063. package/dist/telemetry-sqlite/index.d.ts +13 -4
  1064. package/dist/telemetry-sqlite/index.d.ts.map +1 -1
  1065. package/dist/telemetry-sqlite/index.js +81 -241
  1066. package/dist/telemetry-sqlite/index.js.map +1 -1
  1067. package/dist/telemetry-sqlite/node.d.ts +13 -0
  1068. package/dist/telemetry-sqlite/node.d.ts.map +1 -0
  1069. package/dist/telemetry-sqlite/node.js +27 -0
  1070. package/dist/telemetry-sqlite/node.js.map +1 -0
  1071. package/dist/telemetry-sqlite/schema.d.ts +9 -0
  1072. package/dist/telemetry-sqlite/schema.d.ts.map +1 -0
  1073. package/dist/telemetry-sqlite/schema.js +61 -0
  1074. package/dist/telemetry-sqlite/schema.js.map +1 -0
  1075. package/dist/telemetry-sqlite/store.d.ts +3 -0
  1076. package/dist/telemetry-sqlite/store.d.ts.map +1 -1
  1077. package/dist/telemetry-sqlite/store.js +24 -13
  1078. package/dist/telemetry-sqlite/store.js.map +1 -1
  1079. package/dist/telemetry.d.ts +937 -0
  1080. package/dist/telemetry.d.ts.map +1 -0
  1081. package/dist/telemetry.js +470 -0
  1082. package/dist/telemetry.js.map +1 -0
  1083. package/dist/tui/bridge.d.ts +112 -0
  1084. package/dist/tui/bridge.d.ts.map +1 -0
  1085. package/dist/tui/bridge.js +9 -0
  1086. package/dist/tui/bridge.js.map +1 -0
  1087. package/dist/tui/channel.d.ts +44 -0
  1088. package/dist/tui/channel.d.ts.map +1 -0
  1089. package/dist/tui/channel.js +150 -0
  1090. package/dist/tui/channel.js.map +1 -0
  1091. package/dist/tui/frames.d.ts +5 -0
  1092. package/dist/tui/frames.d.ts.map +1 -0
  1093. package/dist/tui/frames.js +52 -0
  1094. package/dist/tui/frames.js.map +1 -0
  1095. package/dist/tui/index.d.ts +7 -0
  1096. package/dist/tui/index.d.ts.map +1 -0
  1097. package/dist/tui/index.js +8 -0
  1098. package/dist/tui/index.js.map +1 -0
  1099. package/dist/tui/runtime.d.ts +46 -0
  1100. package/dist/tui/runtime.d.ts.map +1 -0
  1101. package/dist/tui/runtime.js +101 -0
  1102. package/dist/tui/runtime.js.map +1 -0
  1103. package/dist/tui/scope.d.ts +46 -0
  1104. package/dist/tui/scope.d.ts.map +1 -0
  1105. package/dist/tui/scope.js +141 -0
  1106. package/dist/tui/scope.js.map +1 -0
  1107. package/dist/tui/terminal.d.ts +15 -0
  1108. package/dist/tui/terminal.d.ts.map +1 -0
  1109. package/dist/tui/terminal.js +37 -0
  1110. package/dist/tui/terminal.js.map +1 -0
  1111. package/dist/tui/theme.d.ts +17 -0
  1112. package/dist/tui/theme.d.ts.map +1 -0
  1113. package/dist/tui/theme.js +38 -0
  1114. package/dist/tui/theme.js.map +1 -0
  1115. package/dist/watch.d.ts +194 -0
  1116. package/dist/watch.d.ts.map +1 -0
  1117. package/dist/watch.js +383 -0
  1118. package/dist/watch.js.map +1 -0
  1119. package/dist/web/environment.d.ts +4 -0
  1120. package/dist/web/environment.d.ts.map +1 -0
  1121. package/dist/web/environment.js +37 -0
  1122. package/dist/web/environment.js.map +1 -0
  1123. package/dist/web/index.d.ts +5 -0
  1124. package/dist/web/index.d.ts.map +1 -0
  1125. package/dist/web/index.js +7 -0
  1126. package/dist/web/index.js.map +1 -0
  1127. package/dist/web/language.d.ts +7 -0
  1128. package/dist/web/language.d.ts.map +1 -0
  1129. package/dist/web/language.js +21 -0
  1130. package/dist/web/language.js.map +1 -0
  1131. package/dist/web/page.d.ts +29 -0
  1132. package/dist/web/page.d.ts.map +1 -0
  1133. package/dist/web/page.js +92 -0
  1134. package/dist/web/page.js.map +1 -0
  1135. package/dist/web/scripts.d.ts +23 -0
  1136. package/dist/web/scripts.d.ts.map +1 -0
  1137. package/dist/web/scripts.js +50 -0
  1138. package/dist/web/scripts.js.map +1 -0
  1139. package/dist/web/styles.d.ts +17 -0
  1140. package/dist/web/styles.d.ts.map +1 -0
  1141. package/dist/web/styles.js +218 -0
  1142. package/dist/web/styles.js.map +1 -0
  1143. package/dist/web/themes.d.ts +6 -0
  1144. package/dist/web/themes.d.ts.map +1 -0
  1145. package/dist/web/themes.js +31 -0
  1146. package/dist/web/themes.js.map +1 -0
  1147. package/docs/benchmarks.md +1036 -0
  1148. package/docs/decisions.md +3436 -0
  1149. package/docs/dependencies/book.md +1671 -0
  1150. package/docs/dependencies/index.html +2641 -0
  1151. package/docs/dependencies/model.md +330 -0
  1152. package/docs/design.md +3065 -0
  1153. package/docs/durable-observers/book.md +432 -0
  1154. package/docs/durable-observers/index.html +517 -0
  1155. package/docs/flow-control/book.md +333 -0
  1156. package/docs/flow-control/fold/index.html +265 -0
  1157. package/docs/flow-control/index.html +548 -0
  1158. package/docs/flow-control/window/index.html +228 -0
  1159. package/docs/guide-plugins-hosts/book.md +957 -0
  1160. package/docs/guide-plugins-hosts/index.html +952 -0
  1161. package/docs/http-workers/book.md +378 -0
  1162. package/docs/http-workers/index.html +515 -0
  1163. package/docs/i18n/book.md +217 -0
  1164. package/docs/i18n/index.html +344 -0
  1165. package/docs/layer-1.md +311 -0
  1166. package/docs/layer-2.md +216 -0
  1167. package/docs/p3-features/README.md +6 -0
  1168. package/docs/p3-features/book.md +478 -0
  1169. package/docs/plugin-authoring.md +276 -0
  1170. package/docs/plugin-model/book.md +186 -0
  1171. package/docs/plugin-model/index.html +310 -0
  1172. package/docs/plugin-primer/book.md +273 -0
  1173. package/docs/plugin-primer/index.html +430 -0
  1174. package/docs/slice-1.md +236 -0
  1175. package/docs/slice-10.md +288 -0
  1176. package/docs/slice-11.md +114 -0
  1177. package/docs/slice-12.md +132 -0
  1178. package/docs/slice-13.md +121 -0
  1179. package/docs/slice-2.md +174 -0
  1180. package/docs/slice-3a.md +296 -0
  1181. package/docs/slice-3b.md +197 -0
  1182. package/docs/slice-4.md +146 -0
  1183. package/docs/slice-4a.md +418 -0
  1184. package/docs/slice-4b.md +208 -0
  1185. package/docs/slice-5.md +281 -0
  1186. package/docs/slice-6a.md +676 -0
  1187. package/docs/slice-6b.md +332 -0
  1188. package/docs/slice-7a.md +130 -0
  1189. package/docs/slice-7b/book.md +608 -0
  1190. package/docs/slice-7b/index.html +842 -0
  1191. package/docs/slice-7b.md +255 -0
  1192. package/docs/slice-7c.md +165 -0
  1193. package/docs/slice-8.md +194 -0
  1194. package/docs/slice-9.md +110 -0
  1195. package/docs/slices.md +241 -0
  1196. package/docs/store/book.md +670 -0
  1197. package/docs/store/index.html +861 -0
  1198. package/docs/store/walkthrough.md +193 -0
  1199. package/docs/theming/book.md +223 -0
  1200. package/docs/theming/index.html +371 -0
  1201. package/docs/tutorial/book.md +2169 -0
  1202. package/docs/tutorial/index.html +2112 -0
  1203. package/docs/tutorial/screens/click-after.png +0 -0
  1204. package/docs/tutorial/screens/click-before.png +0 -0
  1205. package/docs/tutorial/screens/edited.png +0 -0
  1206. package/docs/tutorial/screens/french.png +0 -0
  1207. package/docs/tutorial/screens/harbor.png +0 -0
  1208. package/docs/tutorial/screens/page.png +0 -0
  1209. package/docs/tutorial/screens/traces-ada.png +0 -0
  1210. package/docs/tutorial/screens/traces.png +0 -0
  1211. package/package.json +114 -20
  1212. package/src/delta/README.md +69 -0
  1213. package/dist/cell.d.ts +0 -122
  1214. package/dist/cell.d.ts.map +0 -1
  1215. package/dist/cell.js +0 -356
  1216. package/dist/cell.js.map +0 -1
  1217. package/dist/cluster.d.ts +0 -27
  1218. package/dist/cluster.d.ts.map +0 -1
  1219. package/dist/cluster.js +0 -230
  1220. package/dist/cluster.js.map +0 -1
  1221. package/dist/connection.d.ts +0 -270
  1222. package/dist/connection.d.ts.map +0 -1
  1223. package/dist/connection.js +0 -1216
  1224. package/dist/connection.js.map +0 -1
  1225. package/dist/contract.d.ts +0 -208
  1226. package/dist/contract.d.ts.map +0 -1
  1227. package/dist/contract.js +0 -246
  1228. package/dist/contract.js.map +0 -1
  1229. package/dist/declare.d.ts +0 -33
  1230. package/dist/declare.d.ts.map +0 -1
  1231. package/dist/declare.js +0 -2
  1232. package/dist/declare.js.map +0 -1
  1233. package/dist/errors.d.ts +0 -28
  1234. package/dist/errors.d.ts.map +0 -1
  1235. package/dist/errors.js +0 -59
  1236. package/dist/errors.js.map +0 -1
  1237. package/dist/host.d.ts +0 -348
  1238. package/dist/host.d.ts.map +0 -1
  1239. package/dist/host.js +0 -1000
  1240. package/dist/host.js.map +0 -1
  1241. package/dist/link.d.ts +0 -107
  1242. package/dist/link.d.ts.map +0 -1
  1243. package/dist/link.js +0 -355
  1244. package/dist/link.js.map +0 -1
  1245. package/dist/loader.d.ts +0 -4
  1246. package/dist/loader.d.ts.map +0 -1
  1247. package/dist/loader.js +0 -73
  1248. package/dist/loader.js.map +0 -1
  1249. package/dist/manager.d.ts +0 -115
  1250. package/dist/manager.d.ts.map +0 -1
  1251. package/dist/manager.js +0 -345
  1252. package/dist/manager.js.map +0 -1
  1253. package/dist/node.d.ts +0 -4
  1254. package/dist/node.d.ts.map +0 -1
  1255. package/dist/node.js +0 -4
  1256. package/dist/node.js.map +0 -1
  1257. package/dist/object.d.ts +0 -438
  1258. package/dist/object.d.ts.map +0 -1
  1259. package/dist/object.js +0 -1571
  1260. package/dist/object.js.map +0 -1
  1261. package/dist/publish.d.ts +0 -5
  1262. package/dist/publish.d.ts.map +0 -1
  1263. package/dist/publish.js +0 -40
  1264. package/dist/publish.js.map +0 -1
  1265. package/dist/registry.d.ts +0 -25
  1266. package/dist/registry.d.ts.map +0 -1
  1267. package/dist/registry.js +0 -6
  1268. package/dist/registry.js.map +0 -1
  1269. package/dist/reload.d.ts +0 -126
  1270. package/dist/reload.d.ts.map +0 -1
  1271. package/dist/reload.js +0 -653
  1272. package/dist/reload.js.map +0 -1
  1273. package/dist/remote.d.ts +0 -165
  1274. package/dist/remote.d.ts.map +0 -1
  1275. package/dist/remote.js +0 -612
  1276. package/dist/remote.js.map +0 -1
  1277. package/dist/schema.d.ts +0 -21
  1278. package/dist/schema.d.ts.map +0 -1
  1279. package/dist/schema.js +0 -228
  1280. package/dist/schema.js.map +0 -1
  1281. package/dist/state.d.ts +0 -92
  1282. package/dist/state.d.ts.map +0 -1
  1283. package/dist/state.js +0 -287
  1284. package/dist/state.js.map +0 -1
  1285. package/dist/types.d.ts +0 -88
  1286. package/dist/types.d.ts.map +0 -1
  1287. package/dist/types.js +0 -2
  1288. package/dist/types.js.map +0 -1
  1289. package/dist/websocket.d.ts +0 -15
  1290. package/dist/websocket.d.ts.map +0 -1
  1291. package/dist/websocket.js +0 -16
  1292. package/dist/websocket.js.map +0 -1
  1293. package/dist/wire.d.ts +0 -216
  1294. package/dist/wire.d.ts.map +0 -1
  1295. package/dist/wire.js +0 -165
  1296. package/dist/wire.js.map +0 -1
  1297. package/docs/guide.md +0 -814
  1298. package/docs/spec.md +0 -288
  1299. package/docs/tutorial.md +0 -931
@@ -0,0 +1,395 @@
1
+ // Keyed slots (slice 6a §1.2, §4, §10, §11): the documents of one keyed name on one object, by key. In memory, every
2
+ // present document stays; persisted, a document is loaded on demand (a cold read is a job on the object's line, one
3
+ // load in flight per key, shared) and leaves memory when unpinned and idle for the retention (`residency.ts`). A key
4
+ // read through `at(key)` or a watch has its own source, which exists while the key is pinned.
5
+ import { awaitWithContext } from "../context/index.js";
6
+ import { ChordError } from "../data/index.js";
7
+ import { asChordError } from "../data/internal.js";
8
+ import { track } from "../delta/index.js";
9
+ import { compareText, storedText } from "../store/text.js";
10
+ import { AddressSource } from "./address-source.js";
11
+ import { storedAfter, } from "./persistence.js";
12
+ import { Resident } from "./residency.js";
13
+ import { SlotDefinition } from "./slot.js";
14
+ /** The keys `keys(ctx)` reads per page from the store. */
15
+ const KEYS_PAGE = 100;
16
+ /** A keyed slot: one resident per document in memory, one source per pinned key. */
17
+ export class KeyedSlot {
18
+ owner;
19
+ definition;
20
+ persisted;
21
+ #persistence;
22
+ #residents = new Map();
23
+ /** The sources of pinned keys: a key is pinned while it has one. */
24
+ #sources = new Map();
25
+ /** Cold loads in flight, by key: shared by every reader of the key. */
26
+ #loads = new Map();
27
+ /** Names a refused key (the slot's name is the same at every version): made once, not per key check. */
28
+ #keyWhat;
29
+ constructor(owner, definition, persistence) {
30
+ this.owner = owner;
31
+ this.definition = new SlotDefinition(definition);
32
+ this.#keyWhat = `${definition.name}: key`;
33
+ this.#persistence = persistence;
34
+ this.persisted = persistence === undefined ? undefined : this;
35
+ }
36
+ get persistence() {
37
+ // Only reached through `persisted`, which a persisted slot alone has.
38
+ return this.#persistence;
39
+ }
40
+ /**
41
+ * The value at `key`, `undefined` when absent. A document in memory is read at once (also through a sealed
42
+ * handle); a cold persisted one is loaded on the line (refused `released` once the access's token is sealed), and
43
+ * `context` ends only this caller's wait. An absent key is not cached (rule 20).
44
+ */
45
+ get(raw, access, context) {
46
+ // Not `async`: `#get` is the one async layer; a refused key still reaches the caller as a rejection.
47
+ try {
48
+ return this.#get(this.key(raw), access, context);
49
+ }
50
+ catch (error) {
51
+ return Promise.reject(error);
52
+ }
53
+ }
54
+ /** `get` of a key that went through `key` already. */
55
+ async #get(key, access, context) {
56
+ this.owner.assertLive();
57
+ this.definition.assertVersion(access.version);
58
+ const resident = this.#resident(key);
59
+ if (resident !== undefined) {
60
+ this.#touch(resident);
61
+ return resident.tracker.value;
62
+ }
63
+ if (this.#persistence === undefined)
64
+ return undefined;
65
+ await this.#loadShared(key, access.token, context);
66
+ return this.#residents.get(key)?.tracker.value;
67
+ }
68
+ /** The present keys in code point order: in memory, the residents; persisted, the store's, a page per line job. */
69
+ async *keys(access, context) {
70
+ this.owner.assertLive();
71
+ this.definition.assertVersion(access.version);
72
+ const persistence = this.#persistence;
73
+ if (persistence === undefined) {
74
+ yield* [...this.#residents.keys()].sort(compareText);
75
+ return;
76
+ }
77
+ let after;
78
+ for (;;) {
79
+ const page = await this.owner.onLine(() => persistence.keys(after, KEYS_PAGE, context), access.token);
80
+ yield* page;
81
+ if (page.length < KEYS_PAGE)
82
+ return;
83
+ after = page.at(-1);
84
+ }
85
+ }
86
+ /**
87
+ * A watch of the document at `key`, `undefined` when absent (after a cold load); it follows the address (a
88
+ * retirement is a frame with the `retired` flag) and pins the key until it ends.
89
+ */
90
+ async watch(raw, access, context) {
91
+ const key = this.key(raw);
92
+ if ((await this.#get(key, access, context)) === undefined)
93
+ return undefined;
94
+ const release = this.pin(key, context);
95
+ // Retired between the load and now: absent.
96
+ if (!this.#residents.has(key)) {
97
+ release();
98
+ return undefined;
99
+ }
100
+ let watch;
101
+ try {
102
+ // The source's values are this slot's documents.
103
+ watch = this.#sources.get(key).openWatch(context);
104
+ }
105
+ catch (error) {
106
+ release();
107
+ throw error;
108
+ }
109
+ void watch.closed.then(release);
110
+ return watch;
111
+ }
112
+ /**
113
+ * Pins `key`: its source (made by the first pin) and its document stay in memory until the returned release
114
+ * (idempotent) runs; a persisted key not in memory is loaded by the next activation load (`loadDeclared`).
115
+ */
116
+ pin(raw, context) {
117
+ const key = this.key(raw);
118
+ let source = this.#sources.get(key);
119
+ if (source === undefined) {
120
+ const ready = this.#persistence === undefined || this.#residents.has(key);
121
+ source = new KeySource(this, key, this.definition.current.initial(context), ready);
122
+ this.#sources.set(key, source);
123
+ }
124
+ source.pins++;
125
+ const resident = this.#residents.get(key);
126
+ if (resident !== undefined)
127
+ this.owner.residency.forget(resident);
128
+ const pinned = source;
129
+ let released = false;
130
+ return () => {
131
+ if (released)
132
+ return;
133
+ released = true;
134
+ if (--pinned.pins > 0 || this.#sources.get(key) !== pinned)
135
+ return;
136
+ this.#sources.delete(key);
137
+ const idle = this.#residents.get(key);
138
+ if (idle !== undefined)
139
+ this.#touch(idle);
140
+ };
141
+ }
142
+ /** Loads pinned `key` on the line unless it was loaded since it was pinned (a consumer's `at(key)`, slice 6a §12). */
143
+ async ensure(raw, context) {
144
+ const key = this.key(raw);
145
+ if (this.#sources.get(key)?.ready !== false)
146
+ return;
147
+ await this.owner.onLine(() => this.load(key, context));
148
+ }
149
+ /** The source of pinned `key`. */
150
+ source(key) {
151
+ return this.#sources.get(this.key(key));
152
+ }
153
+ /**
154
+ * `key` as the slot and the store keep it: the `str()` text rules (slice 6a §8), a lone surrogate replaced by
155
+ * U+FFFD, NUL refused `invalid/args`. Plugin keys are a trust boundary; every entry point takes them through here,
156
+ * so memory and the store agree on one key.
157
+ */
158
+ key(key) {
159
+ return storedText(key, this.#keyWhat);
160
+ }
161
+ /** Loads every pinned key not loaded since it was pinned (activation, holding the line). */
162
+ async loadDeclared(context) {
163
+ for (const [key, source] of this.#sources)
164
+ if (!source.ready)
165
+ await this.load(key, context);
166
+ }
167
+ /**
168
+ * Loads the document at `key` (the caller holds the line) and installs it while it is still absent from memory (a
169
+ * commit's `adopt` always wins). A stored version newer than the code's, another fingerprint or a failing `migrate`
170
+ * fails the owner (slice 6a §1.4) and rejects with the cause.
171
+ */
172
+ async load(key, context, token) {
173
+ if (this.#residents.has(key))
174
+ return;
175
+ // A store error rejects as the store's (`storage_failed`, `aborted`).
176
+ const document = await this.persistence.read(key, context);
177
+ // The transaction was cut meanwhile: what it read may be stale already.
178
+ if (token?.sealed === true)
179
+ return;
180
+ let loaded;
181
+ try {
182
+ loaded =
183
+ document === undefined ? undefined : this.persistence.decode(document, this.definition.current, context);
184
+ }
185
+ catch (error) {
186
+ // What the code cannot read (a failing `migrate`, whatever it throws) fails the owner.
187
+ const failure = asChordError(error, this.owner.label);
188
+ this.owner.fail(failure);
189
+ throw failure;
190
+ }
191
+ if (loaded !== undefined && !this.#residents.has(key)) {
192
+ const resident = new Resident(this, key, track(loaded.value), loaded.stored, this.definition.current.version);
193
+ this.#residents.set(key, resident);
194
+ this.#touch(resident);
195
+ }
196
+ const source = this.#sources.get(key);
197
+ if (source !== undefined)
198
+ source.ready = true;
199
+ }
200
+ cold(key) {
201
+ return this.#persistence !== undefined && !this.#residents.has(key);
202
+ }
203
+ stored(key) {
204
+ return this.#residents.get(key)?.stored;
205
+ }
206
+ stage(key, change, was, writes) {
207
+ return this.persistence.stage(key, this.definition.current, was, change, writes);
208
+ }
209
+ /**
210
+ * Takes the attempt's declaration: a newer version migrates each document in memory on its next access (persisted
211
+ * ones store a base with their next change); the pinned keys are watched, so they migrate now, all or none, and
212
+ * take `initial()` again.
213
+ */
214
+ hydrate(definition, context) {
215
+ const from = this.definition.hydrated;
216
+ this.definition.hydrate(definition);
217
+ if (from === undefined || from.version === definition.version)
218
+ return;
219
+ const pinned = [...this.#sources.keys()].flatMap((key) => this.#residents.get(key) ?? []);
220
+ const migrated = pinned.map((resident) => [resident, this.#migrated(resident, context)]);
221
+ for (const [resident, tracker] of migrated) {
222
+ resident.tracker = tracker;
223
+ resident.version = definition.version;
224
+ }
225
+ this.owner.batch.commit(() => {
226
+ for (const source of this.#sources.values())
227
+ source.retake(definition.initial(context));
228
+ }, context);
229
+ }
230
+ current(key) {
231
+ return this.#resident(key)?.tracker;
232
+ }
233
+ /** The value a draft of an absent document starts from: a fresh `initial()`. */
234
+ initial(context) {
235
+ return this.definition.current.initial(context);
236
+ }
237
+ adopt(key, tracker, prepared, change) {
238
+ const stored = change === undefined ? undefined : storedAfter(change);
239
+ const source = this.#sources.get(key);
240
+ const before = source?.peek();
241
+ tracker.adopt(prepared);
242
+ let resident = this.#residents.get(key);
243
+ const { version } = this.definition.current;
244
+ if (resident === undefined) {
245
+ resident = new Resident(this, key, tracker, stored, version);
246
+ this.#residents.set(key, resident);
247
+ }
248
+ else {
249
+ resident.tracker = tracker;
250
+ resident.stored = stored;
251
+ resident.version = version;
252
+ }
253
+ if (source === undefined)
254
+ this.#touch(resident);
255
+ else
256
+ source.written(before, prepared);
257
+ }
258
+ /** Retires the document at `key` (inside the batch): out of memory, its source reads `initial()` with the flag. */
259
+ retire(key) {
260
+ const resident = this.#residents.get(key);
261
+ if (resident !== undefined) {
262
+ this.#residents.delete(key);
263
+ this.owner.residency.forget(resident);
264
+ }
265
+ this.#sources.get(key)?.retire();
266
+ }
267
+ /** The sweep found `resident` idle past the retention: it leaves memory. */
268
+ evict(resident) {
269
+ if (this.#residents.get(resident.key) === resident)
270
+ this.#residents.delete(resident.key);
271
+ }
272
+ /** Its object ended or no attempt declares it any more: the documents go and the keys' watches end. */
273
+ drop() {
274
+ for (const resident of this.#residents.values())
275
+ this.owner.residency.forget(resident);
276
+ this.#residents.clear();
277
+ for (const source of this.#sources.values())
278
+ source.end();
279
+ this.#sources.clear();
280
+ }
281
+ /**
282
+ * A cold persisted key's load, one in flight per key, on the line under the owner's context (rule 11). The load is
283
+ * every waiter's: when it takes the line, a waiter whose handle was sealed meanwhile (its attempt failed live, the
284
+ * object still open) is refused `released`, and with no other waiter the load does not run (rule 4).
285
+ */
286
+ async #loadShared(key, token, context) {
287
+ // Also when a load is in flight: a sealed handle's cold read is refused (rule 4).
288
+ this.owner.assertAdmitted(token);
289
+ let load = this.#loads.get(key);
290
+ if (load === undefined)
291
+ load = this.#startLoad(key);
292
+ load.tokens.add(token);
293
+ await awaitWithContext(load.done, context);
294
+ if (load.refused?.has(token))
295
+ throw this.owner.released();
296
+ }
297
+ /** Starts the shared load of `key`; it leaves `#loads` when it settles. */
298
+ #startLoad(key) {
299
+ const tokens = new Set();
300
+ const load = {
301
+ tokens,
302
+ refused: undefined,
303
+ // The job runs once the line is taken, after `load` is assigned.
304
+ done: this.owner.onLine(async () => {
305
+ const refused = new Set([...tokens].filter(({ sealed }) => sealed));
306
+ load.refused = refused;
307
+ if (refused.size === tokens.size)
308
+ throw this.owner.released();
309
+ await this.load(key, this.owner.context);
310
+ }),
311
+ };
312
+ this.#loads.set(key, load);
313
+ const settled = () => {
314
+ this.#loads.delete(key);
315
+ };
316
+ load.done.then(settled, settled);
317
+ return load;
318
+ }
319
+ /** The resident at `key`, migrated to the slot's version first when it is older (migration on access). */
320
+ #resident(key) {
321
+ const resident = this.#residents.get(key);
322
+ if (resident === undefined || resident.version === this.definition.current.version)
323
+ return resident;
324
+ const tracker = this.#migrated(resident, this.owner.context);
325
+ resident.tracker = tracker;
326
+ resident.version = this.definition.current.version;
327
+ return resident;
328
+ }
329
+ /**
330
+ * `resident`'s value migrated from its version to the slot's (checked, R8). A throwing `migrate` fails the live
331
+ * owner `broken` (slice 6a §1.4) and throws the failure (an activation fails with it).
332
+ */
333
+ #migrated(resident, context) {
334
+ try {
335
+ return track(this.definition.current.migrate(resident.tracker.value, resident.version, context));
336
+ }
337
+ catch (error) {
338
+ const failure = asChordError(error, this.owner.label);
339
+ this.owner.fail(failure);
340
+ throw failure;
341
+ }
342
+ }
343
+ /** A use of `resident` while unpinned: persisted, it is idle from now (Durable's granule rule). */
344
+ #touch(resident) {
345
+ if (this.#persistence !== undefined && !this.#sources.has(resident.key))
346
+ this.owner.residency.touch(resident);
347
+ }
348
+ }
349
+ /**
350
+ * One pinned key of a keyed slot as a source (`handle.at(key)`, a keyed member's `at(key)`, `watch(key)`): the
351
+ * document's value, `initial()` while it is absent; retirements arrive with the `retired` flag.
352
+ */
353
+ export class KeySource extends AddressSource {
354
+ #slot;
355
+ key;
356
+ /** Its pins: at 0 the slot forgets it. */
357
+ pins = 0;
358
+ /** Whether the key was loaded since it was pinned (always, in memory): its value is known. */
359
+ ready;
360
+ #initial;
361
+ constructor(slot, key, initial, ready) {
362
+ super(slot.owner.batch);
363
+ this.#slot = slot;
364
+ this.key = key;
365
+ this.#initial = initial;
366
+ this.ready = ready;
367
+ }
368
+ get value() {
369
+ this.#slot.owner.assertLive();
370
+ if (!this.ready) {
371
+ const message = `${this.#slot.definition.current.name}(${this.key}): read before it was loaded`;
372
+ throw new ChordError({ code: "not_ready", message });
373
+ }
374
+ return this.peek();
375
+ }
376
+ /** The value without the checks (inside its slot's commits). */
377
+ peek() {
378
+ return this.#slot.current(this.key)?.value ?? this.#initial;
379
+ }
380
+ /** The document was retired: `initial()` from now, with the flag. */
381
+ retire() {
382
+ this.retired(this.#initial);
383
+ }
384
+ /** A new definition took over (inside a batch): `initial()` again, the value as a root replacement. */
385
+ retake(initial) {
386
+ this.#initial = initial;
387
+ if (this.ready)
388
+ this.replaced();
389
+ }
390
+ /** Its slot was dropped: the watches end. */
391
+ end() {
392
+ this.endWatches();
393
+ }
394
+ }
395
+ //# sourceMappingURL=keyed-slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyed-slot.js","sourceRoot":"","sources":["../../src/documents/keyed-slot.ts"],"names":[],"mappings":"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","sourcesContent":["// Keyed slots (slice 6a §1.2, §4, §10, §11): the documents of one keyed name on one object, by key. In memory, every\n// present document stays; persisted, a document is loaded on demand (a cold read is a job on the object's line, one\n// load in flight per key, shared) and leaves memory when unpinned and idle for the retention (`residency.ts`). A key\n// read through `at(key)` or a watch has its own source, which exists while the key is pinned.\n\nimport { awaitWithContext, type Context } from \"../context/index.ts\";\nimport { ChordError } from \"../data/index.ts\";\nimport { asChordError } from \"../data/internal.ts\";\nimport { type Prepared, type Tracker, track } from \"../delta/index.ts\";\nimport type { StagedWrite } from \"../store/step.ts\";\nimport { compareText, storedText } from \"../store/text.ts\";\nimport type { Watch } from \"../watch.ts\";\nimport { AddressSource } from \"./address-source.ts\";\nimport type { JsonObject } from \"./definition.ts\";\nimport type { Documents } from \"./documents.ts\";\nimport type { SealToken } from \"./fence.ts\";\nimport {\n\ttype DocumentChange,\n\ttype Loaded,\n\ttype Persistence,\n\ttype Stored,\n\ttype StoredChange,\n\tstoredAfter,\n} from \"./persistence.ts\";\nimport { Resident } from \"./residency.ts\";\nimport { type AnyDefinition, type DocumentSlot, type PersistedSlot, SlotDefinition } from \"./slot.ts\";\n\n/** Whom a read is for: a handle's seal token and the version it was declared with (R15). */\nexport type Access = { readonly token: SealToken; readonly version: number };\n\n/**\n * A cold load in flight, shared by its waiters: their handles' tokens, and those already sealed when the load took\n * the line (`undefined` until then), whose waiters it refuses (rule 4).\n */\ntype SharedLoad = {\n\treadonly done: Promise<void>;\n\treadonly tokens: Set<SealToken>;\n\trefused: ReadonlySet<SealToken> | undefined;\n};\n\n/** The keys `keys(ctx)` reads per page from the store. */\nconst KEYS_PAGE = 100;\n\n/** A keyed slot: one resident per document in memory, one source per pinned key. */\nexport class KeyedSlot implements DocumentSlot, PersistedSlot {\n\treadonly owner: Documents;\n\treadonly definition: SlotDefinition;\n\treadonly persisted: PersistedSlot | undefined;\n\treadonly #persistence: Persistence | undefined;\n\treadonly #residents = new Map<string, Resident>();\n\t/** The sources of pinned keys: a key is pinned while it has one. */\n\treadonly #sources = new Map<string, KeySource>();\n\t/** Cold loads in flight, by key: shared by every reader of the key. */\n\treadonly #loads = new Map<string, SharedLoad>();\n\t/** Names a refused key (the slot's name is the same at every version): made once, not per key check. */\n\treadonly #keyWhat: string;\n\n\tconstructor(owner: Documents, definition: AnyDefinition, persistence: Persistence | undefined) {\n\t\tthis.owner = owner;\n\t\tthis.definition = new SlotDefinition(definition);\n\t\tthis.#keyWhat = `${definition.name}: key`;\n\t\tthis.#persistence = persistence;\n\t\tthis.persisted = persistence === undefined ? undefined : this;\n\t}\n\n\tget persistence(): Persistence {\n\t\t// Only reached through `persisted`, which a persisted slot alone has.\n\t\treturn this.#persistence!;\n\t}\n\n\t/**\n\t * The value at `key`, `undefined` when absent. A document in memory is read at once (also through a sealed\n\t * handle); a cold persisted one is loaded on the line (refused `released` once the access's token is sealed), and\n\t * `context` ends only this caller's wait. An absent key is not cached (rule 20).\n\t */\n\tget(raw: string, access: Access, context: Context): Promise<JsonObject | undefined> {\n\t\t// Not `async`: `#get` is the one async layer; a refused key still reaches the caller as a rejection.\n\t\ttry {\n\t\t\treturn this.#get(this.key(raw), access, context);\n\t\t} catch (error) {\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t}\n\n\t/** `get` of a key that went through `key` already. */\n\tasync #get(key: string, access: Access, context: Context): Promise<JsonObject | undefined> {\n\t\tthis.owner.assertLive();\n\t\tthis.definition.assertVersion(access.version);\n\t\tconst resident = this.#resident(key);\n\t\tif (resident !== undefined) {\n\t\t\tthis.#touch(resident);\n\t\t\treturn resident.tracker.value;\n\t\t}\n\t\tif (this.#persistence === undefined) return undefined;\n\t\tawait this.#loadShared(key, access.token, context);\n\t\treturn this.#residents.get(key)?.tracker.value;\n\t}\n\n\t/** The present keys in code point order: in memory, the residents; persisted, the store's, a page per line job. */\n\tasync *keys(access: Access, context: Context): AsyncIterable<string> {\n\t\tthis.owner.assertLive();\n\t\tthis.definition.assertVersion(access.version);\n\t\tconst persistence = this.#persistence;\n\t\tif (persistence === undefined) {\n\t\t\tyield* [...this.#residents.keys()].sort(compareText);\n\t\t\treturn;\n\t\t}\n\t\tlet after: string | undefined;\n\t\tfor (;;) {\n\t\t\tconst page = await this.owner.onLine(() => persistence.keys(after, KEYS_PAGE, context), access.token);\n\t\t\tyield* page;\n\t\t\tif (page.length < KEYS_PAGE) return;\n\t\t\tafter = page.at(-1);\n\t\t}\n\t}\n\n\t/**\n\t * A watch of the document at `key`, `undefined` when absent (after a cold load); it follows the address (a\n\t * retirement is a frame with the `retired` flag) and pins the key until it ends.\n\t */\n\tasync watch(raw: string, access: Access, context: Context): Promise<Watch<JsonObject> | undefined> {\n\t\tconst key = this.key(raw);\n\t\tif ((await this.#get(key, access, context)) === undefined) return undefined;\n\t\tconst release = this.pin(key, context);\n\t\t// Retired between the load and now: absent.\n\t\tif (!this.#residents.has(key)) {\n\t\t\trelease();\n\t\t\treturn undefined;\n\t\t}\n\t\tlet watch: Watch<JsonObject>;\n\t\ttry {\n\t\t\t// The source's values are this slot's documents.\n\t\t\twatch = this.#sources.get(key)!.openWatch(context) as Watch<JsonObject>;\n\t\t} catch (error) {\n\t\t\trelease();\n\t\t\tthrow error;\n\t\t}\n\t\tvoid watch.closed.then(release);\n\t\treturn watch;\n\t}\n\n\t/**\n\t * Pins `key`: its source (made by the first pin) and its document stay in memory until the returned release\n\t * (idempotent) runs; a persisted key not in memory is loaded by the next activation load (`loadDeclared`).\n\t */\n\tpin(raw: string, context: Context): () => void {\n\t\tconst key = this.key(raw);\n\t\tlet source = this.#sources.get(key);\n\t\tif (source === undefined) {\n\t\t\tconst ready = this.#persistence === undefined || this.#residents.has(key);\n\t\t\tsource = new KeySource(this, key, this.definition.current.initial(context), ready);\n\t\t\tthis.#sources.set(key, source);\n\t\t}\n\t\tsource.pins++;\n\t\tconst resident = this.#residents.get(key);\n\t\tif (resident !== undefined) this.owner.residency.forget(resident);\n\t\tconst pinned = source;\n\t\tlet released = false;\n\t\treturn () => {\n\t\t\tif (released) return;\n\t\t\treleased = true;\n\t\t\tif (--pinned.pins > 0 || this.#sources.get(key) !== pinned) return;\n\t\t\tthis.#sources.delete(key);\n\t\t\tconst idle = this.#residents.get(key);\n\t\t\tif (idle !== undefined) this.#touch(idle);\n\t\t};\n\t}\n\n\t/** Loads pinned `key` on the line unless it was loaded since it was pinned (a consumer's `at(key)`, slice 6a §12). */\n\tasync ensure(raw: string, context: Context): Promise<void> {\n\t\tconst key = this.key(raw);\n\t\tif (this.#sources.get(key)?.ready !== false) return;\n\t\tawait this.owner.onLine(() => this.load(key, context));\n\t}\n\n\t/** The source of pinned `key`. */\n\tsource(key: string): KeySource {\n\t\treturn this.#sources.get(this.key(key))!;\n\t}\n\n\t/**\n\t * `key` as the slot and the store keep it: the `str()` text rules (slice 6a §8), a lone surrogate replaced by\n\t * U+FFFD, NUL refused `invalid/args`. Plugin keys are a trust boundary; every entry point takes them through here,\n\t * so memory and the store agree on one key.\n\t */\n\tkey(key: string): string {\n\t\treturn storedText(key, this.#keyWhat);\n\t}\n\n\t/** Loads every pinned key not loaded since it was pinned (activation, holding the line). */\n\tasync loadDeclared(context: Context): Promise<void> {\n\t\tfor (const [key, source] of this.#sources) if (!source.ready) await this.load(key, context);\n\t}\n\n\t/**\n\t * Loads the document at `key` (the caller holds the line) and installs it while it is still absent from memory (a\n\t * commit's `adopt` always wins). A stored version newer than the code's, another fingerprint or a failing `migrate`\n\t * fails the owner (slice 6a §1.4) and rejects with the cause.\n\t */\n\tasync load(key: string, context: Context, token?: SealToken): Promise<void> {\n\t\tif (this.#residents.has(key)) return;\n\t\t// A store error rejects as the store's (`storage_failed`, `aborted`).\n\t\tconst document = await this.persistence.read(key, context);\n\t\t// The transaction was cut meanwhile: what it read may be stale already.\n\t\tif (token?.sealed === true) return;\n\t\tlet loaded: Loaded | undefined;\n\t\ttry {\n\t\t\tloaded =\n\t\t\t\tdocument === undefined ? undefined : this.persistence.decode(document, this.definition.current, context);\n\t\t} catch (error) {\n\t\t\t// What the code cannot read (a failing `migrate`, whatever it throws) fails the owner.\n\t\t\tconst failure = asChordError(error, this.owner.label);\n\t\t\tthis.owner.fail(failure);\n\t\t\tthrow failure;\n\t\t}\n\t\tif (loaded !== undefined && !this.#residents.has(key)) {\n\t\t\tconst resident = new Resident(this, key, track(loaded.value), loaded.stored, this.definition.current.version);\n\t\t\tthis.#residents.set(key, resident);\n\t\t\tthis.#touch(resident);\n\t\t}\n\t\tconst source = this.#sources.get(key);\n\t\tif (source !== undefined) source.ready = true;\n\t}\n\n\tcold(key: string): boolean {\n\t\treturn this.#persistence !== undefined && !this.#residents.has(key);\n\t}\n\n\tstored(key: string): Stored | undefined {\n\t\treturn this.#residents.get(key)?.stored;\n\t}\n\n\tstage(key: string, change: DocumentChange, was: Stored | undefined, writes: StagedWrite[]): StoredChange {\n\t\treturn this.persistence.stage(key, this.definition.current, was, change, writes);\n\t}\n\n\t/**\n\t * Takes the attempt's declaration: a newer version migrates each document in memory on its next access (persisted\n\t * ones store a base with their next change); the pinned keys are watched, so they migrate now, all or none, and\n\t * take `initial()` again.\n\t */\n\thydrate(definition: AnyDefinition, context: Context): void {\n\t\tconst from = this.definition.hydrated;\n\t\tthis.definition.hydrate(definition);\n\t\tif (from === undefined || from.version === definition.version) return;\n\t\tconst pinned = [...this.#sources.keys()].flatMap((key) => this.#residents.get(key) ?? []);\n\t\tconst migrated = pinned.map((resident) => [resident, this.#migrated(resident, context)] as const);\n\t\tfor (const [resident, tracker] of migrated) {\n\t\t\tresident.tracker = tracker;\n\t\t\tresident.version = definition.version;\n\t\t}\n\t\tthis.owner.batch.commit(() => {\n\t\t\tfor (const source of this.#sources.values()) source.retake(definition.initial(context));\n\t\t}, context);\n\t}\n\n\tcurrent(key: string): Tracker<JsonObject> | undefined {\n\t\treturn this.#resident(key)?.tracker;\n\t}\n\n\t/** The value a draft of an absent document starts from: a fresh `initial()`. */\n\tinitial(context: Context): JsonObject {\n\t\treturn this.definition.current.initial(context);\n\t}\n\n\tadopt(\n\t\tkey: string,\n\t\ttracker: Tracker<JsonObject>,\n\t\tprepared: Prepared<JsonObject>,\n\t\tchange: StoredChange | undefined,\n\t): void {\n\t\tconst stored = change === undefined ? undefined : storedAfter(change);\n\t\tconst source = this.#sources.get(key);\n\t\tconst before = source?.peek();\n\t\ttracker.adopt(prepared);\n\t\tlet resident = this.#residents.get(key);\n\t\tconst { version } = this.definition.current;\n\t\tif (resident === undefined) {\n\t\t\tresident = new Resident(this, key, tracker, stored, version);\n\t\t\tthis.#residents.set(key, resident);\n\t\t} else {\n\t\t\tresident.tracker = tracker;\n\t\t\tresident.stored = stored;\n\t\t\tresident.version = version;\n\t\t}\n\t\tif (source === undefined) this.#touch(resident);\n\t\telse source.written(before!, prepared);\n\t}\n\n\t/** Retires the document at `key` (inside the batch): out of memory, its source reads `initial()` with the flag. */\n\tretire(key: string): void {\n\t\tconst resident = this.#residents.get(key);\n\t\tif (resident !== undefined) {\n\t\t\tthis.#residents.delete(key);\n\t\t\tthis.owner.residency.forget(resident);\n\t\t}\n\t\tthis.#sources.get(key)?.retire();\n\t}\n\n\t/** The sweep found `resident` idle past the retention: it leaves memory. */\n\tevict(resident: Resident): void {\n\t\tif (this.#residents.get(resident.key) === resident) this.#residents.delete(resident.key);\n\t}\n\n\t/** Its object ended or no attempt declares it any more: the documents go and the keys' watches end. */\n\tdrop(): void {\n\t\tfor (const resident of this.#residents.values()) this.owner.residency.forget(resident);\n\t\tthis.#residents.clear();\n\t\tfor (const source of this.#sources.values()) source.end();\n\t\tthis.#sources.clear();\n\t}\n\n\t/**\n\t * A cold persisted key's load, one in flight per key, on the line under the owner's context (rule 11). The load is\n\t * every waiter's: when it takes the line, a waiter whose handle was sealed meanwhile (its attempt failed live, the\n\t * object still open) is refused `released`, and with no other waiter the load does not run (rule 4).\n\t */\n\tasync #loadShared(key: string, token: SealToken, context: Context): Promise<void> {\n\t\t// Also when a load is in flight: a sealed handle's cold read is refused (rule 4).\n\t\tthis.owner.assertAdmitted(token);\n\t\tlet load = this.#loads.get(key);\n\t\tif (load === undefined) load = this.#startLoad(key);\n\t\tload.tokens.add(token);\n\t\tawait awaitWithContext(load.done, context);\n\t\tif (load.refused?.has(token)) throw this.owner.released();\n\t}\n\n\t/** Starts the shared load of `key`; it leaves `#loads` when it settles. */\n\t#startLoad(key: string): SharedLoad {\n\t\tconst tokens = new Set<SealToken>();\n\t\tconst load: SharedLoad = {\n\t\t\ttokens,\n\t\t\trefused: undefined,\n\t\t\t// The job runs once the line is taken, after `load` is assigned.\n\t\t\tdone: this.owner.onLine(async () => {\n\t\t\t\tconst refused = new Set([...tokens].filter(({ sealed }) => sealed));\n\t\t\t\tload.refused = refused;\n\t\t\t\tif (refused.size === tokens.size) throw this.owner.released();\n\t\t\t\tawait this.load(key, this.owner.context);\n\t\t\t}),\n\t\t};\n\t\tthis.#loads.set(key, load);\n\t\tconst settled = (): void => {\n\t\t\tthis.#loads.delete(key);\n\t\t};\n\t\tload.done.then(settled, settled);\n\t\treturn load;\n\t}\n\n\t/** The resident at `key`, migrated to the slot's version first when it is older (migration on access). */\n\t#resident(key: string): Resident | undefined {\n\t\tconst resident = this.#residents.get(key);\n\t\tif (resident === undefined || resident.version === this.definition.current.version) return resident;\n\t\tconst tracker = this.#migrated(resident, this.owner.context);\n\t\tresident.tracker = tracker;\n\t\tresident.version = this.definition.current.version;\n\t\treturn resident;\n\t}\n\n\t/**\n\t * `resident`'s value migrated from its version to the slot's (checked, R8). A throwing `migrate` fails the live\n\t * owner `broken` (slice 6a §1.4) and throws the failure (an activation fails with it).\n\t */\n\t#migrated(resident: Resident, context: Context): Tracker<JsonObject> {\n\t\ttry {\n\t\t\treturn track(this.definition.current.migrate(resident.tracker.value, resident.version, context));\n\t\t} catch (error) {\n\t\t\tconst failure = asChordError(error, this.owner.label);\n\t\t\tthis.owner.fail(failure);\n\t\t\tthrow failure;\n\t\t}\n\t}\n\n\t/** A use of `resident` while unpinned: persisted, it is idle from now (Durable's granule rule). */\n\t#touch(resident: Resident): void {\n\t\tif (this.#persistence !== undefined && !this.#sources.has(resident.key)) this.owner.residency.touch(resident);\n\t}\n}\n\n/**\n * One pinned key of a keyed slot as a source (`handle.at(key)`, a keyed member's `at(key)`, `watch(key)`): the\n * document's value, `initial()` while it is absent; retirements arrive with the `retired` flag.\n */\nexport class KeySource extends AddressSource {\n\treadonly #slot: KeyedSlot;\n\treadonly key: string;\n\t/** Its pins: at 0 the slot forgets it. */\n\tpins = 0;\n\t/** Whether the key was loaded since it was pinned (always, in memory): its value is known. */\n\tready: boolean;\n\t#initial: JsonObject;\n\n\tconstructor(slot: KeyedSlot, key: string, initial: JsonObject, ready: boolean) {\n\t\tsuper(slot.owner.batch);\n\t\tthis.#slot = slot;\n\t\tthis.key = key;\n\t\tthis.#initial = initial;\n\t\tthis.ready = ready;\n\t}\n\n\tget value(): JsonObject {\n\t\tthis.#slot.owner.assertLive();\n\t\tif (!this.ready) {\n\t\t\tconst message = `${this.#slot.definition.current.name}(${this.key}): read before it was loaded`;\n\t\t\tthrow new ChordError({ code: \"not_ready\", message });\n\t\t}\n\t\treturn this.peek();\n\t}\n\n\t/** The value without the checks (inside its slot's commits). */\n\tpeek(): JsonObject {\n\t\treturn this.#slot.current(this.key)?.value ?? this.#initial;\n\t}\n\n\t/** The document was retired: `initial()` from now, with the flag. */\n\tretire(): void {\n\t\tthis.retired(this.#initial);\n\t}\n\n\t/** A new definition took over (inside a batch): `initial()` again, the value as a root replacement. */\n\tretake(initial: JsonObject): void {\n\t\tthis.#initial = initial;\n\t\tif (this.ready) this.replaced();\n\t}\n\n\t/** Its slot was dropped: the watches end. */\n\tend(): void {\n\t\tthis.endWatches();\n\t}\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /** An object's line: `acquire()` resolves with the release once every earlier holder released; releasing twice is harmless. */
2
+ export declare class Line {
3
+ #private;
4
+ /** Resolves with this holder's release once every earlier holder released. */
5
+ acquire(): Promise<() => void>;
6
+ }
7
+ //# sourceMappingURL=line.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line.d.ts","sourceRoot":"","sources":["../../src/documents/line.ts"],"names":[],"mappings":"AAGA,+HAA+H;AAC/H,qBAAa,IAAI;;IAGhB,8EAA8E;IAC9E,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAK7B;CACD"}
@@ -0,0 +1,14 @@
1
+ // An object's line (§9): its transactions, cold loads, key pages and eviction sweeps run on it one at a time, in the
2
+ // order they asked.
3
+ /** An object's line: `acquire()` resolves with the release once every earlier holder released; releasing twice is harmless. */
4
+ export class Line {
5
+ #tail = Promise.resolve();
6
+ /** Resolves with this holder's release once every earlier holder released. */
7
+ acquire() {
8
+ const { promise, resolve } = Promise.withResolvers();
9
+ const previous = this.#tail;
10
+ this.#tail = promise;
11
+ return previous.then(() => resolve);
12
+ }
13
+ }
14
+ //# sourceMappingURL=line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line.js","sourceRoot":"","sources":["../../src/documents/line.ts"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,oBAAoB;AAEpB,+HAA+H;AAC/H,MAAM,OAAO,IAAI;IAChB,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEzC,8EAA8E;IAC9E,OAAO;QACN,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACD","sourcesContent":["// An object's line (§9): its transactions, cold loads, key pages and eviction sweeps run on it one at a time, in the\n// order they asked.\n\n/** An object's line: `acquire()` resolves with the release once every earlier holder released; releasing twice is harmless. */\nexport class Line {\n\t#tail: Promise<void> = Promise.resolve();\n\n\t/** Resolves with this holder's release once every earlier holder released. */\n\tacquire(): Promise<() => void> {\n\t\tconst { promise, resolve } = Promise.withResolvers<void>();\n\t\tconst previous = this.#tail;\n\t\tthis.#tail = promise;\n\t\treturn previous.then(() => resolve);\n\t}\n}\n"]}
@@ -0,0 +1,104 @@
1
+ import type { Context } from "../context/index.ts";
2
+ import type { Op, Prepared } from "../delta/index.ts";
3
+ import { type DocumentAddress, type StoredDocument } from "../store/engine.ts";
4
+ import type { StagedWrite } from "../store/step.ts";
5
+ import type { ChordStore } from "../store/store.ts";
6
+ import type { JsonObject } from "./definition.ts";
7
+ import type { AnyDefinition } from "./slot.ts";
8
+ /** What is stored of a loaded document: its record's id and revision, its base's version, the deltas after it. */
9
+ export type Stored = {
10
+ readonly id: number;
11
+ readonly revision: number;
12
+ /** The version of the stored base: below the definition's, the next change stores a base (rule 1). */
13
+ readonly version: number;
14
+ readonly deltasSinceBase: number;
15
+ };
16
+ /** A live document found without loading it: what is stored of it and the fingerprint it was stored with. */
17
+ export type FoundDocument = {
18
+ readonly stored: Stored;
19
+ readonly fingerprint: string;
20
+ };
21
+ /** A loaded document: its value at the definition's version, and what is stored of it. */
22
+ export type Loaded = {
23
+ readonly value: JsonObject;
24
+ readonly stored: Stored;
25
+ };
26
+ /** One transaction's change of one document: its prepared draft (if changed), and whether it retires it. */
27
+ export type DocumentChange = {
28
+ readonly prepared: Prepared<JsonObject> | undefined;
29
+ readonly retires: boolean;
30
+ };
31
+ /** A run state's held ops (D8), stored before the next change's own; `base` when a held change asked for a base. */
32
+ export type Held = {
33
+ readonly ops: readonly Op[];
34
+ readonly base: boolean;
35
+ };
36
+ /**
37
+ * What one commit stores of a document, in the store writes' words: a retirement (nothing stored after it), a
38
+ * creation whose id the step assigns (`create`: `created.id` once it applied), a change of the record `stored` was
39
+ * prepared on, or nothing yet (`held`: a deferred change of a run's state, D8, kept in memory over `stored`).
40
+ */
41
+ export type StoredChange = {
42
+ readonly kind: "retire";
43
+ } | {
44
+ readonly kind: "create";
45
+ readonly version: number;
46
+ readonly created: {
47
+ id: number;
48
+ };
49
+ } | {
50
+ readonly kind: "change";
51
+ readonly stored: Stored;
52
+ } | {
53
+ readonly kind: "held";
54
+ readonly stored: Stored;
55
+ readonly withinMs: number;
56
+ };
57
+ /**
58
+ * The documents of one persisted name on one object: `(<object type>, namespace, name, key)`, the namespace `chord` for
59
+ * `self.state`, `chord.jobs` and `chord.job-states` for persisted job runs (slice 6b D5).
60
+ */
61
+ export declare class Persistence {
62
+ #private;
63
+ readonly store: ChordStore;
64
+ /** `owner` is the object's type (R2); `kind` the definition's or the job's name. */
65
+ constructor(store: ChordStore, owner: string, namespace: string, kind: string);
66
+ /**
67
+ * The stored document at `key`, `undefined` when absent: found and loaded with plain reads (a store error rejects
68
+ * as the store's). Counted (`chord.store.loads`).
69
+ */
70
+ read(key: string, context: Context): Promise<StoredDocument | undefined>;
71
+ /**
72
+ * `document` as `definition` reads it: a stored version newer than the code's, or the same version with another
73
+ * fingerprint (D9), throws; an older one is migrated and the result checked once (R8). What throws here is the
74
+ * code's (a failing `migrate` too, whatever it throws), never the store's.
75
+ */
76
+ decode(document: StoredDocument, definition: AnyDefinition, context: Context): Loaded;
77
+ /**
78
+ * What is stored of the live document at `key` without loading it (a retirement's find) and the schema fingerprint
79
+ * it was stored with (`checkReadable` takes both), `undefined` when absent.
80
+ */
81
+ find(key: string, context: Context): Promise<FoundDocument | undefined>;
82
+ /** Up to `limit` keys of live documents after `after`, in code point order. */
83
+ keys(after: string | undefined, limit: number, context: Context): Promise<string[]>;
84
+ /**
85
+ * Stages one commit's writes of the document at `key` into `writes` (rule 8: serialized here, before the queue):
86
+ * its retirement when `retired` is stored, then its creation, or the change of `stored` (a base when created, when
87
+ * the stored version is older, or when `checkpointWhen` asks; a delta otherwise), `held` ops stored before the
88
+ * change's own (D8: a held base makes it a base). Returns what the commit stores.
89
+ */
90
+ stage(key: string, definition: AnyDefinition, stored: Stored | undefined, change: DocumentChange, writes: StagedWrite[], held?: Held): StoredChange;
91
+ /** The address of `key`: a singleton's (`""`) has no key. */
92
+ at(key: string): DocumentAddress;
93
+ }
94
+ /**
95
+ * Throws when `definition` cannot read a document stored at `stored`'s version and fingerprint: a newer version than
96
+ * the code's, or the same version with another fingerprint (D9). A load and a retirement check alike (R15).
97
+ */
98
+ export declare function checkReadable(stored: {
99
+ readonly version: number;
100
+ readonly fingerprint: string;
101
+ }, definition: AnyDefinition): void;
102
+ /** What is stored after a commit's `change` was adopted. */
103
+ export declare function storedAfter(change: StoredChange): Stored | undefined;
104
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/documents/persistence.ts"],"names":[],"mappings":"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"}