@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":"messages.js","sourceRoot":"","sources":["../../src/surfaces/messages.ts"],"names":[],"mappings":"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","sourcesContent":["// Messages in code (decision \"Messages and languages in the app kit\" (1), (4), refined in the build): a plugin defines\n// its texts once, per namespace, in a shared `messages.ts` every facet that renders imports: `defineMessages(\"notes\", {\n// en: {...}, de: {...} })` returns a typed `t`. The first catalog defines the keys and their argument types; every\n// other catalog must have the same keys with the same signatures (a missing key, an unknown one or a wrong argument is\n// a type error); values are strings or functions (plurals, word order). `t` renders in a language: bound to a host's\n// (`useMessages`, `scope.messages`, `t.in`), or plain, in the render under way's, else in the first catalog.\n// `t.message` builds a message as data (`{ namespace, key, params }`) for state, notices and errors, which each client\n// renders with `t.render` in its own language, checked at runtime (it crossed a link).\n\nimport { arr, bool, nul, num, obj, str, union } from \"../contracts/index.ts\";\nimport { checkName } from \"../contracts/names.ts\";\nimport { currentLanguage, inLanguage, type Language } from \"./language.ts\";\nimport { canonicalLocale, type Translation } from \"./translations.ts\";\n\n/** A message's value: a text, or a function of its arguments returning one. */\nexport type MessageValue = string | ((...args: never[]) => string);\n\n/** A catalog: the messages of one namespace in one language, by key. */\nexport type Catalog = { readonly [key: string]: MessageValue };\n\n/** A catalog's shape as other catalogs must match it: its keys, strings as `string`, functions with their signatures. */\nexport type CatalogShape<M> = { readonly [K in keyof M]: M[K] extends string ? string : M[K] };\n\n/** The arguments of a message: its function's parameters, none for a text. */\nexport type MessageArgs<V> = V extends (...args: infer A) => string ? A : [];\n\n/** A parameter of a message as data: plain JSON (a date as an ISO string or a number), so it crosses links. */\nexport type MessageParam = string | number | boolean | null;\n\n/**\n * A message as data: its namespace, its key and its parameters; typed by `t.message` (`MessageData<\"notes\", \"saved\">`),\n * any namespace and key as `MessageSchema` carries it across a link. (`Message` is the link protocol's.)\n */\nexport type MessageData<N extends string = string, K extends string = string> = {\n\treadonly namespace: N;\n\treadonly key: K;\n\t// Not a readonly array: a message goes into documents, whose drafts are mutable (immutable by convention).\n\treadonly params: MessageParam[];\n};\n\n/** The schema of a message as data, for contract members (`notice: union([MessageSchema, nul()])`). */\nexport const MessageSchema = obj({\n\tnamespace: str(),\n\tkey: str(),\n\tparams: arr(union([str(), num(), bool(), nul()])),\n});\n\n/** The keys of `M` whose arguments are all `MessageParam`s: those `t.message` can build. */\nexport type DataKeys<M> = {\n\t[K in keyof M & string]: MessageArgs<M[K]> extends readonly MessageParam[] ? K : never;\n}[keyof M & string];\n\n/** A message of namespace `N`, or one of any namespace (`string`, from a schema): another literal namespace is refused. */\ntype OfNamespace<G extends MessageData, N extends string> = string extends G[\"namespace\"]\n\t? unknown\n\t: { readonly namespace: N };\n\n/** Renders the messages of namespace `N` with catalog shape `M` in one language. */\nexport type Translator<N extends string, M> = {\n\t/** The message `key` with its arguments. */\n\t<K extends keyof M & string>(key: K, ...args: MessageArgs<M[K]>): string;\n\t/** A message as data; a foreign namespace or an unknown key shows the key (and is reported). */\n\trender<G extends MessageData>(message: G & OfNamespace<G, N>): string;\n};\n\n/** A plugin's messages: `t` itself (in the current language), its namespace, its catalogs as contributions, `message`. */\nexport type Messages<N extends string, M> = Translator<N, M> & {\n\treadonly namespace: N;\n\t/** Its catalogs as `Translations` entries: a facet that renders contributes them. */\n\treadonly translations: readonly Translation[];\n\t/** The message `key` with its arguments as data, for state that clients render. */\n\tmessage<K extends DataKeys<M>>(key: K, ...args: MessageArgs<M[K]>): MessageData<N, K>;\n\t/** `t` in `language` (`undefined`: the first catalog). */\n\tin(language: Language | undefined): Translator<N, M>;\n};\n\n/** The catalog shape of a plugin's messages: what a translation fills (`const fr: MessagesOf<typeof t> = {...}`). */\nexport type MessagesOf<T> = T extends Messages<string, infer M> ? M : never;\n\n/**\n * The messages of `namespace` (a name like a type's, `[a-z0-9@/._~-]`) in `catalogs` by locale; the first catalog\n * defines the keys and signatures, the others match it.\n */\nexport function defineMessages<const N extends string, M extends Catalog>(\n\tnamespace: N,\n\tcatalogs: { readonly [locale: string]: CatalogShape<M> },\n): Messages<N, CatalogShape<M>> {\n\t// Declaration policy: a namespace is a name, a catalog's key a language tag (JavaScript callers reach both).\n\tcheckName(namespace, \"A messages namespace\");\n\tconst own = new Map<string, Catalog>();\n\tfor (const [locale, catalog] of Object.entries(catalogs)) {\n\t\tconst canonical = canonicalLocale(locale);\n\t\tif (canonical === undefined) throw new Error(`${namespace}: \"${locale}\" is no language tag`);\n\t\town.set(canonical, catalog);\n\t}\n\tconst first = own.values().next().value;\n\tif (first === undefined) throw new Error(`${namespace}: defineMessages needs a catalog`);\n\tconst source: Source = { namespace, own, first };\n\tconst translations = [...own].map(([locale, messages]) => ({ namespace, locale, messages }));\n\t// The overloads `Messages` types are these functions', keyed by the catalog's shape.\n\treturn Object.assign(translator<N, CatalogShape<M>>(source, currentLanguage), {\n\t\tnamespace,\n\t\ttranslations,\n\t\tmessage: (key: string, ...params: MessageParam[]) => ({ namespace, key, params }),\n\t\tin: (language: Language | undefined) => translator<N, CatalogShape<M>>(source, () => language),\n\t}) as Messages<N, CatalogShape<M>>;\n}\n\n/** A namespace's own catalogs, by canonical locale, and its first. */\ntype Source = { readonly namespace: string; readonly own: ReadonlyMap<string, Catalog>; readonly first: Catalog };\n\n/** A translator of `source`'s messages in the language `language` reads at each call. */\nfunction translator<N extends string, M>(source: Source, language: () => Language | undefined): Translator<N, M> {\n\tconst t = (key: string, ...args: unknown[]): string => renderKey(source, language(), key, args);\n\tconst render = (message: MessageData): string => renderData(source, language(), message);\n\t// The overloads `Translator` types are this one function's, keyed by the catalog's shape.\n\treturn Object.assign(t, { render }) as unknown as Translator<N, M>;\n}\n\n/**\n * `key` of `source` in `language`: down its chain, at each locale the host's contributed catalog, then the plugin's own;\n * else the first catalog.\n */\nfunction renderKey(source: Source, language: Language | undefined, key: string, args: readonly unknown[]): string {\n\tif (language === undefined) return call(source.first[key]!, args);\n\treturn inLanguage(language, () => {\n\t\tfor (const [index, locale] of language.chain.entries()) {\n\t\t\tconst contributed = language.translations.catalogs.get(source.namespace)?.get(locale);\n\t\t\tif (contributed !== undefined && Object.hasOwn(contributed.value.messages, key)) {\n\t\t\t\ttry {\n\t\t\t\t\treturn found(language, source, key, index, call(contributed.value.messages[key]!, args));\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// A contributed catalog is a plugin's code: reported, and the chain goes on (design §17).\n\t\t\t\t\tconst { plugin } = contributed;\n\t\t\t\t\tlanguage.report({ kind: \"failed\", namespace: source.namespace, locale, key, plugin, error });\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst own = source.own.get(locale);\n\t\t\tif (own !== undefined && own !== contributed?.value.messages && Object.hasOwn(own, key)) {\n\t\t\t\treturn found(language, source, key, index, call(own[key]!, args));\n\t\t\t}\n\t\t}\n\t\treturn found(language, source, key, language.chain.length, call(source.first[key]!, args));\n\t});\n}\n\n/** `text`, found at `index` in `language`'s chain (its length: the first catalog), a fallback reported past the first. */\nfunction found(language: Language, source: Source, key: string, index: number, text: string): string {\n\tif (index > 0) {\n\t\tconst used = language.chain[index];\n\t\tlanguage.report({ kind: \"fallback\", namespace: source.namespace, locale: language.locale, key, used });\n\t}\n\treturn text;\n}\n\n/** A message's text: the text, or the function called with `args` (typed by the catalog's signature). */\nfunction call(value: MessageValue, args: readonly unknown[]): string {\n\treturn typeof value === \"string\" ? value : (value as (...params: readonly unknown[]) => string)(...args);\n}\n\n/**\n * A message as data in `language`. Checked first (wire input: the message crossed a link as state): another namespace,\n * a key the first catalog lacks or params that are no list show the key, reported; so does a message that throws.\n */\nfunction renderData(source: Source, language: Language | undefined, message: MessageData): string {\n\tconst { namespace, key, params } = message;\n\tconst known = namespace === source.namespace && Object.hasOwn(source.first, key) && Array.isArray(params);\n\tif (!known) {\n\t\tlanguage?.report({ kind: \"unknown\", namespace, key, expected: source.namespace });\n\t\treturn key;\n\t}\n\ttry {\n\t\treturn renderKey(source, language, key, params);\n\t} catch (error) {\n\t\tlanguage?.report({ kind: \"failed\", namespace, locale: language.locale, key, plugin: undefined, error });\n\t\treturn key;\n\t}\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import type { Principal } from "../data/index.ts";
2
+ import type { Host } from "../host/index.ts";
3
+ /** One key's value in a host's page state. Its functions are bound: React's `useSyncExternalStore` takes them as is. */
4
+ export type PageState<T> = {
5
+ /** The value now. */
6
+ readonly read: () => T;
7
+ /** Sets the value; a new value (by identity) calls every subscriber. */
8
+ readonly set: (value: T) => void;
9
+ /** Calls `changed` after every set that changed the value, until the returned unsubscribe. */
10
+ readonly subscribe: (changed: () => void) => () => void;
11
+ };
12
+ /** The page state of `host` at `key`: what was kept there, or `initial` when the key is new. */
13
+ export declare function pageState<T, P extends Principal = Principal>(host: Host<P>, key: string, initial: T): PageState<T>;
14
+ //# sourceMappingURL=page-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-state.d.ts","sourceRoot":"","sources":["../../src/surfaces/page-state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,wHAAwH;AACxH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAC1B,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACjC,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CACxD,CAAC;AAKF,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAalH"}
@@ -0,0 +1,43 @@
1
+ // Page state (decision "Tutorial gaps" (1), refining "Slice 11, P4"): values a client host keeps for its UI by key,
2
+ // beside its plugins, so a component of a reloaded plugin (a new function, which React or a terminal scope mounts
3
+ // anew) finds what it had: a half-typed message, a scroll position. Same-host values of any kind, never on the wire;
4
+ // gone with the host (a page reload, a terminal's new base bundle). `usePageState` and `TuiScope.pageState` read it.
5
+ /** Each client host's page state by key, kept as long as the host. */
6
+ const PAGE_STATES = new WeakMap();
7
+ /** The page state of `host` at `key`: what was kept there, or `initial` when the key is new. */
8
+ export function pageState(host, key, initial) {
9
+ let states = PAGE_STATES.get(host);
10
+ if (states === undefined) {
11
+ states = new Map();
12
+ PAGE_STATES.set(host, states);
13
+ }
14
+ let state = states.get(key);
15
+ if (state === undefined) {
16
+ state = keptValue(initial);
17
+ states.set(key, state);
18
+ }
19
+ // A key is the app's: whoever names it names its type too.
20
+ return state;
21
+ }
22
+ /** A value with its subscribers. */
23
+ function keptValue(initial) {
24
+ let value = initial;
25
+ const subscribers = new Set();
26
+ return {
27
+ read: () => value,
28
+ set: (next) => {
29
+ if (next === value)
30
+ return;
31
+ value = next;
32
+ for (const changed of subscribers)
33
+ changed();
34
+ },
35
+ subscribe: (changed) => {
36
+ subscribers.add(changed);
37
+ return () => {
38
+ subscribers.delete(changed);
39
+ };
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=page-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-state.js","sourceRoot":"","sources":["../../src/surfaces/page-state.ts"],"names":[],"mappings":"AAAA,oHAAoH;AACpH,kHAAkH;AAClH,qHAAqH;AACrH,qHAAqH;AAerH,sEAAsE;AACtE,MAAM,WAAW,GAAG,IAAI,OAAO,EAA2C,CAAC;AAE3E,gGAAgG;AAChG,MAAM,UAAU,SAAS,CAAqC,IAAa,EAAE,GAAW,EAAE,OAAU;IACnG,IAAI,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACnB,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,GAAG,SAAS,CAAU,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,2DAA2D;IAC3D,OAAO,KAAqB,CAAC;AAC9B,CAAC;AAED,oCAAoC;AACpC,SAAS,SAAS,CAAI,OAAU;IAC/B,IAAI,KAAK,GAAG,OAAO,CAAC;IACpB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAc,CAAC;IAC1C,OAAO;QACN,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK;QACjB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACb,IAAI,IAAI,KAAK,KAAK;gBAAE,OAAO;YAC3B,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,WAAW;gBAAE,OAAO,EAAE,CAAC;QAC9C,CAAC;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACtB,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,GAAG,EAAE;gBACX,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC","sourcesContent":["// Page state (decision \"Tutorial gaps\" (1), refining \"Slice 11, P4\"): values a client host keeps for its UI by key,\n// beside its plugins, so a component of a reloaded plugin (a new function, which React or a terminal scope mounts\n// anew) finds what it had: a half-typed message, a scroll position. Same-host values of any kind, never on the wire;\n// gone with the host (a page reload, a terminal's new base bundle). `usePageState` and `TuiScope.pageState` read it.\n\nimport type { Principal } from \"../data/index.ts\";\nimport type { Host } from \"../host/index.ts\";\n\n/** One key's value in a host's page state. Its functions are bound: React's `useSyncExternalStore` takes them as is. */\nexport type PageState<T> = {\n\t/** The value now. */\n\treadonly read: () => T;\n\t/** Sets the value; a new value (by identity) calls every subscriber. */\n\treadonly set: (value: T) => void;\n\t/** Calls `changed` after every set that changed the value, until the returned unsubscribe. */\n\treadonly subscribe: (changed: () => void) => () => void;\n};\n\n/** Each client host's page state by key, kept as long as the host. */\nconst PAGE_STATES = new WeakMap<object, Map<string, PageState<unknown>>>();\n\n/** The page state of `host` at `key`: what was kept there, or `initial` when the key is new. */\nexport function pageState<T, P extends Principal = Principal>(host: Host<P>, key: string, initial: T): PageState<T> {\n\tlet states = PAGE_STATES.get(host);\n\tif (states === undefined) {\n\t\tstates = new Map();\n\t\tPAGE_STATES.set(host, states);\n\t}\n\tlet state = states.get(key);\n\tif (state === undefined) {\n\t\tstate = keptValue<unknown>(initial);\n\t\tstates.set(key, state);\n\t}\n\t// A key is the app's: whoever names it names its type too.\n\treturn state as PageState<T>;\n}\n\n/** A value with its subscribers. */\nfunction keptValue<T>(initial: T): PageState<T> {\n\tlet value = initial;\n\tconst subscribers = new Set<() => void>();\n\treturn {\n\t\tread: () => value,\n\t\tset: (next) => {\n\t\t\tif (next === value) return;\n\t\t\tvalue = next;\n\t\t\tfor (const changed of subscribers) changed();\n\t\t},\n\t\tsubscribe: (changed) => {\n\t\t\tsubscribers.add(changed);\n\t\t\treturn () => {\n\t\t\t\tsubscribers.delete(changed);\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import { type Schema } from "../contracts/index.ts";
2
+ import type { Principal } from "../data/index.ts";
3
+ import { type Facet } from "../host/index.ts";
4
+ import type { JsonValue } from "../json.ts";
5
+ /** A preference's contract as its facet serves it: the caller's `pick` (JSON) and `choose`, remote on the server. */
6
+ export type PreferenceContract = ReturnType<typeof preferenceContract<string, JsonValue>>;
7
+ /** A preference's remote contract `name`: the caller's pick on the server (`pick`), and `choose` to change it. */
8
+ export declare function preferenceContract<const N extends string, T>(name: N, pick: Schema<T>): import("../contracts/contract.ts").Contract<{
9
+ kind: "remote";
10
+ name: N;
11
+ params: {};
12
+ history: [{
13
+ version: "1";
14
+ variants: {
15
+ readonly main: {
16
+ state: {
17
+ readonly pick: Schema<T>;
18
+ };
19
+ methods: {
20
+ readonly choose: import("../contracts/schema.ts").Method<Schema<T>, import("../contracts/schema.ts").NullSchema>;
21
+ };
22
+ };
23
+ };
24
+ changes: never;
25
+ }];
26
+ }>;
27
+ /**
28
+ * The kit's server facet of the preference `Choice`: every principal's pick in one persisted document of the store
29
+ * `store` by principal key, and each principal's `Choice` (`none` before a choice).
30
+ */
31
+ export declare function preferenceFacet<P extends Principal>(Choice: PreferenceContract, store: string, pick: Schema<JsonValue>, none: JsonValue): Facet<P>;
32
+ //# sourceMappingURL=preference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preference.d.ts","sourceRoot":"","sources":["../../src/surfaces/preference.ts"],"names":[],"mappings":"AAOA,OAAO,EAA6C,KAAK,MAAM,EAAO,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qHAAqH;AACrH,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAE1F,kHAAkH;AAClH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;GAOrF;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EAClD,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EACvB,IAAI,EAAE,SAAS,GACb,KAAK,CAAC,CAAC,CAAC,CA4CV"}
@@ -0,0 +1,72 @@
1
+ // A user's preference kept by the server (slice 11 §4b; decision "Messages and languages in the app kit" (3)): one pick
2
+ // per principal, kept by the kit's server and held by every page and terminal of that principal, so choosing restyles
3
+ // or re-renders them all at once. The theme choice and the locale choice are two of them. Bounded (fix round 1: Opus
4
+ // M4, Fable L7): the store keeps the picks of the `MAX_PICKS` principals who chose last (a public app's guests choose
5
+ // too).
6
+ import { BACKGROUND_CONTEXT } from "../context/index.js";
7
+ import { hostKind, local, map, method, obj, remote, str } from "../contracts/index.js";
8
+ import { principalKey } from "../data/principal.js";
9
+ import { defineState } from "../documents/index.js";
10
+ import { defineFacet } from "../host/index.js";
11
+ /** A preference's remote contract `name`: the caller's pick on the server (`pick`), and `choose` to change it. */
12
+ export function preferenceContract(name, pick) {
13
+ return remote(name, {
14
+ version: 1,
15
+ params: {},
16
+ hostAddress: () => hostKind("server")(),
17
+ variants: { main: { state: { pick }, methods: { choose: method(pick) } } },
18
+ });
19
+ }
20
+ /** How many principals' picks a store keeps: past it the earliest chooser's goes (they get the preference's none). */
21
+ const MAX_PICKS = 10_000;
22
+ /**
23
+ * The kit's server facet of the preference `Choice`: every principal's pick in one persisted document of the store
24
+ * `store` by principal key, and each principal's `Choice` (`none` before a choice).
25
+ */
26
+ export function preferenceFacet(Choice, store, pick, none) {
27
+ const Picks = defineState(store, {
28
+ schema: obj({ picks: map(pick) }),
29
+ version: 1,
30
+ initial: () => ({ picks: {} }),
31
+ persist: true,
32
+ checkpointWhen: (_value, _ops, { deltasSinceBase }) => deltasSinceBase >= 50,
33
+ });
34
+ // A persisted state needs a local type with empty params.
35
+ const PickStore = local(store, {
36
+ version: 1,
37
+ params: {},
38
+ members: { picks: map(pick), set: method(obj({ key: str(), pick })) },
39
+ });
40
+ return defineFacet((host) => {
41
+ host.serve(PickStore, (_params, self) => {
42
+ const picks = self.state(Picks);
43
+ return {
44
+ picks: self.derive([picks], ([value]) => value.picks),
45
+ set: async ({ key, pick: next }, ctx) => {
46
+ await picks.change((draft) => {
47
+ // Re-added last: the keys keep the order of choosing, the first the earliest.
48
+ delete draft.picks[key];
49
+ draft.picks[key] = next;
50
+ const keys = Object.keys(draft.picks);
51
+ for (const old of keys.slice(0, Math.max(0, keys.length - MAX_PICKS)))
52
+ delete draft.picks[old];
53
+ }, ctx);
54
+ return null;
55
+ },
56
+ };
57
+ });
58
+ host.serve(Choice, (_params, principal, self) => {
59
+ const picks = self.get(PickStore, {});
60
+ const key = principalKey(principal, BACKGROUND_CONTEXT);
61
+ return {
62
+ variant: "main",
63
+ members: {
64
+ // A key that is a principal's canonical JSON: `Object.hasOwn`, no inherited member is a pick.
65
+ pick: self.derive([picks.picks], ([all]) => (Object.hasOwn(all, key) ? all[key] : none)),
66
+ choose: (next, ctx) => picks.set({ key, pick: next }, ctx),
67
+ },
68
+ };
69
+ });
70
+ });
71
+ }
72
+ //# sourceMappingURL=preference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preference.js","sourceRoot":"","sources":["../../src/surfaces/preference.ts"],"names":[],"mappings":"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","sourcesContent":["// A user's preference kept by the server (slice 11 §4b; decision \"Messages and languages in the app kit\" (3)): one pick\n// per principal, kept by the kit's server and held by every page and terminal of that principal, so choosing restyles\n// or re-renders them all at once. The theme choice and the locale choice are two of them. Bounded (fix round 1: Opus\n// M4, Fable L7): the store keeps the picks of the `MAX_PICKS` principals who chose last (a public app's guests choose\n// too).\n\nimport { BACKGROUND_CONTEXT } from \"../context/index.ts\";\nimport { hostKind, local, map, method, obj, remote, type Schema, str } from \"../contracts/index.ts\";\nimport type { Principal } from \"../data/index.ts\";\nimport { principalKey } from \"../data/principal.ts\";\nimport { defineState } from \"../documents/index.ts\";\nimport { defineFacet, type Facet } from \"../host/index.ts\";\nimport type { JsonValue } from \"../json.ts\";\n\n/** A preference's contract as its facet serves it: the caller's `pick` (JSON) and `choose`, remote on the server. */\nexport type PreferenceContract = ReturnType<typeof preferenceContract<string, JsonValue>>;\n\n/** A preference's remote contract `name`: the caller's pick on the server (`pick`), and `choose` to change it. */\nexport function preferenceContract<const N extends string, T>(name: N, pick: Schema<T>) {\n\treturn remote(name, {\n\t\tversion: 1,\n\t\tparams: {},\n\t\thostAddress: () => hostKind(\"server\")(),\n\t\tvariants: { main: { state: { pick }, methods: { choose: method(pick) } } },\n\t});\n}\n\n/** How many principals' picks a store keeps: past it the earliest chooser's goes (they get the preference's none). */\nconst MAX_PICKS = 10_000;\n\n/**\n * The kit's server facet of the preference `Choice`: every principal's pick in one persisted document of the store\n * `store` by principal key, and each principal's `Choice` (`none` before a choice).\n */\nexport function preferenceFacet<P extends Principal>(\n\tChoice: PreferenceContract,\n\tstore: string,\n\tpick: Schema<JsonValue>,\n\tnone: JsonValue,\n): Facet<P> {\n\tconst Picks = defineState(store, {\n\t\tschema: obj({ picks: map(pick) }),\n\t\tversion: 1,\n\t\tinitial: () => ({ picks: {} }),\n\t\tpersist: true,\n\t\tcheckpointWhen: (_value, _ops, { deltasSinceBase }) => deltasSinceBase >= 50,\n\t});\n\t// A persisted state needs a local type with empty params.\n\tconst PickStore = local(store, {\n\t\tversion: 1,\n\t\tparams: {},\n\t\tmembers: { picks: map(pick), set: method(obj({ key: str(), pick })) },\n\t});\n\treturn defineFacet<P>((host) => {\n\t\thost.serve(PickStore, (_params, self) => {\n\t\t\tconst picks = self.state(Picks);\n\t\t\treturn {\n\t\t\t\tpicks: self.derive([picks], ([value]) => value.picks),\n\t\t\t\tset: async ({ key, pick: next }, ctx) => {\n\t\t\t\t\tawait picks.change((draft) => {\n\t\t\t\t\t\t// Re-added last: the keys keep the order of choosing, the first the earliest.\n\t\t\t\t\t\tdelete draft.picks[key];\n\t\t\t\t\t\tdraft.picks[key] = next;\n\t\t\t\t\t\tconst keys = Object.keys(draft.picks);\n\t\t\t\t\t\tfor (const old of keys.slice(0, Math.max(0, keys.length - MAX_PICKS))) delete draft.picks[old];\n\t\t\t\t\t}, ctx);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t\thost.serve(Choice, (_params, principal, self) => {\n\t\t\tconst picks = self.get(PickStore, {});\n\t\t\tconst key = principalKey(principal, BACKGROUND_CONTEXT);\n\t\t\treturn {\n\t\t\t\tvariant: \"main\",\n\t\t\t\tmembers: {\n\t\t\t\t\t// A key that is a principal's canonical JSON: `Object.hasOwn`, no inherited member is a pick.\n\t\t\t\t\tpick: self.derive([picks.picks], ([all]) => (Object.hasOwn(all, key) ? all[key]! : none)),\n\t\t\t\t\tchoose: (next, ctx) => picks.set({ key, pick: next }, ctx),\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t});\n}\n"]}
@@ -0,0 +1,33 @@
1
+ import type { Principal } from "../data/index.ts";
2
+ import type { Facet } from "../host/index.ts";
3
+ /** The global function a registered script calls: defined by the client before any plugin script runs. */
4
+ export declare const REGISTER = "chordFacet";
5
+ /** A built facet's function, as its script registers it. */
6
+ export type FacetFunction = (require: (specifier: string) => unknown, module: {
7
+ exports: unknown;
8
+ }, exports: unknown) => void;
9
+ /** One registered script: its plugin, its digest and its function. */
10
+ export type RegisteredScript = {
11
+ readonly plugin: string;
12
+ readonly digest: string;
13
+ readonly run: FacetFunction;
14
+ };
15
+ /** The modules a client's plugin scripts import, by specifier (the app's API modules for the kind, React, ...). */
16
+ export type ClientModules = Readonly<Record<string, unknown>>;
17
+ /**
18
+ * The text of a registered script for `plugin`'s facet built as `source` (one function expression, the build's
19
+ * wrapped CommonJS script) with `digest`. Its source map comment stays on its own line, before the closing call.
20
+ */
21
+ export declare function registeredSource(plugin: string, digest: string, source: string): string;
22
+ /**
23
+ * Runs `script`'s function and returns its facet (its default export). Its `require` answers `modules` only (the build
24
+ * kept nothing else external for a client kind); anything else throws naming the plugin. Throws what the script throws,
25
+ * and when its default export is no facet.
26
+ */
27
+ export declare function evaluateRegistered<P extends Principal = Principal>(script: RegisteredScript, modules: ClientModules): Facet<P>;
28
+ /**
29
+ * A host package as a CommonJS script imports it: an ESM namespace wrapped once with `__esModule` (so esbuild's interop
30
+ * reads its `default` for a default import, its names for named ones), any other value as it is.
31
+ */
32
+ export declare function interop(value: unknown): unknown;
33
+ //# sourceMappingURL=registered.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registered.d.ts","sourceRoot":"","sources":["../../src/surfaces/registered.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,0GAA0G;AAC1G,eAAO,MAAM,QAAQ,eAAe,CAAC;AAErC,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,CAC3B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EACvC,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAC5B,OAAO,EAAE,OAAO,KACZ,IAAI,CAAC;AAEV,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;CAAE,CAAC;AAEjH,mHAAmH;AACnH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACjE,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,aAAa,GACpB,KAAK,CAAC,CAAC,CAAC,CAiBV;AAKD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU/C"}
@@ -0,0 +1,51 @@
1
+ // Plugin scripts that register themselves (slice 11 §1, §2, decision "Slice 11's points" (P2)): a facet's built script
2
+ // served as `chordFacet("<plugin>", "<digest>", function (require, module, exports) { … })`, loaded with `<script src>`
3
+ // (a page under a `'self'` CSP: no `eval`, no `new Function`) or run by the terminal's runtime; the client evaluates the
4
+ // registered function with a `require` that answers only its host packages.
5
+ /** The global function a registered script calls: defined by the client before any plugin script runs. */
6
+ export const REGISTER = "chordFacet";
7
+ /**
8
+ * The text of a registered script for `plugin`'s facet built as `source` (one function expression, the build's
9
+ * wrapped CommonJS script) with `digest`. Its source map comment stays on its own line, before the closing call.
10
+ */
11
+ export function registeredSource(plugin, digest, source) {
12
+ return `${REGISTER}(${JSON.stringify(plugin)},${JSON.stringify(digest)},${source}\n);\n`;
13
+ }
14
+ /**
15
+ * Runs `script`'s function and returns its facet (its default export). Its `require` answers `modules` only (the build
16
+ * kept nothing else external for a client kind); anything else throws naming the plugin. Throws what the script throws,
17
+ * and when its default export is no facet.
18
+ */
19
+ export function evaluateRegistered(script, modules) {
20
+ const where = `plugin "${script.plugin}"`;
21
+ const module = { exports: {} };
22
+ script.run((specifier) => {
23
+ if (Object.hasOwn(modules, specifier))
24
+ return interop(modules[specifier]);
25
+ throw new Error(`${where}: "${specifier}" is not one of this client's host packages`);
26
+ }, module, module.exports);
27
+ // A trust boundary: plugin code; its default export is checked to be a facet.
28
+ const facet = module.exports?.default;
29
+ if (typeof facet !== "object" || facet === null || typeof facet.setup !== "function") {
30
+ throw new Error(`${where}: its default export is not a facet (defineFacet)`);
31
+ }
32
+ return facet;
33
+ }
34
+ /** ESM namespaces wrapped for a CommonJS script, by namespace: one wrapper per namespace, held as long as it is. */
35
+ const wrapped = new WeakMap();
36
+ /**
37
+ * A host package as a CommonJS script imports it: an ESM namespace wrapped once with `__esModule` (so esbuild's interop
38
+ * reads its `default` for a default import, its names for named ones), any other value as it is.
39
+ */
40
+ export function interop(value) {
41
+ if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Module]") {
42
+ return value;
43
+ }
44
+ let made = wrapped.get(value);
45
+ if (made === undefined) {
46
+ made = { ...value, __esModule: true };
47
+ wrapped.set(value, made);
48
+ }
49
+ return made;
50
+ }
51
+ //# sourceMappingURL=registered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registered.js","sourceRoot":"","sources":["../../src/surfaces/registered.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,wHAAwH;AACxH,yHAAyH;AACzH,4EAA4E;AAK5E,0GAA0G;AAC1G,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC;AAerC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc;IAC9E,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,QAAQ,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CACjC,MAAwB,EACxB,OAAsB;IAEtB,MAAM,KAAK,GAAG,WAAW,MAAM,CAAC,MAAM,GAAG,CAAC;IAC1C,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,EAAa,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,CACT,CAAC,SAAS,EAAE,EAAE;QACb,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,SAAS,6CAA6C,CAAC,CAAC;IACvF,CAAC,EACD,MAAM,EACN,MAAM,CAAC,OAAO,CACd,CAAC;IACF,8EAA8E;IAC9E,MAAM,KAAK,GAAI,MAAM,CAAC,OAAiD,EAAE,OAAO,CAAC;IACjF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAQ,KAA6B,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC/G,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mDAAmD,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,KAAiB,CAAC;AAC1B,CAAC;AAED,oHAAoH;AACpH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAAE,CAAC;QAChH,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC","sourcesContent":["// Plugin scripts that register themselves (slice 11 §1, §2, decision \"Slice 11's points\" (P2)): a facet's built script\n// served as `chordFacet(\"<plugin>\", \"<digest>\", function (require, module, exports) { … })`, loaded with `<script src>`\n// (a page under a `'self'` CSP: no `eval`, no `new Function`) or run by the terminal's runtime; the client evaluates the\n// registered function with a `require` that answers only its host packages.\n\nimport type { Principal } from \"../data/index.ts\";\nimport type { Facet } from \"../host/index.ts\";\n\n/** The global function a registered script calls: defined by the client before any plugin script runs. */\nexport const REGISTER = \"chordFacet\";\n\n/** A built facet's function, as its script registers it. */\nexport type FacetFunction = (\n\trequire: (specifier: string) => unknown,\n\tmodule: { exports: unknown },\n\texports: unknown,\n) => void;\n\n/** One registered script: its plugin, its digest and its function. */\nexport type RegisteredScript = { readonly plugin: string; readonly digest: string; readonly run: FacetFunction };\n\n/** The modules a client's plugin scripts import, by specifier (the app's API modules for the kind, React, ...). */\nexport type ClientModules = Readonly<Record<string, unknown>>;\n\n/**\n * The text of a registered script for `plugin`'s facet built as `source` (one function expression, the build's\n * wrapped CommonJS script) with `digest`. Its source map comment stays on its own line, before the closing call.\n */\nexport function registeredSource(plugin: string, digest: string, source: string): string {\n\treturn `${REGISTER}(${JSON.stringify(plugin)},${JSON.stringify(digest)},${source}\\n);\\n`;\n}\n\n/**\n * Runs `script`'s function and returns its facet (its default export). Its `require` answers `modules` only (the build\n * kept nothing else external for a client kind); anything else throws naming the plugin. Throws what the script throws,\n * and when its default export is no facet.\n */\nexport function evaluateRegistered<P extends Principal = Principal>(\n\tscript: RegisteredScript,\n\tmodules: ClientModules,\n): Facet<P> {\n\tconst where = `plugin \"${script.plugin}\"`;\n\tconst module = { exports: {} as unknown };\n\tscript.run(\n\t\t(specifier) => {\n\t\t\tif (Object.hasOwn(modules, specifier)) return interop(modules[specifier]);\n\t\t\tthrow new Error(`${where}: \"${specifier}\" is not one of this client's host packages`);\n\t\t},\n\t\tmodule,\n\t\tmodule.exports,\n\t);\n\t// A trust boundary: plugin code; its default export is checked to be a facet.\n\tconst facet = (module.exports as { readonly default?: unknown } | null)?.default;\n\tif (typeof facet !== \"object\" || facet === null || typeof (facet as { setup?: unknown }).setup !== \"function\") {\n\t\tthrow new Error(`${where}: its default export is not a facet (defineFacet)`);\n\t}\n\treturn facet as Facet<P>;\n}\n\n/** ESM namespaces wrapped for a CommonJS script, by namespace: one wrapper per namespace, held as long as it is. */\nconst wrapped = new WeakMap<object, object>();\n\n/**\n * A host package as a CommonJS script imports it: an ESM namespace wrapped once with `__esModule` (so esbuild's interop\n * reads its `default` for a default import, its names for named ones), any other value as it is.\n */\nexport function interop(value: unknown): unknown {\n\tif (typeof value !== \"object\" || value === null || Object.prototype.toString.call(value) !== \"[object Module]\") {\n\t\treturn value;\n\t}\n\tlet made = wrapped.get(value);\n\tif (made === undefined) {\n\t\tmade = { ...value, __esModule: true };\n\t\twrapped.set(value, made);\n\t}\n\treturn made;\n}\n"]}
@@ -0,0 +1,84 @@
1
+ import { type Static } from "../contracts/index.ts";
2
+ /** One plugin's script of the set: its name, its script's digest and URL, its stylesheet's URL when it has one. */
3
+ declare const ScriptEntry: import("../contracts/index.ts").Schema<{
4
+ name: string;
5
+ digest: string;
6
+ url: string;
7
+ css?: string | undefined;
8
+ }>;
9
+ /** One plugin's script of a set (see `ScriptEntry`). */
10
+ export type ScriptEntry = Static<typeof ScriptEntry>;
11
+ /**
12
+ * A client kind's current scripts: `base` (the base bundle's hash: a change reloads the client), `combined` (the URL of
13
+ * one file holding every plugin's script, what a fresh client loads), `plugins` (each one's script, in name order).
14
+ */
15
+ export declare const ScriptSet: import("../contracts/index.ts").Schema<{
16
+ base: string;
17
+ combined: string;
18
+ plugins: {
19
+ name: string;
20
+ digest: string;
21
+ url: string;
22
+ css?: string | undefined;
23
+ }[];
24
+ }>;
25
+ /** A client kind's current scripts (see `ScriptSet`). */
26
+ export type ScriptSet = Static<typeof ScriptSet>;
27
+ /** The current web scripts (`ScriptSet`), served by the server's web surface to any principal that may load the app. */
28
+ export declare const WebScripts: import("../contracts/contract.ts").Contract<{
29
+ kind: "remote";
30
+ name: "chord.web.scripts";
31
+ params: {};
32
+ history: [{
33
+ version: "1";
34
+ variants: {
35
+ readonly main: {
36
+ state: {
37
+ readonly set: import("../contracts/index.ts").Schema<{
38
+ base: string;
39
+ combined: string;
40
+ plugins: {
41
+ name: string;
42
+ digest: string;
43
+ url: string;
44
+ css?: string | undefined;
45
+ }[];
46
+ }>;
47
+ };
48
+ methods: Record<never, never>;
49
+ };
50
+ };
51
+ changes: never;
52
+ }];
53
+ }>;
54
+ /** The current terminal scripts (`ScriptSet`), served by the server's terminal surface as `WebScripts` is. */
55
+ export declare const TuiScripts: import("../contracts/contract.ts").Contract<{
56
+ kind: "remote";
57
+ name: "chord.tui.scripts";
58
+ params: {};
59
+ history: [{
60
+ version: "1";
61
+ variants: {
62
+ readonly main: {
63
+ state: {
64
+ readonly set: import("../contracts/index.ts").Schema<{
65
+ base: string;
66
+ combined: string;
67
+ plugins: {
68
+ name: string;
69
+ digest: string;
70
+ url: string;
71
+ css?: string | undefined;
72
+ }[];
73
+ }>;
74
+ };
75
+ methods: Record<never, never>;
76
+ };
77
+ };
78
+ changes: never;
79
+ }];
80
+ }>;
81
+ /** The contract of a client kind's scripts, as clients hold it (`WebScripts`, `TuiScripts`). */
82
+ export type ScriptsContract = typeof WebScripts | typeof TuiScripts;
83
+ export {};
84
+ //# sourceMappingURL=scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../src/surfaces/scripts.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmC,KAAK,MAAM,EAAO,MAAM,uBAAuB,CAAC;AAK1F,mHAAmH;AACnH,QAAA,MAAM,WAAW;;;;;EAAmE,CAAC;AAErF,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;EAAmE,CAAC;AAE1F,yDAAyD;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC;AAEjD,wHAAwH;AACxH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;EAAuC,CAAC;AAE/D,8GAA8G;AAC9G,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;EAAuC,CAAC;AAY/D,gGAAgG;AAChG,MAAM,MAAM,eAAe,GAAG,OAAO,UAAU,GAAG,OAAO,UAAU,CAAC"}
@@ -0,0 +1,28 @@
1
+ // The current plugin scripts of a client kind (slice 11 §1, decision "Slice 11, P5"): what the server's surface serves
2
+ // as a remote object every page and terminal holds. Its state is the set: the base bundle's hash, the combined file of
3
+ // every plugin script, and each plugin's script (and stylesheet); a rollout shipping the kind publishes a new set, and
4
+ // each client fetches what changed.
5
+ import { arr, hostKind, obj, opt, remote, str } from "../contracts/index.js";
6
+ /** The server's host kind as the surfaces place their objects: the app kit's server is `Server()`. */
7
+ const Server = hostKind("server");
8
+ /** One plugin's script of the set: its name, its script's digest and URL, its stylesheet's URL when it has one. */
9
+ const ScriptEntry = obj({ name: str(), digest: str(), url: str(), css: opt(str()) });
10
+ /**
11
+ * A client kind's current scripts: `base` (the base bundle's hash: a change reloads the client), `combined` (the URL of
12
+ * one file holding every plugin's script, what a fresh client loads), `plugins` (each one's script, in name order).
13
+ */
14
+ export const ScriptSet = obj({ base: str(), combined: str(), plugins: arr(ScriptEntry) });
15
+ /** The current web scripts (`ScriptSet`), served by the server's web surface to any principal that may load the app. */
16
+ export const WebScripts = scriptsContract("chord.web.scripts");
17
+ /** The current terminal scripts (`ScriptSet`), served by the server's terminal surface as `WebScripts` is. */
18
+ export const TuiScripts = scriptsContract("chord.tui.scripts");
19
+ /** The contract of a client kind's current scripts, named `name`: a remote object on the server, its state the set. */
20
+ function scriptsContract(name) {
21
+ return remote(name, {
22
+ version: 1,
23
+ params: {},
24
+ hostAddress: () => Server(),
25
+ variants: { main: { state: { set: ScriptSet } } },
26
+ });
27
+ }
28
+ //# sourceMappingURL=scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/surfaces/scripts.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,uHAAuH;AACvH,uHAAuH;AACvH,oCAAoC;AAEpC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAe,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE1F,sGAAsG;AACtG,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAElC,mHAAmH;AACnH,MAAM,WAAW,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAKrF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAK1F,wHAAwH;AACxH,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAE/D,8GAA8G;AAC9G,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAE/D,uHAAuH;AACvH,SAAS,eAAe,CAAyB,IAAO;IACvD,OAAO,MAAM,CAAC,IAAI,EAAE;QACnB,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;QAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;KACjD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// The current plugin scripts of a client kind (slice 11 §1, decision \"Slice 11, P5\"): what the server's surface serves\n// as a remote object every page and terminal holds. Its state is the set: the base bundle's hash, the combined file of\n// every plugin script, and each plugin's script (and stylesheet); a rollout shipping the kind publishes a new set, and\n// each client fetches what changed.\n\nimport { arr, hostKind, obj, opt, remote, type Static, str } from \"../contracts/index.ts\";\n\n/** The server's host kind as the surfaces place their objects: the app kit's server is `Server()`. */\nconst Server = hostKind(\"server\");\n\n/** One plugin's script of the set: its name, its script's digest and URL, its stylesheet's URL when it has one. */\nconst ScriptEntry = obj({ name: str(), digest: str(), url: str(), css: opt(str()) });\n\n/** One plugin's script of a set (see `ScriptEntry`). */\nexport type ScriptEntry = Static<typeof ScriptEntry>;\n\n/**\n * A client kind's current scripts: `base` (the base bundle's hash: a change reloads the client), `combined` (the URL of\n * one file holding every plugin's script, what a fresh client loads), `plugins` (each one's script, in name order).\n */\nexport const ScriptSet = obj({ base: str(), combined: str(), plugins: arr(ScriptEntry) });\n\n/** A client kind's current scripts (see `ScriptSet`). */\nexport type ScriptSet = Static<typeof ScriptSet>;\n\n/** The current web scripts (`ScriptSet`), served by the server's web surface to any principal that may load the app. */\nexport const WebScripts = scriptsContract(\"chord.web.scripts\");\n\n/** The current terminal scripts (`ScriptSet`), served by the server's terminal surface as `WebScripts` is. */\nexport const TuiScripts = scriptsContract(\"chord.tui.scripts\");\n\n/** The contract of a client kind's current scripts, named `name`: a remote object on the server, its state the set. */\nfunction scriptsContract<const N extends string>(name: N) {\n\treturn remote(name, {\n\t\tversion: 1,\n\t\tparams: {},\n\t\thostAddress: () => Server(),\n\t\tvariants: { main: { state: { set: ScriptSet } } },\n\t});\n}\n\n/** The contract of a client kind's scripts, as clients hold it (`WebScripts`, `TuiScripts`). */\nexport type ScriptsContract = typeof WebScripts | typeof TuiScripts;\n"]}
@@ -0,0 +1,31 @@
1
+ import type { Principal } from "../data/index.ts";
2
+ import type { Facet } from "../host/index.ts";
3
+ /** The caller's theme choice, on the server: its pick, and `choose` to change it. */
4
+ export declare const ThemeChoice: import("../contracts/contract.ts").Contract<{
5
+ kind: "remote";
6
+ name: "chord.themes.choice";
7
+ params: {};
8
+ history: [{
9
+ version: "1";
10
+ variants: {
11
+ readonly main: {
12
+ state: {
13
+ readonly pick: import("../contracts/index.ts").Schema<{
14
+ dark: string | null;
15
+ light: string | null;
16
+ }>;
17
+ };
18
+ methods: {
19
+ readonly choose: import("../contracts/schema.ts").Method<import("../contracts/index.ts").Schema<{
20
+ dark: string | null;
21
+ light: string | null;
22
+ }>, import("../contracts/schema.ts").NullSchema>;
23
+ };
24
+ };
25
+ };
26
+ changes: never;
27
+ }];
28
+ }>;
29
+ /** The kit's server facet for theme choices: the store of picks and each principal's `ThemeChoice`. */
30
+ export declare function themeChoiceFacet<P extends Principal>(): Facet<P>;
31
+ //# sourceMappingURL=theme-choice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-choice.d.ts","sourceRoot":"","sources":["../../src/surfaces/theme-choice.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAU9C,qFAAqF;AACrF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAK3E,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAEhE"}
@@ -0,0 +1,18 @@
1
+ // The user's theme choice (slice 11 §4b): one dark and one light theme id per principal, a preference the server keeps
2
+ // (the kit serves it) and every page and terminal of that principal holds, so choosing a theme restyles them all at
3
+ // once. An id is at most 128 characters (fix round 1: Opus M4, Fable L7).
4
+ import { nul, obj, str, union } from "../contracts/index.js";
5
+ import { preferenceContract, preferenceFacet } from "./preference.js";
6
+ /** A theme id (at most 128 characters), or `null` for the first contributed theme of its mode. */
7
+ const ThemeId = union([str({ max: 128 }), nul()]);
8
+ /** A pick: a theme id per mode. */
9
+ const Pick = obj({ dark: ThemeId, light: ThemeId });
10
+ /** The caller's theme choice, on the server: its pick, and `choose` to change it. */
11
+ export const ThemeChoice = preferenceContract("chord.themes.choice", Pick);
12
+ /** No choice yet: the first contributed theme of each mode. */
13
+ const NO_PICK = { dark: null, light: null };
14
+ /** The kit's server facet for theme choices: the store of picks and each principal's `ThemeChoice`. */
15
+ export function themeChoiceFacet() {
16
+ return preferenceFacet(ThemeChoice, "chord.themes.picks", Pick, NO_PICK);
17
+ }
18
+ //# sourceMappingURL=theme-choice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-choice.js","sourceRoot":"","sources":["../../src/surfaces/theme-choice.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,oHAAoH;AACpH,0EAA0E;AAE1E,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGtE,kGAAkG;AAClG,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAElD,mCAAmC;AACnC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpD,qFAAqF;AACrF,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AAE3E,+DAA+D;AAC/D,MAAM,OAAO,GAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAEvD,uGAAuG;AACvG,MAAM,UAAU,gBAAgB;IAC/B,OAAO,eAAe,CAAI,WAAW,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["// The user's theme choice (slice 11 §4b): one dark and one light theme id per principal, a preference the server keeps\n// (the kit serves it) and every page and terminal of that principal holds, so choosing a theme restyles them all at\n// once. An id is at most 128 characters (fix round 1: Opus M4, Fable L7).\n\nimport { nul, obj, str, union } from \"../contracts/index.ts\";\nimport type { Principal } from \"../data/index.ts\";\nimport type { Facet } from \"../host/index.ts\";\nimport { preferenceContract, preferenceFacet } from \"./preference.ts\";\nimport type { ThemePick } from \"./themes.ts\";\n\n/** A theme id (at most 128 characters), or `null` for the first contributed theme of its mode. */\nconst ThemeId = union([str({ max: 128 }), nul()]);\n\n/** A pick: a theme id per mode. */\nconst Pick = obj({ dark: ThemeId, light: ThemeId });\n\n/** The caller's theme choice, on the server: its pick, and `choose` to change it. */\nexport const ThemeChoice = preferenceContract(\"chord.themes.choice\", Pick);\n\n/** No choice yet: the first contributed theme of each mode. */\nconst NO_PICK: ThemePick = { dark: null, light: null };\n\n/** The kit's server facet for theme choices: the store of picks and each principal's `ThemeChoice`. */\nexport function themeChoiceFacet<P extends Principal>(): Facet<P> {\n\treturn preferenceFacet<P>(ThemeChoice, \"chord.themes.picks\", Pick, NO_PICK);\n}\n"]}
@@ -0,0 +1,43 @@
1
+ import type { Principal } from "../data/index.ts";
2
+ import { type Facet } from "../host/index.ts";
3
+ import { type Registry } from "../registries/index.ts";
4
+ /** The roles every theme names: the kit's base set. Apps add their own roles; themes fill at least these. */
5
+ export declare const BASE_ROLES: readonly ["accent", "bg", "fg", "muted", "error", "warning", "success"];
6
+ /** A base role. */
7
+ export type BaseRole = (typeof BASE_ROLES)[number];
8
+ /** A theme: an id, a name, its mode, a colour per role (CSS colours; `#rrggbb` for terminals), web and terminal extras. */
9
+ export type Theme = {
10
+ readonly id: string;
11
+ readonly name: string;
12
+ readonly mode: "dark" | "light";
13
+ readonly colors: Readonly<Record<BaseRole, string>> & Readonly<Record<string, string>>;
14
+ /** More CSS variables on `:root`, by name without `--` (`radius`, `font`); URLs of the plugin's assets allowed. */
15
+ readonly web?: Readonly<Record<string, string>>;
16
+ /** Terminal colours by role, before `colors`: `#rrggbb` or an xterm 256-colour index (`"208"`). */
17
+ readonly tui?: Readonly<Record<string, string>>;
18
+ };
19
+ /** The themes plugins contribute, in plugin-name order; served on every client and on the server by the kit. */
20
+ export declare const Themes: Registry<Theme, readonly Theme[]>;
21
+ /** The kit's facet serving `Themes` on a host: the contributions as they are, in plugin-name order. */
22
+ export declare function themesFacet<P extends Principal>(): Facet<P>;
23
+ /** The theme used when no plugin contributed one of a mode: neutral colours. */
24
+ export declare const FALLBACK_THEMES: Readonly<Record<Theme["mode"], Theme>>;
25
+ /** The user's choice: a theme id for dark and one for light (`null`: the first contributed of that mode). */
26
+ export type ThemePick = {
27
+ readonly dark: string | null;
28
+ readonly light: string | null;
29
+ };
30
+ /** The active theme for `mode`: the one `pick` names if contributed, else the first of that mode, else the fallback. */
31
+ export declare function activeTheme(themes: readonly Theme[], pick: ThemePick, mode: Theme["mode"]): Theme;
32
+ /** The CSS custom properties of `theme`: `--<role>` for every colour, then `--<name>` for each `web` extra. */
33
+ export declare function themeVariables(theme: Theme): Readonly<Record<string, string>>;
34
+ /** How many colours a terminal shows. */
35
+ export type ColorDepth = "truecolor" | "256";
36
+ /**
37
+ * The SGR parameters of `role`'s colour in `theme` for a terminal of `depth` (`38;2;r;g;b`, `38;5;n`; `48;…` for a
38
+ * background): the role's `tui` override first, else its colour, else the fallback theme's; a `#rrggbb` colour is the
39
+ * nearest of the 256 xterm colours on a 256-colour terminal. A role nobody defines, or a colour that is no `#rrggbb`,
40
+ * gives the terminal's default (`39`, `49`).
41
+ */
42
+ export declare function terminalColor(theme: Theme, role: string, depth: ColorDepth, layer: "fg" | "bg"): string;
43
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/surfaces/themes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvE,6GAA6G;AAC7G,eAAO,MAAM,UAAU,YAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAElG,mBAAmB;AACnB,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,2HAA2H;AAC3H,MAAM,MAAM,KAAK,GAAG;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvF,mHAAmH;IACnH,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,mGAAmG;IACnG,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,gHAAgH;AAChH,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAEnD,CAAC;AAEH,uGAAuG;AACvG,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAE3D;AAED,gFAAgF;AAChF,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CA6BlE,CAAC;AAEF,6GAA6G;AAC7G,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAExF,wHAAwH;AACxH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAIjG;AAED,+GAA+G;AAC/G,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAK7E;AAED,yCAAyC;AACzC,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CASvG"}