@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 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/tui/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["// `startTerminalRuntime` (slice 11 §4, decisions \"Slice 11, P8\" and \"P9\"): the terminal client inside the sandbox, in\n// the app's terminal entry (the base bundle the launcher downloaded). A client host like a page's: the plugin scripts\n// the launcher brought, loaded with the app's core facets and the kit's themes and translations; the language followed\n// from the user's pick and the system's locales the launcher read (scopes' messages redraw on a change); the link to\n// the server relayed by the launcher, kept by the same connection loop; `TuiScripts` followed to apply new plugin\n// scripts in place; a new base bundle hands over to the launcher, which starts the new one. The app gets the host, the\n// bridged terminal, the theme lookup and the launcher's actions.\n\nimport { BACKGROUND_CONTEXT } from \"../context/index.ts\";\nimport type { Principal } from \"../data/index.ts\";\nimport type { PluginFacet } from \"../host/index.ts\";\nimport {\n\ttype Client,\n\ttype ClientError,\n\ttype ClientModules,\n\ttype ConnectionState,\n\tFALLBACK_THEMES,\n\ttype FacetFunction,\n\tfollowActiveLanguage,\n\tfollowActiveTheme,\n\tREGISTER,\n\ttype RegisteredScript,\n\tstartClient,\n\tTuiScripts,\n\tthemesFacet,\n\ttranslationsFacet,\n} from \"../surfaces/index.ts\";\nimport { BRIDGE, type Bridge } from \"./bridge.ts\";\nimport { SandboxChannel } from \"./channel.ts\";\nimport { BridgeTerminal } from \"./terminal.ts\";\nimport { TerminalTheme } from \"./theme.ts\";\n\n/** What `startTerminalRuntime` takes. */\nexport type TerminalRuntimeOptions<P extends Principal> = {\n\t/** The modules the terminal plugins import, by specifier: the app's API modules for the kind, its components. */\n\treadonly modules: ClientModules;\n\t/** The app's own terminal facets. */\n\treadonly core?: readonly PluginFacet<P>[];\n\treadonly canRetry?: () => Promise<boolean>;\n\treadonly onConnection?: (state: ConnectionState) => void;\n\t/** Draws the app, once its plugins are loaded. */\n\treadonly render: (runtime: TerminalRuntime<P>) => void;\n\t/**\n\t * Plugins left out or kept old, a failed update, the host's errors, messages' reports; dropped by default (stderr\n\t * is the launcher's).\n\t */\n\treadonly onError?: (error: ClientError) => void;\n};\n\n/** A file the launcher read for the sandbox: its name (the path's last segment) and its bytes. */\nexport type AttachedFile = { readonly name: string; readonly bytes: Uint8Array };\n\n/** What the app's terminal code gets. */\nexport type TerminalRuntime<P extends Principal> = {\n\treadonly host: Client<P>[\"host\"];\n\treadonly terminal: BridgeTerminal;\n\treadonly theme: TerminalTheme;\n\t/** Asks the launcher to copy `text` to the machine's clipboard; it asks the user. Whether it was done. */\n\tcopy(text: string): Promise<boolean>;\n\t/** Asks the launcher to open `url` (http or https) in a browser; it asks the user. Whether it was done. */\n\topen(url: string): Promise<boolean>;\n\t/**\n\t * Asks the launcher for the file at `path` on the machine (at most 16 MiB); it asks the user. Its name and bytes, or\n\t * `undefined` when declined.\n\t */\n\tattach(path: string): Promise<AttachedFile | undefined>;\n\t/** Ends the terminal client with `code`. */\n\texit(code: number): void;\n};\n\n/** Starts the terminal client inside the sandbox; resolves with its runtime once rendered. */\nexport async function startTerminalRuntime<P extends Principal>(\n\toptions: TerminalRuntimeOptions<P>,\n): Promise<TerminalRuntime<P>> {\n\tconst channel = new SandboxChannel(takeBridge());\n\tconst { start } = channel;\n\tconst scripts = new SandboxScripts(channel);\n\tconst core: PluginFacet<P>[] = [\n\t\t{ name: \"chord.themes\", facet: themesFacet<P>() },\n\t\t{ name: \"chord.translations\", facet: translationsFacet<P>() },\n\t\t...(options.core ?? []),\n\t];\n\tconst onError = options.onError ?? (() => {});\n\tconst client = await startClient<P>({\n\t\tscripts: TuiScripts,\n\t\tbase: start.base,\n\t\tinitial: scripts.run(start.combined),\n\t\tmodules: options.modules,\n\t\tcore,\n\t\topen: (events) => channel.openSocket(events),\n\t\tfetchScript: async (entry) => {\n\t\t\tconst text = (await channel.request({ kind: \"fetch\", path: entry.url })) as string;\n\t\t\tconst registered = scripts\n\t\t\t\t.run(text)\n\t\t\t\t.find(({ plugin, digest }) => plugin === entry.name && digest === entry.digest);\n\t\t\tif (registered === undefined) throw new Error(`plugin \"${entry.name}\": ${entry.url} did not register`);\n\t\t\treturn registered;\n\t\t},\n\t\tserverBase: () =>\n\t\t\tchannel.request({ kind: \"base\" }).then(\n\t\t\t\t(base) => base as string,\n\t\t\t\t() => undefined,\n\t\t\t),\n\t\toutdated: () => channel.outdated(),\n\t\t...(options.canRetry === undefined ? {} : { canRetry: options.canRetry }),\n\t\t...(options.onConnection === undefined ? {} : { onConnection: options.onConnection }),\n\t\tenvironment: TERMINAL_ENVIRONMENT,\n\t\tonError,\n\t});\n\tconst theme = new TerminalTheme(FALLBACK_THEMES[start.mode], start.colors);\n\tawait followActiveTheme(client.host, start.mode, (active) => theme.set(active), BACKGROUND_CONTEXT);\n\tawait followActiveLanguage(\n\t\tclient.host,\n\t\tstart.locales,\n\t\t() => {},\n\t\t(report) => onError({ kind: \"messages\", report }),\n\t\tBACKGROUND_CONTEXT,\n\t);\n\tconst runtime: TerminalRuntime<P> = {\n\t\thost: client.host,\n\t\tterminal: new BridgeTerminal(channel),\n\t\ttheme,\n\t\tcopy: (text) => channel.request({ kind: \"copy\", text }).then(Boolean),\n\t\topen: (url) => channel.request({ kind: \"open\", url }).then(Boolean),\n\t\t// The launcher's reply: its own data, `null` when declined.\n\t\tattach: (path) =>\n\t\t\tchannel.request({ kind: \"attach\", path }).then((file) => (file as AttachedFile | null) ?? undefined),\n\t\texit: (code) => channel.exit(code),\n\t};\n\toptions.render(runtime);\n\treturn runtime;\n}\n\n/** The bridge the bootstrap left on `globalThis`, taken off it (plugin code never finds it there). */\nfunction takeBridge(): Bridge {\n\tconst scope = globalThis as Record<string, unknown>;\n\tconst bridge = scope[BRIDGE] as Bridge | undefined;\n\tif (bridge === undefined) throw new Error(\"startTerminalRuntime: not inside the terminal's sandbox (no bridge)\");\n\tdelete scope[BRIDGE];\n\treturn bridge;\n}\n\n/** A terminal has no page wakes: the loop retries on its backoff alone. */\nconst TERMINAL_ENVIRONMENT = {\n\tnow: () => Date.now(),\n\tafter: (ms: number, callback: () => void) => {\n\t\tconst timer = setTimeout(callback, ms);\n\t\treturn () => clearTimeout(timer);\n\t},\n\tonline: () => true,\n\tonWake: () => () => {},\n};\n\n/** Runs registered scripts' text in the sandbox and collects what registered (`chordFacet`). */\nclass SandboxScripts {\n\treadonly #channel: SandboxChannel;\n\t/** The scripts the text being run registers. */\n\t#collected: RegisteredScript[] = [];\n\n\tconstructor(channel: SandboxChannel) {\n\t\tthis.#channel = channel;\n\t\t(globalThis as Record<string, unknown>)[REGISTER] = (plugin: string, digest: string, run: FacetFunction) => {\n\t\t\tthis.#collected.push({ plugin, digest, run });\n\t\t};\n\t}\n\n\t/** Runs `text` (one or more registered scripts): what it registered. */\n\trun(text: string): RegisteredScript[] {\n\t\tthis.#collected = [];\n\t\tthis.#channel.evaluate(text, \"chord-plugins.js\");\n\t\treturn this.#collected;\n\t}\n}\n"]}
@@ -0,0 +1,46 @@
1
+ import type { Contract, ParamsOf } from "../contracts/index.ts";
2
+ import type { Principal } from "../data/index.ts";
3
+ import type { Held, Host } from "../host/index.ts";
4
+ import type { Registry } from "../registries/index.ts";
5
+ import { type Messages, type Translator } from "../surfaces/index.ts";
6
+ import { type PageState } from "../surfaces/page-state.ts";
7
+ import type { NativeWatchable, Watchable } from "../watch.ts";
8
+ /** Adds an optimistic action shown while `call` is in flight; returns `call` (see `TuiScope.optimistic`). */
9
+ export type OptimisticAdd<A> = <R>(action: A, call: Promise<R>) => Promise<R>;
10
+ /** A component's scope: what it holds and follows, until `dispose`. */
11
+ export declare class TuiScope<P extends Principal = Principal> {
12
+ #private;
13
+ constructor(host: Host<P>, changed: () => void);
14
+ /** A reference to `Type` with `params`, held until `dispose`; its state changes call `changed`. */
15
+ hold<C extends Contract>(Type: C, params: ParamsOf<C>): Held<C>;
16
+ /**
17
+ * Follows `source` (a member, a derive, `ref.state`) until `dispose`: its changes call `changed`. Returns a reader of
18
+ * its current value (`undefined` while it has none: nothing throws in a redraw).
19
+ */
20
+ watch<T>(source: Watchable<T> | NativeWatchable<T>): () => T | undefined;
21
+ /** Registry `R`'s composed value, followed until `dispose`; a reader, `undefined` until it is usable. */
22
+ registry<C, V>(R: Registry<C, V>): () => V | undefined;
23
+ /**
24
+ * `read` with optimistic values, as React's `useOptimistic`: `add(action, call)` returns `call` and, until every call
25
+ * added so settled, the reader shows `reduce(current, action)` applied over `read`'s value for each action in flight,
26
+ * in order (without `reduce`, the last action is the value); then `read`'s again. `pending` says a call is in flight.
27
+ * Each change calls `changed`. A call over a link settles after the changes its answering host committed before
28
+ * answering (decision "A call's answer follows its state"), so the value shown next is the real one. A rejected
29
+ * call is its caller's to handle (React leaves it to the transition); its action goes as a resolved one's does.
30
+ */
31
+ optimistic<T>(read: () => T): readonly [read: () => T, add: OptimisticAdd<T>, pending: () => boolean];
32
+ optimistic<T, A>(read: () => T, reduce: (current: T, action: A) => T): readonly [read: () => T, add: OptimisticAdd<A>, pending: () => boolean];
33
+ /**
34
+ * The host's page state at `key`, kept for the terminal's life, not the scope's (a new key starts at `initial`); its
35
+ * changes call `changed` until `dispose`.
36
+ */
37
+ pageState<T>(key: string, initial: T): PageState<T>;
38
+ /**
39
+ * `messages` in the host's language as it is at each call (the first catalog before the host follows one); a change
40
+ * of the locale or a translation calls `changed` until `dispose`.
41
+ */
42
+ messages<N extends string, M>(messages: Messages<N, M>): Translator<N, M>;
43
+ /** Releases every reference and ends every watch; `changed` is not called after it. */
44
+ dispose(): void;
45
+ }
46
+ //# sourceMappingURL=scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/tui/scope.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAiD,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrH,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9D,6GAA6G;AAC7G,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE9E,uEAAuE;AACvE,qBAAa,QAAQ,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;;IAMpD,YAAY,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,EAG7C;IAED,mGAAmG;IACnG,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAK9D;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,CAmBvE;IAED,yGAAyG;IACzG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,CAUrD;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC;IACtG,UAAU,CAAC,CAAC,EAAE,CAAC,EACd,IAAI,EAAE,MAAM,CAAC,EACb,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAClC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC;IAqC3E;;;OAGG;IACH,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAKlD;IAED;;;OAGG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAgBxE;IAED,uFAAuF;IACvF,OAAO,IAAI,IAAI,CAGd;CAMD"}
@@ -0,0 +1,141 @@
1
+ // `TuiScope` (slice 11 §4, decision "Slice 11, P9"; p2's `TuiScope`): a terminal component's Chord resources, the
2
+ // counterpart of the React bindings for terminal UI libraries. It holds references, follows watchables and registries,
3
+ // calls one `changed` callback (the app's redraw) on every change, and releases everything at `dispose`. Its page state
4
+ // is the host's, shared by every scope (React's `usePageState`): a scope opened again after a plugin reload finds it.
5
+ // Its messages render in the host's language, and a change of the locale or a translation redraws. A reader can show
6
+ // an optimistic value while a call is pending (React's `useOptimistic`).
7
+ // References wait and rebind by themselves (no retry loop, unlike p2's); no terminal library dependency.
8
+ import { BACKGROUND_CONTEXT, withAbortSignal } from "../context/index.js";
9
+ import { hostLanguage } from "../surfaces/index.js";
10
+ import { pageState } from "../surfaces/page-state.js";
11
+ /** A component's scope: what it holds and follows, until `dispose`. */
12
+ export class TuiScope {
13
+ #host;
14
+ #changed;
15
+ #abort = new AbortController();
16
+ #releases = [];
17
+ constructor(host, changed) {
18
+ this.#host = host;
19
+ this.#changed = changed;
20
+ }
21
+ /** A reference to `Type` with `params`, held until `dispose`; its state changes call `changed`. */
22
+ hold(Type, params) {
23
+ const held = this.#host.hold(Type, params, this.#context());
24
+ this.#releases.push(() => held.release());
25
+ this.watch(held.state);
26
+ return held;
27
+ }
28
+ /**
29
+ * Follows `source` (a member, a derive, `ref.state`) until `dispose`: its changes call `changed`. Returns a reader of
30
+ * its current value (`undefined` while it has none: nothing throws in a redraw).
31
+ */
32
+ watch(source) {
33
+ source.watch(this.#context()).then((watch) => {
34
+ watch.start(async () => {
35
+ if (!this.#abort.signal.aborted)
36
+ this.#changed();
37
+ });
38
+ // The value it acquired may be newer than what was drawn (a reference bound since): draw it.
39
+ if (!this.#abort.signal.aborted)
40
+ this.#changed();
41
+ },
42
+ // Disposed (or the source ended) before the watch started: nothing to follow.
43
+ () => { });
44
+ return () => {
45
+ try {
46
+ return source.value;
47
+ }
48
+ catch {
49
+ return undefined;
50
+ }
51
+ };
52
+ }
53
+ /** Registry `R`'s composed value, followed until `dispose`; a reader, `undefined` until it is usable. */
54
+ registry(R) {
55
+ let read = () => undefined;
56
+ this.#host.registry(R, this.#context()).then((value) => {
57
+ read = this.watch(value);
58
+ if (!this.#abort.signal.aborted)
59
+ this.#changed();
60
+ }, () => { });
61
+ return () => read();
62
+ }
63
+ optimistic(read,
64
+ // Without `reduce` the first overload makes the action a `T`: the last one is the value.
65
+ reduce = (_current, action) => action) {
66
+ // Kept until every call settled, as React keeps the updates of transitions still in flight.
67
+ let actions = [];
68
+ let pending = 0;
69
+ const redraw = () => {
70
+ if (!this.#abort.signal.aborted)
71
+ this.#changed();
72
+ };
73
+ const settled = () => {
74
+ if (--pending === 0)
75
+ actions = [];
76
+ redraw();
77
+ };
78
+ const add = (action, call) => {
79
+ actions = [...actions, action];
80
+ pending++;
81
+ // Its caller handles a rejection of `call`; this only follows it.
82
+ call.then(settled, settled);
83
+ redraw();
84
+ return call;
85
+ };
86
+ // The value shown is computed again only when `read`'s value or the actions changed: a redraw reading it often
87
+ // gets the same value (by identity) until then.
88
+ let last;
89
+ const shown = () => {
90
+ const base = read();
91
+ if (pending === 0)
92
+ return base;
93
+ if (last?.base !== base || last.actions !== actions)
94
+ last = { base, actions, value: actions.reduce(reduce, base) };
95
+ return last.value;
96
+ };
97
+ return [shown, add, () => pending > 0];
98
+ }
99
+ /**
100
+ * The host's page state at `key`, kept for the terminal's life, not the scope's (a new key starts at `initial`); its
101
+ * changes call `changed` until `dispose`.
102
+ */
103
+ pageState(key, initial) {
104
+ const state = pageState(this.#host, key, initial);
105
+ // A closure of its own: two scopes may share one `changed`, and subscribers are a set of functions.
106
+ this.#releases.push(state.subscribe(() => this.#changed()));
107
+ return state;
108
+ }
109
+ /**
110
+ * `messages` in the host's language as it is at each call (the first catalog before the host follows one); a change
111
+ * of the locale or a translation calls `changed` until `dispose`.
112
+ */
113
+ messages(messages) {
114
+ const language = hostLanguage(this.#host);
115
+ this.#releases.push(language.subscribe(() => this.#changed()));
116
+ let bound;
117
+ const current = () => {
118
+ const now = language.read();
119
+ // A translator's overloads are one function's, keyed by the catalog's shape: called here as that function.
120
+ if (bound === undefined || bound.language !== now) {
121
+ bound = { language: now, t: messages.in(now) };
122
+ }
123
+ return bound.t;
124
+ };
125
+ const t = Object.assign((key, ...args) => current()(key, ...args), {
126
+ render: (message) => current().render(message),
127
+ });
128
+ return t;
129
+ }
130
+ /** Releases every reference and ends every watch; `changed` is not called after it. */
131
+ dispose() {
132
+ this.#abort.abort();
133
+ for (const release of this.#releases.splice(0))
134
+ release();
135
+ }
136
+ /** The context of the scope's work: aborted at `dispose`. */
137
+ #context() {
138
+ return withAbortSignal(this.#abort.signal, BACKGROUND_CONTEXT);
139
+ }
140
+ }
141
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/tui/scope.ts"],"names":[],"mappings":"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","sourcesContent":["// `TuiScope` (slice 11 §4, decision \"Slice 11, P9\"; p2's `TuiScope`): a terminal component's Chord resources, the\n// counterpart of the React bindings for terminal UI libraries. It holds references, follows watchables and registries,\n// calls one `changed` callback (the app's redraw) on every change, and releases everything at `dispose`. Its page state\n// is the host's, shared by every scope (React's `usePageState`): a scope opened again after a plugin reload finds it.\n// Its messages render in the host's language, and a change of the locale or a translation redraws. A reader can show\n// an optimistic value while a call is pending (React's `useOptimistic`).\n// References wait and rebind by themselves (no retry loop, unlike p2's); no terminal library dependency.\n\nimport { BACKGROUND_CONTEXT, withAbortSignal } from \"../context/index.ts\";\nimport type { Contract, ParamsOf } from \"../contracts/index.ts\";\nimport type { Principal } from \"../data/index.ts\";\nimport type { Held, Host } from \"../host/index.ts\";\nimport type { Registry } from \"../registries/index.ts\";\nimport { hostLanguage, type Language, type MessageData, type Messages, type Translator } from \"../surfaces/index.ts\";\nimport { type PageState, pageState } from \"../surfaces/page-state.ts\";\nimport type { NativeWatchable, Watchable } from \"../watch.ts\";\n\n/** Adds an optimistic action shown while `call` is in flight; returns `call` (see `TuiScope.optimistic`). */\nexport type OptimisticAdd<A> = <R>(action: A, call: Promise<R>) => Promise<R>;\n\n/** A component's scope: what it holds and follows, until `dispose`. */\nexport class TuiScope<P extends Principal = Principal> {\n\treadonly #host: Host<P>;\n\treadonly #changed: () => void;\n\treadonly #abort = new AbortController();\n\treadonly #releases: (() => void)[] = [];\n\n\tconstructor(host: Host<P>, changed: () => void) {\n\t\tthis.#host = host;\n\t\tthis.#changed = changed;\n\t}\n\n\t/** A reference to `Type` with `params`, held until `dispose`; its state changes call `changed`. */\n\thold<C extends Contract>(Type: C, params: ParamsOf<C>): Held<C> {\n\t\tconst held = this.#host.hold(Type, params, this.#context());\n\t\tthis.#releases.push(() => held.release());\n\t\tthis.watch(held.state);\n\t\treturn held;\n\t}\n\n\t/**\n\t * Follows `source` (a member, a derive, `ref.state`) until `dispose`: its changes call `changed`. Returns a reader of\n\t * its current value (`undefined` while it has none: nothing throws in a redraw).\n\t */\n\twatch<T>(source: Watchable<T> | NativeWatchable<T>): () => T | undefined {\n\t\tsource.watch(this.#context()).then(\n\t\t\t(watch) => {\n\t\t\t\t(watch.start as (listener: () => Promise<void>) => void)(async () => {\n\t\t\t\t\tif (!this.#abort.signal.aborted) this.#changed();\n\t\t\t\t});\n\t\t\t\t// The value it acquired may be newer than what was drawn (a reference bound since): draw it.\n\t\t\t\tif (!this.#abort.signal.aborted) this.#changed();\n\t\t\t},\n\t\t\t// Disposed (or the source ended) before the watch started: nothing to follow.\n\t\t\t() => {},\n\t\t);\n\t\treturn () => {\n\t\t\ttry {\n\t\t\t\treturn source.value;\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t};\n\t}\n\n\t/** Registry `R`'s composed value, followed until `dispose`; a reader, `undefined` until it is usable. */\n\tregistry<C, V>(R: Registry<C, V>): () => V | undefined {\n\t\tlet read: () => V | undefined = () => undefined;\n\t\tthis.#host.registry(R, this.#context()).then(\n\t\t\t(value) => {\n\t\t\t\tread = this.watch(value);\n\t\t\t\tif (!this.#abort.signal.aborted) this.#changed();\n\t\t\t},\n\t\t\t() => {},\n\t\t);\n\t\treturn () => read();\n\t}\n\n\t/**\n\t * `read` with optimistic values, as React's `useOptimistic`: `add(action, call)` returns `call` and, until every call\n\t * added so settled, the reader shows `reduce(current, action)` applied over `read`'s value for each action in flight,\n\t * in order (without `reduce`, the last action is the value); then `read`'s again. `pending` says a call is in flight.\n\t * Each change calls `changed`. A call over a link settles after the changes its answering host committed before\n\t * answering (decision \"A call's answer follows its state\"), so the value shown next is the real one. A rejected\n\t * call is its caller's to handle (React leaves it to the transition); its action goes as a resolved one's does.\n\t */\n\toptimistic<T>(read: () => T): readonly [read: () => T, add: OptimisticAdd<T>, pending: () => boolean];\n\toptimistic<T, A>(\n\t\tread: () => T,\n\t\treduce: (current: T, action: A) => T,\n\t): readonly [read: () => T, add: OptimisticAdd<A>, pending: () => boolean];\n\toptimistic<T, A>(\n\t\tread: () => T,\n\t\t// Without `reduce` the first overload makes the action a `T`: the last one is the value.\n\t\treduce: (current: T, action: A) => T = (_current, action) => action as unknown as T,\n\t): readonly [read: () => T, add: OptimisticAdd<A>, pending: () => boolean] {\n\t\t// Kept until every call settled, as React keeps the updates of transitions still in flight.\n\t\tlet actions: A[] = [];\n\t\tlet pending = 0;\n\t\tconst redraw = (): void => {\n\t\t\tif (!this.#abort.signal.aborted) this.#changed();\n\t\t};\n\t\tconst settled = (): void => {\n\t\t\tif (--pending === 0) actions = [];\n\t\t\tredraw();\n\t\t};\n\t\tconst add = <R>(action: A, call: Promise<R>): Promise<R> => {\n\t\t\tactions = [...actions, action];\n\t\t\tpending++;\n\t\t\t// Its caller handles a rejection of `call`; this only follows it.\n\t\t\tcall.then(settled, settled);\n\t\t\tredraw();\n\t\t\treturn call;\n\t\t};\n\t\t// The value shown is computed again only when `read`'s value or the actions changed: a redraw reading it often\n\t\t// gets the same value (by identity) until then.\n\t\tlet last: { base: T; actions: A[]; value: T } | undefined;\n\t\tconst shown = (): T => {\n\t\t\tconst base = read();\n\t\t\tif (pending === 0) return base;\n\t\t\tif (last?.base !== base || last.actions !== actions)\n\t\t\t\tlast = { base, actions, value: actions.reduce(reduce, base) };\n\t\t\treturn last.value;\n\t\t};\n\t\treturn [shown, add, () => pending > 0];\n\t}\n\n\t/**\n\t * The host's page state at `key`, kept for the terminal's life, not the scope's (a new key starts at `initial`); its\n\t * changes call `changed` until `dispose`.\n\t */\n\tpageState<T>(key: string, initial: T): PageState<T> {\n\t\tconst state = pageState(this.#host, key, initial);\n\t\t// A closure of its own: two scopes may share one `changed`, and subscribers are a set of functions.\n\t\tthis.#releases.push(state.subscribe(() => this.#changed()));\n\t\treturn state;\n\t}\n\n\t/**\n\t * `messages` in the host's language as it is at each call (the first catalog before the host follows one); a change\n\t * of the locale or a translation calls `changed` until `dispose`.\n\t */\n\tmessages<N extends string, M>(messages: Messages<N, M>): Translator<N, M> {\n\t\tconst language = hostLanguage(this.#host);\n\t\tthis.#releases.push(language.subscribe(() => this.#changed()));\n\t\tlet bound: { readonly language: Language | undefined; readonly t: PlainTranslator } | undefined;\n\t\tconst current = (): PlainTranslator => {\n\t\t\tconst now = language.read();\n\t\t\t// A translator's overloads are one function's, keyed by the catalog's shape: called here as that function.\n\t\t\tif (bound === undefined || bound.language !== now) {\n\t\t\t\tbound = { language: now, t: messages.in(now) as unknown as PlainTranslator };\n\t\t\t}\n\t\t\treturn bound.t;\n\t\t};\n\t\tconst t: PlainTranslator = Object.assign((key: string, ...args: unknown[]) => current()(key, ...args), {\n\t\t\trender: (message: MessageData) => current().render(message),\n\t\t});\n\t\treturn t as unknown as Translator<N, M>;\n\t}\n\n\t/** Releases every reference and ends every watch; `changed` is not called after it. */\n\tdispose(): void {\n\t\tthis.#abort.abort();\n\t\tfor (const release of this.#releases.splice(0)) release();\n\t}\n\n\t/** The context of the scope's work: aborted at `dispose`. */\n\t#context() {\n\t\treturn withAbortSignal(this.#abort.signal, BACKGROUND_CONTEXT);\n\t}\n}\n\n/** A translator as the function it is: any key, any arguments. */\ntype PlainTranslator = ((key: string, ...args: unknown[]) => string) & { render(message: MessageData): string };\n"]}
@@ -0,0 +1,15 @@
1
+ import type { SandboxChannel } from "./channel.ts";
2
+ /** The bridged terminal. */
3
+ export declare class BridgeTerminal {
4
+ #private;
5
+ constructor(channel: SandboxChannel);
6
+ get columns(): number;
7
+ get rows(): number;
8
+ /** Writes `data` (text and escape sequences) to the terminal. */
9
+ write(data: string): void;
10
+ /** Calls `listener` with each input (keys, pastes, as the terminal sends them) until the returned removal. */
11
+ onInput(listener: (data: string) => void): () => void;
12
+ /** Calls `listener` after each resize (the new size read from `columns` and `rows`) until the returned removal. */
13
+ onResize(listener: () => void): () => void;
14
+ }
15
+ //# sourceMappingURL=terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/tui/terminal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,4BAA4B;AAC5B,qBAAa,cAAc;;IAK1B,YAAY,OAAO,EAAE,cAAc,EAQlC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,iEAAiE;IACjE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAExB;IAED,8GAA8G;IAC9G,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAEpD;IAED,mHAAmH;IACnH,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAEzC;CACD"}
@@ -0,0 +1,37 @@
1
+ // The terminal as the app's terminal code sees it inside the sandbox (slice 11 §4): its size, writing frames, and
2
+ // input and resizes, all through the bridge; the launcher holds the real terminal. Library-agnostic: an app adapts it
3
+ // to its terminal UI library (pi-tui's `Terminal` in a few lines).
4
+ /** The bridged terminal. */
5
+ export class BridgeTerminal {
6
+ #channel;
7
+ #columns;
8
+ #rows;
9
+ constructor(channel) {
10
+ this.#channel = channel;
11
+ this.#columns = channel.start.columns;
12
+ this.#rows = channel.start.rows;
13
+ channel.onResize((columns, rows) => {
14
+ this.#columns = columns;
15
+ this.#rows = rows;
16
+ });
17
+ }
18
+ get columns() {
19
+ return this.#columns;
20
+ }
21
+ get rows() {
22
+ return this.#rows;
23
+ }
24
+ /** Writes `data` (text and escape sequences) to the terminal. */
25
+ write(data) {
26
+ this.#channel.write(data);
27
+ }
28
+ /** Calls `listener` with each input (keys, pastes, as the terminal sends them) until the returned removal. */
29
+ onInput(listener) {
30
+ return this.#channel.onInput(listener);
31
+ }
32
+ /** Calls `listener` after each resize (the new size read from `columns` and `rows`) until the returned removal. */
33
+ onResize(listener) {
34
+ return this.#channel.onResize(() => listener());
35
+ }
36
+ }
37
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/tui/terminal.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,sHAAsH;AACtH,mEAAmE;AAInE,4BAA4B;AAC5B,MAAM,OAAO,cAAc;IACjB,QAAQ,CAAiB;IAClC,QAAQ,CAAS;IACjB,KAAK,CAAS;IAEd,YAAY,OAAuB;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAChC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,IAAY;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,8GAA8G;IAC9G,OAAO,CAAC,QAAgC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,mHAAmH;IACnH,QAAQ,CAAC,QAAoB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;CACD","sourcesContent":["// The terminal as the app's terminal code sees it inside the sandbox (slice 11 §4): its size, writing frames, and\n// input and resizes, all through the bridge; the launcher holds the real terminal. Library-agnostic: an app adapts it\n// to its terminal UI library (pi-tui's `Terminal` in a few lines).\n\nimport type { SandboxChannel } from \"./channel.ts\";\n\n/** The bridged terminal. */\nexport class BridgeTerminal {\n\treadonly #channel: SandboxChannel;\n\t#columns: number;\n\t#rows: number;\n\n\tconstructor(channel: SandboxChannel) {\n\t\tthis.#channel = channel;\n\t\tthis.#columns = channel.start.columns;\n\t\tthis.#rows = channel.start.rows;\n\t\tchannel.onResize((columns, rows) => {\n\t\t\tthis.#columns = columns;\n\t\t\tthis.#rows = rows;\n\t\t});\n\t}\n\n\tget columns(): number {\n\t\treturn this.#columns;\n\t}\n\n\tget rows(): number {\n\t\treturn this.#rows;\n\t}\n\n\t/** Writes `data` (text and escape sequences) to the terminal. */\n\twrite(data: string): void {\n\t\tthis.#channel.write(data);\n\t}\n\n\t/** Calls `listener` with each input (keys, pastes, as the terminal sends them) until the returned removal. */\n\tonInput(listener: (data: string) => void): () => void {\n\t\treturn this.#channel.onInput(listener);\n\t}\n\n\t/** Calls `listener` after each resize (the new size read from `columns` and `rows`) until the returned removal. */\n\tonResize(listener: () => void): () => void {\n\t\treturn this.#channel.onResize(() => listener());\n\t}\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { type ColorDepth, type Theme } from "../surfaces/index.ts";
2
+ /** Colours by role for the terminal. */
3
+ export declare class TerminalTheme {
4
+ #private;
5
+ constructor(theme: Theme, depth: ColorDepth);
6
+ /** The active theme. */
7
+ get theme(): Theme;
8
+ /** `text` in `role`'s colour (the default colour after it). */
9
+ fg(role: string, text: string): string;
10
+ /** `text` on `role`'s colour as its background. */
11
+ bg(role: string, text: string): string;
12
+ /** Calls `listener` when the active theme changes (to redraw) until the returned removal. */
13
+ onChange(listener: () => void): () => void;
14
+ /** The active theme is now `theme`. */
15
+ set(theme: Theme): void;
16
+ }
17
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,EAAiB,MAAM,sBAAsB,CAAC;AAElF,wCAAwC;AACxC,qBAAa,aAAa;;IAKzB,YAAY,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAG1C;IAED,wBAAwB;IACxB,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,+DAA+D;IAC/D,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErC;IAED,mDAAmD;IACnD,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErC;IAED,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAGzC;IAED,uCAAuC;IACvC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAGtB;CACD"}
@@ -0,0 +1,38 @@
1
+ // The terminal's theme lookup (slice 11 §4b, decision "Looks and themes"): colours by role from the active theme, as
2
+ // the terminal shows them (true colour, else the nearest of 256; a theme's `tui` overrides first). A plugin asks for a
3
+ // role (`theme.fg("accent", "Notes")`), never writes raw colours; a new theme applies at the next redraw.
4
+ import { terminalColor } from "../surfaces/index.js";
5
+ /** Colours by role for the terminal. */
6
+ export class TerminalTheme {
7
+ #depth;
8
+ #theme;
9
+ #listeners = new Set();
10
+ constructor(theme, depth) {
11
+ this.#theme = theme;
12
+ this.#depth = depth;
13
+ }
14
+ /** The active theme. */
15
+ get theme() {
16
+ return this.#theme;
17
+ }
18
+ /** `text` in `role`'s colour (the default colour after it). */
19
+ fg(role, text) {
20
+ return `\x1b[${terminalColor(this.#theme, role, this.#depth, "fg")}m${text}\x1b[39m`;
21
+ }
22
+ /** `text` on `role`'s colour as its background. */
23
+ bg(role, text) {
24
+ return `\x1b[${terminalColor(this.#theme, role, this.#depth, "bg")}m${text}\x1b[49m`;
25
+ }
26
+ /** Calls `listener` when the active theme changes (to redraw) until the returned removal. */
27
+ onChange(listener) {
28
+ this.#listeners.add(listener);
29
+ return () => this.#listeners.delete(listener);
30
+ }
31
+ /** The active theme is now `theme`. */
32
+ set(theme) {
33
+ this.#theme = theme;
34
+ for (const listener of this.#listeners)
35
+ listener();
36
+ }
37
+ }
38
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,uHAAuH;AACvH,0GAA0G;AAE1G,OAAO,EAA+B,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElF,wCAAwC;AACxC,MAAM,OAAO,aAAa;IAChB,MAAM,CAAa;IAC5B,MAAM,CAAQ;IACL,UAAU,GAAG,IAAI,GAAG,EAAc,CAAC;IAE5C,YAAY,KAAY,EAAE,KAAiB;QAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,+DAA+D;IAC/D,EAAE,CAAC,IAAY,EAAE,IAAY;QAC5B,OAAO,QAAQ,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;IACtF,CAAC;IAED,mDAAmD;IACnD,EAAE,CAAC,IAAY,EAAE,IAAY;QAC5B,OAAO,QAAQ,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC;IACtF,CAAC;IAED,6FAA6F;IAC7F,QAAQ,CAAC,QAAoB;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,KAAY;QACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU;YAAE,QAAQ,EAAE,CAAC;IACpD,CAAC;CACD","sourcesContent":["// The terminal's theme lookup (slice 11 §4b, decision \"Looks and themes\"): colours by role from the active theme, as\n// the terminal shows them (true colour, else the nearest of 256; a theme's `tui` overrides first). A plugin asks for a\n// role (`theme.fg(\"accent\", \"Notes\")`), never writes raw colours; a new theme applies at the next redraw.\n\nimport { type ColorDepth, type Theme, terminalColor } from \"../surfaces/index.ts\";\n\n/** Colours by role for the terminal. */\nexport class TerminalTheme {\n\treadonly #depth: ColorDepth;\n\t#theme: Theme;\n\treadonly #listeners = new Set<() => void>();\n\n\tconstructor(theme: Theme, depth: ColorDepth) {\n\t\tthis.#theme = theme;\n\t\tthis.#depth = depth;\n\t}\n\n\t/** The active theme. */\n\tget theme(): Theme {\n\t\treturn this.#theme;\n\t}\n\n\t/** `text` in `role`'s colour (the default colour after it). */\n\tfg(role: string, text: string): string {\n\t\treturn `\\x1b[${terminalColor(this.#theme, role, this.#depth, \"fg\")}m${text}\\x1b[39m`;\n\t}\n\n\t/** `text` on `role`'s colour as its background. */\n\tbg(role: string, text: string): string {\n\t\treturn `\\x1b[${terminalColor(this.#theme, role, this.#depth, \"bg\")}m${text}\\x1b[49m`;\n\t}\n\n\t/** Calls `listener` when the active theme changes (to redraw) until the returned removal. */\n\tonChange(listener: () => void): () => void {\n\t\tthis.#listeners.add(listener);\n\t\treturn () => this.#listeners.delete(listener);\n\t}\n\n\t/** The active theme is now `theme`. */\n\tset(theme: Theme): void {\n\t\tthis.#theme = theme;\n\t\tfor (const listener of this.#listeners) listener();\n\t}\n}\n"]}
@@ -0,0 +1,194 @@
1
+ import { type Context } from "./context/index.ts";
2
+ import { type Op } from "./delta/index.ts";
3
+ /**
4
+ * Terminal result of one watch, tagged by `kind`. A watch ends only for good; a failure its source recovers from is a
5
+ * `failed` call (`WatchCall`), and the watch stays open.
6
+ *
7
+ * - `stopped`: `stop()` was called.
8
+ * - `aborted`: the context the watch was acquired with was aborted.
9
+ * - `ended`: the source closed (its owner ended or closed).
10
+ * - `listener_error`: the listener threw or rejected with `error`.
11
+ * - `failed`: the source failed for good with `error`.
12
+ */
13
+ export type WatchEnd = {
14
+ readonly kind: "stopped" | "aborted" | "ended";
15
+ } | {
16
+ readonly kind: "listener_error";
17
+ readonly error: Error;
18
+ } | {
19
+ readonly kind: "failed";
20
+ readonly error: unknown;
21
+ };
22
+ /**
23
+ * One call of a JSON watch's listener, and one frame a source hands its watch, tagged by `kind`:
24
+ *
25
+ * - `value`: the newest value, the ops that turn the previous value into it, and whether the document the watch follows
26
+ * was retired since the previous value call. A retirement does not end the watch: `value` is then what the address
27
+ * shows after it (the source decides; a Durable document keeps the last value the watch was given, with no ops), and a
28
+ * document created there later arrives as `[["r", value]]`, possibly in the same call.
29
+ * - `failed`: the source cannot compute its value now, with `error`; the watch stays open, and the next value arrives as
30
+ * `[["r", value]]`. `WatchHandle.value` keeps the last value.
31
+ *
32
+ * Plain data: the frame's context is the listener's second argument, never part of the call.
33
+ */
34
+ export type WatchCall<T> = {
35
+ readonly kind: "value";
36
+ readonly value: T;
37
+ readonly ops: readonly Op[];
38
+ readonly retired: boolean;
39
+ } | {
40
+ readonly kind: "failed";
41
+ readonly error: unknown;
42
+ };
43
+ /** One call of a native watch's listener: the new value, or a failure its source may recover from, as in `WatchCall`. */
44
+ export type NativeWatchCall<T> = {
45
+ readonly kind: "value";
46
+ readonly value: T;
47
+ } | {
48
+ readonly kind: "failed";
49
+ readonly error: unknown;
50
+ };
51
+ /**
52
+ * Serialized observation of an immutable value: one listener call at a time; changes made meanwhile arrive folded into
53
+ * the next call.
54
+ */
55
+ export interface WatchHandle<T> {
56
+ /** Acquisition revision before start; latest delivered immutable revision afterward (a `failed` call keeps it). */
57
+ readonly value: T;
58
+ /** Install the sole asynchronous listener. Never invokes it inline. */
59
+ start(listener: (call: WatchCall<T>, context: Context) => Promise<void>): void;
60
+ /** Idempotently stop future callbacks and return this watch's terminal result. */
61
+ stop(): Promise<WatchEnd>;
62
+ /** Settle when the watch terminates; an already-running callback remains caller-owned. */
63
+ readonly closed: Promise<WatchEnd>;
64
+ }
65
+ /**
66
+ * A value that changes and can be watched: documents, derives, members of references. Values are immutable by
67
+ * convention (JSON for state); each watch starts at the current value and then gets the changes, folded while its
68
+ * listener is busy.
69
+ */
70
+ export interface Watchable<T> {
71
+ /** The current value. */
72
+ readonly value: T;
73
+ /** A watch holding the current value, then its changes; aborting the context ends it. */
74
+ watch(context: Context): Promise<WatchHandle<T>>;
75
+ }
76
+ /**
77
+ * An in-process value that changes and can be watched (it may hold anything, errors and functions included): a change
78
+ * is a new value by identity, delivered without ops.
79
+ */
80
+ export interface NativeWatchable<T> {
81
+ /** The current value. */
82
+ readonly value: T;
83
+ /** A watch holding the current value, then one frame per new value; aborting the context ends it. */
84
+ watch(context: Context): Promise<NativeWatchHandle<T>>;
85
+ }
86
+ /**
87
+ * Serialized observation of an in-process value: as `WatchHandle`, but each new value is its own call, in order, without
88
+ * ops.
89
+ */
90
+ export interface NativeWatchHandle<T> {
91
+ /** Acquisition value before start; latest delivered value afterward (a `failed` call keeps it). */
92
+ readonly value: T;
93
+ /** Install the sole asynchronous listener. Never invokes it inline. */
94
+ start(listener: (call: NativeWatchCall<T>, context: Context) => Promise<void>): void;
95
+ /** Idempotently stop future callbacks and return this watch's terminal result. */
96
+ stop(): Promise<WatchEnd>;
97
+ /** Settle when the watch terminates; an already-running callback remains caller-owned. */
98
+ readonly closed: Promise<WatchEnd>;
99
+ }
100
+ type Listener<C> = (call: C, context: Context) => Promise<void>;
101
+ /** A failure call, as both call types have it. */
102
+ type FailedCall = {
103
+ readonly kind: "failed";
104
+ readonly error: unknown;
105
+ };
106
+ /**
107
+ * The lifecycle both handles share: serialized delivery and termination. A source feeds it and ends it explicitly;
108
+ * termination drops every reference the watch holds into its source, so a stopped watch that is still referenced keeps
109
+ * nothing but its last value alive. Subclasses keep what is pending, each call apart from its frame's context, so the
110
+ * call a listener gets carries nothing but its data.
111
+ */
112
+ declare abstract class WatchLifecycle<T, C extends {
113
+ readonly kind: "value";
114
+ readonly value: T;
115
+ } | FailedCall> {
116
+ #private;
117
+ constructor(value: T, detach: () => void, report: (error: unknown) => void);
118
+ get value(): T;
119
+ get closed(): Promise<WatchEnd>;
120
+ start(listener: Listener<C>): void;
121
+ stop(): Promise<WatchEnd>;
122
+ /** End the watch `aborted` when `signal` aborts; installed once. */
123
+ observeAbort(signal: AbortSignal): void;
124
+ /** End the watch `aborted`: its acquisition context was aborted. */
125
+ abort(): void;
126
+ /**
127
+ * End the watch with `end` at once, dropping what is pending: the source closed (`ended`), or failed for good
128
+ * (`failed`). A failure the source may recover from is a `failed` call instead (`fail()`).
129
+ */
130
+ end(end: WatchEnd): void;
131
+ /**
132
+ * The source sends nothing more after its last frames, such as a retirement: take no more frames, deliver what is
133
+ * pending, then end `ended`, after the running call returns, if one runs. Until then the watch stays attached, so
134
+ * `end()`, `stop()`, an abort, and a throwing listener still end it first; a watch never started keeps what is
135
+ * pending until one of them or `start()`.
136
+ */
137
+ endAfterDelivery(): void;
138
+ /** Whether the watch still takes frames: it has not ended, and its source has not ended. */
139
+ protected get open(): boolean;
140
+ /** The context of the newest frame the next call covers, or undefined when nothing is pending. */
141
+ protected abstract get pendingContext(): Context | undefined;
142
+ /** Take the next call; called only while something is pending. */
143
+ protected abstract next(): C;
144
+ /** Drop everything pending and every reference into the source; called once, on termination. */
145
+ protected abstract release(): void;
146
+ /** Something became pending: deliver it once started, never inline. */
147
+ protected pending(): void;
148
+ }
149
+ /**
150
+ * The watch handle of a JSON source. Frames that arrive before `start()` or while the listener runs wait in one
151
+ * `PendingOps` queue; the next call gets the newest value, the folded ops of every frame since the previous call (or
152
+ * `[["r", newest]]` after the queue overflowed), `retired` when any of them was a retirement, and the newest frame's
153
+ * context. A frame delivered alone is passed on as the source made it. A failure (`fail()`) drops the pending frames and
154
+ * waits as one `failed` call; a value after it replaces it, and the first value call after a failure is `[["r",
155
+ * value]]`. `detach` unsubscribes it from its source on termination; `report` gets a listener's throw, which also ends
156
+ * the watch.
157
+ */
158
+ export declare class Watch<T> extends WatchLifecycle<T, WatchCall<T>> implements WatchHandle<T> {
159
+ #private;
160
+ /**
161
+ * Queue the frame `call`. A value's ops turn the previous value into it, and `retired` says the document the watch
162
+ * follows was retired, which the next value call reports however many frames it folds; a failure is `fail()`.
163
+ */
164
+ advance(call: WatchCall<T>, context: Context): void;
165
+ /**
166
+ * Queue a failure the source may recover from: the pending frames are dropped (`value` keeps the last delivered
167
+ * value), the listener gets `{ kind: "failed", error }`, and the next value arrives as `[["r", value]]`.
168
+ */
169
+ fail(error: unknown, context: Context): void;
170
+ protected get pendingContext(): Context | undefined;
171
+ protected next(): WatchCall<T>;
172
+ protected release(): void;
173
+ }
174
+ /**
175
+ * The watch handle of a native source: every value in order, one call each; past 100 pending values they collapse to
176
+ * one, `replace()` or by default the newest value. A failure (`fail()`) drops the pending values and waits as one
177
+ * `failed` call; a value after it replaces it. `detach` and `report` as for `Watch`.
178
+ */
179
+ export declare class NativeWatch<T> extends WatchLifecycle<T, NativeWatchCall<T>> implements NativeWatchHandle<T> {
180
+ #private;
181
+ constructor(value: T, detach: () => void, report: (error: unknown) => void, replace?: () => T);
182
+ /** Queue `value`, the source's new value; it replaces a pending failure. */
183
+ advance(value: T, context: Context): void;
184
+ /**
185
+ * Queue a failure the source may recover from: the pending values are dropped (`value` keeps the last delivered
186
+ * value), and the listener gets `{ kind: "failed", error }`.
187
+ */
188
+ fail(error: unknown, context: Context): void;
189
+ protected get pendingContext(): Context | undefined;
190
+ protected next(): NativeWatchCall<T>;
191
+ protected release(): void;
192
+ }
193
+ export {};
194
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}