@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,129 @@
1
+ // Persisted documents' store side (slice 6a §8, §10): a slot's address in the documents engine, what is stored of each
2
+ // loaded document (Durable's `LoadedDocument` fields), its loads with the version and fingerprint checks and the
3
+ // checked `migrate`, and the writes one commit stages for a changed or retired document.
4
+ import { changeDocument, createDocument, findDocument, listDocumentKeys, loadDocument, retireDocument, } from "../store/engine.js";
5
+ import { chordMetrics } from "../telemetry.js";
6
+ /**
7
+ * The documents of one persisted name on one object: `(<object type>, namespace, name, key)`, the namespace `chord` for
8
+ * `self.state`, `chord.jobs` and `chord.job-states` for persisted job runs (slice 6b D5).
9
+ */
10
+ export class Persistence {
11
+ store;
12
+ #address;
13
+ /** `owner` is the object's type (R2); `kind` the definition's or the job's name. */
14
+ constructor(store, owner, namespace, kind) {
15
+ this.store = store;
16
+ this.#address = { owner, namespace, kind };
17
+ }
18
+ /**
19
+ * The stored document at `key`, `undefined` when absent: found and loaded with plain reads (a store error rejects
20
+ * as the store's). Counted (`chord.store.loads`).
21
+ */
22
+ async read(key, context) {
23
+ const address = this.at(key);
24
+ const document = await this.store.read(async (executor) => {
25
+ const record = await findDocument(executor, address);
26
+ return record === undefined ? undefined : loadDocument(executor, record);
27
+ }, context);
28
+ if (document !== undefined)
29
+ chordMetrics(context.telemetry.metrics).counter("chord.store.loads").add(1);
30
+ return document;
31
+ }
32
+ /**
33
+ * `document` as `definition` reads it: a stored version newer than the code's, or the same version with another
34
+ * fingerprint (D9), throws; an older one is migrated and the result checked once (R8). What throws here is the
35
+ * code's (a failing `migrate` too, whatever it throws), never the store's.
36
+ */
37
+ decode(document, definition, context) {
38
+ const { record, deltasSinceBase } = document;
39
+ checkReadable(record, definition);
40
+ // The engine stores what commits gave it: JSON objects of the record's version.
41
+ const stored = document.value;
42
+ const value = record.version === definition.version ? stored : definition.migrate(stored, record.version, context);
43
+ return {
44
+ value,
45
+ stored: { id: record.id, revision: record.revision, version: record.version, deltasSinceBase },
46
+ };
47
+ }
48
+ /**
49
+ * What is stored of the live document at `key` without loading it (a retirement's find) and the schema fingerprint
50
+ * it was stored with (`checkReadable` takes both), `undefined` when absent.
51
+ */
52
+ async find(key, context) {
53
+ const record = await this.store.read((executor) => findDocument(executor, this.at(key)), context);
54
+ if (record === undefined)
55
+ return undefined;
56
+ // The change counter is all a retirement needs; `deltasSinceBase` is not read for one.
57
+ const stored = { id: record.id, revision: record.revision, version: record.version, deltasSinceBase: 0 };
58
+ return { stored, fingerprint: record.fingerprint };
59
+ }
60
+ /** Up to `limit` keys of live documents after `after`, in code point order. */
61
+ keys(after, limit, context) {
62
+ return this.store.read((executor) => listDocumentKeys(executor, this.#address, after, limit), context);
63
+ }
64
+ /**
65
+ * Stages one commit's writes of the document at `key` into `writes` (rule 8: serialized here, before the queue):
66
+ * its retirement when `retired` is stored, then its creation, or the change of `stored` (a base when created, when
67
+ * the stored version is older, or when `checkpointWhen` asks; a delta otherwise), `held` ops stored before the
68
+ * change's own (D8: a held base makes it a base). Returns what the commit stores.
69
+ */
70
+ stage(key, definition, stored, change, writes, held) {
71
+ const { prepared, retires } = change;
72
+ if (retires && stored !== undefined)
73
+ writes.push(retireDocument(stored.id, stored.revision));
74
+ if (prepared === undefined)
75
+ return { kind: "retire" };
76
+ const { version, fingerprint } = definition;
77
+ if (retires || stored === undefined) {
78
+ const base = { version, fingerprint, value: prepared.value };
79
+ const created = { id: 0 };
80
+ const write = createDocument(this.at(key), base, JSON.stringify(prepared.value), (id) => {
81
+ created.id = id;
82
+ });
83
+ writes.push(write);
84
+ return { kind: "create", version, created };
85
+ }
86
+ const info = { deltasSinceBase: stored.deltasSinceBase };
87
+ const base = held?.base === true ||
88
+ stored.version !== version ||
89
+ definition.checkpointWhen(prepared.value, prepared.ops, info);
90
+ const ops = held === undefined ? prepared.ops : [...held.ops, ...prepared.ops];
91
+ const content = base
92
+ ? { kind: "base", version, fingerprint, value: prepared.value }
93
+ : { kind: "delta", version, ops };
94
+ const text = JSON.stringify(base ? prepared.value : ops);
95
+ writes.push(changeDocument(stored.id, stored.revision, content, text));
96
+ const deltasSinceBase = base ? 0 : stored.deltasSinceBase + 1;
97
+ return { kind: "change", stored: { id: stored.id, revision: stored.revision + 1, version, deltasSinceBase } };
98
+ }
99
+ /** The address of `key`: a singleton's (`""`) has no key. */
100
+ at(key) {
101
+ return key === "" ? this.#address : { ...this.#address, key };
102
+ }
103
+ }
104
+ /**
105
+ * Throws when `definition` cannot read a document stored at `stored`'s version and fingerprint: a newer version than
106
+ * the code's, or the same version with another fingerprint (D9). A load and a retirement check alike (R15).
107
+ */
108
+ export function checkReadable(stored, definition) {
109
+ const { name, version, fingerprint } = definition;
110
+ if (stored.version > version) {
111
+ throw new Error(`${name}: stored at version ${stored.version}, newer than the code's ${version}`);
112
+ }
113
+ if (stored.version === version && stored.fingerprint !== fingerprint) {
114
+ throw new Error(`${name}: stored with another schema at version ${version} (a schema changed without a bump)`);
115
+ }
116
+ }
117
+ /** What is stored after a commit's `change` was adopted. */
118
+ export function storedAfter(change) {
119
+ switch (change.kind) {
120
+ case "retire":
121
+ return undefined;
122
+ case "create":
123
+ return { id: change.created.id, revision: 1, version: change.version, deltasSinceBase: 0 };
124
+ case "change":
125
+ case "held":
126
+ return change.stored;
127
+ }
128
+ }
129
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/documents/persistence.ts"],"names":[],"mappings":"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","sourcesContent":["// Persisted documents' store side (slice 6a §8, §10): a slot's address in the documents engine, what is stored of each\n// loaded document (Durable's `LoadedDocument` fields), its loads with the version and fingerprint checks and the\n// checked `migrate`, and the writes one commit stages for a changed or retired document.\n\nimport type { Context } from \"../context/index.ts\";\nimport type { Op, Prepared } from \"../delta/index.ts\";\nimport {\n\tchangeDocument,\n\tcreateDocument,\n\ttype DocumentAddress,\n\ttype DocumentContent,\n\tfindDocument,\n\tlistDocumentKeys,\n\tloadDocument,\n\tretireDocument,\n\ttype StoredDocument,\n} from \"../store/engine.ts\";\nimport type { StagedWrite } from \"../store/step.ts\";\nimport type { ChordStore } from \"../store/store.ts\";\nimport { chordMetrics } from \"../telemetry.ts\";\nimport type { JsonObject } from \"./definition.ts\";\nimport type { AnyDefinition } from \"./slot.ts\";\n\n/** What is stored of a loaded document: its record's id and revision, its base's version, the deltas after it. */\nexport type Stored = {\n\treadonly id: number;\n\treadonly revision: number;\n\t/** The version of the stored base: below the definition's, the next change stores a base (rule 1). */\n\treadonly version: number;\n\treadonly deltasSinceBase: number;\n};\n\n/** A live document found without loading it: what is stored of it and the fingerprint it was stored with. */\nexport type FoundDocument = { readonly stored: Stored; readonly fingerprint: string };\n\n/** A loaded document: its value at the definition's version, and what is stored of it. */\nexport type Loaded = { readonly value: JsonObject; readonly stored: Stored };\n\n/** One transaction's change of one document: its prepared draft (if changed), and whether it retires it. */\nexport type DocumentChange = { readonly prepared: Prepared<JsonObject> | undefined; readonly retires: boolean };\n\n/** A run state's held ops (D8), stored before the next change's own; `base` when a held change asked for a base. */\nexport type Held = { readonly ops: readonly Op[]; readonly base: boolean };\n\n/**\n * What one commit stores of a document, in the store writes' words: a retirement (nothing stored after it), a\n * creation whose id the step assigns (`create`: `created.id` once it applied), a change of the record `stored` was\n * prepared on, or nothing yet (`held`: a deferred change of a run's state, D8, kept in memory over `stored`).\n */\nexport type StoredChange =\n\t| { readonly kind: \"retire\" }\n\t| { readonly kind: \"create\"; readonly version: number; readonly created: { id: number } }\n\t| { readonly kind: \"change\"; readonly stored: Stored }\n\t| { readonly kind: \"held\"; readonly stored: Stored; readonly withinMs: number };\n\n/**\n * The documents of one persisted name on one object: `(<object type>, namespace, name, key)`, the namespace `chord` for\n * `self.state`, `chord.jobs` and `chord.job-states` for persisted job runs (slice 6b D5).\n */\nexport class Persistence {\n\treadonly store: ChordStore;\n\treadonly #address: Omit<DocumentAddress, \"key\">;\n\n\t/** `owner` is the object's type (R2); `kind` the definition's or the job's name. */\n\tconstructor(store: ChordStore, owner: string, namespace: string, kind: string) {\n\t\tthis.store = store;\n\t\tthis.#address = { owner, namespace, kind };\n\t}\n\n\t/**\n\t * The stored document at `key`, `undefined` when absent: found and loaded with plain reads (a store error rejects\n\t * as the store's). Counted (`chord.store.loads`).\n\t */\n\tasync read(key: string, context: Context): Promise<StoredDocument | undefined> {\n\t\tconst address = this.at(key);\n\t\tconst document = await this.store.read(async (executor) => {\n\t\t\tconst record = await findDocument(executor, address);\n\t\t\treturn record === undefined ? undefined : loadDocument(executor, record);\n\t\t}, context);\n\t\tif (document !== undefined) chordMetrics(context.telemetry.metrics).counter(\"chord.store.loads\").add(1);\n\t\treturn document;\n\t}\n\n\t/**\n\t * `document` as `definition` reads it: a stored version newer than the code's, or the same version with another\n\t * fingerprint (D9), throws; an older one is migrated and the result checked once (R8). What throws here is the\n\t * code's (a failing `migrate` too, whatever it throws), never the store's.\n\t */\n\tdecode(document: StoredDocument, definition: AnyDefinition, context: Context): Loaded {\n\t\tconst { record, deltasSinceBase } = document;\n\t\tcheckReadable(record, definition);\n\t\t// The engine stores what commits gave it: JSON objects of the record's version.\n\t\tconst stored = document.value as JsonObject;\n\t\tconst value =\n\t\t\trecord.version === definition.version ? stored : definition.migrate(stored, record.version, context);\n\t\treturn {\n\t\t\tvalue,\n\t\t\tstored: { id: record.id, revision: record.revision, version: record.version, deltasSinceBase },\n\t\t};\n\t}\n\n\t/**\n\t * What is stored of the live document at `key` without loading it (a retirement's find) and the schema fingerprint\n\t * it was stored with (`checkReadable` takes both), `undefined` when absent.\n\t */\n\tasync find(key: string, context: Context): Promise<FoundDocument | undefined> {\n\t\tconst record = await this.store.read((executor) => findDocument(executor, this.at(key)), context);\n\t\tif (record === undefined) return undefined;\n\t\t// The change counter is all a retirement needs; `deltasSinceBase` is not read for one.\n\t\tconst stored = { id: record.id, revision: record.revision, version: record.version, deltasSinceBase: 0 };\n\t\treturn { stored, fingerprint: record.fingerprint };\n\t}\n\n\t/** Up to `limit` keys of live documents after `after`, in code point order. */\n\tkeys(after: string | undefined, limit: number, context: Context): Promise<string[]> {\n\t\treturn this.store.read((executor) => listDocumentKeys(executor, this.#address, after, limit), context);\n\t}\n\n\t/**\n\t * Stages one commit's writes of the document at `key` into `writes` (rule 8: serialized here, before the queue):\n\t * its retirement when `retired` is stored, then its creation, or the change of `stored` (a base when created, when\n\t * the stored version is older, or when `checkpointWhen` asks; a delta otherwise), `held` ops stored before the\n\t * change's own (D8: a held base makes it a base). Returns what the commit stores.\n\t */\n\tstage(\n\t\tkey: string,\n\t\tdefinition: AnyDefinition,\n\t\tstored: Stored | undefined,\n\t\tchange: DocumentChange,\n\t\twrites: StagedWrite[],\n\t\theld?: Held,\n\t): StoredChange {\n\t\tconst { prepared, retires } = change;\n\t\tif (retires && stored !== undefined) writes.push(retireDocument(stored.id, stored.revision));\n\t\tif (prepared === undefined) return { kind: \"retire\" };\n\t\tconst { version, fingerprint } = definition;\n\t\tif (retires || stored === undefined) {\n\t\t\tconst base = { version, fingerprint, value: prepared.value };\n\t\t\tconst created = { id: 0 };\n\t\t\tconst write = createDocument(this.at(key), base, JSON.stringify(prepared.value), (id) => {\n\t\t\t\tcreated.id = id;\n\t\t\t});\n\t\t\twrites.push(write);\n\t\t\treturn { kind: \"create\", version, created };\n\t\t}\n\t\tconst info = { deltasSinceBase: stored.deltasSinceBase };\n\t\tconst base =\n\t\t\theld?.base === true ||\n\t\t\tstored.version !== version ||\n\t\t\tdefinition.checkpointWhen(prepared.value, prepared.ops, info);\n\t\tconst ops = held === undefined ? prepared.ops : [...held.ops, ...prepared.ops];\n\t\tconst content: DocumentContent = base\n\t\t\t? { kind: \"base\", version, fingerprint, value: prepared.value }\n\t\t\t: { kind: \"delta\", version, ops };\n\t\tconst text = JSON.stringify(base ? prepared.value : ops);\n\t\twrites.push(changeDocument(stored.id, stored.revision, content, text));\n\t\tconst deltasSinceBase = base ? 0 : stored.deltasSinceBase + 1;\n\t\treturn { kind: \"change\", stored: { id: stored.id, revision: stored.revision + 1, version, deltasSinceBase } };\n\t}\n\n\t/** The address of `key`: a singleton's (`\"\"`) has no key. */\n\tat(key: string): DocumentAddress {\n\t\treturn key === \"\" ? this.#address : { ...this.#address, key };\n\t}\n}\n\n/**\n * Throws when `definition` cannot read a document stored at `stored`'s version and fingerprint: a newer version than\n * the code's, or the same version with another fingerprint (D9). A load and a retirement check alike (R15).\n */\nexport function checkReadable(\n\tstored: { readonly version: number; readonly fingerprint: string },\n\tdefinition: AnyDefinition,\n): void {\n\tconst { name, version, fingerprint } = definition;\n\tif (stored.version > version) {\n\t\tthrow new Error(`${name}: stored at version ${stored.version}, newer than the code's ${version}`);\n\t}\n\tif (stored.version === version && stored.fingerprint !== fingerprint) {\n\t\tthrow new Error(`${name}: stored with another schema at version ${version} (a schema changed without a bump)`);\n\t}\n}\n\n/** What is stored after a commit's `change` was adopted. */\nexport function storedAfter(change: StoredChange): Stored | undefined {\n\tswitch (change.kind) {\n\t\tcase \"retire\":\n\t\t\treturn undefined;\n\t\tcase \"create\":\n\t\t\treturn { id: change.created.id, revision: 1, version: change.version, deltasSinceBase: 0 };\n\t\tcase \"change\":\n\t\tcase \"held\":\n\t\t\treturn change.stored;\n\t}\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import type { Tracker } from "../delta/index.ts";
2
+ import type { JsonObject } from "./definition.ts";
3
+ import type { Stored } from "./persistence.ts";
4
+ /** One keyed document in memory: its slot, its tracker and, persisted, what is stored of it. */
5
+ export declare class Resident {
6
+ readonly slot: {
7
+ evict(resident: Resident): void;
8
+ };
9
+ readonly key: string;
10
+ tracker: Tracker<JsonObject>;
11
+ stored: Stored | undefined;
12
+ /** The definition version the tracker's value is at: below the slot's, it migrates on its next access. */
13
+ version: number;
14
+ constructor(slot: {
15
+ evict(resident: Resident): void;
16
+ }, key: string, tracker: Tracker<JsonObject>, stored: Stored | undefined, version: number);
17
+ }
18
+ /** How long an unpinned persisted keyed document stays in memory after its last read or write (slice 6a §10). */
19
+ export declare const RETENTION_MS: number;
20
+ /** The idle persisted keyed documents of one object, oldest first, and the one timer evicting them. */
21
+ export declare class Residency {
22
+ #private;
23
+ constructor(onLine: (sweep: () => void) => void);
24
+ /** A use of an unpinned `resident`: it becomes the newest idle one (once per granule), and a sweep is scheduled. */
25
+ touch(resident: Resident): void;
26
+ /** `resident` is pinned or left memory: it is no longer idle. */
27
+ forget(resident: Resident): void;
28
+ /** The object ended: nothing is evicted any more, the timer is cleared. */
29
+ end(): void;
30
+ }
31
+ //# sourceMappingURL=residency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"residency.d.ts","sourceRoot":"","sources":["../../src/documents/residency.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,gGAAgG;AAChG,qBAAa,QAAQ;IACpB,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAE,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,0GAA0G;IAC1G,OAAO,EAAE,MAAM,CAAC;IAEhB,YACC,IAAI,EAAE;QAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAE,EACzC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,EAOf;CACD;AAED,iHAAiH;AACjH,eAAO,MAAM,YAAY,QAAc,CAAC;AAKxC,uGAAuG;AACvG,qBAAa,SAAS;;IAQrB,YAAY,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,EAE9C;IAED,oHAAoH;IACpH,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQ9B;IAED,iEAAiE;IACjE,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/B;IAED,2EAA2E;IAC3E,GAAG,IAAI,IAAI,CAKV;CAmCD"}
@@ -0,0 +1,93 @@
1
+ // Residency of keyed documents (slice 6a §10, rule 23): which keyed documents are in memory, and the eviction of
2
+ // persisted ones nobody pinned and nobody read or wrote for the retention. One idle structure and one timer per
3
+ // object, Durable's (`Session.#touchDocument`): an insertion-ordered map whose oldest entry the timer waits for, a
4
+ // touch moving an entry to the back at most once per granule (O(1) per touch, no timer per key).
5
+ /** One keyed document in memory: its slot, its tracker and, persisted, what is stored of it. */
6
+ export class Resident {
7
+ slot;
8
+ key;
9
+ tracker;
10
+ stored;
11
+ /** The definition version the tracker's value is at: below the slot's, it migrates on its next access. */
12
+ version;
13
+ constructor(slot, key, tracker, stored, version) {
14
+ this.slot = slot;
15
+ this.key = key;
16
+ this.tracker = tracker;
17
+ this.stored = stored;
18
+ this.version = version;
19
+ }
20
+ }
21
+ /** How long an unpinned persisted keyed document stays in memory after its last read or write (slice 6a §10). */
22
+ export const RETENTION_MS = 10 * 60_000;
23
+ /** A touch moves an entry at most once per granule: a tenth of the retention, up to 1 s (Durable's rule). */
24
+ const GRANULE_MS = Math.min(1_000, RETENTION_MS / 10);
25
+ /** The idle persisted keyed documents of one object, oldest first, and the one timer evicting them. */
26
+ export class Residency {
27
+ /** Runs a sweep on the object's line. */
28
+ #onLine;
29
+ #idle = new Map();
30
+ /** The pending sweep: when it is due and its timer; stays set until its job runs on the line. */
31
+ #sweep;
32
+ #ended = false;
33
+ constructor(onLine) {
34
+ this.#onLine = onLine;
35
+ }
36
+ /** A use of an unpinned `resident`: it becomes the newest idle one (once per granule), and a sweep is scheduled. */
37
+ touch(resident) {
38
+ const now = Date.now();
39
+ const since = this.#idle.get(resident);
40
+ // A hot document moves at most once per granule: it may then leave up to a granule early (a reload).
41
+ if (since !== undefined && now - since < GRANULE_MS)
42
+ return;
43
+ this.#idle.delete(resident);
44
+ this.#idle.set(resident, now);
45
+ if (this.#sweep === undefined)
46
+ this.#schedule();
47
+ }
48
+ /** `resident` is pinned or left memory: it is no longer idle. */
49
+ forget(resident) {
50
+ this.#idle.delete(resident);
51
+ }
52
+ /** The object ended: nothing is evicted any more, the timer is cleared. */
53
+ end() {
54
+ this.#ended = true;
55
+ this.#idle.clear();
56
+ clearTimeout(this.#sweep?.timer);
57
+ this.#sweep = undefined;
58
+ }
59
+ /** Schedules the eviction of the oldest idle document when its retention expires. */
60
+ #schedule() {
61
+ const oldest = this.#idle.values().next();
62
+ if (this.#ended || oldest.done === true)
63
+ return;
64
+ const at = oldest.value + RETENTION_MS;
65
+ const sweep = { at, timer: undefined };
66
+ this.#sweep = sweep;
67
+ // A timer firing early sweeps nothing and schedules the next one.
68
+ sweep.timer = setTimeout(() => this.#onLine(() => {
69
+ if (this.#sweep === sweep)
70
+ this.#sweep = undefined;
71
+ this.#evictExpired();
72
+ }), Math.max(0, at - Date.now()));
73
+ }
74
+ /**
75
+ * On the line: evicts the idle documents whose retention passed, oldest first, then schedules the next sweep. No
76
+ * load in flight needs a pin against it: cold loads run on the line too, so a sweep never runs during one, and a
77
+ * load installing an unpinned key touches it (it is then the newest idle one).
78
+ */
79
+ #evictExpired() {
80
+ if (this.#ended)
81
+ return;
82
+ const expired = Date.now() - RETENTION_MS;
83
+ for (const [resident, since] of this.#idle) {
84
+ if (since > expired)
85
+ break;
86
+ this.#idle.delete(resident);
87
+ resident.slot.evict(resident);
88
+ }
89
+ if (this.#sweep === undefined)
90
+ this.#schedule();
91
+ }
92
+ }
93
+ //# sourceMappingURL=residency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"residency.js","sourceRoot":"","sources":["../../src/documents/residency.ts"],"names":[],"mappings":"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","sourcesContent":["// Residency of keyed documents (slice 6a §10, rule 23): which keyed documents are in memory, and the eviction of\n// persisted ones nobody pinned and nobody read or wrote for the retention. One idle structure and one timer per\n// object, Durable's (`Session.#touchDocument`): an insertion-ordered map whose oldest entry the timer waits for, a\n// touch moving an entry to the back at most once per granule (O(1) per touch, no timer per key).\n\nimport type { Tracker } from \"../delta/index.ts\";\nimport type { JsonObject } from \"./definition.ts\";\nimport type { Stored } from \"./persistence.ts\";\n\n/** One keyed document in memory: its slot, its tracker and, persisted, what is stored of it. */\nexport class Resident {\n\treadonly slot: { evict(resident: Resident): void };\n\treadonly key: string;\n\ttracker: Tracker<JsonObject>;\n\tstored: Stored | undefined;\n\t/** The definition version the tracker's value is at: below the slot's, it migrates on its next access. */\n\tversion: number;\n\n\tconstructor(\n\t\tslot: { evict(resident: Resident): void },\n\t\tkey: string,\n\t\ttracker: Tracker<JsonObject>,\n\t\tstored: Stored | undefined,\n\t\tversion: number,\n\t) {\n\t\tthis.slot = slot;\n\t\tthis.key = key;\n\t\tthis.tracker = tracker;\n\t\tthis.stored = stored;\n\t\tthis.version = version;\n\t}\n}\n\n/** How long an unpinned persisted keyed document stays in memory after its last read or write (slice 6a §10). */\nexport const RETENTION_MS = 10 * 60_000;\n\n/** A touch moves an entry at most once per granule: a tenth of the retention, up to 1 s (Durable's rule). */\nconst GRANULE_MS = Math.min(1_000, RETENTION_MS / 10);\n\n/** The idle persisted keyed documents of one object, oldest first, and the one timer evicting them. */\nexport class Residency {\n\t/** Runs a sweep on the object's line. */\n\treadonly #onLine: (sweep: () => void) => void;\n\treadonly #idle = new Map<Resident, number>();\n\t/** The pending sweep: when it is due and its timer; stays set until its job runs on the line. */\n\t#sweep: { readonly at: number; timer: ReturnType<typeof setTimeout> | undefined } | undefined;\n\t#ended = false;\n\n\tconstructor(onLine: (sweep: () => void) => void) {\n\t\tthis.#onLine = onLine;\n\t}\n\n\t/** A use of an unpinned `resident`: it becomes the newest idle one (once per granule), and a sweep is scheduled. */\n\ttouch(resident: Resident): void {\n\t\tconst now = Date.now();\n\t\tconst since = this.#idle.get(resident);\n\t\t// A hot document moves at most once per granule: it may then leave up to a granule early (a reload).\n\t\tif (since !== undefined && now - since < GRANULE_MS) return;\n\t\tthis.#idle.delete(resident);\n\t\tthis.#idle.set(resident, now);\n\t\tif (this.#sweep === undefined) this.#schedule();\n\t}\n\n\t/** `resident` is pinned or left memory: it is no longer idle. */\n\tforget(resident: Resident): void {\n\t\tthis.#idle.delete(resident);\n\t}\n\n\t/** The object ended: nothing is evicted any more, the timer is cleared. */\n\tend(): void {\n\t\tthis.#ended = true;\n\t\tthis.#idle.clear();\n\t\tclearTimeout(this.#sweep?.timer);\n\t\tthis.#sweep = undefined;\n\t}\n\n\t/** Schedules the eviction of the oldest idle document when its retention expires. */\n\t#schedule(): void {\n\t\tconst oldest = this.#idle.values().next();\n\t\tif (this.#ended || oldest.done === true) return;\n\t\tconst at = oldest.value + RETENTION_MS;\n\t\tconst sweep: { readonly at: number; timer: ReturnType<typeof setTimeout> | undefined } = { at, timer: undefined };\n\t\tthis.#sweep = sweep;\n\t\t// A timer firing early sweeps nothing and schedules the next one.\n\t\tsweep.timer = setTimeout(\n\t\t\t() =>\n\t\t\t\tthis.#onLine(() => {\n\t\t\t\t\tif (this.#sweep === sweep) this.#sweep = undefined;\n\t\t\t\t\tthis.#evictExpired();\n\t\t\t\t}),\n\t\t\tMath.max(0, at - Date.now()),\n\t\t);\n\t}\n\n\t/**\n\t * On the line: evicts the idle documents whose retention passed, oldest first, then schedules the next sweep. No\n\t * load in flight needs a pin against it: cold loads run on the line too, so a sweep never runs during one, and a\n\t * load installing an unpinned key touches it (it is then the newest idle one).\n\t */\n\t#evictExpired(): void {\n\t\tif (this.#ended) return;\n\t\tconst expired = Date.now() - RETENTION_MS;\n\t\tfor (const [resident, since] of this.#idle) {\n\t\t\tif (since > expired) break;\n\t\t\tthis.#idle.delete(resident);\n\t\t\tresident.slot.evict(resident);\n\t\t}\n\t\tif (this.#sweep === undefined) this.#schedule();\n\t}\n}\n"]}
@@ -0,0 +1,109 @@
1
+ import type { Context } from "../context/index.ts";
2
+ import { type Prepared, type Tracker } from "../delta/index.ts";
3
+ import type { StagedWrite } from "../store/step.ts";
4
+ import { AddressSource } from "./address-source.ts";
5
+ import type { CommitPersistence, JsonObject, StateDefinition } from "./definition.ts";
6
+ import type { Documents } from "./documents.ts";
7
+ import type { SealToken } from "./fence.ts";
8
+ import { type DocumentChange, type Persistence, type Stored, type StoredChange } from "./persistence.ts";
9
+ /** A document definition, whatever its value and keyedness. */
10
+ export type AnyDefinition = StateDefinition<JsonObject, boolean, boolean>;
11
+ /**
12
+ * What a transaction drafts and adopts: documents of one object by key (a singleton ignores the key). The slots of
13
+ * `self.state`, and Chord's own (a job's run state documents).
14
+ */
15
+ export interface DocumentSlot {
16
+ readonly owner: Documents;
17
+ /** The tracker of the document at `key`, `undefined` while absent. */
18
+ current(key: string): Tracker<JsonObject> | undefined;
19
+ /** The value a draft of an absent document starts from. */
20
+ initial(context: Context): JsonObject;
21
+ /** The persisted slot's store side; `undefined` for documents in memory only. */
22
+ readonly persisted: PersistedSlot | undefined;
23
+ /** Adopts a commit of the document at `key` (inside the batch), with what the commit stored of it. */
24
+ adopt(key: string, tracker: Tracker<JsonObject>, prepared: Prepared<JsonObject>, stored: StoredChange | undefined): void;
25
+ /** Retires the document at `key` (inside the batch). */
26
+ retire(key: string): void;
27
+ }
28
+ /** What a transaction needs of a persisted slot (slice 6a §4, §10). */
29
+ export interface PersistedSlot {
30
+ readonly persistence: Persistence;
31
+ readonly definition: SlotDefinition;
32
+ /** Whether the document at `key` may be stored without being in memory (a persisted keyed document not loaded). */
33
+ cold(key: string): boolean;
34
+ /** What is stored of the document at `key` as memory knows it; `undefined` when absent or cold. */
35
+ stored(key: string): Stored | undefined;
36
+ /**
37
+ * Stages one commit's writes of the document at `key` into `writes` (`was`: what is stored of it, a cold one's as
38
+ * the transaction found it); `persistence` is the transaction's (a deferred change of a run's state is held, D8).
39
+ */
40
+ stage(key: string, change: DocumentChange, was: Stored | undefined, writes: StagedWrite[], persistence: CommitPersistence): StoredChange;
41
+ /**
42
+ * Loads the document at `key` (its caller holds the line): installed when present and still absent from memory,
43
+ * and, for a transaction's load (`token`), while the token is not sealed (a cut transaction released the line, so
44
+ * a successor may have changed or retired the key meanwhile).
45
+ */
46
+ load(key: string, context: Context, token?: SealToken): Promise<void>;
47
+ }
48
+ /**
49
+ * The definition a slot's values are of (the one that hydrated it last; the first declaration until then): the checks
50
+ * of a new attempt's declaration and the old handles' version fence (R15).
51
+ */
52
+ export declare class SlotDefinition {
53
+ #private;
54
+ constructor(definition: AnyDefinition);
55
+ /** The definition the values are of. */
56
+ get current(): AnyDefinition;
57
+ /** The definition the values were hydrated with, `undefined` before the first hydration. */
58
+ get hydrated(): AnyDefinition | undefined;
59
+ /**
60
+ * Checks a declaration of this name by a new attempt: a flipped `keyed` or `persist`, a version older than the values (old code)
61
+ * or the same version with another fingerprint (a schema changed without a bump) throw (the attempt fails broken).
62
+ */
63
+ check(definition: AnyDefinition): void;
64
+ /** Records the hydration with `definition`. */
65
+ hydrate(definition: AnyDefinition): void;
66
+ /**
67
+ * Throws `released` for a handle of `version` once the values migrated past it (old code reads no new shape), and
68
+ * `not_ready` for a handle of a newer version until its activation migrated them (new code reads no old shape: a
69
+ * retry's factory).
70
+ */
71
+ assertVersion(version: number): void;
72
+ }
73
+ /**
74
+ * A singleton's slot: one tracker while written, `initial()` while absent; the source its handles and members watch.
75
+ * Persisted, it loads once per object (again after a failed load) and stays in memory while the object lives.
76
+ */
77
+ export declare class SingletonSlot extends AddressSource implements DocumentSlot, PersistedSlot {
78
+ #private;
79
+ readonly owner: Documents;
80
+ readonly definition: SlotDefinition;
81
+ readonly persisted: PersistedSlot | undefined;
82
+ constructor(owner: Documents, definition: AnyDefinition, persistence: Persistence | undefined);
83
+ get persistence(): Persistence;
84
+ get value(): JsonObject;
85
+ /**
86
+ * Takes the attempt's declaration `definition` (`check` accepted it): the first takes `initial()`; a newer version
87
+ * migrates the value in memory (a persisted one stores a base with its next change) and takes `initial()` again,
88
+ * and a value that changed reaches watches as a root replacement; the same version keeps everything.
89
+ */
90
+ hydrate(definition: AnyDefinition, context: Context): void;
91
+ /** Loads the persisted document unless it is loaded already (the caller holds the line). */
92
+ load(_key: string, context: Context): Promise<void>;
93
+ /** Loads the persisted document unless it is loaded already (activation, holding the line). */
94
+ loadDeclared(context: Context): Promise<void>;
95
+ /** A singleton has one document: its key is always `""`. */
96
+ key(_key: string): string;
97
+ cold(_key: string): boolean;
98
+ stored(_key: string): Stored | undefined;
99
+ stage(key: string, change: DocumentChange, was: Stored | undefined, writes: StagedWrite[]): StoredChange;
100
+ current(_key: string): Tracker<JsonObject> | undefined;
101
+ /** The value a draft of the absent document starts from: the `initial()` taken at hydration. */
102
+ initial(_context: Context): JsonObject;
103
+ adopt(_key: string, tracker: Tracker<JsonObject>, prepared: Prepared<JsonObject>, stored: StoredChange | undefined): void;
104
+ /** Retires the document: it reads `initial()` again, and the frame says it was retired. */
105
+ retire(_key: string): void;
106
+ /** Its object ended or no attempt declares it any more: the document goes and its watches end. */
107
+ drop(): void;
108
+ }
109
+ //# sourceMappingURL=slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/documents/slot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ // Document slots (slice 6a §1.2): one per declared document name on its object, across the object's attempts. A slot
2
+ // holds the documents' trackers, the version and definition its values are of, what is stored of persisted ones, and
3
+ // the watches; each attempt's handles are thin views of it. This file: what every slot is, and the singleton's slot
4
+ // (the keyed one is `keyed-slot.ts`).
5
+ import { ChordError } from "../data/index.js";
6
+ import { track } from "../delta/index.js";
7
+ import { AddressSource } from "./address-source.js";
8
+ import { storedAfter } from "./persistence.js";
9
+ /**
10
+ * The definition a slot's values are of (the one that hydrated it last; the first declaration until then): the checks
11
+ * of a new attempt's declaration and the old handles' version fence (R15).
12
+ */
13
+ export class SlotDefinition {
14
+ #current;
15
+ #hydrated = false;
16
+ constructor(definition) {
17
+ this.#current = definition;
18
+ }
19
+ /** The definition the values are of. */
20
+ get current() {
21
+ return this.#current;
22
+ }
23
+ /** The definition the values were hydrated with, `undefined` before the first hydration. */
24
+ get hydrated() {
25
+ return this.#hydrated ? this.#current : undefined;
26
+ }
27
+ /**
28
+ * Checks a declaration of this name by a new attempt: a flipped `keyed` or `persist`, a version older than the values (old code)
29
+ * or the same version with another fingerprint (a schema changed without a bump) throw (the attempt fails broken).
30
+ */
31
+ check(definition) {
32
+ const { name, version, keyed, persist, fingerprint } = this.#current;
33
+ if (definition.keyed !== keyed) {
34
+ throw new Error(`${name}: declared ${definition.keyed ? "keyed" : "singleton"}, its documents are not`);
35
+ }
36
+ if (definition.persist !== persist) {
37
+ throw new Error(`${name}: declared ${definition.persist ? "persisted" : "in memory"}, its documents are not`);
38
+ }
39
+ if (definition.version < version) {
40
+ throw new Error(`${name}: version ${definition.version} is older than its documents' (${version})`);
41
+ }
42
+ if (definition.version === version && definition.fingerprint !== fingerprint) {
43
+ throw new Error(`${name}: the schema changed without a version bump (version ${version})`);
44
+ }
45
+ }
46
+ /** Records the hydration with `definition`. */
47
+ hydrate(definition) {
48
+ this.#current = definition;
49
+ this.#hydrated = true;
50
+ }
51
+ /**
52
+ * Throws `released` for a handle of `version` once the values migrated past it (old code reads no new shape), and
53
+ * `not_ready` for a handle of a newer version until its activation migrated them (new code reads no old shape: a
54
+ * retry's factory).
55
+ */
56
+ assertVersion(version) {
57
+ const current = this.#current;
58
+ if (version === current.version)
59
+ return;
60
+ const message = `${current.name}: a handle of version ${version}; the documents are at version ${current.version}`;
61
+ if (version < current.version)
62
+ throw new ChordError({ code: "released", reason: "version", message });
63
+ throw new ChordError({ code: "not_ready", message: `${message} until the activation migrates them` });
64
+ }
65
+ }
66
+ /**
67
+ * A singleton's slot: one tracker while written, `initial()` while absent; the source its handles and members watch.
68
+ * Persisted, it loads once per object (again after a failed load) and stays in memory while the object lives.
69
+ */
70
+ export class SingletonSlot extends AddressSource {
71
+ owner;
72
+ definition;
73
+ persisted;
74
+ #persistence;
75
+ /** `initial()`, taken at hydration; `undefined` before the first. */
76
+ #initial;
77
+ #tracker;
78
+ /** What is stored of it (persisted); `undefined` while absent. */
79
+ #stored;
80
+ /** In memory: always; persisted: once loaded. */
81
+ #loaded;
82
+ constructor(owner, definition, persistence) {
83
+ super(owner.batch);
84
+ this.owner = owner;
85
+ this.definition = new SlotDefinition(definition);
86
+ this.#persistence = persistence;
87
+ this.persisted = persistence === undefined ? undefined : this;
88
+ this.#loaded = persistence === undefined;
89
+ }
90
+ get persistence() {
91
+ // Only reached through `persisted`, which a persisted slot alone has.
92
+ return this.#persistence;
93
+ }
94
+ get value() {
95
+ this.owner.assertLive();
96
+ if (this.#initial === undefined || !this.#loaded) {
97
+ const message = `${this.definition.current.name}: read before activation`;
98
+ throw new ChordError({ code: "not_ready", message });
99
+ }
100
+ return this.#tracker?.value ?? this.#initial;
101
+ }
102
+ /**
103
+ * Takes the attempt's declaration `definition` (`check` accepted it): the first takes `initial()`; a newer version
104
+ * migrates the value in memory (a persisted one stores a base with its next change) and takes `initial()` again,
105
+ * and a value that changed reaches watches as a root replacement; the same version keeps everything.
106
+ */
107
+ hydrate(definition, context) {
108
+ const from = this.definition.hydrated;
109
+ if (from !== undefined && from.version === definition.version) {
110
+ this.definition.hydrate(definition);
111
+ return;
112
+ }
113
+ const before = from === undefined || !this.#loaded ? undefined : this.value;
114
+ const tracker = this.#tracker === undefined || from === undefined
115
+ ? this.#tracker
116
+ : track(definition.migrate(this.#tracker.value, from.version, context));
117
+ this.#initial = definition.initial(context);
118
+ this.#tracker = tracker;
119
+ this.definition.hydrate(definition);
120
+ if (before !== undefined)
121
+ this.batch.commit(() => this.replaced(), context);
122
+ }
123
+ /** Loads the persisted document unless it is loaded already (the caller holds the line). */
124
+ async load(_key, context) {
125
+ if (this.#loaded)
126
+ return;
127
+ const document = await this.persistence.read("", context);
128
+ // Singletons load at activation, on the line: what the code cannot read fails the activation.
129
+ const loaded = document === undefined ? undefined : this.persistence.decode(document, this.definition.current, context);
130
+ if (loaded !== undefined) {
131
+ this.#tracker = track(loaded.value);
132
+ this.#stored = loaded.stored;
133
+ }
134
+ this.#loaded = true;
135
+ }
136
+ /** Loads the persisted document unless it is loaded already (activation, holding the line). */
137
+ loadDeclared(context) {
138
+ return this.load("", context);
139
+ }
140
+ /** A singleton has one document: its key is always `""`. */
141
+ key(_key) {
142
+ return "";
143
+ }
144
+ cold(_key) {
145
+ return false;
146
+ }
147
+ stored(_key) {
148
+ return this.#stored;
149
+ }
150
+ stage(key, change, was, writes) {
151
+ return this.persistence.stage(key, this.definition.current, was, change, writes);
152
+ }
153
+ current(_key) {
154
+ return this.#tracker;
155
+ }
156
+ /** The value a draft of the absent document starts from: the `initial()` taken at hydration. */
157
+ initial(_context) {
158
+ return this.#initial;
159
+ }
160
+ adopt(_key, tracker, prepared, stored) {
161
+ // Unchecked: a step admitted before the object ended adopts after its seal (slice 6a §1.3).
162
+ const before = this.#tracker?.value ?? this.#initial;
163
+ tracker.adopt(prepared);
164
+ this.#tracker = tracker;
165
+ this.#stored = stored === undefined ? undefined : storedAfter(stored);
166
+ this.written(before, prepared);
167
+ }
168
+ /** Retires the document: it reads `initial()` again, and the frame says it was retired. */
169
+ retire(_key) {
170
+ this.#tracker = undefined;
171
+ this.#stored = undefined;
172
+ this.retired(this.#initial);
173
+ }
174
+ /** Its object ended or no attempt declares it any more: the document goes and its watches end. */
175
+ drop() {
176
+ this.#tracker = undefined;
177
+ this.#stored = undefined;
178
+ this.endWatches();
179
+ }
180
+ }
181
+ //# sourceMappingURL=slot.js.map