@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,368 @@
1
+ // Files (slice 13 §4; decision "Files v2"): the kit's file storage, one `Files` object per host (`self.get(Files, {})`),
2
+ // its bytes in the host's `files/` and its index in the host's store (`files-index.ts`). Every file lives in a space
3
+ // (`shared`, `artifacts`, `uploads`, …) at a path (`docs/report.md`); folders are index entries, and a move changes only
4
+ // the index. Bytes never change: writing to a path adds a version (a new blob), `copy` shares a blob, and a blob goes
5
+ // once no version references it. Small files in one call (`put`), large ones in chunks (design §23 "Chunked transfers":
6
+ // `begin`, `append` at the stored offset, `uploaded` to resume after a drop, `finish`; unfinished uploads expire); a
7
+ // `key` makes a write idempotent; reads by range; caps per host; a summary per space for an app's server index;
8
+ // `FilesFolder` lists one folder live. Plugins never see a path on disk.
9
+ import { readdir, rm } from "node:fs/promises";
10
+ import { join } from "node:path";
11
+ import { setTimeout as sleep } from "node:timers/promises";
12
+ import { arr, bool, bytes, int, keyed, lit, local, method, nul, obj, opt, str, union, } from "../../contracts/index.js";
13
+ import { ChordError } from "../../data/index.js";
14
+ import { invalid } from "../../data/internal.js";
15
+ import { defineFacet } from "../../host/index.js";
16
+ import { Blobs } from "./blobs.js";
17
+ import { checkPath, checkSpace, FileSchema, FilesIndex, FolderSchema, MAX_PAGE, MetaSchema, SummarySchema, } from "./files-index.js";
18
+ import { FolderViews } from "./folder-views.js";
19
+ import { newToken } from "./secrets.js";
20
+ import { Uploads } from "./uploads.js";
21
+ /**
22
+ * A write's fields: where, its type, who wrote it (a string the writer sets), its producer's reference, key, `meta`, and
23
+ * an import's original time.
24
+ */
25
+ const WRITE = {
26
+ space: str(),
27
+ path: str(),
28
+ mime: str(),
29
+ source: str(),
30
+ ref: opt(str({ min: 1 })),
31
+ key: opt(str({ min: 1 })),
32
+ meta: opt(MetaSchema),
33
+ /** For imports only: when the file was made where it comes from (ms since the epoch); the write's time otherwise. */
34
+ created: opt(int({ min: 0 })),
35
+ };
36
+ /** A page's arguments: a cursor of the page before, and how many (100 by default, at most 1,000). */
37
+ const PAGE = { after: opt(str()), limit: opt(int({ min: 1, max: MAX_PAGE })) };
38
+ /** A page of `item`s and the cursor of the next one. */
39
+ const pageOf = (item) => obj({ items: arr(item), next: opt(str()) });
40
+ /** A version or nothing. */
41
+ const MAYBE_FILE = union([FileSchema, nul()]);
42
+ /** One entry of a folder's listing. */
43
+ const EntrySchema = union([
44
+ obj({ kind: lit("folder"), folder: FolderSchema }),
45
+ obj({ kind: lit("file"), file: FileSchema }),
46
+ ]);
47
+ /** The host's files (one per host): writes, reads, the index's queries, folders, moves, copies, removal, summaries. */
48
+ export const Files = local("chord.app.files", {
49
+ version: 2,
50
+ params: {},
51
+ members: {
52
+ /** Each space's summary (counts, bytes, the newest versions): what an app mirrors to its server's index. */
53
+ summary: keyed(SummarySchema),
54
+ /**
55
+ * Stores a small file (at most 4 MiB) in one call as a new version at `path`, one past the highest it ever had.
56
+ * A `key` the space has already stores nothing and answers the version written with it.
57
+ */
58
+ put: method(obj({ ...WRITE, bytes: bytes() }), FileSchema),
59
+ /**
60
+ * Starts a chunked upload of what `finish` stores as `put` would: its upload id; with a `key` the space has, the
61
+ * version written with it (`exists`), or the upload under way with it. `unavailable` (`busy`) while the host's cap
62
+ * of uploads are under way.
63
+ */
64
+ begin: method(obj(WRITE), union([obj({ kind: lit("upload"), upload: str() }), obj({ kind: lit("exists"), file: FileSchema })])),
65
+ /**
66
+ * Appends a chunk (at most 4 MiB; about 1 MiB is the usual size) to upload `upload` at `offset`, which must be
67
+ * the bytes stored so far (else `invalid`, its details `{ offset }` the stored one).
68
+ */
69
+ append: method(obj({ upload: str(), offset: int({ min: 0 }), bytes: bytes() })),
70
+ /** The bytes stored so far of upload `upload`: where a writer resumes after a drop. */
71
+ uploaded: method(str(), int()),
72
+ /** Ends upload `upload`: the version it made. */
73
+ finish: method(str(), FileSchema),
74
+ /** Drops upload `upload` and what it stored (an unknown one: nothing): its writer gave up. */
75
+ cancel: method(str()),
76
+ /** `length` bytes (at most 4 MiB) of version `id` from `offset` (fewer at its end). */
77
+ read: method(obj({ id: str(), offset: int({ min: 0 }), length: int({ min: 0 }) }), bytes()),
78
+ /** Version `id`, or `null`. */
79
+ file: method(str(), MAYBE_FILE),
80
+ /** Version `version` of the file at `path` (its newest without one), or `null`. */
81
+ get: method(obj({ space: str(), path: str(), version: opt(int({ min: 1 })) }), MAYBE_FILE),
82
+ /** The version written with `key` in `space`, or `null`. */
83
+ byKey: method(obj({ space: str(), key: str({ min: 1 }) }), MAYBE_FILE),
84
+ /** A page of the versions with `ref` in `space`, oldest first. */
85
+ byRef: method(obj({ space: str(), ref: str({ min: 1 }), ...PAGE }), pageOf(FileSchema)),
86
+ /** A page of the versions of the file at `path`, newest first. */
87
+ versions: method(obj({ space: str(), path: str(), ...PAGE }), pageOf(FileSchema)),
88
+ /** A page of folder `folder`'s entries (`""`: the space's root): its folders, then its files' newest versions. */
89
+ list: method(obj({ space: str(), folder: str(), ...PAGE }), pageOf(EntrySchema)),
90
+ /** Makes folder `path` and its missing parents (an existing one: itself); refused where a file is. */
91
+ mkdir: method(obj({ space: str(), path: str() }), FolderSchema),
92
+ /**
93
+ * Moves (renames) the file or folder `from` to `to`, changing only the index; refused when `to` exists or lies
94
+ * inside `from`.
95
+ */
96
+ move: method(obj({ space: str(), from: str(), to: str() })),
97
+ /** Copies version `id` as a new version at `path` of `space`, sharing its blob (its metadata but its key). */
98
+ copy: method(obj({ id: str(), space: str(), path: str() }), FileSchema),
99
+ /** Removes version `id` (an unknown one: nothing); the next older version becomes the path's newest. */
100
+ remove: method(str()),
101
+ /** Removes the file at `path` (every version) or the folder at `path` with everything under it. */
102
+ removePath: method(obj({ space: str(), path: str() })),
103
+ /** Removes everything in space `space`. */
104
+ removeSpace: method(str()),
105
+ },
106
+ });
107
+ /** One folder of the host's files, live: its first 500 entries (folders, then files) and whether more follow. */
108
+ export const FilesFolder = local("chord.app.files.folder", {
109
+ version: 1,
110
+ params: { space: str(), folder: str() },
111
+ members: { listing: obj({ entries: arr(EntrySchema), more: bool() }) },
112
+ });
113
+ /** The largest piece a call carries (a `put`, an `append`, a `read`): 4 MiB, well under a link's part limit. */
114
+ const MAX_PIECE = 4 * 1024 * 1024;
115
+ /** A page's size when the caller names none. */
116
+ const PAGE_SIZE = 100;
117
+ /** How many entries a `FilesFolder` shows. */
118
+ const FOLDER_VIEW = 500;
119
+ /** How long an upload may go unwritten before it expires: an hour. */
120
+ const UPLOAD_IDLE_MS = 60 * 60_000;
121
+ /** How often expired uploads are dropped: every minute. */
122
+ const SWEEP_MS = 60_000;
123
+ /**
124
+ * The kit's facet serving `Files` and `FilesFolder` with the host's files directory `dir` (`<host dir>/files`),
125
+ * `caps` and at most `uploads` uploads under way (64 by default). Blobs live in `dir/blobs/`, uploads under way in
126
+ * `dir/.uploads/<run>/` (`Uploads`), ending with the object (an unfinished one is dropped when the next one goes live).
127
+ * For apps that host their own hosts; `startServer` and `startWorker` load it on theirs.
128
+ */
129
+ export function filesFacet(dir, caps = {}, uploads = 64) {
130
+ const maxFile = caps.maxFile ?? 256 * 1024 * 1024;
131
+ const maxTotal = caps.maxTotal ?? 4 * 1024 * 1024 * 1024;
132
+ const uploadsDir = join(dir, ".uploads");
133
+ const blobs = new Blobs(join(dir, "blobs"));
134
+ const views = new FolderViews();
135
+ return defineFacet((host) => {
136
+ host.serve(Files, (_params, self) => {
137
+ const index = new FilesIndex(self);
138
+ // This run's uploads in their own directory: an upload left by an earlier run (its process ended) can never
139
+ // finish and is dropped, while this run's may already have begun.
140
+ const run = join(uploadsDir, newToken(12));
141
+ const underway = new Uploads(run, uploads);
142
+ views.bind(async (space, folder, ctx) => {
143
+ const page = await index.list(space, folder, FOLDER_VIEW, undefined, ctx);
144
+ return { entries: page.items, more: page.next !== undefined };
145
+ });
146
+ // Changes take turns: a version number, a key and a blob's count are decided by the one change running.
147
+ let last = Promise.resolve();
148
+ const turn = (fn) => {
149
+ const result = last.then(fn);
150
+ last = result.catch(() => { });
151
+ return result;
152
+ };
153
+ // Uploads under way count against the total too: two of them cannot pass it together.
154
+ const room = (adding, fileSize) => {
155
+ if (fileSize > maxFile)
156
+ throw tooLarge(`a file of ${fileSize} bytes is larger than this host's cap (${maxFile})`);
157
+ if (index.usage.value.bytes + underway.size + adding > maxTotal) {
158
+ throw tooLarge(`this host's files would exceed their cap (${maxTotal} bytes)`);
159
+ }
160
+ };
161
+ // A new blob's version; the blob goes again when its index commit fails.
162
+ const store = async (write, blob, size, ctx) => {
163
+ try {
164
+ const file = await index.add(newToken(12), write, { id: blob, size, fresh: true }, ctx);
165
+ await views.changed(write.space, ctx);
166
+ return file;
167
+ }
168
+ catch (error) {
169
+ await blobs.remove([blob]);
170
+ throw error;
171
+ }
172
+ };
173
+ const known = async (write, ctx) => write.key === undefined ? undefined : index.byKey(write.space, write.key, ctx);
174
+ self.onLive((ctx) => sweep(uploadsDir, run, underway, () => turn(() => blobs.sweep((id) => index.hasBlob(id, ctx))), ctx));
175
+ return {
176
+ summary: index.summary,
177
+ put: ({ bytes, ...write }, ctx) => {
178
+ checkWrite(write);
179
+ if (bytes.length > MAX_PIECE)
180
+ throw tooLarge(`put takes at most ${MAX_PIECE} bytes: use begin, append, finish`);
181
+ return turn(async () => {
182
+ const existing = await known(write, ctx);
183
+ if (existing !== undefined)
184
+ return existing;
185
+ room(bytes.length, bytes.length);
186
+ const blob = newToken(12);
187
+ await blobs.write(blob, bytes, join(run, `put-${blob}`)).catch(async (error) => {
188
+ await rm(join(run, `put-${blob}`), { force: true });
189
+ throw error;
190
+ });
191
+ return store(write, blob, bytes.length, ctx);
192
+ });
193
+ },
194
+ begin: (write, ctx) => {
195
+ checkWrite(write);
196
+ return turn(async () => {
197
+ const existing = await known(write, ctx);
198
+ if (existing !== undefined)
199
+ return { kind: "exists", file: existing };
200
+ const resumed = underway.find((data) => data.space === write.space && data.key !== undefined && data.key === write.key);
201
+ if (resumed !== undefined)
202
+ return { kind: "upload", upload: resumed };
203
+ if ((await index.exists(write.space, write.path, ctx)) === "folder")
204
+ throw invalid("args", `files: ${write.space}:${write.path} is a folder`, { conflict: write.path });
205
+ return { kind: "upload", upload: await underway.begin(write) };
206
+ });
207
+ },
208
+ append: async ({ upload, offset, bytes }) => {
209
+ if (bytes.length > MAX_PIECE)
210
+ throw tooLarge(`append takes at most ${MAX_PIECE} bytes`);
211
+ await underway.append(upload, offset, bytes, room);
212
+ return null;
213
+ },
214
+ uploaded: (upload) => underway.uploaded(upload),
215
+ finish: (upload, ctx) => turn(async () => {
216
+ const blob = newToken(12);
217
+ await blobs.prepare();
218
+ const { data, size } = await underway.finish(upload, blobs.path(blob));
219
+ const existing = await known(data, ctx);
220
+ if (existing === undefined)
221
+ return store(data, blob, size, ctx);
222
+ await blobs.remove([blob]);
223
+ return existing;
224
+ }),
225
+ cancel: async (upload) => {
226
+ await underway.cancel(upload);
227
+ return null;
228
+ },
229
+ read: async ({ id, offset, length }, ctx) => {
230
+ if (length > MAX_PIECE)
231
+ throw tooLarge(`read takes at most ${MAX_PIECE} bytes`);
232
+ const found = await index.blobOf(id, ctx);
233
+ if (found === undefined)
234
+ throw invalid("args", `files: no file ${id}`);
235
+ return blobs.read(found.blob, found.size, offset, length);
236
+ },
237
+ file: async (id, ctx) => (await index.file(id, ctx)) ?? null,
238
+ get: async ({ space, path, version }, ctx) => {
239
+ checkSpace(space);
240
+ checkPath(path, "file");
241
+ return (await index.get(space, path, version, ctx)) ?? null;
242
+ },
243
+ byKey: async ({ space, key }, ctx) => {
244
+ checkSpace(space);
245
+ return (await index.byKey(space, key, ctx)) ?? null;
246
+ },
247
+ byRef: ({ space, ref, after, limit }, ctx) => {
248
+ checkSpace(space);
249
+ return index.byRef(space, ref, limit ?? PAGE_SIZE, after, ctx);
250
+ },
251
+ versions: ({ space, path, after, limit }, ctx) => {
252
+ checkSpace(space);
253
+ checkPath(path, "file");
254
+ return index.versions(space, path, limit ?? PAGE_SIZE, after, ctx);
255
+ },
256
+ list: ({ space, folder, after, limit }, ctx) => {
257
+ checkSpace(space);
258
+ checkPath(folder, "folder");
259
+ return index.list(space, folder, limit ?? PAGE_SIZE, after, ctx);
260
+ },
261
+ mkdir: ({ space, path }, ctx) => {
262
+ checkSpace(space);
263
+ checkPath(path, "file");
264
+ return turn(async () => {
265
+ const folder = await index.mkdir(space, path, ctx);
266
+ await views.changed(space, ctx);
267
+ return folder;
268
+ });
269
+ },
270
+ move: ({ space, from, to }, ctx) => {
271
+ checkSpace(space);
272
+ checkPath(from, "file");
273
+ checkPath(to, "file");
274
+ return turn(async () => {
275
+ await index.move(space, from, to, ctx);
276
+ await views.changed(space, ctx);
277
+ return null;
278
+ });
279
+ },
280
+ copy: ({ id, space, path }, ctx) => {
281
+ checkSpace(space);
282
+ checkPath(path, "file");
283
+ return turn(async () => {
284
+ const [file, found] = [await index.file(id, ctx), await index.blobOf(id, ctx)];
285
+ if (file === undefined || found === undefined)
286
+ throw invalid("args", `files: no file ${id}`);
287
+ const { mime, source, ref, meta } = file;
288
+ const write = {
289
+ space,
290
+ path,
291
+ mime,
292
+ source,
293
+ ...(ref === undefined ? {} : { ref }),
294
+ ...(meta === undefined ? {} : { meta }),
295
+ };
296
+ const copied = await index.add(newToken(12), write, { id: found.blob, size: found.size, fresh: false }, ctx);
297
+ await views.changed(space, ctx);
298
+ return copied;
299
+ });
300
+ },
301
+ remove: (id, ctx) => turn(async () => {
302
+ const removed = await index.remove(id, ctx);
303
+ if (removed === undefined)
304
+ return null;
305
+ await blobs.remove(removed.gone);
306
+ await views.changed(removed.space, ctx);
307
+ return null;
308
+ }),
309
+ removePath: ({ space, path }, ctx) => {
310
+ checkSpace(space);
311
+ checkPath(path, "file");
312
+ return turn(async () => {
313
+ await blobs.remove(await index.removePath(space, path, ctx));
314
+ await views.changed(space, ctx);
315
+ return null;
316
+ });
317
+ },
318
+ removeSpace: (space, ctx) => {
319
+ checkSpace(space);
320
+ return turn(async () => {
321
+ await blobs.remove(await index.removeSpace(space, ctx));
322
+ await views.changed(space, ctx);
323
+ return null;
324
+ });
325
+ },
326
+ };
327
+ });
328
+ host.serve(FilesFolder, ({ space, folder }, self) => {
329
+ checkSpace(space);
330
+ checkPath(folder, "folder");
331
+ // Its listing is read through the host's `Files`, which must be live first.
332
+ self.get(Files, {});
333
+ return { listing: self.follow((observer, ctx) => views.attach(space, folder, observer, ctx)) };
334
+ });
335
+ });
336
+ }
337
+ /** Refuses a write's space or path outside the rules (a trust boundary: the caller's). */
338
+ function checkWrite(write) {
339
+ checkSpace(write.space);
340
+ checkPath(write.path, "file");
341
+ }
342
+ /**
343
+ * The files object's routine once live: drops the uploads earlier runs left (every directory under `uploadsDir` but
344
+ * `run`) and the blobs no commit took (`sweepBlobs`), then every minute the uploads unwritten for an hour; when the
345
+ * object ends, every upload still under way.
346
+ */
347
+ async function sweep(uploadsDir, run, uploads, sweepBlobs, ctx) {
348
+ for (const entry of await readdir(uploadsDir).catch(() => [])) {
349
+ if (join(uploadsDir, entry) !== run)
350
+ await rm(join(uploadsDir, entry), { recursive: true, force: true });
351
+ }
352
+ try {
353
+ await sweepBlobs();
354
+ for (;;) {
355
+ await sleep(SWEEP_MS, undefined, { signal: ctx.abortSignal });
356
+ await uploads.expire(UPLOAD_IDLE_MS);
357
+ }
358
+ }
359
+ finally {
360
+ if (ctx.abortSignal?.aborted === true)
361
+ await uploads.close();
362
+ }
363
+ }
364
+ /** A cap refused a write. */
365
+ function tooLarge(message) {
366
+ return new ChordError({ code: "too_large", message: `files: ${message}` });
367
+ }
368
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/node/app/files.ts"],"names":[],"mappings":"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","sourcesContent":["// Files (slice 13 §4; decision \"Files v2\"): the kit's file storage, one `Files` object per host (`self.get(Files, {})`),\n// its bytes in the host's `files/` and its index in the host's store (`files-index.ts`). Every file lives in a space\n// (`shared`, `artifacts`, `uploads`, …) at a path (`docs/report.md`); folders are index entries, and a move changes only\n// the index. Bytes never change: writing to a path adds a version (a new blob), `copy` shares a blob, and a blob goes\n// once no version references it. Small files in one call (`put`), large ones in chunks (design §23 \"Chunked transfers\":\n// `begin`, `append` at the stored offset, `uploaded` to resume after a drop, `finish`; unfinished uploads expire); a\n// `key` makes a write idempotent; reads by range; caps per host; a summary per space for an app's server index;\n// `FilesFolder` lists one folder live. Plugins never see a path on disk.\n\nimport { readdir, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { setTimeout as sleep } from \"node:timers/promises\";\nimport type { Context } from \"../../context/index.ts\";\nimport {\n\tarr,\n\tbool,\n\tbytes,\n\tint,\n\tkeyed,\n\tlit,\n\tlocal,\n\tmethod,\n\tnul,\n\tobj,\n\topt,\n\ttype Schema,\n\tstr,\n\tunion,\n} from \"../../contracts/index.ts\";\nimport { ChordError, type Principal } from \"../../data/index.ts\";\nimport { invalid } from \"../../data/internal.ts\";\nimport { type Ctx, defineFacet, type Facet } from \"../../host/index.ts\";\nimport { Blobs } from \"./blobs.ts\";\nimport {\n\tcheckPath,\n\tcheckSpace,\n\ttype FileInfo,\n\tFileSchema,\n\tFilesIndex,\n\ttype FileWrite,\n\tFolderSchema,\n\tMAX_PAGE,\n\tMetaSchema,\n\tSummarySchema,\n} from \"./files-index.ts\";\nimport { type FolderListing, FolderViews } from \"./folder-views.ts\";\nimport { newToken } from \"./secrets.ts\";\nimport { Uploads } from \"./uploads.ts\";\n\nexport type { FileInfo, FileWrite, FolderEntry, FolderInfo, SpaceSummary } from \"./files-index.ts\";\nexport type { FolderListing } from \"./folder-views.ts\";\n\n/** The caps of one host's files (bytes). */\nexport type FilesCaps = {\n\t/** The largest file: 256 MiB by default. */\n\treadonly maxFile?: number;\n\t/** All blobs on disk together (a copy shares its blob), uploads under way included: 4 GiB by default. */\n\treadonly maxTotal?: number;\n};\n\n/**\n * A write's fields: where, its type, who wrote it (a string the writer sets), its producer's reference, key, `meta`, and\n * an import's original time.\n */\nconst WRITE = {\n\tspace: str(),\n\tpath: str(),\n\tmime: str(),\n\tsource: str(),\n\tref: opt(str({ min: 1 })),\n\tkey: opt(str({ min: 1 })),\n\tmeta: opt(MetaSchema),\n\t/** For imports only: when the file was made where it comes from (ms since the epoch); the write's time otherwise. */\n\tcreated: opt(int({ min: 0 })),\n};\n\n/** A page's arguments: a cursor of the page before, and how many (100 by default, at most 1,000). */\nconst PAGE = { after: opt(str()), limit: opt(int({ min: 1, max: MAX_PAGE })) };\n\n/** A page of `item`s and the cursor of the next one. */\nconst pageOf = <T>(item: Schema<T>) => obj({ items: arr(item), next: opt(str()) });\n\n/** A version or nothing. */\nconst MAYBE_FILE = union([FileSchema, nul()]);\n\n/** One entry of a folder's listing. */\nconst EntrySchema = union([\n\tobj({ kind: lit(\"folder\"), folder: FolderSchema }),\n\tobj({ kind: lit(\"file\"), file: FileSchema }),\n]);\n\n/** The host's files (one per host): writes, reads, the index's queries, folders, moves, copies, removal, summaries. */\nexport const Files = local(\"chord.app.files\", {\n\tversion: 2,\n\tparams: {},\n\tmembers: {\n\t\t/** Each space's summary (counts, bytes, the newest versions): what an app mirrors to its server's index. */\n\t\tsummary: keyed(SummarySchema),\n\t\t/**\n\t\t * Stores a small file (at most 4 MiB) in one call as a new version at `path`, one past the highest it ever had.\n\t\t * A `key` the space has already stores nothing and answers the version written with it.\n\t\t */\n\t\tput: method(obj({ ...WRITE, bytes: bytes() }), FileSchema),\n\t\t/**\n\t\t * Starts a chunked upload of what `finish` stores as `put` would: its upload id; with a `key` the space has, the\n\t\t * version written with it (`exists`), or the upload under way with it. `unavailable` (`busy`) while the host's cap\n\t\t * of uploads are under way.\n\t\t */\n\t\tbegin: method(\n\t\t\tobj(WRITE),\n\t\t\tunion([obj({ kind: lit(\"upload\"), upload: str() }), obj({ kind: lit(\"exists\"), file: FileSchema })]),\n\t\t),\n\t\t/**\n\t\t * Appends a chunk (at most 4 MiB; about 1 MiB is the usual size) to upload `upload` at `offset`, which must be\n\t\t * the bytes stored so far (else `invalid`, its details `{ offset }` the stored one).\n\t\t */\n\t\tappend: method(obj({ upload: str(), offset: int({ min: 0 }), bytes: bytes() })),\n\t\t/** The bytes stored so far of upload `upload`: where a writer resumes after a drop. */\n\t\tuploaded: method(str(), int()),\n\t\t/** Ends upload `upload`: the version it made. */\n\t\tfinish: method(str(), FileSchema),\n\t\t/** Drops upload `upload` and what it stored (an unknown one: nothing): its writer gave up. */\n\t\tcancel: method(str()),\n\t\t/** `length` bytes (at most 4 MiB) of version `id` from `offset` (fewer at its end). */\n\t\tread: method(obj({ id: str(), offset: int({ min: 0 }), length: int({ min: 0 }) }), bytes()),\n\t\t/** Version `id`, or `null`. */\n\t\tfile: method(str(), MAYBE_FILE),\n\t\t/** Version `version` of the file at `path` (its newest without one), or `null`. */\n\t\tget: method(obj({ space: str(), path: str(), version: opt(int({ min: 1 })) }), MAYBE_FILE),\n\t\t/** The version written with `key` in `space`, or `null`. */\n\t\tbyKey: method(obj({ space: str(), key: str({ min: 1 }) }), MAYBE_FILE),\n\t\t/** A page of the versions with `ref` in `space`, oldest first. */\n\t\tbyRef: method(obj({ space: str(), ref: str({ min: 1 }), ...PAGE }), pageOf(FileSchema)),\n\t\t/** A page of the versions of the file at `path`, newest first. */\n\t\tversions: method(obj({ space: str(), path: str(), ...PAGE }), pageOf(FileSchema)),\n\t\t/** A page of folder `folder`'s entries (`\"\"`: the space's root): its folders, then its files' newest versions. */\n\t\tlist: method(obj({ space: str(), folder: str(), ...PAGE }), pageOf(EntrySchema)),\n\t\t/** Makes folder `path` and its missing parents (an existing one: itself); refused where a file is. */\n\t\tmkdir: method(obj({ space: str(), path: str() }), FolderSchema),\n\t\t/**\n\t\t * Moves (renames) the file or folder `from` to `to`, changing only the index; refused when `to` exists or lies\n\t\t * inside `from`.\n\t\t */\n\t\tmove: method(obj({ space: str(), from: str(), to: str() })),\n\t\t/** Copies version `id` as a new version at `path` of `space`, sharing its blob (its metadata but its key). */\n\t\tcopy: method(obj({ id: str(), space: str(), path: str() }), FileSchema),\n\t\t/** Removes version `id` (an unknown one: nothing); the next older version becomes the path's newest. */\n\t\tremove: method(str()),\n\t\t/** Removes the file at `path` (every version) or the folder at `path` with everything under it. */\n\t\tremovePath: method(obj({ space: str(), path: str() })),\n\t\t/** Removes everything in space `space`. */\n\t\tremoveSpace: method(str()),\n\t},\n});\n\n/** One folder of the host's files, live: its first 500 entries (folders, then files) and whether more follow. */\nexport const FilesFolder = local(\"chord.app.files.folder\", {\n\tversion: 1,\n\tparams: { space: str(), folder: str() },\n\tmembers: { listing: obj({ entries: arr(EntrySchema), more: bool() }) },\n});\n\n/** The largest piece a call carries (a `put`, an `append`, a `read`): 4 MiB, well under a link's part limit. */\nconst MAX_PIECE = 4 * 1024 * 1024;\n\n/** A page's size when the caller names none. */\nconst PAGE_SIZE = 100;\n\n/** How many entries a `FilesFolder` shows. */\nconst FOLDER_VIEW = 500;\n\n/** How long an upload may go unwritten before it expires: an hour. */\nconst UPLOAD_IDLE_MS = 60 * 60_000;\n\n/** How often expired uploads are dropped: every minute. */\nconst SWEEP_MS = 60_000;\n\n/**\n * The kit's facet serving `Files` and `FilesFolder` with the host's files directory `dir` (`<host dir>/files`),\n * `caps` and at most `uploads` uploads under way (64 by default). Blobs live in `dir/blobs/`, uploads under way in\n * `dir/.uploads/<run>/` (`Uploads`), ending with the object (an unfinished one is dropped when the next one goes live).\n * For apps that host their own hosts; `startServer` and `startWorker` load it on theirs.\n */\nexport function filesFacet<P extends Principal>(dir: string, caps: FilesCaps = {}, uploads = 64): Facet<P> {\n\tconst maxFile = caps.maxFile ?? 256 * 1024 * 1024;\n\tconst maxTotal = caps.maxTotal ?? 4 * 1024 * 1024 * 1024;\n\tconst uploadsDir = join(dir, \".uploads\");\n\tconst blobs = new Blobs(join(dir, \"blobs\"));\n\tconst views = new FolderViews();\n\treturn defineFacet<P>((host) => {\n\t\thost.serve(Files, (_params, self) => {\n\t\t\tconst index = new FilesIndex(self);\n\t\t\t// This run's uploads in their own directory: an upload left by an earlier run (its process ended) can never\n\t\t\t// finish and is dropped, while this run's may already have begun.\n\t\t\tconst run = join(uploadsDir, newToken(12));\n\t\t\tconst underway = new Uploads<FileWrite>(run, uploads);\n\t\t\tviews.bind(async (space, folder, ctx) => {\n\t\t\t\tconst page = await index.list(space, folder, FOLDER_VIEW, undefined, ctx);\n\t\t\t\treturn { entries: page.items, more: page.next !== undefined };\n\t\t\t});\n\t\t\t// Changes take turns: a version number, a key and a blob's count are decided by the one change running.\n\t\t\tlet last: Promise<unknown> = Promise.resolve();\n\t\t\tconst turn = <R>(fn: () => Promise<R>): Promise<R> => {\n\t\t\t\tconst result = last.then(fn);\n\t\t\t\tlast = result.catch(() => {});\n\t\t\t\treturn result;\n\t\t\t};\n\t\t\t// Uploads under way count against the total too: two of them cannot pass it together.\n\t\t\tconst room = (adding: number, fileSize: number): void => {\n\t\t\t\tif (fileSize > maxFile)\n\t\t\t\t\tthrow tooLarge(`a file of ${fileSize} bytes is larger than this host's cap (${maxFile})`);\n\t\t\t\tif (index.usage.value.bytes + underway.size + adding > maxTotal) {\n\t\t\t\t\tthrow tooLarge(`this host's files would exceed their cap (${maxTotal} bytes)`);\n\t\t\t\t}\n\t\t\t};\n\t\t\t// A new blob's version; the blob goes again when its index commit fails.\n\t\t\tconst store = async (write: FileWrite, blob: string, size: number, ctx: Ctx): Promise<FileInfo> => {\n\t\t\t\ttry {\n\t\t\t\t\tconst file = await index.add(newToken(12), write, { id: blob, size, fresh: true }, ctx);\n\t\t\t\t\tawait views.changed(write.space, ctx);\n\t\t\t\t\treturn file;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tawait blobs.remove([blob]);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst known = async (write: FileWrite, ctx: Ctx): Promise<FileInfo | undefined> =>\n\t\t\t\twrite.key === undefined ? undefined : index.byKey(write.space, write.key, ctx);\n\t\t\tself.onLive((ctx) =>\n\t\t\t\tsweep(uploadsDir, run, underway, () => turn(() => blobs.sweep((id) => index.hasBlob(id, ctx))), ctx),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tsummary: index.summary,\n\t\t\t\tput: ({ bytes, ...write }, ctx) => {\n\t\t\t\t\tcheckWrite(write);\n\t\t\t\t\tif (bytes.length > MAX_PIECE)\n\t\t\t\t\t\tthrow tooLarge(`put takes at most ${MAX_PIECE} bytes: use begin, append, finish`);\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst existing = await known(write, ctx);\n\t\t\t\t\t\tif (existing !== undefined) return existing;\n\t\t\t\t\t\troom(bytes.length, bytes.length);\n\t\t\t\t\t\tconst blob = newToken(12);\n\t\t\t\t\t\tawait blobs.write(blob, bytes, join(run, `put-${blob}`)).catch(async (error: unknown) => {\n\t\t\t\t\t\t\tawait rm(join(run, `put-${blob}`), { force: true });\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn store(write, blob, bytes.length, ctx);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tbegin: (write, ctx) => {\n\t\t\t\t\tcheckWrite(write);\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst existing = await known(write, ctx);\n\t\t\t\t\t\tif (existing !== undefined) return { kind: \"exists\" as const, file: existing };\n\t\t\t\t\t\tconst resumed = underway.find(\n\t\t\t\t\t\t\t(data) => data.space === write.space && data.key !== undefined && data.key === write.key,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (resumed !== undefined) return { kind: \"upload\" as const, upload: resumed };\n\t\t\t\t\t\tif ((await index.exists(write.space, write.path, ctx)) === \"folder\")\n\t\t\t\t\t\t\tthrow invalid(\"args\", `files: ${write.space}:${write.path} is a folder`, { conflict: write.path });\n\t\t\t\t\t\treturn { kind: \"upload\" as const, upload: await underway.begin(write) };\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tappend: async ({ upload, offset, bytes }) => {\n\t\t\t\t\tif (bytes.length > MAX_PIECE) throw tooLarge(`append takes at most ${MAX_PIECE} bytes`);\n\t\t\t\t\tawait underway.append(upload, offset, bytes, room);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\tuploaded: (upload) => underway.uploaded(upload),\n\t\t\t\tfinish: (upload, ctx) =>\n\t\t\t\t\tturn(async () => {\n\t\t\t\t\t\tconst blob = newToken(12);\n\t\t\t\t\t\tawait blobs.prepare();\n\t\t\t\t\t\tconst { data, size } = await underway.finish(upload, blobs.path(blob));\n\t\t\t\t\t\tconst existing = await known(data, ctx);\n\t\t\t\t\t\tif (existing === undefined) return store(data, blob, size, ctx);\n\t\t\t\t\t\tawait blobs.remove([blob]);\n\t\t\t\t\t\treturn existing;\n\t\t\t\t\t}),\n\t\t\t\tcancel: async (upload) => {\n\t\t\t\t\tawait underway.cancel(upload);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\tread: async ({ id, offset, length }, ctx) => {\n\t\t\t\t\tif (length > MAX_PIECE) throw tooLarge(`read takes at most ${MAX_PIECE} bytes`);\n\t\t\t\t\tconst found = await index.blobOf(id, ctx);\n\t\t\t\t\tif (found === undefined) throw invalid(\"args\", `files: no file ${id}`);\n\t\t\t\t\treturn blobs.read(found.blob, found.size, offset, length);\n\t\t\t\t},\n\t\t\t\tfile: async (id, ctx) => (await index.file(id, ctx)) ?? null,\n\t\t\t\tget: async ({ space, path, version }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn (await index.get(space, path, version, ctx)) ?? null;\n\t\t\t\t},\n\t\t\t\tbyKey: async ({ space, key }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\treturn (await index.byKey(space, key, ctx)) ?? null;\n\t\t\t\t},\n\t\t\t\tbyRef: ({ space, ref, after, limit }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\treturn index.byRef(space, ref, limit ?? PAGE_SIZE, after, ctx);\n\t\t\t\t},\n\t\t\t\tversions: ({ space, path, after, limit }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn index.versions(space, path, limit ?? PAGE_SIZE, after, ctx);\n\t\t\t\t},\n\t\t\t\tlist: ({ space, folder, after, limit }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(folder, \"folder\");\n\t\t\t\t\treturn index.list(space, folder, limit ?? PAGE_SIZE, after, ctx);\n\t\t\t\t},\n\t\t\t\tmkdir: ({ space, path }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst folder = await index.mkdir(space, path, ctx);\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn folder;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tmove: ({ space, from, to }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(from, \"file\");\n\t\t\t\t\tcheckPath(to, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tawait index.move(space, from, to, ctx);\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tcopy: ({ id, space, path }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tconst [file, found] = [await index.file(id, ctx), await index.blobOf(id, ctx)];\n\t\t\t\t\t\tif (file === undefined || found === undefined) throw invalid(\"args\", `files: no file ${id}`);\n\t\t\t\t\t\tconst { mime, source, ref, meta } = file;\n\t\t\t\t\t\tconst write = {\n\t\t\t\t\t\t\tspace,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tmime,\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\t...(ref === undefined ? {} : { ref }),\n\t\t\t\t\t\t\t...(meta === undefined ? {} : { meta }),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst copied = await index.add(\n\t\t\t\t\t\t\tnewToken(12),\n\t\t\t\t\t\t\twrite,\n\t\t\t\t\t\t\t{ id: found.blob, size: found.size, fresh: false },\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn copied;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tremove: (id, ctx) =>\n\t\t\t\t\tturn(async () => {\n\t\t\t\t\t\tconst removed = await index.remove(id, ctx);\n\t\t\t\t\t\tif (removed === undefined) return null;\n\t\t\t\t\t\tawait blobs.remove(removed.gone);\n\t\t\t\t\t\tawait views.changed(removed.space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}),\n\t\t\t\tremovePath: ({ space, path }, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\tcheckPath(path, \"file\");\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tawait blobs.remove(await index.removePath(space, path, ctx));\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tremoveSpace: (space, ctx) => {\n\t\t\t\t\tcheckSpace(space);\n\t\t\t\t\treturn turn(async () => {\n\t\t\t\t\t\tawait blobs.remove(await index.removeSpace(space, ctx));\n\t\t\t\t\t\tawait views.changed(space, ctx);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t\thost.serve(FilesFolder, ({ space, folder }, self) => {\n\t\t\tcheckSpace(space);\n\t\t\tcheckPath(folder, \"folder\");\n\t\t\t// Its listing is read through the host's `Files`, which must be live first.\n\t\t\tself.get(Files, {});\n\t\t\treturn { listing: self.follow<FolderListing>((observer, ctx) => views.attach(space, folder, observer, ctx)) };\n\t\t});\n\t});\n}\n\n/** Refuses a write's space or path outside the rules (a trust boundary: the caller's). */\nfunction checkWrite(write: FileWrite): void {\n\tcheckSpace(write.space);\n\tcheckPath(write.path, \"file\");\n}\n\n/**\n * The files object's routine once live: drops the uploads earlier runs left (every directory under `uploadsDir` but\n * `run`) and the blobs no commit took (`sweepBlobs`), then every minute the uploads unwritten for an hour; when the\n * object ends, every upload still under way.\n */\nasync function sweep(\n\tuploadsDir: string,\n\trun: string,\n\tuploads: Uploads<FileWrite>,\n\tsweepBlobs: () => Promise<void>,\n\tctx: Context,\n): Promise<void> {\n\tfor (const entry of await readdir(uploadsDir).catch(() => [])) {\n\t\tif (join(uploadsDir, entry) !== run) await rm(join(uploadsDir, entry), { recursive: true, force: true });\n\t}\n\ttry {\n\t\tawait sweepBlobs();\n\t\tfor (;;) {\n\t\t\tawait sleep(SWEEP_MS, undefined, { signal: ctx.abortSignal });\n\t\t\tawait uploads.expire(UPLOAD_IDLE_MS);\n\t\t}\n\t} finally {\n\t\tif (ctx.abortSignal?.aborted === true) await uploads.close();\n\t}\n}\n\n/** A cap refused a write. */\nfunction tooLarge(message: string): ChordError {\n\treturn new ChordError({ code: \"too_large\", message: `files: ${message}` });\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import type { Context } from "../../context/index.ts";
2
+ import type { FollowAttachment, FollowObserver } from "../../host/index.ts";
3
+ import type { FolderEntry } from "./files-index.ts";
4
+ /** A folder's first entries, and whether more follow. */
5
+ export type FolderListing = {
6
+ readonly entries: FolderEntry[];
7
+ readonly more: boolean;
8
+ };
9
+ /** How a folder's listing is read: the current `Files` attempt's index. */
10
+ export type ListingReader = (space: string, folder: string, context: Context) => Promise<FolderListing>;
11
+ /** The watched folders of one host's `Files`. */
12
+ export declare class FolderViews {
13
+ #private;
14
+ /** Reads through `reader` from now on (each `Files` attempt binds its own). */
15
+ bind(reader: ListingReader): void;
16
+ /** Watches folder `folder` of `space` for `observer`: its listing now, and its detach. */
17
+ attach(space: string, folder: string, observer: FollowObserver<unknown>, context: Context): Promise<FollowAttachment<FolderListing>>;
18
+ /** Space `space` changed: every watched folder of it is read again (once per folder) and its watchers told. */
19
+ changed(space: string, context: Context): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=folder-views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-views.d.ts","sourceRoot":"","sources":["../../../src/node/app/folder-views.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAExF,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAWxG,iDAAiD;AACjD,qBAAa,WAAW;;IAIvB,+EAA+E;IAC/E,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEhC;IAED,0FAA0F;IACpF,MAAM,CACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EACjC,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAe1C;IAED,+GAA+G;IACzG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5D;CAMD"}
@@ -0,0 +1,55 @@
1
+ // Live folder listings (Files v2): what a `FilesFolder` object shows, the first entries of one folder, followed
2
+ // (`self.follow`) from the host's `Files`. Files reads a watched folder again after each change of its space, inside
3
+ // the method that changed it, and hands the listing to its watchers; a listing attaching meanwhile reads again. One
4
+ // read per watched folder and change: meant for the folders on someone's screen, not for every folder of a drive.
5
+ /** The watched folders of one host's `Files`. */
6
+ export class FolderViews {
7
+ #reader;
8
+ #views = new Set();
9
+ /** Reads through `reader` from now on (each `Files` attempt binds its own). */
10
+ bind(reader) {
11
+ this.#reader = reader;
12
+ }
13
+ /** Watches folder `folder` of `space` for `observer`: its listing now, and its detach. */
14
+ async attach(space, folder, observer, context) {
15
+ const view = { space, folder, observer, attaching: true, stale: false };
16
+ this.#views.add(view);
17
+ try {
18
+ let value;
19
+ do {
20
+ view.stale = false;
21
+ value = await this.#read(space, folder, context);
22
+ } while (view.stale);
23
+ view.attaching = false;
24
+ return { value, detach: () => this.#views.delete(view) };
25
+ }
26
+ catch (error) {
27
+ this.#views.delete(view);
28
+ throw error;
29
+ }
30
+ }
31
+ /** Space `space` changed: every watched folder of it is read again (once per folder) and its watchers told. */
32
+ async changed(space, context) {
33
+ const byFolder = new Map();
34
+ for (const view of this.#views) {
35
+ if (view.space !== space)
36
+ continue;
37
+ if (view.attaching)
38
+ view.stale = true;
39
+ else
40
+ byFolder.set(view.folder, [...(byFolder.get(view.folder) ?? []), view]);
41
+ }
42
+ for (const [folder, views] of byFolder) {
43
+ const value = await this.#read(space, folder, context);
44
+ for (const view of views) {
45
+ if (this.#views.has(view))
46
+ view.observer.advance({ kind: "value", value, ops: [["r", value]], retired: false }, context);
47
+ }
48
+ }
49
+ }
50
+ /** The listing through the bound reader (bound before any `FilesFolder` goes live: it waits for `Files`). */
51
+ #read(space, folder, context) {
52
+ return this.#reader(space, folder, context);
53
+ }
54
+ }
55
+ //# sourceMappingURL=folder-views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-views.js","sourceRoot":"","sources":["../../../src/node/app/folder-views.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAChH,qHAAqH;AACrH,oHAAoH;AACpH,kHAAkH;AAqBlH,iDAAiD;AACjD,MAAM,OAAO,WAAW;IACvB,OAAO,CAA4B;IAC1B,MAAM,GAAG,IAAI,GAAG,EAAQ,CAAC;IAElC,+EAA+E;IAC/E,IAAI,CAAC,MAAqB;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,MAAM,CACX,KAAa,EACb,MAAc,EACd,QAAiC,EACjC,OAAgB;QAEhB,MAAM,IAAI,GAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC;YACJ,IAAI,KAAoB,CAAC;YACzB,GAAG,CAAC;gBACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED,+GAA+G;IAC/G,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAgB;QAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,SAAS;YACnC,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;gBACjC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAChG,CAAC;QACF,CAAC;IACF,CAAC;IAED,6GAA6G;IAC7G,KAAK,CAAC,KAAa,EAAE,MAAc,EAAE,OAAgB;QACpD,OAAO,IAAI,CAAC,OAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACD","sourcesContent":["// Live folder listings (Files v2): what a `FilesFolder` object shows, the first entries of one folder, followed\n// (`self.follow`) from the host's `Files`. Files reads a watched folder again after each change of its space, inside\n// the method that changed it, and hands the listing to its watchers; a listing attaching meanwhile reads again. One\n// read per watched folder and change: meant for the folders on someone's screen, not for every folder of a drive.\n\nimport type { Context } from \"../../context/index.ts\";\nimport type { FollowAttachment, FollowObserver } from \"../../host/index.ts\";\nimport type { FolderEntry } from \"./files-index.ts\";\n\n/** A folder's first entries, and whether more follow. */\nexport type FolderListing = { readonly entries: FolderEntry[]; readonly more: boolean };\n\n/** How a folder's listing is read: the current `Files` attempt's index. */\nexport type ListingReader = (space: string, folder: string, context: Context) => Promise<FolderListing>;\n\n/** A watched folder: its observer, and whether it is still attaching (then a change makes it read again). */\ntype View = {\n\treadonly space: string;\n\treadonly folder: string;\n\treadonly observer: FollowObserver<unknown>;\n\tattaching: boolean;\n\tstale: boolean;\n};\n\n/** The watched folders of one host's `Files`. */\nexport class FolderViews {\n\t#reader: ListingReader | undefined;\n\treadonly #views = new Set<View>();\n\n\t/** Reads through `reader` from now on (each `Files` attempt binds its own). */\n\tbind(reader: ListingReader): void {\n\t\tthis.#reader = reader;\n\t}\n\n\t/** Watches folder `folder` of `space` for `observer`: its listing now, and its detach. */\n\tasync attach(\n\t\tspace: string,\n\t\tfolder: string,\n\t\tobserver: FollowObserver<unknown>,\n\t\tcontext: Context,\n\t): Promise<FollowAttachment<FolderListing>> {\n\t\tconst view: View = { space, folder, observer, attaching: true, stale: false };\n\t\tthis.#views.add(view);\n\t\ttry {\n\t\t\tlet value: FolderListing;\n\t\t\tdo {\n\t\t\t\tview.stale = false;\n\t\t\t\tvalue = await this.#read(space, folder, context);\n\t\t\t} while (view.stale);\n\t\t\tview.attaching = false;\n\t\t\treturn { value, detach: () => this.#views.delete(view) };\n\t\t} catch (error) {\n\t\t\tthis.#views.delete(view);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/** Space `space` changed: every watched folder of it is read again (once per folder) and its watchers told. */\n\tasync changed(space: string, context: Context): Promise<void> {\n\t\tconst byFolder = new Map<string, View[]>();\n\t\tfor (const view of this.#views) {\n\t\t\tif (view.space !== space) continue;\n\t\t\tif (view.attaching) view.stale = true;\n\t\t\telse byFolder.set(view.folder, [...(byFolder.get(view.folder) ?? []), view]);\n\t\t}\n\t\tfor (const [folder, views] of byFolder) {\n\t\t\tconst value = await this.#read(space, folder, context);\n\t\t\tfor (const view of views) {\n\t\t\t\tif (this.#views.has(view))\n\t\t\t\t\tview.observer.advance({ kind: \"value\", value, ops: [[\"r\", value]], retired: false }, context);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** The listing through the bound reader (bound before any `FilesFolder` goes live: it waits for `Files`). */\n\t#read(space: string, folder: string, context: Context): Promise<FolderListing> {\n\t\treturn this.#reader!(space, folder, context);\n\t}\n}\n"]}
@@ -0,0 +1,12 @@
1
+ export { type App, type AppApi, type AppError, type AppKind, type AppOptions, type AppPlugins, type AppTimeouts, type AppWorkerKind, Server, startServer, } from "./app.ts";
2
+ export { ARCHIVE_FORMAT, type ArchiveManifest } from "./archive.ts";
3
+ export { type EphemeralUser, ephemeralLoginFacet } from "./ephemeral.ts";
4
+ export { type FileInfo, Files, type FilesCaps, FilesFolder, type FileWrite, type FolderEntry, type FolderInfo, type FolderListing, filesFacet, type SpaceSummary, } from "./files.ts";
5
+ export { copyFiles } from "./files-copy.ts";
6
+ export { AppInfo, WorkerInfo } from "./info.ts";
7
+ export { inviteFacet } from "./invite.ts";
8
+ export { privateDirectory, privateStore } from "./layout.ts";
9
+ export { SESSION_COOKIE, type SessionInfo, type SessionKind, Sessions } from "./sessions.ts";
10
+ export { defineUsers } from "./users.ts";
11
+ export { startWorker, type WorkerOptions } from "./worker.ts";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/app/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,KAAK,GAAG,EACR,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,MAAM,EACN,WAAW,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,EACL,KAAK,SAAS,EACd,WAAW,EACX,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,UAAU,EACV,KAAK,YAAY,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ // Chord v2's app kit (`@earendil-works/chord/app`; slice 13): `startServer` on the server and `startWorker` in a
2
+ // worker's entry, the start-data objects, sessions and the owner's sign-in, device pairing, the files of each host,
3
+ // export and import per address, and the optional plugins (users, invites, ephemeral login).
4
+ export { Server, startServer, } from "./app.js";
5
+ export { ARCHIVE_FORMAT } from "./archive.js";
6
+ export { ephemeralLoginFacet } from "./ephemeral.js";
7
+ export { Files, FilesFolder, filesFacet, } from "./files.js";
8
+ export { copyFiles } from "./files-copy.js";
9
+ export { AppInfo, WorkerInfo } from "./info.js";
10
+ export { inviteFacet } from "./invite.js";
11
+ export { privateDirectory, privateStore } from "./layout.js";
12
+ export { SESSION_COOKIE, Sessions } from "./sessions.js";
13
+ export { defineUsers } from "./users.js";
14
+ export { startWorker } from "./worker.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/app/index.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,oHAAoH;AACpH,6FAA6F;AAE7F,OAAO,EASN,MAAM,EACN,WAAW,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAsB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAEN,KAAK,EAEL,WAAW,EAKX,UAAU,GAEV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAsC,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAC","sourcesContent":["// Chord v2's app kit (`@earendil-works/chord/app`; slice 13): `startServer` on the server and `startWorker` in a\n// worker's entry, the start-data objects, sessions and the owner's sign-in, device pairing, the files of each host,\n// export and import per address, and the optional plugins (users, invites, ephemeral login).\n\nexport {\n\ttype App,\n\ttype AppApi,\n\ttype AppError,\n\ttype AppKind,\n\ttype AppOptions,\n\ttype AppPlugins,\n\ttype AppTimeouts,\n\ttype AppWorkerKind,\n\tServer,\n\tstartServer,\n} from \"./app.ts\";\nexport { ARCHIVE_FORMAT, type ArchiveManifest } from \"./archive.ts\";\nexport { type EphemeralUser, ephemeralLoginFacet } from \"./ephemeral.ts\";\nexport {\n\ttype FileInfo,\n\tFiles,\n\ttype FilesCaps,\n\tFilesFolder,\n\ttype FileWrite,\n\ttype FolderEntry,\n\ttype FolderInfo,\n\ttype FolderListing,\n\tfilesFacet,\n\ttype SpaceSummary,\n} from \"./files.ts\";\nexport { copyFiles } from \"./files-copy.ts\";\nexport { AppInfo, WorkerInfo } from \"./info.ts\";\nexport { inviteFacet } from \"./invite.ts\";\nexport { privateDirectory, privateStore } from \"./layout.ts\";\nexport { SESSION_COOKIE, type SessionInfo, type SessionKind, Sessions } from \"./sessions.ts\";\nexport { defineUsers } from \"./users.ts\";\nexport { startWorker, type WorkerOptions } from \"./worker.ts\";\n"]}