@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,110 @@
1
+ // Looks and themes (slice 11 §4b, decision "Looks and themes", `docs/theming/`): a theme is data in one registry,
2
+ // `Themes`, that plugins contribute to on any host kind; a page writes the active theme as CSS custom properties on
3
+ // `:root`, a terminal looks colours up by role. A theme names a colour for each role (the kit's base roles, and roles
4
+ // an app adds), with `web` extras (more CSS variables: radii, fonts) and `tui` overrides (a colour per role for
5
+ // terminals). The user picks one dark and one light theme (`ThemeChoice`); the system's mode chooses between them.
6
+ import { defineFacet } from "../host/index.js";
7
+ import { defineRegistry } from "../registries/index.js";
8
+ /** The roles every theme names: the kit's base set. Apps add their own roles; themes fill at least these. */
9
+ export const BASE_ROLES = ["accent", "bg", "fg", "muted", "error", "warning", "success"];
10
+ /** The themes plugins contribute, in plugin-name order; served on every client and on the server by the kit. */
11
+ export const Themes = defineRegistry("chord.themes", {
12
+ version: 1,
13
+ });
14
+ /** The kit's facet serving `Themes` on a host: the contributions as they are, in plugin-name order. */
15
+ export function themesFacet() {
16
+ return defineFacet((host) => host.serve(Themes, { compose: (table) => table.map(({ value }) => value) }));
17
+ }
18
+ /** The theme used when no plugin contributed one of a mode: neutral colours. */
19
+ export const FALLBACK_THEMES = {
20
+ dark: {
21
+ id: "chord.dark",
22
+ name: "Dark",
23
+ mode: "dark",
24
+ colors: {
25
+ accent: "#4c9aff",
26
+ bg: "#16181d",
27
+ fg: "#e6e6e6",
28
+ muted: "#8a8f98",
29
+ error: "#ff6b6b",
30
+ warning: "#f0b429",
31
+ success: "#3ecf8e",
32
+ },
33
+ },
34
+ light: {
35
+ id: "chord.light",
36
+ name: "Light",
37
+ mode: "light",
38
+ colors: {
39
+ accent: "#0b62d6",
40
+ bg: "#ffffff",
41
+ fg: "#1c1e21",
42
+ muted: "#6b7280",
43
+ error: "#c62828",
44
+ warning: "#b26a00",
45
+ success: "#1b7f4b",
46
+ },
47
+ },
48
+ };
49
+ /** The active theme for `mode`: the one `pick` names if contributed, else the first of that mode, else the fallback. */
50
+ export function activeTheme(themes, pick, mode) {
51
+ const wanted = pick[mode];
52
+ const ofMode = themes.filter((theme) => theme.mode === mode);
53
+ return ofMode.find((theme) => theme.id === wanted) ?? ofMode[0] ?? FALLBACK_THEMES[mode];
54
+ }
55
+ /** The CSS custom properties of `theme`: `--<role>` for every colour, then `--<name>` for each `web` extra. */
56
+ export function themeVariables(theme) {
57
+ const variables = {};
58
+ for (const [role, color] of Object.entries(theme.colors))
59
+ variables[`--${role}`] = color;
60
+ for (const [name, value] of Object.entries(theme.web ?? {}))
61
+ variables[`--${name}`] = value;
62
+ return variables;
63
+ }
64
+ /**
65
+ * The SGR parameters of `role`'s colour in `theme` for a terminal of `depth` (`38;2;r;g;b`, `38;5;n`; `48;…` for a
66
+ * background): the role's `tui` override first, else its colour, else the fallback theme's; a `#rrggbb` colour is the
67
+ * nearest of the 256 xterm colours on a 256-colour terminal. A role nobody defines, or a colour that is no `#rrggbb`,
68
+ * gives the terminal's default (`39`, `49`).
69
+ */
70
+ export function terminalColor(theme, role, depth, layer) {
71
+ const fallback = FALLBACK_THEMES[theme.mode].colors;
72
+ const color = theme.tui?.[role] ?? theme.colors[role] ?? fallback[role];
73
+ const base = layer === "fg" ? "38" : "48";
74
+ if (color !== undefined && /^\d{1,3}$/.test(color) && Number(color) < 256)
75
+ return `${base};5;${color}`;
76
+ const rgb = color === undefined ? undefined : parseHex(color);
77
+ if (rgb === undefined)
78
+ return layer === "fg" ? "39" : "49";
79
+ if (depth === "truecolor")
80
+ return `${base};2;${rgb.join(";")}`;
81
+ return `${base};5;${nearest256(rgb)}`;
82
+ }
83
+ /** The red, green and blue of a `#rrggbb` colour. */
84
+ function parseHex(color) {
85
+ const match = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);
86
+ if (match === null)
87
+ return undefined;
88
+ return [Number.parseInt(match[1], 16), Number.parseInt(match[2], 16), Number.parseInt(match[3], 16)];
89
+ }
90
+ /** The levels of the xterm 6×6×6 colour cube. */
91
+ const CUBE = [0, 95, 135, 175, 215, 255];
92
+ /** The nearest xterm 256-colour index to `rgb`: the nearer of the colour cube's (16–231) and the grey ramp's (232–255). */
93
+ function nearest256(rgb) {
94
+ const level = (value) => {
95
+ let best = 0;
96
+ for (let index = 1; index < CUBE.length; index++) {
97
+ if (Math.abs(CUBE[index] - value) < Math.abs(CUBE[best] - value))
98
+ best = index;
99
+ }
100
+ return best;
101
+ };
102
+ const [r, g, b] = rgb.map(level);
103
+ const cube = [CUBE[r], CUBE[g], CUBE[b]];
104
+ const average = (rgb[0] + rgb[1] + rgb[2]) / 3;
105
+ const grey = Math.max(0, Math.min(23, Math.round((average - 8) / 10)));
106
+ const greyValue = 8 + grey * 10;
107
+ const distance = (other) => (other[0] - rgb[0]) ** 2 + (other[1] - rgb[1]) ** 2 + (other[2] - rgb[2]) ** 2;
108
+ return distance([greyValue, greyValue, greyValue]) < distance(cube) ? 232 + grey : 16 + 36 * r + 6 * g + b;
109
+ }
110
+ //# sourceMappingURL=themes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/surfaces/themes.ts"],"names":[],"mappings":"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","sourcesContent":["// Looks and themes (slice 11 §4b, decision \"Looks and themes\", `docs/theming/`): a theme is data in one registry,\n// `Themes`, that plugins contribute to on any host kind; a page writes the active theme as CSS custom properties on\n// `:root`, a terminal looks colours up by role. A theme names a colour for each role (the kit's base roles, and roles\n// an app adds), with `web` extras (more CSS variables: radii, fonts) and `tui` overrides (a colour per role for\n// terminals). The user picks one dark and one light theme (`ThemeChoice`); the system's mode chooses between them.\n\nimport type { Principal } from \"../data/index.ts\";\nimport { defineFacet, type Facet } from \"../host/index.ts\";\nimport { defineRegistry, type Registry } from \"../registries/index.ts\";\n\n/** The roles every theme names: the kit's base set. Apps add their own roles; themes fill at least these. */\nexport const BASE_ROLES = [\"accent\", \"bg\", \"fg\", \"muted\", \"error\", \"warning\", \"success\"] as const;\n\n/** A base role. */\nexport type BaseRole = (typeof BASE_ROLES)[number];\n\n/** A theme: an id, a name, its mode, a colour per role (CSS colours; `#rrggbb` for terminals), web and terminal extras. */\nexport type Theme = {\n\treadonly id: string;\n\treadonly name: string;\n\treadonly mode: \"dark\" | \"light\";\n\treadonly colors: Readonly<Record<BaseRole, string>> & Readonly<Record<string, string>>;\n\t/** More CSS variables on `:root`, by name without `--` (`radius`, `font`); URLs of the plugin's assets allowed. */\n\treadonly web?: Readonly<Record<string, string>>;\n\t/** Terminal colours by role, before `colors`: `#rrggbb` or an xterm 256-colour index (`\"208\"`). */\n\treadonly tui?: Readonly<Record<string, string>>;\n};\n\n/** The themes plugins contribute, in plugin-name order; served on every client and on the server by the kit. */\nexport const Themes: Registry<Theme, readonly Theme[]> = defineRegistry<Theme, readonly Theme[]>(\"chord.themes\", {\n\tversion: 1,\n});\n\n/** The kit's facet serving `Themes` on a host: the contributions as they are, in plugin-name order. */\nexport function themesFacet<P extends Principal>(): Facet<P> {\n\treturn defineFacet<P>((host) => host.serve(Themes, { compose: (table) => table.map(({ value }) => value) }));\n}\n\n/** The theme used when no plugin contributed one of a mode: neutral colours. */\nexport const FALLBACK_THEMES: Readonly<Record<Theme[\"mode\"], Theme>> = {\n\tdark: {\n\t\tid: \"chord.dark\",\n\t\tname: \"Dark\",\n\t\tmode: \"dark\",\n\t\tcolors: {\n\t\t\taccent: \"#4c9aff\",\n\t\t\tbg: \"#16181d\",\n\t\t\tfg: \"#e6e6e6\",\n\t\t\tmuted: \"#8a8f98\",\n\t\t\terror: \"#ff6b6b\",\n\t\t\twarning: \"#f0b429\",\n\t\t\tsuccess: \"#3ecf8e\",\n\t\t},\n\t},\n\tlight: {\n\t\tid: \"chord.light\",\n\t\tname: \"Light\",\n\t\tmode: \"light\",\n\t\tcolors: {\n\t\t\taccent: \"#0b62d6\",\n\t\t\tbg: \"#ffffff\",\n\t\t\tfg: \"#1c1e21\",\n\t\t\tmuted: \"#6b7280\",\n\t\t\terror: \"#c62828\",\n\t\t\twarning: \"#b26a00\",\n\t\t\tsuccess: \"#1b7f4b\",\n\t\t},\n\t},\n};\n\n/** The user's choice: a theme id for dark and one for light (`null`: the first contributed of that mode). */\nexport type ThemePick = { readonly dark: string | null; readonly light: string | null };\n\n/** The active theme for `mode`: the one `pick` names if contributed, else the first of that mode, else the fallback. */\nexport function activeTheme(themes: readonly Theme[], pick: ThemePick, mode: Theme[\"mode\"]): Theme {\n\tconst wanted = pick[mode];\n\tconst ofMode = themes.filter((theme) => theme.mode === mode);\n\treturn ofMode.find((theme) => theme.id === wanted) ?? ofMode[0] ?? FALLBACK_THEMES[mode];\n}\n\n/** The CSS custom properties of `theme`: `--<role>` for every colour, then `--<name>` for each `web` extra. */\nexport function themeVariables(theme: Theme): Readonly<Record<string, string>> {\n\tconst variables: Record<string, string> = {};\n\tfor (const [role, color] of Object.entries(theme.colors)) variables[`--${role}`] = color;\n\tfor (const [name, value] of Object.entries(theme.web ?? {})) variables[`--${name}`] = value;\n\treturn variables;\n}\n\n/** How many colours a terminal shows. */\nexport type ColorDepth = \"truecolor\" | \"256\";\n\n/**\n * The SGR parameters of `role`'s colour in `theme` for a terminal of `depth` (`38;2;r;g;b`, `38;5;n`; `48;…` for a\n * background): the role's `tui` override first, else its colour, else the fallback theme's; a `#rrggbb` colour is the\n * nearest of the 256 xterm colours on a 256-colour terminal. A role nobody defines, or a colour that is no `#rrggbb`,\n * gives the terminal's default (`39`, `49`).\n */\nexport function terminalColor(theme: Theme, role: string, depth: ColorDepth, layer: \"fg\" | \"bg\"): string {\n\tconst fallback = FALLBACK_THEMES[theme.mode].colors as Readonly<Record<string, string>>;\n\tconst color = theme.tui?.[role] ?? theme.colors[role] ?? fallback[role];\n\tconst base = layer === \"fg\" ? \"38\" : \"48\";\n\tif (color !== undefined && /^\\d{1,3}$/.test(color) && Number(color) < 256) return `${base};5;${color}`;\n\tconst rgb = color === undefined ? undefined : parseHex(color);\n\tif (rgb === undefined) return layer === \"fg\" ? \"39\" : \"49\";\n\tif (depth === \"truecolor\") return `${base};2;${rgb.join(\";\")}`;\n\treturn `${base};5;${nearest256(rgb)}`;\n}\n\n/** The red, green and blue of a `#rrggbb` colour. */\nfunction parseHex(color: string): readonly [number, number, number] | undefined {\n\tconst match = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n\tif (match === null) return undefined;\n\treturn [Number.parseInt(match[1]!, 16), Number.parseInt(match[2]!, 16), Number.parseInt(match[3]!, 16)];\n}\n\n/** The levels of the xterm 6×6×6 colour cube. */\nconst CUBE = [0, 95, 135, 175, 215, 255];\n\n/** The nearest xterm 256-colour index to `rgb`: the nearer of the colour cube's (16–231) and the grey ramp's (232–255). */\nfunction nearest256(rgb: readonly [number, number, number]): number {\n\tconst level = (value: number): number => {\n\t\tlet best = 0;\n\t\tfor (let index = 1; index < CUBE.length; index++) {\n\t\t\tif (Math.abs(CUBE[index]! - value) < Math.abs(CUBE[best]! - value)) best = index;\n\t\t}\n\t\treturn best;\n\t};\n\tconst [r, g, b] = rgb.map(level) as [number, number, number];\n\tconst cube = [CUBE[r]!, CUBE[g]!, CUBE[b]!] as const;\n\tconst average = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\tconst grey = Math.max(0, Math.min(23, Math.round((average - 8) / 10)));\n\tconst greyValue = 8 + grey * 10;\n\tconst distance = (other: readonly number[]): number =>\n\t\t(other[0]! - rgb[0]) ** 2 + (other[1]! - rgb[1]) ** 2 + (other[2]! - rgb[2]) ** 2;\n\treturn distance([greyValue, greyValue, greyValue]) < distance(cube) ? 232 + grey : 16 + 36 * r + 6 * g + b;\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { Principal } from "../data/index.ts";
2
+ import { type Facet } from "../host/index.ts";
3
+ import { type ComposeContext, type Registry, type RegistryTable, type TableItem } from "../registries/index.ts";
4
+ import type { Catalog } from "./messages.ts";
5
+ /** One catalog: the messages of `namespace` in `locale`; `override: true` replaces the plugin's own for that locale. */
6
+ export type Translation = {
7
+ readonly namespace: string;
8
+ readonly locale: string;
9
+ /** Partial allowed: a missing key falls back (the locale's base, then the namespace's first catalog). */
10
+ readonly messages: Catalog;
11
+ readonly override?: true;
12
+ };
13
+ /** The composed catalogs: the one used per namespace and canonical locale, with its plugin; every locale offered. */
14
+ export type TranslationIndex = {
15
+ readonly catalogs: ReadonlyMap<string, ReadonlyMap<string, TableItem<Translation>>>;
16
+ /** Every locale some catalog offers, canonical (`pt-BR`), sorted. */
17
+ readonly locales: readonly string[];
18
+ };
19
+ /** The catalogs plugins contribute, a list per contributor; served on the server, pages and terminals by the kit. */
20
+ export declare const Translations: Registry<readonly Translation[], TranslationIndex>;
21
+ /** No catalogs: what a host's language has before its `Translations` value arrives. */
22
+ export declare const NO_TRANSLATIONS: TranslationIndex;
23
+ /** The kit's facet serving `Translations` on a host. */
24
+ export declare function translationsFacet<P extends Principal>(): Facet<P>;
25
+ /** The index of `table`: per namespace and locale the winning catalog; conflicts and invalid locales reported. */
26
+ export declare function composeTranslations(table: RegistryTable<readonly Translation[]>, { report }: ComposeContext): TranslationIndex;
27
+ /** `locale` canonical (`pt-br` is `pt-BR`), or `undefined` when it is no language tag. */
28
+ export declare function canonicalLocale(locale: string): string | undefined;
29
+ //# sourceMappingURL=translations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../src/surfaces/translations.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACN,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,wHAAwH;AACxH,MAAM,MAAM,WAAW,GAAG;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yGAAyG;IACzG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;CACzB,CAAC;AAEF,qHAAqH;AACrH,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACpF,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,qHAAqH;AACrH,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,SAAS,WAAW,EAAE,EAAE,gBAAgB,CAGrC,CAAC;AAExC,uFAAuF;AACvF,eAAO,MAAM,eAAe,EAAE,gBAAuD,CAAC;AAEtF,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAEjE;AAED,kHAAkH;AAClH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,aAAa,CAAC,SAAS,WAAW,EAAE,CAAC,EAC5C,EAAE,MAAM,EAAE,EAAE,cAAc,GACxB,gBAAgB,CA4BlB;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMlE"}
@@ -0,0 +1,57 @@
1
+ // Languages as contributions (decision "Messages and languages in the app kit" (2), refined in the build): the
2
+ // `Translations` registry, served on the server, pages and terminals by the kit. A contribution is a list of catalogs,
3
+ // `{ namespace, locale, messages, override? }`: a plugin contributes its own catalogs (`t.translations`) from each
4
+ // facet that renders, a translation plugin its catalogs for other plugins. The composed index has one catalog per
5
+ // namespace and locale: the first by plugin name wins and the other is reported, except that `override: true` wins over
6
+ // a catalog without it. Registries are per host, so catalogs (they hold functions) never cross links.
7
+ import { defineFacet } from "../host/index.js";
8
+ import { defineRegistry, } from "../registries/index.js";
9
+ /** The catalogs plugins contribute, a list per contributor; served on the server, pages and terminals by the kit. */
10
+ export const Translations = defineRegistry("chord.translations", { version: 1 });
11
+ /** No catalogs: what a host's language has before its `Translations` value arrives. */
12
+ export const NO_TRANSLATIONS = { catalogs: new Map(), locales: [] };
13
+ /** The kit's facet serving `Translations` on a host. */
14
+ export function translationsFacet() {
15
+ return defineFacet((host) => host.serve(Translations, { compose: composeTranslations }));
16
+ }
17
+ /** The index of `table`: per namespace and locale the winning catalog; conflicts and invalid locales reported. */
18
+ export function composeTranslations(table, { report }) {
19
+ const catalogs = new Map();
20
+ const locales = new Set();
21
+ for (const { value, plugin } of table) {
22
+ for (const translation of value) {
23
+ const locale = canonicalLocale(translation.locale);
24
+ if (locale === undefined) {
25
+ report({ message: `"${translation.locale}" is no locale (${translation.namespace})`, plugins: [plugin] });
26
+ continue;
27
+ }
28
+ locales.add(locale);
29
+ let byLocale = catalogs.get(translation.namespace);
30
+ if (byLocale === undefined) {
31
+ byLocale = new Map();
32
+ catalogs.set(translation.namespace, byLocale);
33
+ }
34
+ const taken = byLocale.get(locale);
35
+ if (taken === undefined || (translation.override === true && taken.value.override !== true)) {
36
+ byLocale.set(locale, { value: translation, plugin });
37
+ }
38
+ else if ((translation.override === true) === (taken.value.override === true)) {
39
+ report({
40
+ message: `${translation.namespace} in ${locale} is contributed twice`,
41
+ plugins: [taken.plugin, plugin],
42
+ });
43
+ }
44
+ }
45
+ }
46
+ return { catalogs, locales: [...locales].sort() };
47
+ }
48
+ /** `locale` canonical (`pt-br` is `pt-BR`), or `undefined` when it is no language tag. */
49
+ export function canonicalLocale(locale) {
50
+ try {
51
+ return Intl.getCanonicalLocales(locale)[0];
52
+ }
53
+ catch {
54
+ return undefined;
55
+ }
56
+ }
57
+ //# sourceMappingURL=translations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.js","sourceRoot":"","sources":["../../src/surfaces/translations.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,uHAAuH;AACvH,mHAAmH;AACnH,kHAAkH;AAClH,wHAAwH;AACxH,sGAAsG;AAGtG,OAAO,EAAE,WAAW,EAAc,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAEN,cAAc,GAId,MAAM,wBAAwB,CAAC;AAmBhC,qHAAqH;AACrH,MAAM,CAAC,MAAM,YAAY,GAAuD,cAAc,CAG5F,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAExC,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAqB,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEtF,wDAAwD;AACxD,MAAM,UAAU,iBAAiB;IAChC,OAAO,WAAW,CAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,mBAAmB,CAClC,KAA4C,EAC5C,EAAE,MAAM,EAAkB;IAE1B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+C,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvC,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,CAAC,MAAM,mBAAmB,WAAW,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1G,SAAS;YACV,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC7F,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;gBAChF,MAAM,CAAC;oBACN,OAAO,EAAE,GAAG,WAAW,CAAC,SAAS,OAAO,MAAM,uBAAuB;oBACrE,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;iBAC/B,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACnD,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,eAAe,CAAC,MAAc;IAC7C,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC","sourcesContent":["// Languages as contributions (decision \"Messages and languages in the app kit\" (2), refined in the build): the\n// `Translations` registry, served on the server, pages and terminals by the kit. A contribution is a list of catalogs,\n// `{ namespace, locale, messages, override? }`: a plugin contributes its own catalogs (`t.translations`) from each\n// facet that renders, a translation plugin its catalogs for other plugins. The composed index has one catalog per\n// namespace and locale: the first by plugin name wins and the other is reported, except that `override: true` wins over\n// a catalog without it. Registries are per host, so catalogs (they hold functions) never cross links.\n\nimport type { Principal } from \"../data/index.ts\";\nimport { defineFacet, type Facet } from \"../host/index.ts\";\nimport {\n\ttype ComposeContext,\n\tdefineRegistry,\n\ttype Registry,\n\ttype RegistryTable,\n\ttype TableItem,\n} from \"../registries/index.ts\";\nimport type { Catalog } from \"./messages.ts\";\n\n/** One catalog: the messages of `namespace` in `locale`; `override: true` replaces the plugin's own for that locale. */\nexport type Translation = {\n\treadonly namespace: string;\n\treadonly locale: string;\n\t/** Partial allowed: a missing key falls back (the locale's base, then the namespace's first catalog). */\n\treadonly messages: Catalog;\n\treadonly override?: true;\n};\n\n/** The composed catalogs: the one used per namespace and canonical locale, with its plugin; every locale offered. */\nexport type TranslationIndex = {\n\treadonly catalogs: ReadonlyMap<string, ReadonlyMap<string, TableItem<Translation>>>;\n\t/** Every locale some catalog offers, canonical (`pt-BR`), sorted. */\n\treadonly locales: readonly string[];\n};\n\n/** The catalogs plugins contribute, a list per contributor; served on the server, pages and terminals by the kit. */\nexport const Translations: Registry<readonly Translation[], TranslationIndex> = defineRegistry<\n\treadonly Translation[],\n\tTranslationIndex\n>(\"chord.translations\", { version: 1 });\n\n/** No catalogs: what a host's language has before its `Translations` value arrives. */\nexport const NO_TRANSLATIONS: TranslationIndex = { catalogs: new Map(), locales: [] };\n\n/** The kit's facet serving `Translations` on a host. */\nexport function translationsFacet<P extends Principal>(): Facet<P> {\n\treturn defineFacet<P>((host) => host.serve(Translations, { compose: composeTranslations }));\n}\n\n/** The index of `table`: per namespace and locale the winning catalog; conflicts and invalid locales reported. */\nexport function composeTranslations(\n\ttable: RegistryTable<readonly Translation[]>,\n\t{ report }: ComposeContext,\n): TranslationIndex {\n\tconst catalogs = new Map<string, Map<string, TableItem<Translation>>>();\n\tconst locales = new Set<string>();\n\tfor (const { value, plugin } of table) {\n\t\tfor (const translation of value) {\n\t\t\tconst locale = canonicalLocale(translation.locale);\n\t\t\tif (locale === undefined) {\n\t\t\t\treport({ message: `\"${translation.locale}\" is no locale (${translation.namespace})`, plugins: [plugin] });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlocales.add(locale);\n\t\t\tlet byLocale = catalogs.get(translation.namespace);\n\t\t\tif (byLocale === undefined) {\n\t\t\t\tbyLocale = new Map();\n\t\t\t\tcatalogs.set(translation.namespace, byLocale);\n\t\t\t}\n\t\t\tconst taken = byLocale.get(locale);\n\t\t\tif (taken === undefined || (translation.override === true && taken.value.override !== true)) {\n\t\t\t\tbyLocale.set(locale, { value: translation, plugin });\n\t\t\t} else if ((translation.override === true) === (taken.value.override === true)) {\n\t\t\t\treport({\n\t\t\t\t\tmessage: `${translation.namespace} in ${locale} is contributed twice`,\n\t\t\t\t\tplugins: [taken.plugin, plugin],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn { catalogs, locales: [...locales].sort() };\n}\n\n/** `locale` canonical (`pt-br` is `pt-BR`), or `undefined` when it is no language tag. */\nexport function canonicalLocale(locale: string): string | undefined {\n\ttry {\n\t\treturn Intl.getCanonicalLocales(locale)[0];\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import type { ArchivePart } from "../store/archive.ts";
2
+ import type { OutboxCommit } from "../store/outbox.ts";
3
+ /** A body on the remote: its bytes in chunks, read once. */
4
+ export type SyncBody = AsyncIterable<Uint8Array>;
5
+ /** A batch body: `commits` as gzip-compressed JSON lines, read from `commits` only as the body is read. */
6
+ export declare function encodeBatch(commits: Iterable<OutboxCommit> | AsyncIterable<OutboxCommit>): SyncBody;
7
+ /** The commits of a batch body, in order, as they arrive. */
8
+ export declare function decodeBatch(body: SyncBody): AsyncGenerator<OutboxCommit>;
9
+ /** The commits of a batch body with the size of each line, for callers that bound what they hold. */
10
+ export declare function decodeBatchLines(body: SyncBody): AsyncGenerator<{
11
+ readonly commit: OutboxCommit;
12
+ readonly bytes: number;
13
+ }>;
14
+ /** A snapshot body: a store archive (`store.export()`), one part per JSON line, gzip-compressed. */
15
+ export declare function encodeSnapshot(parts: AsyncIterable<ArchivePart>): SyncBody;
16
+ /** The parts of a snapshot body as they arrive, unchecked: `importStore()` checks them (a trust boundary). */
17
+ export declare function decodeSnapshot(body: SyncBody): AsyncIterable<unknown>;
18
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/sync/batch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAKjD,2GAA2G;AAC3G,wBAAgB,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,GAAG,QAAQ,CAMnG;AAED,6DAA6D;AAC7D,wBAAuB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC,YAAY,CAAC,CAE/E;AAED,qGAAqG;AACrG,wBAAuB,gBAAgB,CACtC,IAAI,EAAE,QAAQ,GACZ,cAAc,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ3E;AAED,oGAAoG;AACpG,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,QAAQ,CAE1E;AAED,8GAA8G;AAC9G,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAErE"}
@@ -0,0 +1,125 @@
1
+ // Bodies on the remote, encoded and decoded as streams, so neither side holds a whole batch or snapshot in memory:
2
+ // gzip-compressed JSON lines, one outbox commit (a batch) or one archive part (a snapshot) per line. gzip, because
3
+ // `CompressionStream` offers it in Node, Workers, and browsers alike, and a browser viewer reads batches too.
4
+ import { decodeJsonl, encodeJsonl } from "../store/jsonl.js";
5
+ import { decodeLogLine, encodeLogLine, LogFormatError } from "./lines.js";
6
+ /** The bytes a chunk of encoded lines collects before it is compressed. */
7
+ const CHUNK = 64 * 1024;
8
+ /** A batch body: `commits` as gzip-compressed JSON lines, read from `commits` only as the body is read. */
9
+ export function encodeBatch(commits) {
10
+ return encodeLines((async function* () {
11
+ for await (const commit of commits)
12
+ yield encodeLogLine(commit);
13
+ })());
14
+ }
15
+ /** The commits of a batch body, in order, as they arrive. */
16
+ export async function* decodeBatch(body) {
17
+ for await (const { commit } of decodeBatchLines(body))
18
+ yield commit;
19
+ }
20
+ /** The commits of a batch body with the size of each line, for callers that bound what they hold. */
21
+ export async function* decodeBatchLines(body) {
22
+ let previous = 0;
23
+ for await (const { text, number } of lines(gunzip(body))) {
24
+ const commit = decodeLogLine(text, number);
25
+ if (commit.seq <= previous)
26
+ throw new LogFormatError(`Log line ${number} does not increase the sequence`);
27
+ previous = commit.seq;
28
+ yield { commit, bytes: text.length + 1 };
29
+ }
30
+ }
31
+ /** A snapshot body: a store archive (`store.export()`), one part per JSON line, gzip-compressed. */
32
+ export function encodeSnapshot(parts) {
33
+ return gzip(encodeJsonl(parts));
34
+ }
35
+ /** The parts of a snapshot body as they arrive, unchecked: `importStore()` checks them (a trust boundary). */
36
+ export function decodeSnapshot(body) {
37
+ return decodeJsonl(gunzip(body));
38
+ }
39
+ /** Text lines, already newline-terminated, gzip-compressed in chunks of whole lines. */
40
+ function encodeLines(lines) {
41
+ return gzip((async function* () {
42
+ const encoder = new TextEncoder();
43
+ let pending = "";
44
+ for await (const line of lines) {
45
+ pending += line;
46
+ if (pending.length >= CHUNK) {
47
+ yield encoder.encode(pending);
48
+ pending = "";
49
+ }
50
+ }
51
+ if (pending.length > 0)
52
+ yield encoder.encode(pending);
53
+ })());
54
+ }
55
+ /** The lines of decompressed `chunks` without their newlines; a body that ends inside a line is an error. */
56
+ async function* lines(chunks) {
57
+ const decoder = new TextDecoder("utf-8", { fatal: true });
58
+ let rest = "";
59
+ let number = 0;
60
+ const decode = (chunk) => {
61
+ try {
62
+ return chunk === undefined ? decoder.decode() : decoder.decode(chunk, { stream: true });
63
+ }
64
+ catch (error) {
65
+ throw new LogFormatError(`Log line ${number + 1} is not UTF-8`, { cause: error });
66
+ }
67
+ };
68
+ for await (const chunk of chunks) {
69
+ rest += decode(chunk);
70
+ let start = 0;
71
+ for (let end = rest.indexOf("\n"); end >= 0; end = rest.indexOf("\n", start)) {
72
+ yield { text: rest.slice(start, end), number: ++number };
73
+ start = end + 1;
74
+ }
75
+ rest = rest.slice(start);
76
+ }
77
+ rest += decode();
78
+ if (rest.length > 0)
79
+ throw new LogFormatError(`The body ends inside log line ${number + 1}`);
80
+ }
81
+ function gzip(chunks) {
82
+ return pipe(chunks, new CompressionStream("gzip"));
83
+ }
84
+ function gunzip(chunks) {
85
+ return pipe(chunks, new DecompressionStream("gzip"));
86
+ }
87
+ /**
88
+ * `chunks` through `transform`, as they come: the source is written while the output is read, so each holds no more
89
+ * than the stream's buffers. Stopping early, or a failure on either side, ends the source too (its `return()`, which
90
+ * for an export gives the store's commit queue back).
91
+ */
92
+ async function* pipe(chunks, transform) {
93
+ const writer = transform.writable.getWriter();
94
+ const reader = transform.readable.getReader();
95
+ const writing = (async () => {
96
+ try {
97
+ for await (const chunk of chunks)
98
+ await writer.write(chunk);
99
+ await writer.close();
100
+ }
101
+ catch (error) {
102
+ await writer.abort(error).catch(() => { });
103
+ throw error;
104
+ }
105
+ })();
106
+ // Its failure reaches the reader too (the abort errors the readable side); this only keeps it from going unhandled.
107
+ writing.catch(() => { });
108
+ let done = false;
109
+ try {
110
+ while (true) {
111
+ const result = await reader.read();
112
+ if (result.done)
113
+ break;
114
+ yield result.value;
115
+ }
116
+ done = true;
117
+ await writing;
118
+ }
119
+ finally {
120
+ if (!done)
121
+ await reader.cancel().catch(() => { });
122
+ reader.releaseLock();
123
+ }
124
+ }
125
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/sync/batch.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,mHAAmH;AACnH,8GAA8G;AAG9G,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK1E,2EAA2E;AAC3E,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;AAExB,2GAA2G;AAC3G,MAAM,UAAU,WAAW,CAAC,OAA6D;IACxF,OAAO,WAAW,CACjB,CAAC,KAAK,SAAS,CAAC;QACf,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,OAAO;YAAE,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,EAAE,CACJ,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,CAAC,IAAc;IAChD,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC;QAAE,MAAM,MAAM,CAAC;AACrE,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACtC,IAAc;IAEd,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ;YAAE,MAAM,IAAI,cAAc,CAAC,YAAY,MAAM,iCAAiC,CAAC,CAAC;QAC1G,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC1C,CAAC;AACF,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,cAAc,CAAC,KAAiC;IAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,8GAA8G;AAC9G,MAAM,UAAU,cAAc,CAAC,IAAc;IAC5C,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,KAA4B;IAChD,OAAO,IAAI,CACV,CAAC,KAAK,SAAS,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAChC,OAAO,IAAI,IAAI,CAAC;YAChB,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9B,OAAO,GAAG,EAAE,CAAC;YACd,CAAC;QACF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,EAAE,CACJ,CAAC;AACH,CAAC;AAED,6GAA6G;AAC7G,KAAK,SAAS,CAAC,CAAC,KAAK,CAAC,MAAiC;IACtD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,CAAC,KAAkB,EAAU,EAAE;QAC7C,IAAI,CAAC;YACJ,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,cAAc,CAAC,YAAY,MAAM,GAAG,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC;IACF,CAAC,CAAC;IACF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9E,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;YACzD,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,MAAM,EAAE,CAAC;IACjB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,iCAAiC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,IAAI,CAAC,MAAiC;IAC9C,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC/B,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI,CACnB,MAAiC,EACjC,SAAkD;IAElD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QAC3B,IAAI,CAAC;YACJ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM;gBAAE,MAAM,MAAM,CAAC,KAAK,CAAC,KAAgC,CAAC,CAAC;YACvF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IACL,oHAAoH;IACpH,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,CAAC;QACJ,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM;YACvB,MAAM,MAAM,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;QACZ,MAAM,OAAO,CAAC;IACf,CAAC;YAAS,CAAC;QACV,IAAI,CAAC,IAAI;YAAE,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;AACF,CAAC","sourcesContent":["// Bodies on the remote, encoded and decoded as streams, so neither side holds a whole batch or snapshot in memory:\n// gzip-compressed JSON lines, one outbox commit (a batch) or one archive part (a snapshot) per line. gzip, because\n// `CompressionStream` offers it in Node, Workers, and browsers alike, and a browser viewer reads batches too.\n\nimport type { ArchivePart } from \"../store/archive.ts\";\nimport { decodeJsonl, encodeJsonl } from \"../store/jsonl.ts\";\nimport type { OutboxCommit } from \"../store/outbox.ts\";\nimport { decodeLogLine, encodeLogLine, LogFormatError } from \"./lines.ts\";\n\n/** A body on the remote: its bytes in chunks, read once. */\nexport type SyncBody = AsyncIterable<Uint8Array>;\n\n/** The bytes a chunk of encoded lines collects before it is compressed. */\nconst CHUNK = 64 * 1024;\n\n/** A batch body: `commits` as gzip-compressed JSON lines, read from `commits` only as the body is read. */\nexport function encodeBatch(commits: Iterable<OutboxCommit> | AsyncIterable<OutboxCommit>): SyncBody {\n\treturn encodeLines(\n\t\t(async function* () {\n\t\t\tfor await (const commit of commits) yield encodeLogLine(commit);\n\t\t})(),\n\t);\n}\n\n/** The commits of a batch body, in order, as they arrive. */\nexport async function* decodeBatch(body: SyncBody): AsyncGenerator<OutboxCommit> {\n\tfor await (const { commit } of decodeBatchLines(body)) yield commit;\n}\n\n/** The commits of a batch body with the size of each line, for callers that bound what they hold. */\nexport async function* decodeBatchLines(\n\tbody: SyncBody,\n): AsyncGenerator<{ readonly commit: OutboxCommit; readonly bytes: number }> {\n\tlet previous = 0;\n\tfor await (const { text, number } of lines(gunzip(body))) {\n\t\tconst commit = decodeLogLine(text, number);\n\t\tif (commit.seq <= previous) throw new LogFormatError(`Log line ${number} does not increase the sequence`);\n\t\tprevious = commit.seq;\n\t\tyield { commit, bytes: text.length + 1 };\n\t}\n}\n\n/** A snapshot body: a store archive (`store.export()`), one part per JSON line, gzip-compressed. */\nexport function encodeSnapshot(parts: AsyncIterable<ArchivePart>): SyncBody {\n\treturn gzip(encodeJsonl(parts));\n}\n\n/** The parts of a snapshot body as they arrive, unchecked: `importStore()` checks them (a trust boundary). */\nexport function decodeSnapshot(body: SyncBody): AsyncIterable<unknown> {\n\treturn decodeJsonl(gunzip(body));\n}\n\n/** Text lines, already newline-terminated, gzip-compressed in chunks of whole lines. */\nfunction encodeLines(lines: AsyncIterable<string>): SyncBody {\n\treturn gzip(\n\t\t(async function* () {\n\t\t\tconst encoder = new TextEncoder();\n\t\t\tlet pending = \"\";\n\t\t\tfor await (const line of lines) {\n\t\t\t\tpending += line;\n\t\t\t\tif (pending.length >= CHUNK) {\n\t\t\t\t\tyield encoder.encode(pending);\n\t\t\t\t\tpending = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pending.length > 0) yield encoder.encode(pending);\n\t\t})(),\n\t);\n}\n\n/** The lines of decompressed `chunks` without their newlines; a body that ends inside a line is an error. */\nasync function* lines(chunks: AsyncIterable<Uint8Array>): AsyncGenerator<{ readonly text: string; number: number }> {\n\tconst decoder = new TextDecoder(\"utf-8\", { fatal: true });\n\tlet rest = \"\";\n\tlet number = 0;\n\tconst decode = (chunk?: Uint8Array): string => {\n\t\ttry {\n\t\t\treturn chunk === undefined ? decoder.decode() : decoder.decode(chunk, { stream: true });\n\t\t} catch (error) {\n\t\t\tthrow new LogFormatError(`Log line ${number + 1} is not UTF-8`, { cause: error });\n\t\t}\n\t};\n\tfor await (const chunk of chunks) {\n\t\trest += decode(chunk);\n\t\tlet start = 0;\n\t\tfor (let end = rest.indexOf(\"\\n\"); end >= 0; end = rest.indexOf(\"\\n\", start)) {\n\t\t\tyield { text: rest.slice(start, end), number: ++number };\n\t\t\tstart = end + 1;\n\t\t}\n\t\trest = rest.slice(start);\n\t}\n\trest += decode();\n\tif (rest.length > 0) throw new LogFormatError(`The body ends inside log line ${number + 1}`);\n}\n\nfunction gzip(chunks: AsyncIterable<Uint8Array>): SyncBody {\n\treturn pipe(chunks, new CompressionStream(\"gzip\"));\n}\n\nfunction gunzip(chunks: SyncBody): AsyncIterable<Uint8Array> {\n\treturn pipe(chunks, new DecompressionStream(\"gzip\"));\n}\n\n/**\n * `chunks` through `transform`, as they come: the source is written while the output is read, so each holds no more\n * than the stream's buffers. Stopping early, or a failure on either side, ends the source too (its `return()`, which\n * for an export gives the store's commit queue back).\n */\nasync function* pipe(\n\tchunks: AsyncIterable<Uint8Array>,\n\ttransform: CompressionStream | DecompressionStream,\n): AsyncGenerator<Uint8Array> {\n\tconst writer = transform.writable.getWriter();\n\tconst reader = transform.readable.getReader();\n\tconst writing = (async () => {\n\t\ttry {\n\t\t\tfor await (const chunk of chunks) await writer.write(chunk as Uint8Array<ArrayBuffer>);\n\t\t\tawait writer.close();\n\t\t} catch (error) {\n\t\t\tawait writer.abort(error).catch(() => {});\n\t\t\tthrow error;\n\t\t}\n\t})();\n\t// Its failure reaches the reader too (the abort errors the readable side); this only keeps it from going unhandled.\n\twriting.catch(() => {});\n\tlet done = false;\n\ttry {\n\t\twhile (true) {\n\t\t\tconst result = await reader.read();\n\t\t\tif (result.done) break;\n\t\t\tyield result.value;\n\t\t}\n\t\tdone = true;\n\t\tawait writing;\n\t} finally {\n\t\tif (!done) await reader.cancel().catch(() => {});\n\t\treader.releaseLock();\n\t}\n}\n"]}
@@ -0,0 +1,166 @@
1
+ import type { Context } from "../context/index.ts";
2
+ import type { Backend } from "../store/backend.ts";
3
+ import type { OutboxCommit } from "../store/outbox.ts";
4
+ import { type Store } from "../store/store.ts";
5
+ import { type Seq, type SessionSyncMaintenance, type SessionSyncStore } from "./remote.ts";
6
+ /**
7
+ * Where an upload ends a batch: once its lines (before compression) reach this size. One commit larger than this is
8
+ * a batch of its own.
9
+ */
10
+ export declare const BATCH_BYTES: number;
11
+ /** How much of a batch a pull holds before it applies it: commits are applied in chunks of about this size. */
12
+ export declare const APPLY_BYTES: number;
13
+ /**
14
+ * What a host keeps for each copy of a session it syncs: the last sequence the copy shares with the remote. Commits
15
+ * after it are the copy's own and not uploaded yet. When this is lost, a copy without commits of its own takes the
16
+ * remote's head; one with commits finds out by uploading.
17
+ */
18
+ export type SyncState = {
19
+ readonly syncedHead: Seq | undefined;
20
+ /**
21
+ * Set while a pull applies a batch or snapshot ending here: a local head up to it holds the remote's commits, not
22
+ * the copy's own, even when the pull stopped partway.
23
+ */
24
+ readonly pulling?: Seq;
25
+ };
26
+ export interface SyncStateStore {
27
+ get(sessionId: string, context: Context): Promise<SyncState | undefined>;
28
+ set(sessionId: string, state: SyncState, context: Context): Promise<void>;
29
+ }
30
+ /** A store's head as a sequence: `lastSeq`, 0 for a store without commits. */
31
+ export declare function storeHead(store: Store): Seq;
32
+ /** The store keeps no outbox, or its outbox no longer holds the commits a sync needs. */
33
+ export declare class OutboxUnavailableError extends Error {
34
+ constructor(message: string);
35
+ }
36
+ /** The outbox commits after `after`, a page of at most `limit`. */
37
+ export declare function readOutbox(store: Store, after: Seq, limit: number, context: Context): Promise<OutboxCommit[]>;
38
+ export type UploadResult = {
39
+ readonly type: "uploaded";
40
+ readonly head: Seq;
41
+ }
42
+ /** Nothing was committed since the last upload. */
43
+ | {
44
+ readonly type: "idle";
45
+ }
46
+ /**
47
+ * Another device continued the session from `at` first. This copy's commits after `at` are a different history:
48
+ * the host renames the copy to a new session (forked from this one at `at`) and uploads it there, and the session
49
+ * itself restores into a fresh store.
50
+ */
51
+ | {
52
+ readonly type: "diverged";
53
+ readonly at: Seq;
54
+ }
55
+ /**
56
+ * The copy lost commits it had uploaded, for example to a power loss: its head is below `syncedHead`. Its next
57
+ * commits would reuse their sequences, so nothing is uploaded. Pull what it lost before the copy commits again; a pull
58
+ * applies from the local head.
59
+ */
60
+ | {
61
+ readonly type: "behind";
62
+ readonly head: Seq;
63
+ readonly syncedHead: Seq;
64
+ }
65
+ /**
66
+ * The remote refused this device's epoch: another device holds the right to write the session now. Like
67
+ * `diverged`, the copy's commits after `at` are a different history, so the host forks the copy (S7).
68
+ */
69
+ | {
70
+ readonly type: "stale_epoch";
71
+ readonly at: Seq;
72
+ readonly epoch: number;
73
+ };
74
+ /**
75
+ * Upload what this copy committed since it last shared the remote's history, from the store's outbox, and trim the
76
+ * outbox through what the remote acknowledged. Every device continues a session as its own; whichever creates the slot
77
+ * first continues the session, so an upload that is acknowledged stays.
78
+ *
79
+ * A session the remote does not have yet, whose outbox does not reach back to its first commit (turned on later, or
80
+ * trimmed, as for a copy renamed after it diverged), starts with an archive slot: the store's `export()` at its head.
81
+ *
82
+ * A slot this device created already is an upload whose response was lost: the remote has the history up to its end,
83
+ * and the upload goes on from there.
84
+ */
85
+ export declare function uploadSession(options: {
86
+ readonly sessionId: string;
87
+ readonly device: string;
88
+ readonly source: Store;
89
+ readonly store: SessionSyncStore;
90
+ readonly state: SyncStateStore;
91
+ /** The writer's epoch, from whatever grants it (the remote, Radius); sent with every slot. */
92
+ readonly epoch?: number;
93
+ readonly context: Context;
94
+ }): Promise<UploadResult>;
95
+ /** This copy has commits it has not uploaded: upload them first, which may find that the copy diverged. */
96
+ export declare class UnsyncedCommitsError extends Error {
97
+ constructor(sessionId: string, localHead: Seq, syncedHead: Seq);
98
+ }
99
+ /** The copy a pull applies to: an open store, or an empty backend to restore the session into. */
100
+ export type LocalCopy = {
101
+ readonly kind: "store";
102
+ readonly store: Store;
103
+ } | {
104
+ readonly kind: "empty";
105
+ readonly backend: Backend;
106
+ };
107
+ /**
108
+ * Apply what the remote has after the local head; into an empty backend, that restores the session (from an archive
109
+ * when the history starts with one) and opens its store with an outbox. Resolves with the store, which the caller
110
+ * owns and closes. Nothing may hold the store's claims (no `StoreStorage`, no Harness): `applyBatch()` refuses then.
111
+ *
112
+ * A copy with commits it has not uploaded rejects with `UnsyncedCommitsError` instead of getting the remote's commits
113
+ * spliced onto its own. A copy whose history folding removed rejects with `HistoryUnavailableError` and restores into
114
+ * a fresh backend.
115
+ */
116
+ export declare function pullSession(options: {
117
+ readonly sessionId: string;
118
+ readonly store: SessionSyncStore;
119
+ readonly local: LocalCopy;
120
+ readonly state: SyncStateStore;
121
+ readonly context: Context;
122
+ }): Promise<{
123
+ readonly store: Store;
124
+ readonly head: Seq;
125
+ }>;
126
+ /**
127
+ * Fold a session's history into one snapshot: restore it into `scratch` (an empty backend; a file or a Durable Object's
128
+ * SQLite storage, not `:memory:`, so the restored store is not held in memory), upload its `export()` as a snapshot, drop the commits of the batches it covers, keeping their
129
+ * slots taken, and delete older snapshots. The remote runs this, not clients.
130
+ */
131
+ export declare function foldSession(options: {
132
+ readonly sessionId: string;
133
+ readonly store: SessionSyncMaintenance;
134
+ readonly scratch: Backend;
135
+ readonly context: Context;
136
+ }): Promise<Seq | undefined>;
137
+ export type FlushSchedulerOptions = {
138
+ readonly flush: () => Promise<unknown>;
139
+ /** Arms a timer and returns its disarm. */
140
+ readonly setTimer: (callback: () => void, delayMs: number) => () => void;
141
+ readonly now: () => number;
142
+ /** A failed flush; the scheduler retries it with backoff. */
143
+ readonly onError: (error: unknown) => void;
144
+ /** Delay of an ordinary flush after a commit. Default 5 seconds. */
145
+ readonly intervalMs?: number;
146
+ /** Delay of a flush after an urgent commit. Default 200 milliseconds. */
147
+ readonly urgentMs?: number;
148
+ /** First retry delay after a failed flush, doubling up to `maxRetryMs`. Default 1 second. */
149
+ readonly retryMs?: number;
150
+ /** Default 1 minute. */
151
+ readonly maxRetryMs?: number;
152
+ };
153
+ /**
154
+ * Decides when to flush: some time after a commit, sooner after an urgent one, one flush at a time. Commits that arrive
155
+ * during a flush keep their urgency and schedule the next one when it ends. A failed flush is retried with backoff
156
+ * until one succeeds, so the last commits of a turn do not wait for the next commit.
157
+ */
158
+ export declare class FlushScheduler {
159
+ #private;
160
+ constructor(options: FlushSchedulerOptions);
161
+ /** A commit landed. */
162
+ notify(urgent: boolean): void;
163
+ /** Flush now, after a flush underway, and stop scheduling. A failure rejects. */
164
+ close(): Promise<void>;
165
+ }
166
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sync/client.ts"],"names":[],"mappings":"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"}