@earendil-works/chord 1.5.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 (1853) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +50 -90
  3. package/dist/contracts/accepts.d.ts +81 -0
  4. package/dist/contracts/accepts.d.ts.map +1 -0
  5. package/dist/contracts/accepts.js.map +1 -0
  6. package/dist/contracts/contract.d.ts +121 -0
  7. package/dist/contracts/contract.d.ts.map +1 -0
  8. package/dist/contracts/contract.js.map +1 -0
  9. package/dist/contracts/declare.d.ts.map +1 -0
  10. package/dist/contracts/declare.js.map +1 -0
  11. package/dist/contracts/evolve.d.ts.map +1 -0
  12. package/dist/contracts/evolve.js.map +1 -0
  13. package/dist/contracts/fingerprint.d.ts +16 -0
  14. package/dist/contracts/fingerprint.d.ts.map +1 -0
  15. package/dist/contracts/fingerprint.js.map +1 -0
  16. package/dist/contracts/history.d.ts.map +1 -0
  17. package/dist/contracts/history.js.map +1 -0
  18. package/dist/contracts/host-kind.d.ts.map +1 -0
  19. package/dist/contracts/host-kind.js.map +1 -0
  20. package/dist/contracts/index.d.ts.map +1 -0
  21. package/dist/contracts/index.js.map +1 -0
  22. package/dist/contracts/internal.d.ts.map +1 -0
  23. package/dist/contracts/internal.js.map +1 -0
  24. package/dist/contracts/names.d.ts.map +1 -0
  25. package/dist/contracts/names.js.map +1 -0
  26. package/dist/contracts/params.d.ts +28 -0
  27. package/dist/contracts/params.d.ts.map +1 -0
  28. package/dist/contracts/params.js.map +1 -0
  29. package/dist/contracts/schema.d.ts.map +1 -0
  30. package/dist/contracts/schema.js.map +1 -0
  31. package/dist/contracts/snapshot.d.ts +16 -0
  32. package/dist/contracts/snapshot.d.ts.map +1 -0
  33. package/dist/contracts/snapshot.js +167 -0
  34. package/dist/contracts/snapshot.js.map +1 -0
  35. package/dist/data/args.d.ts +50 -0
  36. package/dist/data/args.d.ts.map +1 -0
  37. package/dist/data/args.js.map +1 -0
  38. package/dist/data/errors.d.ts +80 -0
  39. package/dist/data/errors.d.ts.map +1 -0
  40. package/dist/data/errors.js +116 -0
  41. package/dist/data/errors.js.map +1 -0
  42. package/dist/data/failure.d.ts.map +1 -0
  43. package/dist/data/failure.js +77 -0
  44. package/dist/data/failure.js.map +1 -0
  45. package/dist/data/index.d.ts +4 -0
  46. package/dist/data/index.d.ts.map +1 -0
  47. package/dist/data/index.js +5 -0
  48. package/dist/data/index.js.map +1 -0
  49. package/dist/data/internal.d.ts +7 -0
  50. package/dist/data/internal.d.ts.map +1 -0
  51. package/dist/data/internal.js +8 -0
  52. package/dist/data/internal.js.map +1 -0
  53. package/dist/data/params.d.ts +20 -0
  54. package/dist/data/params.d.ts.map +1 -0
  55. package/dist/data/params.js.map +1 -0
  56. package/dist/data/principal.d.ts +22 -0
  57. package/dist/data/principal.d.ts.map +1 -0
  58. package/dist/data/principal.js +49 -0
  59. package/dist/data/principal.js.map +1 -0
  60. package/dist/data/validator.d.ts +12 -0
  61. package/dist/data/validator.d.ts.map +1 -0
  62. package/dist/data/validator.js +35 -0
  63. package/dist/data/validator.js.map +1 -0
  64. package/dist/documents/address-source.d.ts +20 -0
  65. package/dist/documents/address-source.d.ts.map +1 -0
  66. package/dist/documents/address-source.js.map +1 -0
  67. package/dist/documents/definition.d.ts +84 -0
  68. package/dist/documents/definition.d.ts.map +1 -0
  69. package/dist/documents/definition.js +74 -0
  70. package/dist/documents/definition.js.map +1 -0
  71. package/dist/documents/documents.d.ts +126 -0
  72. package/dist/documents/documents.d.ts.map +1 -0
  73. package/dist/documents/documents.js +248 -0
  74. package/dist/documents/documents.js.map +1 -0
  75. package/dist/documents/fence.d.ts.map +1 -0
  76. package/dist/documents/fence.js.map +1 -0
  77. package/dist/documents/handles.d.ts +76 -0
  78. package/dist/documents/handles.d.ts.map +1 -0
  79. package/dist/documents/handles.js.map +1 -0
  80. package/dist/documents/index.d.ts.map +1 -0
  81. package/dist/documents/index.js.map +1 -0
  82. package/dist/documents/internal.d.ts +9 -0
  83. package/dist/documents/internal.d.ts.map +1 -0
  84. package/dist/documents/internal.js.map +1 -0
  85. package/dist/documents/keyed-slot.d.ts +103 -0
  86. package/dist/documents/keyed-slot.d.ts.map +1 -0
  87. package/dist/documents/keyed-slot.js +395 -0
  88. package/dist/documents/keyed-slot.js.map +1 -0
  89. package/dist/documents/line.d.ts.map +1 -0
  90. package/dist/documents/line.js.map +1 -0
  91. package/dist/documents/persistence.d.ts +104 -0
  92. package/dist/documents/persistence.d.ts.map +1 -0
  93. package/dist/documents/persistence.js +129 -0
  94. package/dist/documents/persistence.js.map +1 -0
  95. package/dist/documents/residency.d.ts +31 -0
  96. package/dist/documents/residency.d.ts.map +1 -0
  97. package/dist/documents/residency.js.map +1 -0
  98. package/dist/documents/slot.d.ts +109 -0
  99. package/dist/documents/slot.d.ts.map +1 -0
  100. package/dist/documents/slot.js +181 -0
  101. package/dist/documents/slot.js.map +1 -0
  102. package/dist/documents/transaction.d.ts +143 -0
  103. package/dist/documents/transaction.d.ts.map +1 -0
  104. package/dist/documents/transaction.js +442 -0
  105. package/dist/documents/transaction.js.map +1 -0
  106. package/dist/host/activity.d.ts +31 -0
  107. package/dist/host/activity.d.ts.map +1 -0
  108. package/dist/host/activity.js +40 -0
  109. package/dist/host/activity.js.map +1 -0
  110. package/dist/host/adapted.d.ts +49 -0
  111. package/dist/host/adapted.d.ts.map +1 -0
  112. package/dist/host/adapted.js.map +1 -0
  113. package/dist/host/attempt.d.ts +308 -0
  114. package/dist/host/attempt.d.ts.map +1 -0
  115. package/dist/host/attempt.js +1199 -0
  116. package/dist/host/attempt.js.map +1 -0
  117. package/dist/host/backoff.d.ts.map +1 -0
  118. package/dist/host/backoff.js.map +1 -0
  119. package/dist/host/ctx.d.ts +94 -0
  120. package/dist/host/ctx.d.ts.map +1 -0
  121. package/dist/host/ctx.js +200 -0
  122. package/dist/host/ctx.js.map +1 -0
  123. package/dist/host/deadline.d.ts.map +1 -0
  124. package/dist/host/deadline.js.map +1 -0
  125. package/dist/host/dependencies.d.ts.map +1 -0
  126. package/dist/host/dependencies.js.map +1 -0
  127. package/dist/host/destination.d.ts +48 -0
  128. package/dist/host/destination.d.ts.map +1 -0
  129. package/dist/host/destination.js.map +1 -0
  130. package/dist/host/facet.d.ts +84 -0
  131. package/dist/host/facet.d.ts.map +1 -0
  132. package/dist/host/facet.js.map +1 -0
  133. package/dist/host/follow.d.ts +52 -0
  134. package/dist/host/follow.d.ts.map +1 -0
  135. package/dist/host/follow.js.map +1 -0
  136. package/dist/host/host.d.ts +571 -0
  137. package/dist/host/host.d.ts.map +1 -0
  138. package/dist/host/host.js +1318 -0
  139. package/dist/host/host.js.map +1 -0
  140. package/dist/host/index.d.ts +17 -0
  141. package/dist/host/index.d.ts.map +1 -0
  142. package/dist/host/index.js.map +1 -0
  143. package/dist/host/internal.d.ts +11 -0
  144. package/dist/host/internal.d.ts.map +1 -0
  145. package/dist/host/internal.js +9 -0
  146. package/dist/host/internal.js.map +1 -0
  147. package/dist/host/members.d.ts +50 -0
  148. package/dist/host/members.d.ts.map +1 -0
  149. package/dist/host/members.js.map +1 -0
  150. package/dist/host/native.d.ts +64 -0
  151. package/dist/host/native.d.ts.map +1 -0
  152. package/dist/host/native.js +126 -0
  153. package/dist/host/native.js.map +1 -0
  154. package/dist/host/object.d.ts +331 -0
  155. package/dist/host/object.d.ts.map +1 -0
  156. package/dist/host/object.js +1296 -0
  157. package/dist/host/object.js.map +1 -0
  158. package/dist/host/old-work.d.ts +34 -0
  159. package/dist/host/old-work.d.ts.map +1 -0
  160. package/dist/host/old-work.js +52 -0
  161. package/dist/host/old-work.js.map +1 -0
  162. package/dist/host/parked.d.ts +23 -0
  163. package/dist/host/parked.d.ts.map +1 -0
  164. package/dist/host/parked.js.map +1 -0
  165. package/dist/host/presence.d.ts +34 -0
  166. package/dist/host/presence.d.ts.map +1 -0
  167. package/dist/host/presence.js.map +1 -0
  168. package/dist/host/readiness.d.ts +27 -0
  169. package/dist/host/readiness.d.ts.map +1 -0
  170. package/dist/host/readiness.js +134 -0
  171. package/dist/host/readiness.js.map +1 -0
  172. package/dist/host/ref-state.d.ts +53 -0
  173. package/dist/host/ref-state.d.ts.map +1 -0
  174. package/dist/host/ref-state.js +83 -0
  175. package/dist/host/ref-state.js.map +1 -0
  176. package/dist/host/reference-keys.d.ts +36 -0
  177. package/dist/host/reference-keys.d.ts.map +1 -0
  178. package/dist/host/reference-keys.js +168 -0
  179. package/dist/host/reference-keys.js.map +1 -0
  180. package/dist/host/reference-source.d.ts +65 -0
  181. package/dist/host/reference-source.d.ts.map +1 -0
  182. package/dist/host/reference-source.js +285 -0
  183. package/dist/host/reference-source.js.map +1 -0
  184. package/dist/host/reference.d.ts +321 -0
  185. package/dist/host/reference.d.ts.map +1 -0
  186. package/dist/host/reference.js +797 -0
  187. package/dist/host/reference.js.map +1 -0
  188. package/dist/host/reload-cycle.d.ts +16 -0
  189. package/dist/host/reload-cycle.d.ts.map +1 -0
  190. package/dist/host/reload-cycle.js +81 -0
  191. package/dist/host/reload-cycle.js.map +1 -0
  192. package/dist/host/retry-on.d.ts.map +1 -0
  193. package/dist/host/retry-on.js.map +1 -0
  194. package/dist/host/revocation.d.ts +16 -0
  195. package/dist/host/revocation.d.ts.map +1 -0
  196. package/dist/host/revocation.js.map +1 -0
  197. package/dist/host/root.d.ts +37 -0
  198. package/dist/host/root.d.ts.map +1 -0
  199. package/dist/host/root.js +68 -0
  200. package/dist/host/root.js.map +1 -0
  201. package/dist/host/route.d.ts +64 -0
  202. package/dist/host/route.d.ts.map +1 -0
  203. package/dist/host/route.js +227 -0
  204. package/dist/host/route.js.map +1 -0
  205. package/dist/host/routines.d.ts +78 -0
  206. package/dist/host/routines.d.ts.map +1 -0
  207. package/dist/host/routines.js +398 -0
  208. package/dist/host/routines.js.map +1 -0
  209. package/dist/host/sleep.d.ts +9 -0
  210. package/dist/host/sleep.d.ts.map +1 -0
  211. package/dist/host/sleep.js.map +1 -0
  212. package/dist/host/staging.d.ts +94 -0
  213. package/dist/host/staging.d.ts.map +1 -0
  214. package/dist/host/staging.js +304 -0
  215. package/dist/host/staging.js.map +1 -0
  216. package/dist/host/unbound-clock.d.ts +23 -0
  217. package/dist/host/unbound-clock.d.ts.map +1 -0
  218. package/dist/host/unbound-clock.js +58 -0
  219. package/dist/host/unbound-clock.js.map +1 -0
  220. package/dist/host/unbound.d.ts +37 -0
  221. package/dist/host/unbound.d.ts.map +1 -0
  222. package/dist/host/unbound.js +88 -0
  223. package/dist/host/unbound.js.map +1 -0
  224. package/dist/host/uuid.d.ts.map +1 -0
  225. package/dist/host/uuid.js.map +1 -0
  226. package/dist/index.d.ts +29 -19
  227. package/dist/index.d.ts.map +1 -1
  228. package/dist/index.js +20 -10
  229. package/dist/index.js.map +1 -1
  230. package/dist/jobs/definition.d.ts.map +1 -0
  231. package/dist/jobs/definition.js.map +1 -0
  232. package/dist/jobs/index.d.ts.map +1 -0
  233. package/dist/jobs/index.js.map +1 -0
  234. package/dist/jobs/internal.d.ts.map +1 -0
  235. package/dist/jobs/internal.js.map +1 -0
  236. package/dist/jobs/job.d.ts +149 -0
  237. package/dist/jobs/job.d.ts.map +1 -0
  238. package/dist/jobs/job.js +387 -0
  239. package/dist/jobs/job.js.map +1 -0
  240. package/dist/jobs/persisted.d.ts +38 -0
  241. package/dist/jobs/persisted.d.ts.map +1 -0
  242. package/dist/jobs/persisted.js.map +1 -0
  243. package/dist/jobs/records.d.ts +231 -0
  244. package/dist/jobs/records.d.ts.map +1 -0
  245. package/dist/jobs/records.js +871 -0
  246. package/dist/jobs/records.js.map +1 -0
  247. package/dist/jobs/run-states.d.ts +69 -0
  248. package/dist/jobs/run-states.d.ts.map +1 -0
  249. package/dist/jobs/run-states.js +228 -0
  250. package/dist/jobs/run-states.js.map +1 -0
  251. package/dist/jobs/run.d.ts +117 -0
  252. package/dist/jobs/run.d.ts.map +1 -0
  253. package/dist/jobs/run.js +204 -0
  254. package/dist/jobs/run.js.map +1 -0
  255. package/dist/jobs/running.d.ts +44 -0
  256. package/dist/jobs/running.d.ts.map +1 -0
  257. package/dist/jobs/running.js.map +1 -0
  258. package/dist/jobs/stored.d.ts +63 -0
  259. package/dist/jobs/stored.d.ts.map +1 -0
  260. package/dist/jobs/stored.js.map +1 -0
  261. package/dist/link/binary.d.ts.map +1 -0
  262. package/dist/link/binary.js +544 -0
  263. package/dist/link/binary.js.map +1 -0
  264. package/dist/link/channel.d.ts +68 -0
  265. package/dist/link/channel.d.ts.map +1 -0
  266. package/dist/link/channel.js +215 -0
  267. package/dist/link/channel.js.map +1 -0
  268. package/dist/link/errors.d.ts.map +1 -0
  269. package/dist/link/errors.js.map +1 -0
  270. package/dist/link/index.d.ts.map +1 -0
  271. package/dist/link/index.js.map +1 -0
  272. package/dist/link/internal.d.ts.map +1 -0
  273. package/dist/link/internal.js.map +1 -0
  274. package/dist/link/ipc.d.ts.map +1 -0
  275. package/dist/link/ipc.js.map +1 -0
  276. package/dist/link/link.d.ts.map +1 -0
  277. package/dist/link/link.js.map +1 -0
  278. package/dist/link/message.d.ts +262 -0
  279. package/dist/link/message.d.ts.map +1 -0
  280. package/dist/link/message.js +156 -0
  281. package/dist/link/message.js.map +1 -0
  282. package/dist/link/part.d.ts +80 -0
  283. package/dist/link/part.d.ts.map +1 -0
  284. package/dist/link/part.js +165 -0
  285. package/dist/link/part.js.map +1 -0
  286. package/dist/link/text.d.ts.map +1 -0
  287. package/dist/link/text.js +355 -0
  288. package/dist/link/text.js.map +1 -0
  289. package/dist/link/values.d.ts.map +1 -0
  290. package/dist/link/values.js +121 -0
  291. package/dist/link/values.js.map +1 -0
  292. package/dist/link/websocket.d.ts.map +1 -0
  293. package/dist/link/websocket.js.map +1 -0
  294. package/dist/node/app/app.d.ts +269 -0
  295. package/dist/node/app/app.d.ts.map +1 -0
  296. package/dist/node/app/app.js +513 -0
  297. package/dist/node/app/app.js.map +1 -0
  298. package/dist/node/app/archive.d.ts +37 -0
  299. package/dist/node/app/archive.d.ts.map +1 -0
  300. package/dist/node/app/archive.js +204 -0
  301. package/dist/node/app/archive.js.map +1 -0
  302. package/dist/node/app/blobs.d.ts +23 -0
  303. package/dist/node/app/blobs.d.ts.map +1 -0
  304. package/dist/node/app/blobs.js +64 -0
  305. package/dist/node/app/blobs.js.map +1 -0
  306. package/dist/node/app/data.d.ts +35 -0
  307. package/dist/node/app/data.d.ts.map +1 -0
  308. package/dist/node/app/data.js +44 -0
  309. package/dist/node/app/data.js.map +1 -0
  310. package/dist/node/app/ephemeral-sessions.d.ts +20 -0
  311. package/dist/node/app/ephemeral-sessions.d.ts.map +1 -0
  312. package/dist/node/app/ephemeral-sessions.js +69 -0
  313. package/dist/node/app/ephemeral-sessions.js.map +1 -0
  314. package/dist/node/app/ephemeral.d.ts +11 -0
  315. package/dist/node/app/ephemeral.d.ts.map +1 -0
  316. package/dist/node/app/ephemeral.js +34 -0
  317. package/dist/node/app/ephemeral.js.map +1 -0
  318. package/dist/node/app/files-copy.d.ts +13 -0
  319. package/dist/node/app/files-copy.d.ts.map +1 -0
  320. package/dist/node/app/files-copy.js +86 -0
  321. package/dist/node/app/files-copy.js.map +1 -0
  322. package/dist/node/app/files-entry.d.ts +4 -0
  323. package/dist/node/app/files-entry.d.ts.map +1 -0
  324. package/dist/node/app/files-entry.js +7 -0
  325. package/dist/node/app/files-entry.js.map +1 -0
  326. package/dist/node/app/files-index.d.ts +180 -0
  327. package/dist/node/app/files-index.d.ts.map +1 -0
  328. package/dist/node/app/files-index.js +535 -0
  329. package/dist/node/app/files-index.js.map +1 -0
  330. package/dist/node/app/files.d.ts +363 -0
  331. package/dist/node/app/files.d.ts.map +1 -0
  332. package/dist/node/app/files.js +368 -0
  333. package/dist/node/app/files.js.map +1 -0
  334. package/dist/node/app/folder-views.d.ts +21 -0
  335. package/dist/node/app/folder-views.d.ts.map +1 -0
  336. package/dist/node/app/folder-views.js +55 -0
  337. package/dist/node/app/folder-views.js.map +1 -0
  338. package/dist/node/app/index.d.ts +12 -0
  339. package/dist/node/app/index.d.ts.map +1 -0
  340. package/dist/node/app/index.js +15 -0
  341. package/dist/node/app/index.js.map +1 -0
  342. package/dist/node/app/info.d.ts +66 -0
  343. package/dist/node/app/info.d.ts.map +1 -0
  344. package/dist/node/app/info.js +37 -0
  345. package/dist/node/app/info.js.map +1 -0
  346. package/dist/node/app/invite.d.ts +5 -0
  347. package/dist/node/app/invite.d.ts.map +1 -0
  348. package/dist/node/app/invite.js +64 -0
  349. package/dist/node/app/invite.js.map +1 -0
  350. package/dist/node/app/layout.d.ts +36 -0
  351. package/dist/node/app/layout.d.ts.map +1 -0
  352. package/dist/node/app/layout.js +87 -0
  353. package/dist/node/app/layout.js.map +1 -0
  354. package/dist/node/app/owner.d.ts +31 -0
  355. package/dist/node/app/owner.d.ts.map +1 -0
  356. package/dist/node/app/owner.js +104 -0
  357. package/dist/node/app/owner.js.map +1 -0
  358. package/dist/node/app/pairing.d.ts +55 -0
  359. package/dist/node/app/pairing.d.ts.map +1 -0
  360. package/dist/node/app/pairing.js +183 -0
  361. package/dist/node/app/pairing.js.map +1 -0
  362. package/dist/node/app/secrets.d.ts +16 -0
  363. package/dist/node/app/secrets.d.ts.map +1 -0
  364. package/dist/node/app/secrets.js +72 -0
  365. package/dist/node/app/secrets.js.map +1 -0
  366. package/dist/node/app/sessions.d.ts +72 -0
  367. package/dist/node/app/sessions.d.ts.map +1 -0
  368. package/dist/node/app/sessions.js +222 -0
  369. package/dist/node/app/sessions.js.map +1 -0
  370. package/dist/node/app/tar.d.ts +24 -0
  371. package/dist/node/app/tar.d.ts.map +1 -0
  372. package/dist/node/app/tar.js +167 -0
  373. package/dist/node/app/tar.js.map +1 -0
  374. package/dist/node/app/uploads.d.ts +37 -0
  375. package/dist/node/app/uploads.d.ts.map +1 -0
  376. package/dist/node/app/uploads.js +157 -0
  377. package/dist/node/app/uploads.js.map +1 -0
  378. package/dist/node/app/users.d.ts +37 -0
  379. package/dist/node/app/users.d.ts.map +1 -0
  380. package/dist/node/app/users.js +62 -0
  381. package/dist/node/app/users.js.map +1 -0
  382. package/dist/node/app/worker.d.ts +18 -0
  383. package/dist/node/app/worker.d.ts.map +1 -0
  384. package/dist/node/app/worker.js +84 -0
  385. package/dist/node/app/worker.js.map +1 -0
  386. package/dist/node/compression.d.ts +7 -0
  387. package/dist/node/compression.d.ts.map +1 -0
  388. package/dist/node/compression.js +25 -0
  389. package/dist/node/compression.js.map +1 -0
  390. package/dist/node/http/admission.d.ts.map +1 -0
  391. package/dist/node/http/admission.js.map +1 -0
  392. package/dist/node/http/authenticate.d.ts +21 -0
  393. package/dist/node/http/authenticate.d.ts.map +1 -0
  394. package/dist/node/http/authenticate.js +34 -0
  395. package/dist/node/http/authenticate.js.map +1 -0
  396. package/dist/node/http/cookies.d.ts +32 -0
  397. package/dist/node/http/cookies.d.ts.map +1 -0
  398. package/dist/node/http/cookies.js +70 -0
  399. package/dist/node/http/cookies.js.map +1 -0
  400. package/dist/node/http/file.d.ts.map +1 -0
  401. package/dist/node/http/file.js.map +1 -0
  402. package/dist/node/http/headers.d.ts.map +1 -0
  403. package/dist/node/http/headers.js +136 -0
  404. package/dist/node/http/headers.js.map +1 -0
  405. package/dist/node/http/http.d.ts +111 -0
  406. package/dist/node/http/http.d.ts.map +1 -0
  407. package/dist/node/http/http.js +524 -0
  408. package/dist/node/http/http.js.map +1 -0
  409. package/dist/node/http/incoming.d.ts.map +1 -0
  410. package/dist/node/http/incoming.js.map +1 -0
  411. package/dist/node/http/index.d.ts +11 -0
  412. package/dist/node/http/index.d.ts.map +1 -0
  413. package/dist/node/http/index.js +12 -0
  414. package/dist/node/http/index.js.map +1 -0
  415. package/dist/node/http/node.d.ts.map +1 -0
  416. package/dist/node/http/node.js.map +1 -0
  417. package/dist/node/http/request.d.ts +60 -0
  418. package/dist/node/http/request.d.ts.map +1 -0
  419. package/dist/node/http/request.js +118 -0
  420. package/dist/node/http/request.js.map +1 -0
  421. package/dist/node/http/response.d.ts +63 -0
  422. package/dist/node/http/response.d.ts.map +1 -0
  423. package/dist/node/http/response.js.map +1 -0
  424. package/dist/node/http/router.d.ts +132 -0
  425. package/dist/node/http/router.d.ts.map +1 -0
  426. package/dist/node/http/router.js +267 -0
  427. package/dist/node/http/router.js.map +1 -0
  428. package/dist/node/http/upgrades.d.ts +61 -0
  429. package/dist/node/http/upgrades.d.ts.map +1 -0
  430. package/dist/node/http/upgrades.js +192 -0
  431. package/dist/node/http/upgrades.js.map +1 -0
  432. package/dist/node/plugins/base-inputs.d.ts +14 -0
  433. package/dist/node/plugins/base-inputs.d.ts.map +1 -0
  434. package/dist/node/plugins/base-inputs.js +33 -0
  435. package/dist/node/plugins/base-inputs.js.map +1 -0
  436. package/dist/node/plugins/build.d.ts +77 -0
  437. package/dist/node/plugins/build.d.ts.map +1 -0
  438. package/dist/node/plugins/build.js +576 -0
  439. package/dist/node/plugins/build.js.map +1 -0
  440. package/dist/node/plugins/css-modules.d.ts +13 -0
  441. package/dist/node/plugins/css-modules.d.ts.map +1 -0
  442. package/dist/node/plugins/css-modules.js +58 -0
  443. package/dist/node/plugins/css-modules.js.map +1 -0
  444. package/dist/node/plugins/discover.d.ts +67 -0
  445. package/dist/node/plugins/discover.d.ts.map +1 -0
  446. package/dist/node/plugins/discover.js +369 -0
  447. package/dist/node/plugins/discover.js.map +1 -0
  448. package/dist/node/plugins/evaluate.d.ts +33 -0
  449. package/dist/node/plugins/evaluate.d.ts.map +1 -0
  450. package/dist/node/plugins/evaluate.js +121 -0
  451. package/dist/node/plugins/evaluate.js.map +1 -0
  452. package/dist/node/plugins/index.d.ts +11 -0
  453. package/dist/node/plugins/index.d.ts.map +1 -0
  454. package/dist/node/plugins/index.js +13 -0
  455. package/dist/node/plugins/index.js.map +1 -0
  456. package/dist/node/plugins/install.d.ts +38 -0
  457. package/dist/node/plugins/install.d.ts.map +1 -0
  458. package/dist/node/plugins/install.js +213 -0
  459. package/dist/node/plugins/install.js.map +1 -0
  460. package/dist/node/plugins/plugins.d.ts +162 -0
  461. package/dist/node/plugins/plugins.d.ts.map +1 -0
  462. package/dist/node/plugins/plugins.js +244 -0
  463. package/dist/node/plugins/plugins.js.map +1 -0
  464. package/dist/node/plugins/runtime.d.ts +57 -0
  465. package/dist/node/plugins/runtime.d.ts.map +1 -0
  466. package/dist/node/plugins/runtime.js +92 -0
  467. package/dist/node/plugins/runtime.js.map +1 -0
  468. package/dist/node/plugins/stack.d.ts.map +1 -0
  469. package/dist/node/plugins/stack.js.map +1 -0
  470. package/dist/node/plugins/testing.d.ts +58 -0
  471. package/dist/node/plugins/testing.d.ts.map +1 -0
  472. package/dist/node/plugins/testing.js +210 -0
  473. package/dist/node/plugins/testing.js.map +1 -0
  474. package/dist/node/plugins/watcher.d.ts +69 -0
  475. package/dist/node/plugins/watcher.d.ts.map +1 -0
  476. package/dist/node/plugins/watcher.js +622 -0
  477. package/dist/node/plugins/watcher.js.map +1 -0
  478. package/dist/node/surfaces/bundle.d.ts +31 -0
  479. package/dist/node/surfaces/bundle.d.ts.map +1 -0
  480. package/dist/node/surfaces/bundle.js +118 -0
  481. package/dist/node/surfaces/bundle.js.map +1 -0
  482. package/dist/node/surfaces/current.d.ts +17 -0
  483. package/dist/node/surfaces/current.d.ts.map +1 -0
  484. package/dist/node/surfaces/current.js +54 -0
  485. package/dist/node/surfaces/current.js.map +1 -0
  486. package/dist/node/surfaces/index.d.ts +6 -0
  487. package/dist/node/surfaces/index.d.ts.map +1 -0
  488. package/dist/node/surfaces/index.js +6 -0
  489. package/dist/node/surfaces/index.js.map +1 -0
  490. package/dist/node/surfaces/published.d.ts +27 -0
  491. package/dist/node/surfaces/published.d.ts.map +1 -0
  492. package/dist/node/surfaces/published.js +142 -0
  493. package/dist/node/surfaces/published.js.map +1 -0
  494. package/dist/node/surfaces/served.d.ts +15 -0
  495. package/dist/node/surfaces/served.d.ts.map +1 -0
  496. package/dist/node/surfaces/served.js +42 -0
  497. package/dist/node/surfaces/served.js.map +1 -0
  498. package/dist/node/surfaces/surface-build.d.ts +53 -0
  499. package/dist/node/surfaces/surface-build.d.ts.map +1 -0
  500. package/dist/node/surfaces/surface-build.js +105 -0
  501. package/dist/node/surfaces/surface-build.js.map +1 -0
  502. package/dist/node/surfaces/tui.d.ts +40 -0
  503. package/dist/node/surfaces/tui.d.ts.map +1 -0
  504. package/dist/node/surfaces/tui.js +55 -0
  505. package/dist/node/surfaces/tui.js.map +1 -0
  506. package/dist/node/surfaces/web.d.ts +56 -0
  507. package/dist/node/surfaces/web.d.ts.map +1 -0
  508. package/dist/node/surfaces/web.js +108 -0
  509. package/dist/node/surfaces/web.js.map +1 -0
  510. package/dist/node/tui/actions.d.ts +49 -0
  511. package/dist/node/tui/actions.d.ts.map +1 -0
  512. package/dist/node/tui/actions.js +195 -0
  513. package/dist/node/tui/actions.js.map +1 -0
  514. package/dist/node/tui/credentials.d.ts +17 -0
  515. package/dist/node/tui/credentials.d.ts.map +1 -0
  516. package/dist/node/tui/credentials.js +54 -0
  517. package/dist/node/tui/credentials.js.map +1 -0
  518. package/dist/node/tui/filter.d.ts +5 -0
  519. package/dist/node/tui/filter.d.ts.map +1 -0
  520. package/dist/node/tui/filter.js +79 -0
  521. package/dist/node/tui/filter.js.map +1 -0
  522. package/dist/node/tui/index.d.ts +6 -0
  523. package/dist/node/tui/index.d.ts.map +1 -0
  524. package/dist/node/tui/index.js +6 -0
  525. package/dist/node/tui/index.js.map +1 -0
  526. package/dist/node/tui/launcher.d.ts +40 -0
  527. package/dist/node/tui/launcher.d.ts.map +1 -0
  528. package/dist/node/tui/launcher.js +439 -0
  529. package/dist/node/tui/launcher.js.map +1 -0
  530. package/dist/node/tui/pipe.d.ts +18 -0
  531. package/dist/node/tui/pipe.d.ts.map +1 -0
  532. package/dist/node/tui/pipe.js +134 -0
  533. package/dist/node/tui/pipe.js.map +1 -0
  534. package/dist/node/tui/sandbox.d.ts +54 -0
  535. package/dist/node/tui/sandbox.d.ts.map +1 -0
  536. package/dist/node/tui/sandbox.js +431 -0
  537. package/dist/node/tui/sandbox.js.map +1 -0
  538. package/dist/node/workers/base.d.ts +30 -0
  539. package/dist/node/workers/base.d.ts.map +1 -0
  540. package/dist/node/workers/base.js +255 -0
  541. package/dist/node/workers/base.js.map +1 -0
  542. package/dist/node/workers/child.d.ts +4 -0
  543. package/dist/node/workers/child.d.ts.map +1 -0
  544. package/dist/node/workers/child.js +6 -0
  545. package/dist/node/workers/child.js.map +1 -0
  546. package/dist/node/workers/control.d.ts +83 -0
  547. package/dist/node/workers/control.d.ts.map +1 -0
  548. package/dist/node/workers/control.js +77 -0
  549. package/dist/node/workers/control.js.map +1 -0
  550. package/dist/node/workers/index.d.ts +4 -0
  551. package/dist/node/workers/index.d.ts.map +1 -0
  552. package/dist/node/workers/index.js +7 -0
  553. package/dist/node/workers/index.js.map +1 -0
  554. package/dist/node/workers/lock.d.ts +30 -0
  555. package/dist/node/workers/lock.d.ts.map +1 -0
  556. package/dist/node/workers/lock.js +180 -0
  557. package/dist/node/workers/lock.js.map +1 -0
  558. package/dist/node/workers/main.d.ts +46 -0
  559. package/dist/node/workers/main.d.ts.map +1 -0
  560. package/dist/node/workers/main.js +230 -0
  561. package/dist/node/workers/main.js.map +1 -0
  562. package/dist/node/workers/process.d.ts +42 -0
  563. package/dist/node/workers/process.d.ts.map +1 -0
  564. package/dist/node/workers/process.js +125 -0
  565. package/dist/node/workers/process.js.map +1 -0
  566. package/dist/node/workers/workers.d.ts +122 -0
  567. package/dist/node/workers/workers.d.ts.map +1 -0
  568. package/dist/node/workers/workers.js +677 -0
  569. package/dist/node/workers/workers.js.map +1 -0
  570. package/dist/react/hooks.d.ts +43 -0
  571. package/dist/react/hooks.d.ts.map +1 -0
  572. package/dist/react/hooks.js +82 -0
  573. package/dist/react/hooks.js.map +1 -0
  574. package/dist/react/index.d.ts +3 -0
  575. package/dist/react/index.d.ts.map +1 -0
  576. package/dist/react/index.js +4 -0
  577. package/dist/react/index.js.map +1 -0
  578. package/dist/react/stores.d.ts +9 -0
  579. package/dist/react/stores.d.ts.map +1 -0
  580. package/dist/react/stores.js +37 -0
  581. package/dist/react/stores.js.map +1 -0
  582. package/dist/registries/contribution.d.ts.map +1 -0
  583. package/dist/registries/contribution.js.map +1 -0
  584. package/dist/registries/entries.d.ts.map +1 -0
  585. package/dist/registries/entries.js.map +1 -0
  586. package/dist/registries/index.d.ts.map +1 -0
  587. package/dist/registries/index.js.map +1 -0
  588. package/dist/registries/internal.d.ts.map +1 -0
  589. package/dist/registries/internal.js.map +1 -0
  590. package/dist/registries/record.d.ts +115 -0
  591. package/dist/registries/record.d.ts.map +1 -0
  592. package/dist/registries/record.js +283 -0
  593. package/dist/registries/record.js.map +1 -0
  594. package/dist/registries/registry.d.ts +74 -0
  595. package/dist/registries/registry.d.ts.map +1 -0
  596. package/dist/registries/registry.js.map +1 -0
  597. package/dist/registries/value.d.ts.map +1 -0
  598. package/dist/registries/value.js +224 -0
  599. package/dist/registries/value.js.map +1 -0
  600. package/dist/remote/calls.d.ts.map +1 -0
  601. package/dist/remote/calls.js.map +1 -0
  602. package/dist/remote/consumer.d.ts +43 -0
  603. package/dist/remote/consumer.d.ts.map +1 -0
  604. package/dist/remote/consumer.js +350 -0
  605. package/dist/remote/consumer.js.map +1 -0
  606. package/dist/remote/hold.d.ts +141 -0
  607. package/dist/remote/hold.d.ts.map +1 -0
  608. package/dist/remote/hold.js +579 -0
  609. package/dist/remote/hold.js.map +1 -0
  610. package/dist/remote/host-link.d.ts +77 -0
  611. package/dist/remote/host-link.d.ts.map +1 -0
  612. package/dist/remote/host-link.js +184 -0
  613. package/dist/remote/host-link.js.map +1 -0
  614. package/dist/remote/internal.d.ts.map +1 -0
  615. package/dist/remote/internal.js.map +1 -0
  616. package/dist/remote/path.d.ts.map +1 -0
  617. package/dist/remote/path.js.map +1 -0
  618. package/dist/remote/provider.d.ts +89 -0
  619. package/dist/remote/provider.d.ts.map +1 -0
  620. package/dist/remote/provider.js +597 -0
  621. package/dist/remote/provider.js.map +1 -0
  622. package/dist/remote/relay.d.ts +69 -0
  623. package/dist/remote/relay.d.ts.map +1 -0
  624. package/dist/remote/relay.js +219 -0
  625. package/dist/remote/relay.js.map +1 -0
  626. package/dist/remote/remote-object.d.ts +138 -0
  627. package/dist/remote/remote-object.d.ts.map +1 -0
  628. package/dist/remote/remote-object.js +492 -0
  629. package/dist/remote/remote-object.js.map +1 -0
  630. package/dist/remote/replica.d.ts +59 -0
  631. package/dist/remote/replica.d.ts.map +1 -0
  632. package/dist/remote/replica.js +125 -0
  633. package/dist/remote/replica.js.map +1 -0
  634. package/dist/sqlite/node.d.ts +9 -1
  635. package/dist/sqlite/node.d.ts.map +1 -1
  636. package/dist/sqlite/node.js +9 -3
  637. package/dist/sqlite/node.js.map +1 -1
  638. package/dist/state/batch.d.ts +64 -0
  639. package/dist/state/batch.d.ts.map +1 -0
  640. package/dist/state/batch.js +164 -0
  641. package/dist/state/batch.js.map +1 -0
  642. package/dist/state/derive.d.ts +52 -0
  643. package/dist/state/derive.d.ts.map +1 -0
  644. package/dist/state/derive.js +182 -0
  645. package/dist/state/derive.js.map +1 -0
  646. package/dist/state/index.d.ts +6 -0
  647. package/dist/state/index.d.ts.map +1 -0
  648. package/dist/state/index.js.map +1 -0
  649. package/dist/state/internal.d.ts.map +1 -0
  650. package/dist/state/internal.js.map +1 -0
  651. package/dist/state/native-source.d.ts +106 -0
  652. package/dist/state/native-source.d.ts.map +1 -0
  653. package/dist/state/native-source.js +240 -0
  654. package/dist/state/native-source.js.map +1 -0
  655. package/dist/state/watchable.d.ts +114 -0
  656. package/dist/state/watchable.d.ts.map +1 -0
  657. package/dist/state/watchable.js +156 -0
  658. package/dist/state/watchable.js.map +1 -0
  659. package/dist/state/writable.d.ts +32 -0
  660. package/dist/state/writable.d.ts.map +1 -0
  661. package/dist/state/writable.js.map +1 -0
  662. package/dist/store/adapter.d.ts +67 -0
  663. package/dist/store/adapter.d.ts.map +1 -0
  664. package/dist/store/adapter.js.map +1 -0
  665. package/dist/store/allocator.d.ts.map +1 -0
  666. package/dist/store/allocator.js.map +1 -0
  667. package/dist/store/applier.d.ts.map +1 -0
  668. package/dist/store/applier.js.map +1 -0
  669. package/dist/store/apply-batch.d.ts +12 -0
  670. package/dist/store/apply-batch.d.ts.map +1 -0
  671. package/dist/store/apply-batch.js.map +1 -0
  672. package/dist/store/archive.d.ts +32 -0
  673. package/dist/store/archive.d.ts.map +1 -0
  674. package/dist/store/archive.js +130 -0
  675. package/dist/store/archive.js.map +1 -0
  676. package/dist/store/backend.d.ts +10 -0
  677. package/dist/store/backend.d.ts.map +1 -0
  678. package/dist/store/backend.js.map +1 -0
  679. package/dist/store/catalog.d.ts +24 -0
  680. package/dist/store/catalog.d.ts.map +1 -0
  681. package/dist/store/catalog.js.map +1 -0
  682. package/dist/store/claims.d.ts.map +1 -0
  683. package/dist/store/claims.js.map +1 -0
  684. package/dist/store/columns.d.ts.map +1 -0
  685. package/dist/store/columns.js.map +1 -0
  686. package/dist/store/engine.d.ts +176 -0
  687. package/dist/store/engine.d.ts.map +1 -0
  688. package/dist/store/engine.js +283 -0
  689. package/dist/store/engine.js.map +1 -0
  690. package/dist/store/evaluate.d.ts +17 -0
  691. package/dist/store/evaluate.d.ts.map +1 -0
  692. package/dist/store/evaluate.js.map +1 -0
  693. package/dist/store/export.d.ts +17 -0
  694. package/dist/store/export.d.ts.map +1 -0
  695. package/dist/store/export.js +200 -0
  696. package/dist/store/export.js.map +1 -0
  697. package/dist/store/expression.d.ts +150 -0
  698. package/dist/store/expression.d.ts.map +1 -0
  699. package/dist/store/expression.js.map +1 -0
  700. package/dist/store/import.d.ts +10 -0
  701. package/dist/store/import.d.ts.map +1 -0
  702. package/dist/store/import.js +276 -0
  703. package/dist/store/import.js.map +1 -0
  704. package/dist/store/index.d.ts.map +1 -0
  705. package/dist/store/index.js.map +1 -0
  706. package/dist/store/json-column.d.ts +33 -0
  707. package/dist/store/json-column.d.ts.map +1 -0
  708. package/dist/store/json-column.js +62 -0
  709. package/dist/store/json-column.js.map +1 -0
  710. package/dist/store/jsonl.d.ts.map +1 -0
  711. package/dist/store/jsonl.js.map +1 -0
  712. package/dist/store/live-query.d.ts +108 -0
  713. package/dist/store/live-query.d.ts.map +1 -0
  714. package/dist/store/live-query.js +254 -0
  715. package/dist/store/live-query.js.map +1 -0
  716. package/dist/store/outbox.d.ts +26 -0
  717. package/dist/store/outbox.d.ts.map +1 -0
  718. package/dist/store/outbox.js.map +1 -0
  719. package/dist/store/query.d.ts +39 -0
  720. package/dist/store/query.d.ts.map +1 -0
  721. package/dist/store/query.js.map +1 -0
  722. package/dist/store/refusal.d.ts.map +1 -0
  723. package/dist/store/refusal.js.map +1 -0
  724. package/dist/store/rows.d.ts +80 -0
  725. package/dist/store/rows.d.ts.map +1 -0
  726. package/dist/store/rows.js.map +1 -0
  727. package/dist/store/schema.d.ts +25 -0
  728. package/dist/store/schema.d.ts.map +1 -0
  729. package/dist/store/schema.js +115 -0
  730. package/dist/store/schema.js.map +1 -0
  731. package/dist/store/sql.d.ts +73 -0
  732. package/dist/store/sql.d.ts.map +1 -0
  733. package/dist/store/sql.js.map +1 -0
  734. package/dist/store/step.d.ts +50 -0
  735. package/dist/store/step.d.ts.map +1 -0
  736. package/dist/store/step.js +52 -0
  737. package/dist/store/step.js.map +1 -0
  738. package/dist/store/store.d.ts +171 -0
  739. package/dist/store/store.d.ts.map +1 -0
  740. package/dist/store/store.js +818 -0
  741. package/dist/store/store.js.map +1 -0
  742. package/dist/store/table-changes.d.ts +29 -0
  743. package/dist/store/table-changes.d.ts.map +1 -0
  744. package/dist/store/table-changes.js.map +1 -0
  745. package/dist/store/table-evolve.d.ts.map +1 -0
  746. package/dist/store/table-evolve.js.map +1 -0
  747. package/dist/store/table-handle.d.ts +73 -0
  748. package/dist/store/table-handle.d.ts.map +1 -0
  749. package/dist/store/table-handle.js +101 -0
  750. package/dist/store/table-handle.js.map +1 -0
  751. package/dist/store/table-history.d.ts.map +1 -0
  752. package/dist/store/table-history.js.map +1 -0
  753. package/dist/store/table-migration.d.ts +16 -0
  754. package/dist/store/table-migration.d.ts.map +1 -0
  755. package/dist/store/table-migration.js +202 -0
  756. package/dist/store/table-migration.js.map +1 -0
  757. package/dist/store/table-writes.d.ts.map +1 -0
  758. package/dist/store/table-writes.js +170 -0
  759. package/dist/store/table-writes.js.map +1 -0
  760. package/dist/store/table.d.ts +80 -0
  761. package/dist/store/table.d.ts.map +1 -0
  762. package/dist/store/table.js.map +1 -0
  763. package/dist/store/text.d.ts.map +1 -0
  764. package/dist/store/text.js.map +1 -0
  765. package/dist/store/writes.d.ts.map +1 -0
  766. package/dist/store/writes.js.map +1 -0
  767. package/dist/surfaces/active-language.d.ts +20 -0
  768. package/dist/surfaces/active-language.d.ts.map +1 -0
  769. package/dist/surfaces/active-language.js +78 -0
  770. package/dist/surfaces/active-language.js.map +1 -0
  771. package/dist/surfaces/active-theme.d.ts +16 -0
  772. package/dist/surfaces/active-theme.d.ts.map +1 -0
  773. package/dist/surfaces/active-theme.js +47 -0
  774. package/dist/surfaces/active-theme.js.map +1 -0
  775. package/dist/surfaces/client.d.ts +96 -0
  776. package/dist/surfaces/client.d.ts.map +1 -0
  777. package/dist/surfaces/client.js +264 -0
  778. package/dist/surfaces/client.js.map +1 -0
  779. package/dist/surfaces/connection.d.ts +49 -0
  780. package/dist/surfaces/connection.d.ts.map +1 -0
  781. package/dist/surfaces/connection.js +142 -0
  782. package/dist/surfaces/connection.js.map +1 -0
  783. package/dist/surfaces/format.d.ts +5 -0
  784. package/dist/surfaces/format.d.ts.map +1 -0
  785. package/dist/surfaces/format.js +37 -0
  786. package/dist/surfaces/format.js.map +1 -0
  787. package/dist/surfaces/index.d.ts +15 -0
  788. package/dist/surfaces/index.d.ts.map +1 -0
  789. package/dist/surfaces/index.js +18 -0
  790. package/dist/surfaces/index.js.map +1 -0
  791. package/dist/surfaces/language.d.ts +53 -0
  792. package/dist/surfaces/language.d.ts.map +1 -0
  793. package/dist/surfaces/language.js +74 -0
  794. package/dist/surfaces/language.js.map +1 -0
  795. package/dist/surfaces/loaded.d.ts +42 -0
  796. package/dist/surfaces/loaded.d.ts.map +1 -0
  797. package/dist/surfaces/loaded.js +116 -0
  798. package/dist/surfaces/loaded.js.map +1 -0
  799. package/dist/surfaces/locale-choice.d.ts +25 -0
  800. package/dist/surfaces/locale-choice.d.ts.map +1 -0
  801. package/dist/surfaces/locale-choice.js +14 -0
  802. package/dist/surfaces/locale-choice.js.map +1 -0
  803. package/dist/surfaces/messages.d.ts +67 -0
  804. package/dist/surfaces/messages.d.ts.map +1 -0
  805. package/dist/surfaces/messages.js +112 -0
  806. package/dist/surfaces/messages.js.map +1 -0
  807. package/dist/surfaces/page-state.d.ts +14 -0
  808. package/dist/surfaces/page-state.d.ts.map +1 -0
  809. package/dist/surfaces/page-state.js +43 -0
  810. package/dist/surfaces/page-state.js.map +1 -0
  811. package/dist/surfaces/preference.d.ts +32 -0
  812. package/dist/surfaces/preference.d.ts.map +1 -0
  813. package/dist/surfaces/preference.js +72 -0
  814. package/dist/surfaces/preference.js.map +1 -0
  815. package/dist/surfaces/registered.d.ts +33 -0
  816. package/dist/surfaces/registered.d.ts.map +1 -0
  817. package/dist/surfaces/registered.js +51 -0
  818. package/dist/surfaces/registered.js.map +1 -0
  819. package/dist/surfaces/scripts.d.ts +84 -0
  820. package/dist/surfaces/scripts.d.ts.map +1 -0
  821. package/dist/surfaces/scripts.js +28 -0
  822. package/dist/surfaces/scripts.js.map +1 -0
  823. package/dist/surfaces/theme-choice.d.ts +31 -0
  824. package/dist/surfaces/theme-choice.d.ts.map +1 -0
  825. package/dist/surfaces/theme-choice.js +18 -0
  826. package/dist/surfaces/theme-choice.js.map +1 -0
  827. package/dist/surfaces/themes.d.ts +43 -0
  828. package/dist/surfaces/themes.d.ts.map +1 -0
  829. package/dist/surfaces/themes.js +110 -0
  830. package/dist/surfaces/themes.js.map +1 -0
  831. package/dist/surfaces/translations.d.ts +29 -0
  832. package/dist/surfaces/translations.d.ts.map +1 -0
  833. package/dist/surfaces/translations.js +57 -0
  834. package/dist/surfaces/translations.js.map +1 -0
  835. package/dist/sync/batch.d.ts +18 -0
  836. package/dist/sync/batch.d.ts.map +1 -0
  837. package/dist/sync/batch.js +125 -0
  838. package/dist/sync/batch.js.map +1 -0
  839. package/dist/sync/client.d.ts +166 -0
  840. package/dist/sync/client.d.ts.map +1 -0
  841. package/dist/sync/client.js +438 -0
  842. package/dist/sync/client.js.map +1 -0
  843. package/dist/sync/files.d.ts +46 -0
  844. package/dist/sync/files.d.ts.map +1 -0
  845. package/dist/sync/files.js +13 -0
  846. package/dist/sync/files.js.map +1 -0
  847. package/dist/sync/filesystem.d.ts +37 -0
  848. package/dist/sync/filesystem.d.ts.map +1 -0
  849. package/dist/sync/filesystem.js +185 -0
  850. package/dist/sync/filesystem.js.map +1 -0
  851. package/dist/sync/index.d.ts +8 -0
  852. package/dist/sync/index.d.ts.map +1 -0
  853. package/dist/sync/index.js +9 -0
  854. package/dist/sync/index.js.map +1 -0
  855. package/dist/sync/lines.d.ts +18 -0
  856. package/dist/sync/lines.d.ts.map +1 -0
  857. package/dist/sync/lines.js +46 -0
  858. package/dist/sync/lines.js.map +1 -0
  859. package/dist/sync/remote.d.ts +130 -0
  860. package/dist/sync/remote.d.ts.map +1 -0
  861. package/dist/sync/remote.js +46 -0
  862. package/dist/sync/remote.js.map +1 -0
  863. package/dist/sync/state.d.ts +17 -0
  864. package/dist/sync/state.d.ts.map +1 -0
  865. package/dist/sync/state.js +40 -0
  866. package/dist/sync/state.js.map +1 -0
  867. package/dist/telemetry-ingest/batch.d.ts +70 -0
  868. package/dist/telemetry-ingest/batch.d.ts.map +1 -0
  869. package/dist/telemetry-ingest/batch.js +110 -0
  870. package/dist/telemetry-ingest/batch.js.map +1 -0
  871. package/dist/telemetry-ingest/facet.d.ts +21 -0
  872. package/dist/telemetry-ingest/facet.d.ts.map +1 -0
  873. package/dist/telemetry-ingest/facet.js +96 -0
  874. package/dist/telemetry-ingest/facet.js.map +1 -0
  875. package/dist/telemetry-ingest/index.d.ts +5 -0
  876. package/dist/telemetry-ingest/index.d.ts.map +1 -0
  877. package/dist/telemetry-ingest/index.js +8 -0
  878. package/dist/telemetry-ingest/index.js.map +1 -0
  879. package/dist/telemetry-ingest/recorder.d.ts +50 -0
  880. package/dist/telemetry-ingest/recorder.d.ts.map +1 -0
  881. package/dist/telemetry-ingest/recorder.js +298 -0
  882. package/dist/telemetry-ingest/recorder.js.map +1 -0
  883. package/dist/telemetry-ingest/sender.d.ts +14 -0
  884. package/dist/telemetry-ingest/sender.d.ts.map +1 -0
  885. package/dist/telemetry-ingest/sender.js +64 -0
  886. package/dist/telemetry-ingest/sender.js.map +1 -0
  887. package/dist/telemetry-sqlite/index.d.ts +13 -4
  888. package/dist/telemetry-sqlite/index.d.ts.map +1 -1
  889. package/dist/telemetry-sqlite/index.js +81 -241
  890. package/dist/telemetry-sqlite/index.js.map +1 -1
  891. package/dist/telemetry-sqlite/node.d.ts +13 -0
  892. package/dist/telemetry-sqlite/node.d.ts.map +1 -0
  893. package/dist/telemetry-sqlite/node.js +27 -0
  894. package/dist/telemetry-sqlite/node.js.map +1 -0
  895. package/dist/telemetry-sqlite/schema.d.ts +9 -0
  896. package/dist/telemetry-sqlite/schema.d.ts.map +1 -0
  897. package/dist/telemetry-sqlite/schema.js +61 -0
  898. package/dist/telemetry-sqlite/schema.js.map +1 -0
  899. package/dist/telemetry-sqlite/store.d.ts +3 -0
  900. package/dist/telemetry-sqlite/store.d.ts.map +1 -1
  901. package/dist/telemetry-sqlite/store.js +24 -13
  902. package/dist/telemetry-sqlite/store.js.map +1 -1
  903. package/dist/telemetry.d.ts +937 -0
  904. package/dist/telemetry.d.ts.map +1 -0
  905. package/dist/telemetry.js +470 -0
  906. package/dist/telemetry.js.map +1 -0
  907. package/dist/tui/bridge.d.ts +112 -0
  908. package/dist/tui/bridge.d.ts.map +1 -0
  909. package/dist/tui/bridge.js +9 -0
  910. package/dist/tui/bridge.js.map +1 -0
  911. package/dist/tui/channel.d.ts +44 -0
  912. package/dist/tui/channel.d.ts.map +1 -0
  913. package/dist/tui/channel.js +150 -0
  914. package/dist/tui/channel.js.map +1 -0
  915. package/dist/tui/frames.d.ts +5 -0
  916. package/dist/tui/frames.d.ts.map +1 -0
  917. package/dist/tui/frames.js +52 -0
  918. package/dist/tui/frames.js.map +1 -0
  919. package/dist/tui/index.d.ts +7 -0
  920. package/dist/tui/index.d.ts.map +1 -0
  921. package/dist/tui/index.js +8 -0
  922. package/dist/tui/index.js.map +1 -0
  923. package/dist/tui/runtime.d.ts +46 -0
  924. package/dist/tui/runtime.d.ts.map +1 -0
  925. package/dist/tui/runtime.js +101 -0
  926. package/dist/tui/runtime.js.map +1 -0
  927. package/dist/tui/scope.d.ts +46 -0
  928. package/dist/tui/scope.d.ts.map +1 -0
  929. package/dist/tui/scope.js +141 -0
  930. package/dist/tui/scope.js.map +1 -0
  931. package/dist/tui/terminal.d.ts +15 -0
  932. package/dist/tui/terminal.d.ts.map +1 -0
  933. package/dist/tui/terminal.js +37 -0
  934. package/dist/tui/terminal.js.map +1 -0
  935. package/dist/tui/theme.d.ts +17 -0
  936. package/dist/tui/theme.d.ts.map +1 -0
  937. package/dist/tui/theme.js +38 -0
  938. package/dist/tui/theme.js.map +1 -0
  939. package/dist/web/environment.d.ts +4 -0
  940. package/dist/web/environment.d.ts.map +1 -0
  941. package/dist/web/environment.js +37 -0
  942. package/dist/web/environment.js.map +1 -0
  943. package/dist/web/index.d.ts +5 -0
  944. package/dist/web/index.d.ts.map +1 -0
  945. package/dist/web/index.js +7 -0
  946. package/dist/web/index.js.map +1 -0
  947. package/dist/web/language.d.ts +7 -0
  948. package/dist/web/language.d.ts.map +1 -0
  949. package/dist/web/language.js +21 -0
  950. package/dist/web/language.js.map +1 -0
  951. package/dist/web/page.d.ts +29 -0
  952. package/dist/web/page.d.ts.map +1 -0
  953. package/dist/web/page.js +92 -0
  954. package/dist/web/page.js.map +1 -0
  955. package/dist/web/scripts.d.ts +23 -0
  956. package/dist/web/scripts.d.ts.map +1 -0
  957. package/dist/web/scripts.js +50 -0
  958. package/dist/web/scripts.js.map +1 -0
  959. package/dist/web/styles.d.ts +17 -0
  960. package/dist/web/styles.d.ts.map +1 -0
  961. package/dist/web/styles.js +218 -0
  962. package/dist/web/styles.js.map +1 -0
  963. package/dist/web/themes.d.ts +6 -0
  964. package/dist/web/themes.d.ts.map +1 -0
  965. package/dist/web/themes.js +31 -0
  966. package/dist/web/themes.js.map +1 -0
  967. package/docs/benchmarks.md +1036 -0
  968. package/docs/decisions.md +3436 -0
  969. package/docs/dependencies/book.md +1671 -0
  970. package/docs/dependencies/index.html +2641 -0
  971. package/docs/design.md +3065 -0
  972. package/docs/durable-observers/book.md +432 -0
  973. package/docs/durable-observers/index.html +517 -0
  974. package/docs/guide-plugins-hosts/book.md +957 -0
  975. package/docs/guide-plugins-hosts/index.html +952 -0
  976. package/docs/http-workers/book.md +378 -0
  977. package/docs/http-workers/index.html +515 -0
  978. package/docs/i18n/book.md +217 -0
  979. package/docs/i18n/index.html +344 -0
  980. package/docs/layer-1.md +311 -0
  981. package/docs/layer-2.md +216 -0
  982. package/docs/p3-features/README.md +6 -0
  983. package/docs/p3-features/book.md +478 -0
  984. package/docs/plugin-authoring.md +276 -0
  985. package/docs/plugin-model/book.md +186 -0
  986. package/docs/plugin-model/index.html +310 -0
  987. package/docs/plugin-primer/book.md +273 -0
  988. package/docs/plugin-primer/index.html +430 -0
  989. package/docs/slice-1.md +236 -0
  990. package/docs/slice-10.md +288 -0
  991. package/docs/slice-11.md +114 -0
  992. package/docs/slice-12.md +132 -0
  993. package/docs/slice-13.md +121 -0
  994. package/docs/slice-2.md +174 -0
  995. package/docs/slice-3a.md +296 -0
  996. package/docs/slice-3b.md +197 -0
  997. package/docs/slice-4a.md +418 -0
  998. package/docs/slice-4b.md +208 -0
  999. package/docs/slice-6a.md +676 -0
  1000. package/docs/slice-6b.md +332 -0
  1001. package/docs/slice-7b/book.md +608 -0
  1002. package/docs/slice-7b/index.html +842 -0
  1003. package/docs/slice-7b.md +255 -0
  1004. package/docs/slice-7c.md +165 -0
  1005. package/docs/slice-9.md +110 -0
  1006. package/docs/slices.md +241 -0
  1007. package/docs/store/book.md +670 -0
  1008. package/docs/store/index.html +861 -0
  1009. package/docs/store/walkthrough.md +193 -0
  1010. package/docs/theming/book.md +223 -0
  1011. package/docs/theming/index.html +371 -0
  1012. package/docs/tutorial/book.md +2169 -0
  1013. package/docs/tutorial/index.html +2112 -0
  1014. package/docs/tutorial/screens/click-after.png +0 -0
  1015. package/docs/tutorial/screens/click-before.png +0 -0
  1016. package/docs/tutorial/screens/edited.png +0 -0
  1017. package/docs/tutorial/screens/french.png +0 -0
  1018. package/docs/tutorial/screens/harbor.png +0 -0
  1019. package/docs/tutorial/screens/page.png +0 -0
  1020. package/docs/tutorial/screens/traces-ada.png +0 -0
  1021. package/docs/tutorial/screens/traces.png +0 -0
  1022. package/package.json +99 -21
  1023. package/dist/cell.d.ts +0 -122
  1024. package/dist/cell.d.ts.map +0 -1
  1025. package/dist/cell.js +0 -356
  1026. package/dist/cell.js.map +0 -1
  1027. package/dist/cluster.d.ts +0 -27
  1028. package/dist/cluster.d.ts.map +0 -1
  1029. package/dist/cluster.js +0 -230
  1030. package/dist/cluster.js.map +0 -1
  1031. package/dist/connection.d.ts +0 -270
  1032. package/dist/connection.d.ts.map +0 -1
  1033. package/dist/connection.js +0 -1216
  1034. package/dist/connection.js.map +0 -1
  1035. package/dist/contract.d.ts +0 -207
  1036. package/dist/contract.d.ts.map +0 -1
  1037. package/dist/contract.js +0 -241
  1038. package/dist/contract.js.map +0 -1
  1039. package/dist/declare.d.ts +0 -33
  1040. package/dist/declare.d.ts.map +0 -1
  1041. package/dist/declare.js +0 -2
  1042. package/dist/declare.js.map +0 -1
  1043. package/dist/errors.d.ts +0 -28
  1044. package/dist/errors.d.ts.map +0 -1
  1045. package/dist/errors.js +0 -59
  1046. package/dist/errors.js.map +0 -1
  1047. package/dist/host.d.ts +0 -348
  1048. package/dist/host.d.ts.map +0 -1
  1049. package/dist/host.js +0 -1002
  1050. package/dist/host.js.map +0 -1
  1051. package/dist/link.d.ts +0 -107
  1052. package/dist/link.d.ts.map +0 -1
  1053. package/dist/link.js +0 -355
  1054. package/dist/link.js.map +0 -1
  1055. package/dist/loader.d.ts +0 -4
  1056. package/dist/loader.d.ts.map +0 -1
  1057. package/dist/loader.js +0 -73
  1058. package/dist/loader.js.map +0 -1
  1059. package/dist/manager.d.ts +0 -115
  1060. package/dist/manager.d.ts.map +0 -1
  1061. package/dist/manager.js +0 -345
  1062. package/dist/manager.js.map +0 -1
  1063. package/dist/next/contracts/accepts.d.ts +0 -81
  1064. package/dist/next/contracts/accepts.d.ts.map +0 -1
  1065. package/dist/next/contracts/accepts.js.map +0 -1
  1066. package/dist/next/contracts/contract.d.ts +0 -121
  1067. package/dist/next/contracts/contract.d.ts.map +0 -1
  1068. package/dist/next/contracts/contract.js.map +0 -1
  1069. package/dist/next/contracts/declare.d.ts.map +0 -1
  1070. package/dist/next/contracts/declare.js.map +0 -1
  1071. package/dist/next/contracts/evolve.d.ts.map +0 -1
  1072. package/dist/next/contracts/evolve.js.map +0 -1
  1073. package/dist/next/contracts/fingerprint.d.ts +0 -16
  1074. package/dist/next/contracts/fingerprint.d.ts.map +0 -1
  1075. package/dist/next/contracts/fingerprint.js.map +0 -1
  1076. package/dist/next/contracts/history.d.ts.map +0 -1
  1077. package/dist/next/contracts/history.js.map +0 -1
  1078. package/dist/next/contracts/host-kind.d.ts.map +0 -1
  1079. package/dist/next/contracts/host-kind.js.map +0 -1
  1080. package/dist/next/contracts/index.d.ts.map +0 -1
  1081. package/dist/next/contracts/index.js.map +0 -1
  1082. package/dist/next/contracts/internal.d.ts.map +0 -1
  1083. package/dist/next/contracts/internal.js.map +0 -1
  1084. package/dist/next/contracts/names.d.ts.map +0 -1
  1085. package/dist/next/contracts/names.js.map +0 -1
  1086. package/dist/next/contracts/params.d.ts +0 -28
  1087. package/dist/next/contracts/params.d.ts.map +0 -1
  1088. package/dist/next/contracts/params.js.map +0 -1
  1089. package/dist/next/contracts/schema.d.ts.map +0 -1
  1090. package/dist/next/contracts/schema.js.map +0 -1
  1091. package/dist/next/contracts/snapshot.d.ts +0 -16
  1092. package/dist/next/contracts/snapshot.d.ts.map +0 -1
  1093. package/dist/next/contracts/snapshot.js +0 -167
  1094. package/dist/next/contracts/snapshot.js.map +0 -1
  1095. package/dist/next/data/args.d.ts +0 -50
  1096. package/dist/next/data/args.d.ts.map +0 -1
  1097. package/dist/next/data/args.js.map +0 -1
  1098. package/dist/next/data/errors.d.ts +0 -73
  1099. package/dist/next/data/errors.d.ts.map +0 -1
  1100. package/dist/next/data/errors.js +0 -107
  1101. package/dist/next/data/errors.js.map +0 -1
  1102. package/dist/next/data/failure.d.ts.map +0 -1
  1103. package/dist/next/data/failure.js +0 -72
  1104. package/dist/next/data/failure.js.map +0 -1
  1105. package/dist/next/data/index.d.ts +0 -4
  1106. package/dist/next/data/index.d.ts.map +0 -1
  1107. package/dist/next/data/index.js +0 -4
  1108. package/dist/next/data/index.js.map +0 -1
  1109. package/dist/next/data/internal.d.ts +0 -7
  1110. package/dist/next/data/internal.d.ts.map +0 -1
  1111. package/dist/next/data/internal.js +0 -8
  1112. package/dist/next/data/internal.js.map +0 -1
  1113. package/dist/next/data/params.d.ts +0 -20
  1114. package/dist/next/data/params.d.ts.map +0 -1
  1115. package/dist/next/data/params.js.map +0 -1
  1116. package/dist/next/data/principal.d.ts +0 -17
  1117. package/dist/next/data/principal.d.ts.map +0 -1
  1118. package/dist/next/data/principal.js +0 -41
  1119. package/dist/next/data/principal.js.map +0 -1
  1120. package/dist/next/data/validator.d.ts +0 -12
  1121. package/dist/next/data/validator.d.ts.map +0 -1
  1122. package/dist/next/data/validator.js +0 -34
  1123. package/dist/next/data/validator.js.map +0 -1
  1124. package/dist/next/documents/address-source.d.ts +0 -20
  1125. package/dist/next/documents/address-source.d.ts.map +0 -1
  1126. package/dist/next/documents/address-source.js.map +0 -1
  1127. package/dist/next/documents/definition.d.ts +0 -84
  1128. package/dist/next/documents/definition.d.ts.map +0 -1
  1129. package/dist/next/documents/definition.js +0 -73
  1130. package/dist/next/documents/definition.js.map +0 -1
  1131. package/dist/next/documents/documents.d.ts +0 -106
  1132. package/dist/next/documents/documents.d.ts.map +0 -1
  1133. package/dist/next/documents/documents.js +0 -224
  1134. package/dist/next/documents/documents.js.map +0 -1
  1135. package/dist/next/documents/fence.d.ts.map +0 -1
  1136. package/dist/next/documents/fence.js.map +0 -1
  1137. package/dist/next/documents/handles.d.ts +0 -76
  1138. package/dist/next/documents/handles.d.ts.map +0 -1
  1139. package/dist/next/documents/handles.js.map +0 -1
  1140. package/dist/next/documents/index.d.ts.map +0 -1
  1141. package/dist/next/documents/index.js.map +0 -1
  1142. package/dist/next/documents/internal.d.ts +0 -9
  1143. package/dist/next/documents/internal.d.ts.map +0 -1
  1144. package/dist/next/documents/internal.js.map +0 -1
  1145. package/dist/next/documents/keyed-slot.d.ts +0 -103
  1146. package/dist/next/documents/keyed-slot.d.ts.map +0 -1
  1147. package/dist/next/documents/keyed-slot.js +0 -395
  1148. package/dist/next/documents/keyed-slot.js.map +0 -1
  1149. package/dist/next/documents/line.d.ts.map +0 -1
  1150. package/dist/next/documents/line.js.map +0 -1
  1151. package/dist/next/documents/persistence.d.ts +0 -104
  1152. package/dist/next/documents/persistence.d.ts.map +0 -1
  1153. package/dist/next/documents/persistence.js +0 -128
  1154. package/dist/next/documents/persistence.js.map +0 -1
  1155. package/dist/next/documents/residency.d.ts +0 -31
  1156. package/dist/next/documents/residency.d.ts.map +0 -1
  1157. package/dist/next/documents/residency.js.map +0 -1
  1158. package/dist/next/documents/slot.d.ts +0 -109
  1159. package/dist/next/documents/slot.d.ts.map +0 -1
  1160. package/dist/next/documents/slot.js +0 -181
  1161. package/dist/next/documents/slot.js.map +0 -1
  1162. package/dist/next/documents/transaction.d.ts +0 -133
  1163. package/dist/next/documents/transaction.d.ts.map +0 -1
  1164. package/dist/next/documents/transaction.js +0 -409
  1165. package/dist/next/documents/transaction.js.map +0 -1
  1166. package/dist/next/host/activity.d.ts +0 -31
  1167. package/dist/next/host/activity.d.ts.map +0 -1
  1168. package/dist/next/host/activity.js +0 -40
  1169. package/dist/next/host/activity.js.map +0 -1
  1170. package/dist/next/host/adapted.d.ts +0 -49
  1171. package/dist/next/host/adapted.d.ts.map +0 -1
  1172. package/dist/next/host/adapted.js.map +0 -1
  1173. package/dist/next/host/attempt.d.ts +0 -278
  1174. package/dist/next/host/attempt.d.ts.map +0 -1
  1175. package/dist/next/host/attempt.js +0 -1072
  1176. package/dist/next/host/attempt.js.map +0 -1
  1177. package/dist/next/host/backoff.d.ts.map +0 -1
  1178. package/dist/next/host/backoff.js.map +0 -1
  1179. package/dist/next/host/ctx.d.ts +0 -47
  1180. package/dist/next/host/ctx.d.ts.map +0 -1
  1181. package/dist/next/host/ctx.js +0 -108
  1182. package/dist/next/host/ctx.js.map +0 -1
  1183. package/dist/next/host/deadline.d.ts.map +0 -1
  1184. package/dist/next/host/deadline.js.map +0 -1
  1185. package/dist/next/host/dependencies.d.ts.map +0 -1
  1186. package/dist/next/host/dependencies.js.map +0 -1
  1187. package/dist/next/host/destination.d.ts +0 -48
  1188. package/dist/next/host/destination.d.ts.map +0 -1
  1189. package/dist/next/host/destination.js.map +0 -1
  1190. package/dist/next/host/facet.d.ts +0 -79
  1191. package/dist/next/host/facet.d.ts.map +0 -1
  1192. package/dist/next/host/facet.js.map +0 -1
  1193. package/dist/next/host/follow.d.ts +0 -52
  1194. package/dist/next/host/follow.d.ts.map +0 -1
  1195. package/dist/next/host/follow.js.map +0 -1
  1196. package/dist/next/host/host.d.ts +0 -495
  1197. package/dist/next/host/host.d.ts.map +0 -1
  1198. package/dist/next/host/host.js +0 -1075
  1199. package/dist/next/host/host.js.map +0 -1
  1200. package/dist/next/host/index.d.ts +0 -17
  1201. package/dist/next/host/index.d.ts.map +0 -1
  1202. package/dist/next/host/index.js.map +0 -1
  1203. package/dist/next/host/internal.d.ts +0 -10
  1204. package/dist/next/host/internal.d.ts.map +0 -1
  1205. package/dist/next/host/internal.js +0 -8
  1206. package/dist/next/host/internal.js.map +0 -1
  1207. package/dist/next/host/members.d.ts +0 -50
  1208. package/dist/next/host/members.d.ts.map +0 -1
  1209. package/dist/next/host/members.js.map +0 -1
  1210. package/dist/next/host/native.d.ts +0 -55
  1211. package/dist/next/host/native.d.ts.map +0 -1
  1212. package/dist/next/host/native.js +0 -92
  1213. package/dist/next/host/native.js.map +0 -1
  1214. package/dist/next/host/object.d.ts +0 -290
  1215. package/dist/next/host/object.d.ts.map +0 -1
  1216. package/dist/next/host/object.js +0 -1127
  1217. package/dist/next/host/object.js.map +0 -1
  1218. package/dist/next/host/parked.d.ts +0 -23
  1219. package/dist/next/host/parked.d.ts.map +0 -1
  1220. package/dist/next/host/parked.js.map +0 -1
  1221. package/dist/next/host/presence.d.ts +0 -34
  1222. package/dist/next/host/presence.d.ts.map +0 -1
  1223. package/dist/next/host/presence.js.map +0 -1
  1224. package/dist/next/host/ref-state.d.ts +0 -53
  1225. package/dist/next/host/ref-state.d.ts.map +0 -1
  1226. package/dist/next/host/ref-state.js +0 -83
  1227. package/dist/next/host/ref-state.js.map +0 -1
  1228. package/dist/next/host/reference-keys.d.ts +0 -36
  1229. package/dist/next/host/reference-keys.d.ts.map +0 -1
  1230. package/dist/next/host/reference-keys.js +0 -168
  1231. package/dist/next/host/reference-keys.js.map +0 -1
  1232. package/dist/next/host/reference-source.d.ts +0 -65
  1233. package/dist/next/host/reference-source.d.ts.map +0 -1
  1234. package/dist/next/host/reference-source.js +0 -285
  1235. package/dist/next/host/reference-source.js.map +0 -1
  1236. package/dist/next/host/reference.d.ts +0 -308
  1237. package/dist/next/host/reference.d.ts.map +0 -1
  1238. package/dist/next/host/reference.js +0 -775
  1239. package/dist/next/host/reference.js.map +0 -1
  1240. package/dist/next/host/retry-on.d.ts.map +0 -1
  1241. package/dist/next/host/retry-on.js.map +0 -1
  1242. package/dist/next/host/revocation.d.ts +0 -16
  1243. package/dist/next/host/revocation.d.ts.map +0 -1
  1244. package/dist/next/host/revocation.js.map +0 -1
  1245. package/dist/next/host/root.d.ts +0 -27
  1246. package/dist/next/host/root.d.ts.map +0 -1
  1247. package/dist/next/host/root.js +0 -68
  1248. package/dist/next/host/root.js.map +0 -1
  1249. package/dist/next/host/route.d.ts +0 -64
  1250. package/dist/next/host/route.d.ts.map +0 -1
  1251. package/dist/next/host/route.js +0 -190
  1252. package/dist/next/host/route.js.map +0 -1
  1253. package/dist/next/host/routines.d.ts +0 -76
  1254. package/dist/next/host/routines.d.ts.map +0 -1
  1255. package/dist/next/host/routines.js +0 -350
  1256. package/dist/next/host/routines.js.map +0 -1
  1257. package/dist/next/host/sleep.d.ts +0 -9
  1258. package/dist/next/host/sleep.d.ts.map +0 -1
  1259. package/dist/next/host/sleep.js.map +0 -1
  1260. package/dist/next/host/staging.d.ts +0 -94
  1261. package/dist/next/host/staging.d.ts.map +0 -1
  1262. package/dist/next/host/staging.js +0 -302
  1263. package/dist/next/host/staging.js.map +0 -1
  1264. package/dist/next/host/unbound.d.ts +0 -30
  1265. package/dist/next/host/unbound.d.ts.map +0 -1
  1266. package/dist/next/host/unbound.js +0 -67
  1267. package/dist/next/host/unbound.js.map +0 -1
  1268. package/dist/next/host/uuid.d.ts.map +0 -1
  1269. package/dist/next/host/uuid.js.map +0 -1
  1270. package/dist/next/index.d.ts +0 -28
  1271. package/dist/next/index.d.ts.map +0 -1
  1272. package/dist/next/index.js +0 -18
  1273. package/dist/next/index.js.map +0 -1
  1274. package/dist/next/jobs/definition.d.ts.map +0 -1
  1275. package/dist/next/jobs/definition.js.map +0 -1
  1276. package/dist/next/jobs/index.d.ts.map +0 -1
  1277. package/dist/next/jobs/index.js.map +0 -1
  1278. package/dist/next/jobs/internal.d.ts.map +0 -1
  1279. package/dist/next/jobs/internal.js.map +0 -1
  1280. package/dist/next/jobs/job.d.ts +0 -152
  1281. package/dist/next/jobs/job.d.ts.map +0 -1
  1282. package/dist/next/jobs/job.js +0 -320
  1283. package/dist/next/jobs/job.js.map +0 -1
  1284. package/dist/next/jobs/persisted.d.ts +0 -38
  1285. package/dist/next/jobs/persisted.d.ts.map +0 -1
  1286. package/dist/next/jobs/persisted.js.map +0 -1
  1287. package/dist/next/jobs/records.d.ts +0 -231
  1288. package/dist/next/jobs/records.d.ts.map +0 -1
  1289. package/dist/next/jobs/records.js +0 -869
  1290. package/dist/next/jobs/records.js.map +0 -1
  1291. package/dist/next/jobs/run-states.d.ts +0 -69
  1292. package/dist/next/jobs/run-states.d.ts.map +0 -1
  1293. package/dist/next/jobs/run-states.js +0 -228
  1294. package/dist/next/jobs/run-states.js.map +0 -1
  1295. package/dist/next/jobs/run.d.ts +0 -113
  1296. package/dist/next/jobs/run.d.ts.map +0 -1
  1297. package/dist/next/jobs/run.js +0 -200
  1298. package/dist/next/jobs/run.js.map +0 -1
  1299. package/dist/next/jobs/running.d.ts +0 -44
  1300. package/dist/next/jobs/running.d.ts.map +0 -1
  1301. package/dist/next/jobs/running.js.map +0 -1
  1302. package/dist/next/jobs/stored.d.ts +0 -63
  1303. package/dist/next/jobs/stored.d.ts.map +0 -1
  1304. package/dist/next/jobs/stored.js.map +0 -1
  1305. package/dist/next/link/binary.d.ts.map +0 -1
  1306. package/dist/next/link/binary.js +0 -534
  1307. package/dist/next/link/binary.js.map +0 -1
  1308. package/dist/next/link/channel.d.ts +0 -63
  1309. package/dist/next/link/channel.d.ts.map +0 -1
  1310. package/dist/next/link/channel.js +0 -202
  1311. package/dist/next/link/channel.js.map +0 -1
  1312. package/dist/next/link/errors.d.ts.map +0 -1
  1313. package/dist/next/link/errors.js.map +0 -1
  1314. package/dist/next/link/index.d.ts.map +0 -1
  1315. package/dist/next/link/index.js.map +0 -1
  1316. package/dist/next/link/internal.d.ts.map +0 -1
  1317. package/dist/next/link/internal.js.map +0 -1
  1318. package/dist/next/link/ipc.d.ts.map +0 -1
  1319. package/dist/next/link/ipc.js.map +0 -1
  1320. package/dist/next/link/link.d.ts.map +0 -1
  1321. package/dist/next/link/link.js.map +0 -1
  1322. package/dist/next/link/message.d.ts +0 -249
  1323. package/dist/next/link/message.d.ts.map +0 -1
  1324. package/dist/next/link/message.js +0 -123
  1325. package/dist/next/link/message.js.map +0 -1
  1326. package/dist/next/link/part.d.ts +0 -80
  1327. package/dist/next/link/part.d.ts.map +0 -1
  1328. package/dist/next/link/part.js +0 -164
  1329. package/dist/next/link/part.js.map +0 -1
  1330. package/dist/next/link/text.d.ts.map +0 -1
  1331. package/dist/next/link/text.js +0 -335
  1332. package/dist/next/link/text.js.map +0 -1
  1333. package/dist/next/link/values.d.ts.map +0 -1
  1334. package/dist/next/link/values.js +0 -117
  1335. package/dist/next/link/values.js.map +0 -1
  1336. package/dist/next/link/websocket.d.ts.map +0 -1
  1337. package/dist/next/link/websocket.js.map +0 -1
  1338. package/dist/next/registries/contribution.d.ts.map +0 -1
  1339. package/dist/next/registries/contribution.js.map +0 -1
  1340. package/dist/next/registries/entries.d.ts.map +0 -1
  1341. package/dist/next/registries/entries.js.map +0 -1
  1342. package/dist/next/registries/index.d.ts.map +0 -1
  1343. package/dist/next/registries/index.js.map +0 -1
  1344. package/dist/next/registries/internal.d.ts.map +0 -1
  1345. package/dist/next/registries/internal.js.map +0 -1
  1346. package/dist/next/registries/record.d.ts +0 -94
  1347. package/dist/next/registries/record.d.ts.map +0 -1
  1348. package/dist/next/registries/record.js +0 -253
  1349. package/dist/next/registries/record.js.map +0 -1
  1350. package/dist/next/registries/registry.d.ts +0 -74
  1351. package/dist/next/registries/registry.d.ts.map +0 -1
  1352. package/dist/next/registries/registry.js.map +0 -1
  1353. package/dist/next/registries/value.d.ts.map +0 -1
  1354. package/dist/next/registries/value.js +0 -199
  1355. package/dist/next/registries/value.js.map +0 -1
  1356. package/dist/next/remote/calls.d.ts.map +0 -1
  1357. package/dist/next/remote/calls.js.map +0 -1
  1358. package/dist/next/remote/consumer.d.ts +0 -42
  1359. package/dist/next/remote/consumer.d.ts.map +0 -1
  1360. package/dist/next/remote/consumer.js +0 -343
  1361. package/dist/next/remote/consumer.js.map +0 -1
  1362. package/dist/next/remote/hold.d.ts +0 -130
  1363. package/dist/next/remote/hold.d.ts.map +0 -1
  1364. package/dist/next/remote/hold.js +0 -537
  1365. package/dist/next/remote/hold.js.map +0 -1
  1366. package/dist/next/remote/host-link.d.ts +0 -77
  1367. package/dist/next/remote/host-link.d.ts.map +0 -1
  1368. package/dist/next/remote/host-link.js +0 -182
  1369. package/dist/next/remote/host-link.js.map +0 -1
  1370. package/dist/next/remote/internal.d.ts.map +0 -1
  1371. package/dist/next/remote/internal.js.map +0 -1
  1372. package/dist/next/remote/path.d.ts.map +0 -1
  1373. package/dist/next/remote/path.js.map +0 -1
  1374. package/dist/next/remote/provider.d.ts +0 -76
  1375. package/dist/next/remote/provider.d.ts.map +0 -1
  1376. package/dist/next/remote/provider.js +0 -506
  1377. package/dist/next/remote/provider.js.map +0 -1
  1378. package/dist/next/remote/relay.d.ts +0 -58
  1379. package/dist/next/remote/relay.d.ts.map +0 -1
  1380. package/dist/next/remote/relay.js +0 -117
  1381. package/dist/next/remote/relay.js.map +0 -1
  1382. package/dist/next/remote/remote-object.d.ts +0 -133
  1383. package/dist/next/remote/remote-object.d.ts.map +0 -1
  1384. package/dist/next/remote/remote-object.js +0 -411
  1385. package/dist/next/remote/remote-object.js.map +0 -1
  1386. package/dist/next/remote/replica.d.ts +0 -59
  1387. package/dist/next/remote/replica.d.ts.map +0 -1
  1388. package/dist/next/remote/replica.js +0 -125
  1389. package/dist/next/remote/replica.js.map +0 -1
  1390. package/dist/next/state/batch.d.ts +0 -64
  1391. package/dist/next/state/batch.d.ts.map +0 -1
  1392. package/dist/next/state/batch.js +0 -163
  1393. package/dist/next/state/batch.js.map +0 -1
  1394. package/dist/next/state/derive.d.ts +0 -52
  1395. package/dist/next/state/derive.d.ts.map +0 -1
  1396. package/dist/next/state/derive.js +0 -182
  1397. package/dist/next/state/derive.js.map +0 -1
  1398. package/dist/next/state/index.d.ts +0 -6
  1399. package/dist/next/state/index.d.ts.map +0 -1
  1400. package/dist/next/state/index.js.map +0 -1
  1401. package/dist/next/state/internal.d.ts.map +0 -1
  1402. package/dist/next/state/internal.js.map +0 -1
  1403. package/dist/next/state/native-source.d.ts +0 -106
  1404. package/dist/next/state/native-source.d.ts.map +0 -1
  1405. package/dist/next/state/native-source.js +0 -240
  1406. package/dist/next/state/native-source.js.map +0 -1
  1407. package/dist/next/state/watchable.d.ts +0 -114
  1408. package/dist/next/state/watchable.d.ts.map +0 -1
  1409. package/dist/next/state/watchable.js +0 -156
  1410. package/dist/next/state/watchable.js.map +0 -1
  1411. package/dist/next/state/writable.d.ts +0 -32
  1412. package/dist/next/state/writable.d.ts.map +0 -1
  1413. package/dist/next/state/writable.js.map +0 -1
  1414. package/dist/next/store/adapter.d.ts +0 -67
  1415. package/dist/next/store/adapter.d.ts.map +0 -1
  1416. package/dist/next/store/adapter.js.map +0 -1
  1417. package/dist/next/store/allocator.d.ts.map +0 -1
  1418. package/dist/next/store/allocator.js.map +0 -1
  1419. package/dist/next/store/applier.d.ts.map +0 -1
  1420. package/dist/next/store/applier.js.map +0 -1
  1421. package/dist/next/store/apply-batch.d.ts +0 -12
  1422. package/dist/next/store/apply-batch.d.ts.map +0 -1
  1423. package/dist/next/store/apply-batch.js.map +0 -1
  1424. package/dist/next/store/archive.d.ts +0 -32
  1425. package/dist/next/store/archive.d.ts.map +0 -1
  1426. package/dist/next/store/archive.js +0 -129
  1427. package/dist/next/store/archive.js.map +0 -1
  1428. package/dist/next/store/backend.d.ts +0 -10
  1429. package/dist/next/store/backend.d.ts.map +0 -1
  1430. package/dist/next/store/backend.js.map +0 -1
  1431. package/dist/next/store/catalog.d.ts +0 -24
  1432. package/dist/next/store/catalog.d.ts.map +0 -1
  1433. package/dist/next/store/catalog.js.map +0 -1
  1434. package/dist/next/store/claims.d.ts.map +0 -1
  1435. package/dist/next/store/claims.js.map +0 -1
  1436. package/dist/next/store/columns.d.ts.map +0 -1
  1437. package/dist/next/store/columns.js.map +0 -1
  1438. package/dist/next/store/engine.d.ts +0 -176
  1439. package/dist/next/store/engine.d.ts.map +0 -1
  1440. package/dist/next/store/engine.js +0 -283
  1441. package/dist/next/store/engine.js.map +0 -1
  1442. package/dist/next/store/evaluate.d.ts +0 -17
  1443. package/dist/next/store/evaluate.d.ts.map +0 -1
  1444. package/dist/next/store/evaluate.js.map +0 -1
  1445. package/dist/next/store/export.d.ts +0 -17
  1446. package/dist/next/store/export.d.ts.map +0 -1
  1447. package/dist/next/store/export.js +0 -200
  1448. package/dist/next/store/export.js.map +0 -1
  1449. package/dist/next/store/expression.d.ts +0 -150
  1450. package/dist/next/store/expression.d.ts.map +0 -1
  1451. package/dist/next/store/expression.js.map +0 -1
  1452. package/dist/next/store/import.d.ts +0 -10
  1453. package/dist/next/store/import.d.ts.map +0 -1
  1454. package/dist/next/store/import.js +0 -276
  1455. package/dist/next/store/import.js.map +0 -1
  1456. package/dist/next/store/index.d.ts.map +0 -1
  1457. package/dist/next/store/index.js.map +0 -1
  1458. package/dist/next/store/json-column.d.ts +0 -33
  1459. package/dist/next/store/json-column.d.ts.map +0 -1
  1460. package/dist/next/store/json-column.js +0 -61
  1461. package/dist/next/store/json-column.js.map +0 -1
  1462. package/dist/next/store/jsonl.d.ts.map +0 -1
  1463. package/dist/next/store/jsonl.js.map +0 -1
  1464. package/dist/next/store/outbox.d.ts +0 -26
  1465. package/dist/next/store/outbox.d.ts.map +0 -1
  1466. package/dist/next/store/outbox.js.map +0 -1
  1467. package/dist/next/store/query.d.ts +0 -39
  1468. package/dist/next/store/query.d.ts.map +0 -1
  1469. package/dist/next/store/query.js.map +0 -1
  1470. package/dist/next/store/refusal.d.ts.map +0 -1
  1471. package/dist/next/store/refusal.js.map +0 -1
  1472. package/dist/next/store/rows.d.ts +0 -80
  1473. package/dist/next/store/rows.d.ts.map +0 -1
  1474. package/dist/next/store/rows.js.map +0 -1
  1475. package/dist/next/store/schema.d.ts +0 -25
  1476. package/dist/next/store/schema.d.ts.map +0 -1
  1477. package/dist/next/store/schema.js +0 -115
  1478. package/dist/next/store/schema.js.map +0 -1
  1479. package/dist/next/store/sql.d.ts +0 -73
  1480. package/dist/next/store/sql.d.ts.map +0 -1
  1481. package/dist/next/store/sql.js.map +0 -1
  1482. package/dist/next/store/step.d.ts +0 -48
  1483. package/dist/next/store/step.d.ts.map +0 -1
  1484. package/dist/next/store/step.js +0 -50
  1485. package/dist/next/store/step.js.map +0 -1
  1486. package/dist/next/store/store.d.ts +0 -161
  1487. package/dist/next/store/store.d.ts.map +0 -1
  1488. package/dist/next/store/store.js +0 -627
  1489. package/dist/next/store/store.js.map +0 -1
  1490. package/dist/next/store/table-changes.d.ts +0 -29
  1491. package/dist/next/store/table-changes.d.ts.map +0 -1
  1492. package/dist/next/store/table-changes.js.map +0 -1
  1493. package/dist/next/store/table-evolve.d.ts.map +0 -1
  1494. package/dist/next/store/table-evolve.js.map +0 -1
  1495. package/dist/next/store/table-handle.d.ts +0 -67
  1496. package/dist/next/store/table-handle.d.ts.map +0 -1
  1497. package/dist/next/store/table-handle.js +0 -101
  1498. package/dist/next/store/table-handle.js.map +0 -1
  1499. package/dist/next/store/table-history.d.ts.map +0 -1
  1500. package/dist/next/store/table-history.js.map +0 -1
  1501. package/dist/next/store/table-migration.d.ts +0 -16
  1502. package/dist/next/store/table-migration.d.ts.map +0 -1
  1503. package/dist/next/store/table-migration.js +0 -202
  1504. package/dist/next/store/table-migration.js.map +0 -1
  1505. package/dist/next/store/table-writes.d.ts.map +0 -1
  1506. package/dist/next/store/table-writes.js +0 -165
  1507. package/dist/next/store/table-writes.js.map +0 -1
  1508. package/dist/next/store/table.d.ts +0 -80
  1509. package/dist/next/store/table.d.ts.map +0 -1
  1510. package/dist/next/store/table.js.map +0 -1
  1511. package/dist/next/store/text.d.ts.map +0 -1
  1512. package/dist/next/store/text.js.map +0 -1
  1513. package/dist/next/store/writes.d.ts.map +0 -1
  1514. package/dist/next/store/writes.js.map +0 -1
  1515. package/dist/next-node/compression.d.ts +0 -7
  1516. package/dist/next-node/compression.d.ts.map +0 -1
  1517. package/dist/next-node/compression.js +0 -24
  1518. package/dist/next-node/compression.js.map +0 -1
  1519. package/dist/next-node/http/admission.d.ts.map +0 -1
  1520. package/dist/next-node/http/admission.js.map +0 -1
  1521. package/dist/next-node/http/authenticate.d.ts +0 -21
  1522. package/dist/next-node/http/authenticate.d.ts.map +0 -1
  1523. package/dist/next-node/http/authenticate.js +0 -34
  1524. package/dist/next-node/http/authenticate.js.map +0 -1
  1525. package/dist/next-node/http/cookies.d.ts +0 -24
  1526. package/dist/next-node/http/cookies.d.ts.map +0 -1
  1527. package/dist/next-node/http/cookies.js +0 -62
  1528. package/dist/next-node/http/cookies.js.map +0 -1
  1529. package/dist/next-node/http/file.d.ts.map +0 -1
  1530. package/dist/next-node/http/file.js.map +0 -1
  1531. package/dist/next-node/http/headers.d.ts.map +0 -1
  1532. package/dist/next-node/http/headers.js +0 -129
  1533. package/dist/next-node/http/headers.js.map +0 -1
  1534. package/dist/next-node/http/http.d.ts +0 -100
  1535. package/dist/next-node/http/http.d.ts.map +0 -1
  1536. package/dist/next-node/http/http.js +0 -462
  1537. package/dist/next-node/http/http.js.map +0 -1
  1538. package/dist/next-node/http/incoming.d.ts.map +0 -1
  1539. package/dist/next-node/http/incoming.js.map +0 -1
  1540. package/dist/next-node/http/index.d.ts +0 -11
  1541. package/dist/next-node/http/index.d.ts.map +0 -1
  1542. package/dist/next-node/http/index.js +0 -12
  1543. package/dist/next-node/http/index.js.map +0 -1
  1544. package/dist/next-node/http/node.d.ts.map +0 -1
  1545. package/dist/next-node/http/node.js.map +0 -1
  1546. package/dist/next-node/http/request.d.ts +0 -54
  1547. package/dist/next-node/http/request.d.ts.map +0 -1
  1548. package/dist/next-node/http/request.js +0 -116
  1549. package/dist/next-node/http/request.js.map +0 -1
  1550. package/dist/next-node/http/response.d.ts +0 -63
  1551. package/dist/next-node/http/response.d.ts.map +0 -1
  1552. package/dist/next-node/http/response.js.map +0 -1
  1553. package/dist/next-node/http/router.d.ts +0 -114
  1554. package/dist/next-node/http/router.d.ts.map +0 -1
  1555. package/dist/next-node/http/router.js +0 -261
  1556. package/dist/next-node/http/router.js.map +0 -1
  1557. package/dist/next-node/http/upgrades.d.ts +0 -58
  1558. package/dist/next-node/http/upgrades.d.ts.map +0 -1
  1559. package/dist/next-node/http/upgrades.js +0 -184
  1560. package/dist/next-node/http/upgrades.js.map +0 -1
  1561. package/dist/next-node/plugins/build.d.ts +0 -57
  1562. package/dist/next-node/plugins/build.d.ts.map +0 -1
  1563. package/dist/next-node/plugins/build.js +0 -334
  1564. package/dist/next-node/plugins/build.js.map +0 -1
  1565. package/dist/next-node/plugins/discover.d.ts +0 -36
  1566. package/dist/next-node/plugins/discover.d.ts.map +0 -1
  1567. package/dist/next-node/plugins/discover.js +0 -91
  1568. package/dist/next-node/plugins/discover.js.map +0 -1
  1569. package/dist/next-node/plugins/evaluate.d.ts +0 -33
  1570. package/dist/next-node/plugins/evaluate.d.ts.map +0 -1
  1571. package/dist/next-node/plugins/evaluate.js +0 -98
  1572. package/dist/next-node/plugins/evaluate.js.map +0 -1
  1573. package/dist/next-node/plugins/index.d.ts +0 -9
  1574. package/dist/next-node/plugins/index.d.ts.map +0 -1
  1575. package/dist/next-node/plugins/index.js +0 -11
  1576. package/dist/next-node/plugins/index.js.map +0 -1
  1577. package/dist/next-node/plugins/install.d.ts +0 -13
  1578. package/dist/next-node/plugins/install.d.ts.map +0 -1
  1579. package/dist/next-node/plugins/install.js +0 -37
  1580. package/dist/next-node/plugins/install.js.map +0 -1
  1581. package/dist/next-node/plugins/plugins.d.ts +0 -135
  1582. package/dist/next-node/plugins/plugins.d.ts.map +0 -1
  1583. package/dist/next-node/plugins/plugins.js +0 -206
  1584. package/dist/next-node/plugins/plugins.js.map +0 -1
  1585. package/dist/next-node/plugins/runtime.d.ts +0 -41
  1586. package/dist/next-node/plugins/runtime.d.ts.map +0 -1
  1587. package/dist/next-node/plugins/runtime.js +0 -136
  1588. package/dist/next-node/plugins/runtime.js.map +0 -1
  1589. package/dist/next-node/plugins/stack.d.ts.map +0 -1
  1590. package/dist/next-node/plugins/stack.js.map +0 -1
  1591. package/dist/next-node/plugins/watcher.d.ts +0 -58
  1592. package/dist/next-node/plugins/watcher.d.ts.map +0 -1
  1593. package/dist/next-node/plugins/watcher.js +0 -281
  1594. package/dist/next-node/plugins/watcher.js.map +0 -1
  1595. package/dist/next-node/workers/control.d.ts +0 -83
  1596. package/dist/next-node/workers/control.d.ts.map +0 -1
  1597. package/dist/next-node/workers/control.js +0 -77
  1598. package/dist/next-node/workers/control.js.map +0 -1
  1599. package/dist/next-node/workers/index.d.ts +0 -5
  1600. package/dist/next-node/workers/index.d.ts.map +0 -1
  1601. package/dist/next-node/workers/index.js +0 -7
  1602. package/dist/next-node/workers/index.js.map +0 -1
  1603. package/dist/next-node/workers/lock.d.ts +0 -21
  1604. package/dist/next-node/workers/lock.d.ts.map +0 -1
  1605. package/dist/next-node/workers/lock.js +0 -137
  1606. package/dist/next-node/workers/lock.js.map +0 -1
  1607. package/dist/next-node/workers/main.d.ts +0 -46
  1608. package/dist/next-node/workers/main.d.ts.map +0 -1
  1609. package/dist/next-node/workers/main.js +0 -230
  1610. package/dist/next-node/workers/main.js.map +0 -1
  1611. package/dist/next-node/workers/process.d.ts +0 -42
  1612. package/dist/next-node/workers/process.d.ts.map +0 -1
  1613. package/dist/next-node/workers/process.js +0 -125
  1614. package/dist/next-node/workers/process.js.map +0 -1
  1615. package/dist/next-node/workers/workers.d.ts +0 -80
  1616. package/dist/next-node/workers/workers.d.ts.map +0 -1
  1617. package/dist/next-node/workers/workers.js +0 -572
  1618. package/dist/next-node/workers/workers.js.map +0 -1
  1619. package/dist/node.d.ts +0 -4
  1620. package/dist/node.d.ts.map +0 -1
  1621. package/dist/node.js +0 -4
  1622. package/dist/node.js.map +0 -1
  1623. package/dist/object.d.ts +0 -438
  1624. package/dist/object.d.ts.map +0 -1
  1625. package/dist/object.js +0 -1570
  1626. package/dist/object.js.map +0 -1
  1627. package/dist/publish.d.ts +0 -5
  1628. package/dist/publish.d.ts.map +0 -1
  1629. package/dist/publish.js +0 -40
  1630. package/dist/publish.js.map +0 -1
  1631. package/dist/registry.d.ts +0 -25
  1632. package/dist/registry.d.ts.map +0 -1
  1633. package/dist/registry.js +0 -6
  1634. package/dist/registry.js.map +0 -1
  1635. package/dist/reload.d.ts +0 -126
  1636. package/dist/reload.d.ts.map +0 -1
  1637. package/dist/reload.js +0 -653
  1638. package/dist/reload.js.map +0 -1
  1639. package/dist/remote.d.ts +0 -165
  1640. package/dist/remote.d.ts.map +0 -1
  1641. package/dist/remote.js +0 -612
  1642. package/dist/remote.js.map +0 -1
  1643. package/dist/schema.d.ts +0 -25
  1644. package/dist/schema.d.ts.map +0 -1
  1645. package/dist/schema.js +0 -403
  1646. package/dist/schema.js.map +0 -1
  1647. package/dist/state.d.ts +0 -92
  1648. package/dist/state.d.ts.map +0 -1
  1649. package/dist/state.js +0 -287
  1650. package/dist/state.js.map +0 -1
  1651. package/dist/types.d.ts +0 -88
  1652. package/dist/types.d.ts.map +0 -1
  1653. package/dist/types.js +0 -2
  1654. package/dist/types.js.map +0 -1
  1655. package/dist/websocket.d.ts +0 -15
  1656. package/dist/websocket.d.ts.map +0 -1
  1657. package/dist/websocket.js +0 -16
  1658. package/dist/websocket.js.map +0 -1
  1659. package/dist/wire.d.ts +0 -197
  1660. package/dist/wire.d.ts.map +0 -1
  1661. package/dist/wire.js +0 -166
  1662. package/dist/wire.js.map +0 -1
  1663. package/docs/guide.md +0 -814
  1664. package/docs/next/benchmarks.md +0 -959
  1665. package/docs/next/decisions.md +0 -2957
  1666. package/docs/next/dependencies/book.md +0 -1671
  1667. package/docs/next/dependencies/index.html +0 -2641
  1668. package/docs/next/design.md +0 -2554
  1669. package/docs/next/durable-observers/book.md +0 -432
  1670. package/docs/next/durable-observers/index.html +0 -517
  1671. package/docs/next/guide-plugins-hosts/book.md +0 -607
  1672. package/docs/next/guide-plugins-hosts/index.html +0 -652
  1673. package/docs/next/http-workers/book.md +0 -378
  1674. package/docs/next/http-workers/index.html +0 -515
  1675. package/docs/next/layer-1.md +0 -311
  1676. package/docs/next/layer-2.md +0 -216
  1677. package/docs/next/plugin-model/book.md +0 -186
  1678. package/docs/next/plugin-model/index.html +0 -310
  1679. package/docs/next/plugin-primer/book.md +0 -273
  1680. package/docs/next/plugin-primer/index.html +0 -430
  1681. package/docs/next/slice-1.md +0 -236
  1682. package/docs/next/slice-10.md +0 -285
  1683. package/docs/next/slice-11.md +0 -93
  1684. package/docs/next/slice-2.md +0 -174
  1685. package/docs/next/slice-3a.md +0 -296
  1686. package/docs/next/slice-3b.md +0 -197
  1687. package/docs/next/slice-4a.md +0 -418
  1688. package/docs/next/slice-4b.md +0 -208
  1689. package/docs/next/slice-6a.md +0 -676
  1690. package/docs/next/slice-6b.md +0 -332
  1691. package/docs/next/slice-7b/book.md +0 -608
  1692. package/docs/next/slice-7b/index.html +0 -842
  1693. package/docs/next/slice-7b.md +0 -255
  1694. package/docs/next/slice-7c.md +0 -165
  1695. package/docs/next/slices.md +0 -230
  1696. package/docs/next/store/book.md +0 -665
  1697. package/docs/next/store/index.html +0 -861
  1698. package/docs/next/store/walkthrough.md +0 -193
  1699. package/docs/spec.md +0 -288
  1700. package/docs/tutorial.md +0 -932
  1701. /package/dist/{next/contracts → contracts}/accepts.js +0 -0
  1702. /package/dist/{next/contracts → contracts}/contract.js +0 -0
  1703. /package/dist/{next/contracts → contracts}/declare.d.ts +0 -0
  1704. /package/dist/{next/contracts → contracts}/declare.js +0 -0
  1705. /package/dist/{next/contracts → contracts}/evolve.d.ts +0 -0
  1706. /package/dist/{next/contracts → contracts}/evolve.js +0 -0
  1707. /package/dist/{next/contracts → contracts}/fingerprint.js +0 -0
  1708. /package/dist/{next/contracts → contracts}/history.d.ts +0 -0
  1709. /package/dist/{next/contracts → contracts}/history.js +0 -0
  1710. /package/dist/{next/contracts → contracts}/host-kind.d.ts +0 -0
  1711. /package/dist/{next/contracts → contracts}/host-kind.js +0 -0
  1712. /package/dist/{next/contracts → contracts}/index.d.ts +0 -0
  1713. /package/dist/{next/contracts → contracts}/index.js +0 -0
  1714. /package/dist/{next/contracts → contracts}/internal.d.ts +0 -0
  1715. /package/dist/{next/contracts → contracts}/internal.js +0 -0
  1716. /package/dist/{next/contracts → contracts}/names.d.ts +0 -0
  1717. /package/dist/{next/contracts → contracts}/names.js +0 -0
  1718. /package/dist/{next/contracts → contracts}/params.js +0 -0
  1719. /package/dist/{next/contracts → contracts}/schema.d.ts +0 -0
  1720. /package/dist/{next/contracts → contracts}/schema.js +0 -0
  1721. /package/dist/{next/data → data}/args.js +0 -0
  1722. /package/dist/{next/data → data}/failure.d.ts +0 -0
  1723. /package/dist/{next/data → data}/params.js +0 -0
  1724. /package/dist/{next/documents → documents}/address-source.js +0 -0
  1725. /package/dist/{next/documents → documents}/fence.d.ts +0 -0
  1726. /package/dist/{next/documents → documents}/fence.js +0 -0
  1727. /package/dist/{next/documents → documents}/handles.js +0 -0
  1728. /package/dist/{next/documents → documents}/index.d.ts +0 -0
  1729. /package/dist/{next/documents → documents}/index.js +0 -0
  1730. /package/dist/{next/documents → documents}/internal.js +0 -0
  1731. /package/dist/{next/documents → documents}/line.d.ts +0 -0
  1732. /package/dist/{next/documents → documents}/line.js +0 -0
  1733. /package/dist/{next/documents → documents}/residency.js +0 -0
  1734. /package/dist/{next/host → host}/adapted.js +0 -0
  1735. /package/dist/{next/host → host}/backoff.d.ts +0 -0
  1736. /package/dist/{next/host → host}/backoff.js +0 -0
  1737. /package/dist/{next/host → host}/deadline.d.ts +0 -0
  1738. /package/dist/{next/host → host}/deadline.js +0 -0
  1739. /package/dist/{next/host → host}/dependencies.d.ts +0 -0
  1740. /package/dist/{next/host → host}/dependencies.js +0 -0
  1741. /package/dist/{next/host → host}/destination.js +0 -0
  1742. /package/dist/{next/host → host}/facet.js +0 -0
  1743. /package/dist/{next/host → host}/follow.js +0 -0
  1744. /package/dist/{next/host → host}/index.js +0 -0
  1745. /package/dist/{next/host → host}/members.js +0 -0
  1746. /package/dist/{next/host → host}/parked.js +0 -0
  1747. /package/dist/{next/host → host}/presence.js +0 -0
  1748. /package/dist/{next/host → host}/retry-on.d.ts +0 -0
  1749. /package/dist/{next/host → host}/retry-on.js +0 -0
  1750. /package/dist/{next/host → host}/revocation.js +0 -0
  1751. /package/dist/{next/host → host}/sleep.js +0 -0
  1752. /package/dist/{next/host → host}/uuid.d.ts +0 -0
  1753. /package/dist/{next/host → host}/uuid.js +0 -0
  1754. /package/dist/{next/jobs → jobs}/definition.d.ts +0 -0
  1755. /package/dist/{next/jobs → jobs}/definition.js +0 -0
  1756. /package/dist/{next/jobs → jobs}/index.d.ts +0 -0
  1757. /package/dist/{next/jobs → jobs}/index.js +0 -0
  1758. /package/dist/{next/jobs → jobs}/internal.d.ts +0 -0
  1759. /package/dist/{next/jobs → jobs}/internal.js +0 -0
  1760. /package/dist/{next/jobs → jobs}/persisted.js +0 -0
  1761. /package/dist/{next/jobs → jobs}/running.js +0 -0
  1762. /package/dist/{next/jobs → jobs}/stored.js +0 -0
  1763. /package/dist/{next/link → link}/binary.d.ts +0 -0
  1764. /package/dist/{next/link → link}/errors.d.ts +0 -0
  1765. /package/dist/{next/link → link}/errors.js +0 -0
  1766. /package/dist/{next/link → link}/index.d.ts +0 -0
  1767. /package/dist/{next/link → link}/index.js +0 -0
  1768. /package/dist/{next/link → link}/internal.d.ts +0 -0
  1769. /package/dist/{next/link → link}/internal.js +0 -0
  1770. /package/dist/{next/link → link}/ipc.d.ts +0 -0
  1771. /package/dist/{next/link → link}/ipc.js +0 -0
  1772. /package/dist/{next/link → link}/link.d.ts +0 -0
  1773. /package/dist/{next/link → link}/link.js +0 -0
  1774. /package/dist/{next/link → link}/text.d.ts +0 -0
  1775. /package/dist/{next/link → link}/values.d.ts +0 -0
  1776. /package/dist/{next/link → link}/websocket.d.ts +0 -0
  1777. /package/dist/{next/link → link}/websocket.js +0 -0
  1778. /package/dist/{next-node → node}/http/admission.d.ts +0 -0
  1779. /package/dist/{next-node → node}/http/admission.js +0 -0
  1780. /package/dist/{next-node → node}/http/file.d.ts +0 -0
  1781. /package/dist/{next-node → node}/http/file.js +0 -0
  1782. /package/dist/{next-node → node}/http/headers.d.ts +0 -0
  1783. /package/dist/{next-node → node}/http/incoming.d.ts +0 -0
  1784. /package/dist/{next-node → node}/http/incoming.js +0 -0
  1785. /package/dist/{next-node → node}/http/node.d.ts +0 -0
  1786. /package/dist/{next-node → node}/http/node.js +0 -0
  1787. /package/dist/{next-node → node}/http/response.js +0 -0
  1788. /package/dist/{next-node → node}/plugins/stack.d.ts +0 -0
  1789. /package/dist/{next-node → node}/plugins/stack.js +0 -0
  1790. /package/dist/{next/registries → registries}/contribution.d.ts +0 -0
  1791. /package/dist/{next/registries → registries}/contribution.js +0 -0
  1792. /package/dist/{next/registries → registries}/entries.d.ts +0 -0
  1793. /package/dist/{next/registries → registries}/entries.js +0 -0
  1794. /package/dist/{next/registries → registries}/index.d.ts +0 -0
  1795. /package/dist/{next/registries → registries}/index.js +0 -0
  1796. /package/dist/{next/registries → registries}/internal.d.ts +0 -0
  1797. /package/dist/{next/registries → registries}/internal.js +0 -0
  1798. /package/dist/{next/registries → registries}/registry.js +0 -0
  1799. /package/dist/{next/registries → registries}/value.d.ts +0 -0
  1800. /package/dist/{next/remote → remote}/calls.d.ts +0 -0
  1801. /package/dist/{next/remote → remote}/calls.js +0 -0
  1802. /package/dist/{next/remote → remote}/internal.d.ts +0 -0
  1803. /package/dist/{next/remote → remote}/internal.js +0 -0
  1804. /package/dist/{next/remote → remote}/path.d.ts +0 -0
  1805. /package/dist/{next/remote → remote}/path.js +0 -0
  1806. /package/dist/{next/state → state}/index.js +0 -0
  1807. /package/dist/{next/state → state}/internal.d.ts +0 -0
  1808. /package/dist/{next/state → state}/internal.js +0 -0
  1809. /package/dist/{next/state → state}/writable.js +0 -0
  1810. /package/dist/{next/store → store}/adapter.js +0 -0
  1811. /package/dist/{next/store → store}/allocator.d.ts +0 -0
  1812. /package/dist/{next/store → store}/allocator.js +0 -0
  1813. /package/dist/{next/store → store}/applier.d.ts +0 -0
  1814. /package/dist/{next/store → store}/applier.js +0 -0
  1815. /package/dist/{next/store → store}/apply-batch.js +0 -0
  1816. /package/dist/{next/store → store}/backend.js +0 -0
  1817. /package/dist/{next/store → store}/catalog.js +0 -0
  1818. /package/dist/{next/store → store}/claims.d.ts +0 -0
  1819. /package/dist/{next/store → store}/claims.js +0 -0
  1820. /package/dist/{next/store → store}/columns.d.ts +0 -0
  1821. /package/dist/{next/store → store}/columns.js +0 -0
  1822. /package/dist/{next/store → store}/evaluate.js +0 -0
  1823. /package/dist/{next/store → store}/expression.js +0 -0
  1824. /package/dist/{next/store → store}/index.d.ts +0 -0
  1825. /package/dist/{next/store → store}/index.js +0 -0
  1826. /package/dist/{next/store → store}/jsonl.d.ts +0 -0
  1827. /package/dist/{next/store → store}/jsonl.js +0 -0
  1828. /package/dist/{next/store → store}/outbox.js +0 -0
  1829. /package/dist/{next/store → store}/query.js +0 -0
  1830. /package/dist/{next/store → store}/refusal.d.ts +0 -0
  1831. /package/dist/{next/store → store}/refusal.js +0 -0
  1832. /package/dist/{next/store → store}/rows.js +0 -0
  1833. /package/dist/{next/store → store}/sql.js +0 -0
  1834. /package/dist/{next/store → store}/table-changes.js +0 -0
  1835. /package/dist/{next/store → store}/table-evolve.d.ts +0 -0
  1836. /package/dist/{next/store → store}/table-evolve.js +0 -0
  1837. /package/dist/{next/store → store}/table-history.d.ts +0 -0
  1838. /package/dist/{next/store → store}/table-history.js +0 -0
  1839. /package/dist/{next/store → store}/table-writes.d.ts +0 -0
  1840. /package/dist/{next/store → store}/table.js +0 -0
  1841. /package/dist/{next/store → store}/text.d.ts +0 -0
  1842. /package/dist/{next/store → store}/text.js +0 -0
  1843. /package/dist/{next/store → store}/writes.d.ts +0 -0
  1844. /package/dist/{next/store → store}/writes.js +0 -0
  1845. /package/docs/{next/dependencies → dependencies}/model.md +0 -0
  1846. /package/docs/{next/flow-control → flow-control}/book.md +0 -0
  1847. /package/docs/{next/flow-control → flow-control}/fold/index.html +0 -0
  1848. /package/docs/{next/flow-control → flow-control}/index.html +0 -0
  1849. /package/docs/{next/flow-control → flow-control}/window/index.html +0 -0
  1850. /package/docs/{next/slice-4.md → slice-4.md} +0 -0
  1851. /package/docs/{next/slice-5.md → slice-5.md} +0 -0
  1852. /package/docs/{next/slice-7a.md → slice-7a.md} +0 -0
  1853. /package/docs/{next/slice-8.md → slice-8.md} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/node/app/sessions.ts"],"names":[],"mappings":"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","sourcesContent":["// Sessions (slice 13 §2, decision \"The app kit, point 3: authentication\"): the kit's object on the server that issues\n// and revokes sessions, and its authenticator. A session is a principal behind a token `<id>.<secret>` (random); only\n// the secret's hash is kept. A browser carries its token in the kit's signed session cookie (`HttpOnly`,\n// `SameSite=Strict`), a command-line client in `Authorization: Bearer <token>`. Browser and device sessions persist in\n// the server's store and expire after 400 days unused; ephemeral sessions (a pick-a-name login, a public route) live\n// in memory only (`EphemeralSessions`), at most `maxEphemeral` of them (past it the oldest ends), so a public login\n// costs the same whatever came before; each ends with its client's connection (its last link closed, a grace period\n// passed: the links endpoint's `opened` hook counts them), and none outlives the server's run.\n\nimport type { Context } from \"../../context/index.ts\";\nimport { arr, bool, local, map, method, num, obj, oneOf, opt, str, unknown } from \"../../contracts/index.ts\";\nimport type { Principal } from \"../../data/index.ts\";\nimport { defineState } from \"../../documents/index.ts\";\nimport { defineFacet, type Facet } from \"../../host/index.ts\";\nimport type { JsonValue } from \"../../json.ts\";\nimport {\n\tAuthenticators,\n\tcookie,\n\tHttp,\n\ttype HttpRequest,\n\ttype HttpWrap,\n\ttype Provenance,\n\treadCookie,\n\treadSignedCookie,\n} from \"../http/index.ts\";\nimport { EphemeralSessions } from \"./ephemeral-sessions.ts\";\nimport { hashToken, matchesHash, newToken } from \"./secrets.ts\";\n\n/** What a session is for: a browser (its cookie), a device (a command-line client's token), an ephemeral login. */\nexport type SessionKind = \"browser\" | \"device\" | \"ephemeral\";\n\n/** A browser or device session as `Sessions.list` shows it: never its token or hash. */\nexport type SessionInfo = {\n\treadonly id: string;\n\treadonly label: string;\n\treadonly kind: \"browser\" | \"device\";\n\treadonly principal: unknown;\n\treadonly created: number;\n\treadonly lastUsed: number;\n};\n\n/** The kit's sessions (one per server): issue, verify, revoke, and the watchable list of persisted ones. */\nexport const Sessions = local(\"chord.app.sessions\", {\n\tversion: 1,\n\tparams: {},\n\tmembers: {\n\t\t/** The browser and device sessions (ephemeral ones are not listed: there may be many, and they are short). */\n\t\tlist: arr(\n\t\t\tobj({\n\t\t\t\tid: str(),\n\t\t\t\tlabel: str(),\n\t\t\t\tkind: oneOf(\"browser\", \"device\"),\n\t\t\t\tprincipal: unknown(),\n\t\t\t\tcreated: num(),\n\t\t\t\tlastUsed: num(),\n\t\t\t}),\n\t\t),\n\t\t/**\n\t\t * A new session for `principal`: its id, its token (shown once, kept only hashed) and the session cookie carrying\n\t\t * it for a browser (`Set-Cookie`; `secure` for a remote one).\n\t\t */\n\t\tissue: method(\n\t\t\tobj({\n\t\t\t\tprincipal: unknown(),\n\t\t\t\tlabel: str(),\n\t\t\t\tkind: oneOf(\"browser\", \"device\", \"ephemeral\"),\n\t\t\t\tsecure: opt(bool()),\n\t\t\t}),\n\t\t\tobj({ id: str(), token: str(), cookie: str() }),\n\t\t),\n\t\t/** The principal `token` authenticates as, or `null` (unknown, revoked, expired, malformed). */\n\t\tverify: method(str(), unknown()),\n\t\t/** Ends session `id` at once: its token authenticates nothing more. */\n\t\trevoke: method(str()),\n\t},\n});\n\n/** The name of the kit's session cookie. */\nexport const SESSION_COOKIE = \"chord-session\";\n\n/** The stored sessions: by id, each with its secret's hash and its principal (as JSON text: any of the app's). */\nconst SessionsDocument = defineState(\"chord.app.sessions\", {\n\tschema: obj({\n\t\tsessions: map(\n\t\t\tobj({\n\t\t\t\thash: str(),\n\t\t\t\tlabel: str(),\n\t\t\t\tkind: oneOf(\"browser\", \"device\"),\n\t\t\t\tprincipal: str(),\n\t\t\t\tcreated: num(),\n\t\t\t\tlastUsed: num(),\n\t\t\t}),\n\t\t),\n\t}),\n\tversion: 1,\n\tinitial: () => ({ sessions: {} }),\n\tpersist: true,\n\tcheckpointWhen: (_value, _ops, { deltasSinceBase }) => deltasSinceBase >= 50,\n});\n\n/** How often a session's `lastUsed` is written at most: once a minute (not one commit per request). */\nconst TOUCH_MS = 60_000;\n\n/** How long a persisted session lives unused: 400 days, as its cookie. */\nconst SESSION_IDLE_MS = 400 * 24 * 60 * 60_000;\n\n/** The sessions' limits: how many ephemeral sessions live at once (1,000 by default; past it the oldest ends). */\nexport type SessionLimits = { readonly maxEphemeral?: number };\n\n/** The kit's sessions: the facet for the server's core facets, and the links endpoint's `opened` hook. */\nexport type KitSessions<P extends Principal> = {\n\treadonly facet: Facet<P>;\n\t/** A link opened with `request`'s credentials: an ephemeral session's links are counted (it ends with its last). */\n\treadonly opened: (request: HttpRequest) => (() => void) | undefined;\n};\n\n/**\n * The kit's sessions: its facet serving `Sessions` (a host-lifetime object) and contributing its authenticator (the\n * bearer token first, else the session cookie signed with `cookieSecret`), and the links hook ending an ephemeral\n * session with its client's connection.\n */\nexport function createSessions<P extends Principal>(cookieSecret: string, limits: SessionLimits = {}): KitSessions<P> {\n\tconst ephemeral = new EphemeralSessions(limits.maxEphemeral ?? 1000);\n\tconst opened = (request: HttpRequest): (() => void) | undefined => {\n\t\tconst token = bearerToken(request) ?? readCookie(request, SESSION_COOKIE, cookieSecret);\n\t\tconst dot = token?.indexOf(\".\") ?? -1;\n\t\treturn dot > 0 ? ephemeral.linkOpened(token!.slice(0, dot)) : undefined;\n\t};\n\treturn { facet: sessionsFacet<P>(cookieSecret, ephemeral), opened };\n}\n\n/** The facet of `createSessions`. */\nfunction sessionsFacet<P extends Principal>(cookieSecret: string, ephemeral: EphemeralSessions): Facet<P> {\n\treturn defineFacet<P>((host) =>\n\t\thost.serve(Sessions, (_params, self) => {\n\t\t\tconst document = self.state(SessionsDocument);\n\t\t\tconst change = (fn: (sessions: Record<string, { lastUsed: number }>) => void, context: Context) =>\n\t\t\t\t// Not awaited by authentication: the request goes on; a write that fails is made again by a later request.\n\t\t\t\tvoid document.change((draft) => fn(draft.sessions), context).catch(() => {});\n\t\t\t/** The principal of `token`, or `undefined`; touches or lazily removes the persisted session it names. */\n\t\t\tconst authenticate = (token: string, context: Context): Principal | undefined => {\n\t\t\t\tconst dot = token.indexOf(\".\");\n\t\t\t\tif (dot <= 0) return undefined;\n\t\t\t\tconst id = token.slice(0, dot);\n\t\t\t\tconst secret = token.slice(dot + 1);\n\t\t\t\tconst short = ephemeral.get(id);\n\t\t\t\tif (short !== undefined) return matchesHash(secret, short.hash) ? short.principal : undefined;\n\t\t\t\t// A trust boundary: `id` is the client's (`Object.hasOwn`: no inherited member is a session).\n\t\t\t\tconst sessions = document.value.sessions;\n\t\t\t\tif (!Object.hasOwn(sessions, id)) return undefined;\n\t\t\t\tconst session = sessions[id]!;\n\t\t\t\tif (!matchesHash(secret, session.hash)) return undefined;\n\t\t\t\tconst now = Date.now();\n\t\t\t\tif (now - session.lastUsed > SESSION_IDLE_MS) {\n\t\t\t\t\tchange((draft) => {\n\t\t\t\t\t\tdelete draft[id];\n\t\t\t\t\t}, context);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tif (now - session.lastUsed > TOUCH_MS) {\n\t\t\t\t\tchange((draft) => {\n\t\t\t\t\t\tif (Object.hasOwn(draft, id)) draft[id]!.lastUsed = now;\n\t\t\t\t\t}, context);\n\t\t\t\t}\n\t\t\t\t// Stored by `issue` from a principal of the app's type.\n\t\t\t\treturn JSON.parse(session.principal) as Principal;\n\t\t\t};\n\t\t\tself.contribute(Authenticators, (request, context) => {\n\t\t\t\tconst token = bearerToken(request) ?? readCookie(request, SESSION_COOKIE, cookieSecret);\n\t\t\t\treturn token === undefined ? undefined : authenticate(token, context);\n\t\t\t});\n\t\t\tself.contribute(Http, { wraps: [rollingCookie(cookieSecret, authenticate)] });\n\t\t\treturn {\n\t\t\t\tlist: self.derive([document], ([value]) =>\n\t\t\t\t\tObject.entries(value.sessions).map(([id, { label, kind, principal, created, lastUsed }]) => ({\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\tkind,\n\t\t\t\t\t\t// Stored by `issue` as JSON text.\n\t\t\t\t\t\tprincipal: JSON.parse(principal) as JsonValue,\n\t\t\t\t\t\tcreated,\n\t\t\t\t\t\tlastUsed,\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t\tissue: async ({ principal, label, kind, secure }, ctx) => {\n\t\t\t\t\tconst id = newToken(12);\n\t\t\t\t\tconst secret = newToken(32);\n\t\t\t\t\tif (kind === \"ephemeral\") {\n\t\t\t\t\t\t// Principals are the app's: `issue`'s callers pass one of its type.\n\t\t\t\t\t\tephemeral.issue(id, hashToken(secret), principal as Principal);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst now = Date.now();\n\t\t\t\t\t\tconst stored = JSON.stringify(principal);\n\t\t\t\t\t\tawait document.change((draft) => {\n\t\t\t\t\t\t\tdraft.sessions[id] = {\n\t\t\t\t\t\t\t\thash: hashToken(secret),\n\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\tprincipal: stored,\n\t\t\t\t\t\t\t\tcreated: now,\n\t\t\t\t\t\t\t\tlastUsed: now,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}, ctx);\n\t\t\t\t\t}\n\t\t\t\t\tconst token = `${id}.${secret}`;\n\t\t\t\t\t// Only whether the browser is remote matters to the cookie (`Secure`).\n\t\t\t\t\tconst provenance: Provenance = secure === true ? { kind: \"remote\", host: \"\" } : { kind: \"local\" };\n\t\t\t\t\tconst set = sessionCookie(token, kind, { provenance }, cookieSecret);\n\t\t\t\t\treturn { id, token, cookie: set };\n\t\t\t\t},\n\t\t\t\tverify: async (token, ctx) => (authenticate(token, ctx) as JsonValue | undefined) ?? null,\n\t\t\t\trevoke: async (id, ctx) => {\n\t\t\t\t\tif (ephemeral.revoke(id)) return null;\n\t\t\t\t\tawait document.change((draft) => {\n\t\t\t\t\t\tdelete draft.sessions[id];\n\t\t\t\t\t}, ctx);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t};\n\t\t}),\n\t);\n}\n\n/**\n * The session cookie carrying `token` (a session of `kind`) for a browser of `request`'s provenance: a persisted\n * session's lives as long as the session does unused (400 days, renewed by `rollingCookie`), an ephemeral one's only\n * while the browser runs.\n */\nfunction sessionCookie(\n\ttoken: string,\n\tkind: SessionKind,\n\trequest: Pick<HttpRequest, \"provenance\">,\n\tsecret: string,\n): string {\n\tconst maxAge = kind === \"ephemeral\" ? undefined : SESSION_IDLE_MS / 1000;\n\treturn cookie(SESSION_COOKIE, token, { secret, request, maxAge });\n}\n\n/** How old a session cookie gets before a response renews it: a day. */\nconst ROLL_MS = 24 * 60 * 60_000;\n\n/**\n * The wrap around every route renewing the session cookie a request signed in with once it is older than a day: the\n * response sets it again with a fresh signed expiry, so a browser used within every 400 days stays signed in. Not when\n * the route sets a cookie itself, nor for an ephemeral session's (it has no expiry) or a token that no longer\n * authenticates.\n */\nfunction rollingCookie(\n\tsecret: string,\n\tauthenticate: (token: string, context: Context) => Principal | undefined,\n): HttpWrap {\n\treturn {\n\t\tname: \"chord.app.rolling-cookie\",\n\t\tphase: \"headers\",\n\t\tscope: \"all\",\n\t\twrap: async (request, next, ctx) => {\n\t\t\tconst response = await next(request);\n\t\t\tif (ctx.principal === undefined || Object.keys(response.headers ?? {}).some(isSetCookie)) return response;\n\t\t\tconst signed = readSignedCookie(request, SESSION_COOKIE, secret);\n\t\t\tif (signed?.expires === undefined || signed.expires - Date.now() > SESSION_IDLE_MS - ROLL_MS) return response;\n\t\t\tif (authenticate(signed.value, ctx) === undefined) return response;\n\t\t\tconst renewed = sessionCookie(signed.value, \"browser\", request, secret);\n\t\t\treturn { ...response, headers: { ...response.headers, \"Set-Cookie\": renewed } };\n\t\t},\n\t};\n}\n\n/** Whether a header name is `Set-Cookie` (any case). */\nfunction isSetCookie(name: string): boolean {\n\treturn name.toLowerCase() === \"set-cookie\";\n}\n\n/** The token of an `Authorization: Bearer <token>` header. */\nfunction bearerToken(request: HttpRequest): string | undefined {\n\tconst header = request.headers.get(\"authorization\");\n\tconst match = header === null ? null : /^Bearer\\s+(\\S+)$/i.exec(header);\n\treturn match?.[1];\n}\n"]}
@@ -0,0 +1,24 @@
1
+ /** One entry to write: its path (`/`-separated, relative) and its bytes, as a size and the chunks that make it up. */
2
+ export type TarEntry = {
3
+ readonly path: string;
4
+ readonly size: number;
5
+ readonly data: AsyncIterable<Uint8Array>;
6
+ };
7
+ /** One entry read: a regular file (its data, to be consumed before the next entry) or a directory. */
8
+ export type TarRead = {
9
+ readonly kind: "file";
10
+ readonly path: string;
11
+ readonly size: number;
12
+ readonly data: AsyncIterable<Uint8Array>;
13
+ } | {
14
+ readonly kind: "directory";
15
+ readonly path: string;
16
+ };
17
+ /** The archive of `entries`, as the chunks of its bytes (two zero blocks end it). */
18
+ export declare function writeTar(entries: AsyncIterable<TarEntry> | Iterable<TarEntry>): AsyncGenerator<Uint8Array>;
19
+ /**
20
+ * Reads the archive `source` entry by entry (each file's data read fully before the next entry is asked for), refusing
21
+ * what it may not hold (see the file's header).
22
+ */
23
+ export declare function readTar(source: AsyncIterable<Uint8Array>): AsyncGenerator<TarRead>;
24
+ //# sourceMappingURL=tar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar.d.ts","sourceRoot":"","sources":["../../../src/node/app/tar.ts"],"names":[],"mappings":"AAKA,sHAAsH;AACtH,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;AAElH,sGAAsG;AACtG,MAAM,MAAM,OAAO,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAAE,GACjH;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAKzD,qFAAqF;AACrF,wBAAuB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAcjH;AAuDD;;;GAGG;AACH,wBAAuB,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CA0BzF"}
@@ -0,0 +1,167 @@
1
+ // A minimal ustar (POSIX tar) writer and reader for the kit's address archives (slice 13 §4): regular files and
2
+ // directories, paths of at most 255 bytes, nothing else. The reader is a trust boundary: an archive may come from
3
+ // anywhere, so it refuses every entry that is no regular file or directory, a path that is absolute, holds `..`, a
4
+ // backslash or NUL, or names an empty segment, and a header whose checksum does not hold.
5
+ /** A tar block. */
6
+ const BLOCK = 512;
7
+ /** The archive of `entries`, as the chunks of its bytes (two zero blocks end it). */
8
+ export async function* writeTar(entries) {
9
+ for await (const entry of entries) {
10
+ yield header(entry.path, entry.size);
11
+ let written = 0;
12
+ for await (const chunk of entry.data) {
13
+ written += chunk.length;
14
+ if (written > entry.size)
15
+ throw new Error(`tar: ${entry.path} is larger than its size ${entry.size}`);
16
+ yield chunk;
17
+ }
18
+ if (written !== entry.size)
19
+ throw new Error(`tar: ${entry.path} is ${written} bytes, not ${entry.size}`);
20
+ const pad = (BLOCK - (entry.size % BLOCK)) % BLOCK;
21
+ if (pad > 0)
22
+ yield new Uint8Array(pad);
23
+ }
24
+ yield new Uint8Array(BLOCK * 2);
25
+ }
26
+ /** The ustar header of a regular file at `path` of `size` bytes. */
27
+ function header(path, size) {
28
+ checkPath(path);
29
+ const block = new Uint8Array(BLOCK);
30
+ const bytes = new TextEncoder().encode(path);
31
+ let name = bytes;
32
+ let prefix = new Uint8Array();
33
+ if (bytes.length > 100) {
34
+ // Split at a `/` so the name has at most 100 bytes and the prefix at most 155.
35
+ const at = path.lastIndexOf("/", path.length - 1);
36
+ const split = new TextEncoder().encode(path.slice(0, at)).length;
37
+ if (at < 0 || split > 155 || bytes.length - split - 1 > 100)
38
+ throw new Error(`tar: the path ${path} is too long`);
39
+ prefix = bytes.subarray(0, split);
40
+ name = bytes.subarray(split + 1);
41
+ }
42
+ block.set(name, 0);
43
+ field(block, 100, 8, "0000644");
44
+ field(block, 108, 8, "0000000");
45
+ field(block, 116, 8, "0000000");
46
+ field(block, 124, 12, size.toString(8).padStart(11, "0"));
47
+ field(block, 136, 12, Math.floor(Date.now() / 1000)
48
+ .toString(8)
49
+ .padStart(11, "0"));
50
+ block.fill(0x20, 148, 156);
51
+ block[156] = 0x30;
52
+ block.set(new TextEncoder().encode("ustar\u000000"), 257);
53
+ block.set(prefix, 345);
54
+ const sum = block.reduce((total, byte) => total + byte, 0);
55
+ field(block, 148, 8, `${sum.toString(8).padStart(6, "0")}\u0000 `);
56
+ return block;
57
+ }
58
+ /** Writes `text` (ASCII) at `offset` of `block`, NUL-terminated within `length`. */
59
+ function field(block, offset, length, text) {
60
+ const bytes = new TextEncoder().encode(text);
61
+ if (bytes.length > length)
62
+ throw new Error(`tar: ${text} does not fit ${length} bytes`);
63
+ block.set(bytes, offset);
64
+ }
65
+ /** Refuses a path an archive may not hold: absolute, with `..`, `.`, an empty segment, a backslash or a NUL. */
66
+ function checkPath(path) {
67
+ const segments = path.split("/");
68
+ const bad = path === "" || path.includes("\\") || path.includes("\u0000") || path.startsWith("/");
69
+ if (bad || segments.some((segment) => segment === "" || segment === "." || segment === "..")) {
70
+ throw new Error(`tar: the path ${JSON.stringify(path)} is refused`);
71
+ }
72
+ }
73
+ /**
74
+ * Reads the archive `source` entry by entry (each file's data read fully before the next entry is asked for), refusing
75
+ * what it may not hold (see the file's header).
76
+ */
77
+ export async function* readTar(source) {
78
+ const reader = new ByteReader(source);
79
+ for (;;) {
80
+ const block = await reader.read(BLOCK);
81
+ if (block.length < BLOCK)
82
+ throw new Error("tar: the archive ends inside a header");
83
+ if (block.every((byte) => byte === 0))
84
+ return;
85
+ const { path, size, type } = parseHeader(block);
86
+ const padded = Math.ceil(size / BLOCK) * BLOCK;
87
+ if (type === "directory") {
88
+ yield { kind: "directory", path };
89
+ await reader.skip(padded);
90
+ continue;
91
+ }
92
+ let left = size;
93
+ const data = (async function* () {
94
+ while (left > 0) {
95
+ const chunk = await reader.read(Math.min(left, 64 * 1024));
96
+ if (chunk.length === 0)
97
+ throw new Error(`tar: the archive ends inside ${path}`);
98
+ left -= chunk.length;
99
+ yield chunk;
100
+ }
101
+ })();
102
+ yield { kind: "file", path, size, data };
103
+ // What the consumer left unread (also when it ended the data's iteration early), then the padding.
104
+ await reader.skip(left + padded - size);
105
+ }
106
+ }
107
+ /** A header's path, size and type, its checksum checked; anything but a regular file or a directory refused. */
108
+ function parseHeader(block) {
109
+ const stored = Number.parseInt(text(block, 148, 8).trim(), 8);
110
+ let sum = 0;
111
+ for (let index = 0; index < BLOCK; index++)
112
+ sum += index >= 148 && index < 156 ? 0x20 : block[index];
113
+ if (stored !== sum)
114
+ throw new Error("tar: a header's checksum does not hold");
115
+ const flag = String.fromCharCode(block[156]);
116
+ const type = flag === "0" || flag === "\u0000" ? "file" : flag === "5" ? "directory" : undefined;
117
+ if (type === undefined)
118
+ throw new Error(`tar: an entry of type ${JSON.stringify(flag)} is refused (files only)`);
119
+ const prefix = text(block, 345, 155);
120
+ const name = text(block, 0, 100);
121
+ const path = (prefix === "" ? name : `${prefix}/${name}`).replace(/\/$/, "");
122
+ checkPath(path);
123
+ const size = Number.parseInt(text(block, 124, 12).trim() || "0", 8);
124
+ if (!Number.isSafeInteger(size) || size < 0)
125
+ throw new Error(`tar: ${path} has no valid size`);
126
+ return { path, size: type === "directory" ? 0 : size, type };
127
+ }
128
+ /** The NUL-terminated text of a header field. */
129
+ function text(block, offset, length) {
130
+ const bytes = block.subarray(offset, offset + length);
131
+ const end = bytes.indexOf(0);
132
+ return new TextDecoder().decode(end < 0 ? bytes : bytes.subarray(0, end));
133
+ }
134
+ /** Reads exactly as many bytes as asked from a stream of chunks (fewer only at its end). */
135
+ class ByteReader {
136
+ #source;
137
+ #buffer = new Uint8Array();
138
+ constructor(source) {
139
+ this.#source = source[Symbol.asyncIterator]();
140
+ }
141
+ /** Up to `length` bytes: `length` unless the stream ends first. */
142
+ async read(length) {
143
+ while (this.#buffer.length < length) {
144
+ const next = await this.#source.next();
145
+ if (next.done === true)
146
+ break;
147
+ const joined = new Uint8Array(this.#buffer.length + next.value.length);
148
+ joined.set(this.#buffer);
149
+ joined.set(next.value, this.#buffer.length);
150
+ this.#buffer = joined;
151
+ }
152
+ const taken = this.#buffer.subarray(0, Math.min(length, this.#buffer.length));
153
+ this.#buffer = this.#buffer.subarray(taken.length);
154
+ return taken;
155
+ }
156
+ /** Skips `length` bytes. */
157
+ async skip(length) {
158
+ let left = length;
159
+ while (left > 0) {
160
+ const skipped = await this.read(Math.min(left, 64 * 1024));
161
+ if (skipped.length === 0)
162
+ throw new Error("tar: the archive ends early");
163
+ left -= skipped.length;
164
+ }
165
+ }
166
+ }
167
+ //# sourceMappingURL=tar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar.js","sourceRoot":"","sources":["../../../src/node/app/tar.ts"],"names":[],"mappings":"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","sourcesContent":["// A minimal ustar (POSIX tar) writer and reader for the kit's address archives (slice 13 §4): regular files and\n// directories, paths of at most 255 bytes, nothing else. The reader is a trust boundary: an archive may come from\n// anywhere, so it refuses every entry that is no regular file or directory, a path that is absolute, holds `..`, a\n// backslash or NUL, or names an empty segment, and a header whose checksum does not hold.\n\n/** One entry to write: its path (`/`-separated, relative) and its bytes, as a size and the chunks that make it up. */\nexport type TarEntry = { readonly path: string; readonly size: number; readonly data: AsyncIterable<Uint8Array> };\n\n/** One entry read: a regular file (its data, to be consumed before the next entry) or a directory. */\nexport type TarRead =\n\t| { readonly kind: \"file\"; readonly path: string; readonly size: number; readonly data: AsyncIterable<Uint8Array> }\n\t| { readonly kind: \"directory\"; readonly path: string };\n\n/** A tar block. */\nconst BLOCK = 512;\n\n/** The archive of `entries`, as the chunks of its bytes (two zero blocks end it). */\nexport async function* writeTar(entries: AsyncIterable<TarEntry> | Iterable<TarEntry>): AsyncGenerator<Uint8Array> {\n\tfor await (const entry of entries) {\n\t\tyield header(entry.path, entry.size);\n\t\tlet written = 0;\n\t\tfor await (const chunk of entry.data) {\n\t\t\twritten += chunk.length;\n\t\t\tif (written > entry.size) throw new Error(`tar: ${entry.path} is larger than its size ${entry.size}`);\n\t\t\tyield chunk;\n\t\t}\n\t\tif (written !== entry.size) throw new Error(`tar: ${entry.path} is ${written} bytes, not ${entry.size}`);\n\t\tconst pad = (BLOCK - (entry.size % BLOCK)) % BLOCK;\n\t\tif (pad > 0) yield new Uint8Array(pad);\n\t}\n\tyield new Uint8Array(BLOCK * 2);\n}\n\n/** The ustar header of a regular file at `path` of `size` bytes. */\nfunction header(path: string, size: number): Uint8Array {\n\tcheckPath(path);\n\tconst block = new Uint8Array(BLOCK);\n\tconst bytes = new TextEncoder().encode(path);\n\tlet name = bytes;\n\tlet prefix = new Uint8Array();\n\tif (bytes.length > 100) {\n\t\t// Split at a `/` so the name has at most 100 bytes and the prefix at most 155.\n\t\tconst at = path.lastIndexOf(\"/\", path.length - 1);\n\t\tconst split = new TextEncoder().encode(path.slice(0, at)).length;\n\t\tif (at < 0 || split > 155 || bytes.length - split - 1 > 100) throw new Error(`tar: the path ${path} is too long`);\n\t\tprefix = bytes.subarray(0, split);\n\t\tname = bytes.subarray(split + 1);\n\t}\n\tblock.set(name, 0);\n\tfield(block, 100, 8, \"0000644\");\n\tfield(block, 108, 8, \"0000000\");\n\tfield(block, 116, 8, \"0000000\");\n\tfield(block, 124, 12, size.toString(8).padStart(11, \"0\"));\n\tfield(\n\t\tblock,\n\t\t136,\n\t\t12,\n\t\tMath.floor(Date.now() / 1000)\n\t\t\t.toString(8)\n\t\t\t.padStart(11, \"0\"),\n\t);\n\tblock.fill(0x20, 148, 156);\n\tblock[156] = 0x30;\n\tblock.set(new TextEncoder().encode(\"ustar\\u000000\"), 257);\n\tblock.set(prefix, 345);\n\tconst sum = block.reduce((total, byte) => total + byte, 0);\n\tfield(block, 148, 8, `${sum.toString(8).padStart(6, \"0\")}\\u0000 `);\n\treturn block;\n}\n\n/** Writes `text` (ASCII) at `offset` of `block`, NUL-terminated within `length`. */\nfunction field(block: Uint8Array, offset: number, length: number, text: string): void {\n\tconst bytes = new TextEncoder().encode(text);\n\tif (bytes.length > length) throw new Error(`tar: ${text} does not fit ${length} bytes`);\n\tblock.set(bytes, offset);\n}\n\n/** Refuses a path an archive may not hold: absolute, with `..`, `.`, an empty segment, a backslash or a NUL. */\nfunction checkPath(path: string): void {\n\tconst segments = path.split(\"/\");\n\tconst bad = path === \"\" || path.includes(\"\\\\\") || path.includes(\"\\u0000\") || path.startsWith(\"/\");\n\tif (bad || segments.some((segment) => segment === \"\" || segment === \".\" || segment === \"..\")) {\n\t\tthrow new Error(`tar: the path ${JSON.stringify(path)} is refused`);\n\t}\n}\n\n/**\n * Reads the archive `source` entry by entry (each file's data read fully before the next entry is asked for), refusing\n * what it may not hold (see the file's header).\n */\nexport async function* readTar(source: AsyncIterable<Uint8Array>): AsyncGenerator<TarRead> {\n\tconst reader = new ByteReader(source);\n\tfor (;;) {\n\t\tconst block = await reader.read(BLOCK);\n\t\tif (block.length < BLOCK) throw new Error(\"tar: the archive ends inside a header\");\n\t\tif (block.every((byte) => byte === 0)) return;\n\t\tconst { path, size, type } = parseHeader(block);\n\t\tconst padded = Math.ceil(size / BLOCK) * BLOCK;\n\t\tif (type === \"directory\") {\n\t\t\tyield { kind: \"directory\", path };\n\t\t\tawait reader.skip(padded);\n\t\t\tcontinue;\n\t\t}\n\t\tlet left = size;\n\t\tconst data = (async function* () {\n\t\t\twhile (left > 0) {\n\t\t\t\tconst chunk = await reader.read(Math.min(left, 64 * 1024));\n\t\t\t\tif (chunk.length === 0) throw new Error(`tar: the archive ends inside ${path}`);\n\t\t\t\tleft -= chunk.length;\n\t\t\t\tyield chunk;\n\t\t\t}\n\t\t})();\n\t\tyield { kind: \"file\", path, size, data };\n\t\t// What the consumer left unread (also when it ended the data's iteration early), then the padding.\n\t\tawait reader.skip(left + padded - size);\n\t}\n}\n\n/** A header's path, size and type, its checksum checked; anything but a regular file or a directory refused. */\nfunction parseHeader(block: Uint8Array): {\n\treadonly path: string;\n\treadonly size: number;\n\treadonly type: \"file\" | \"directory\";\n} {\n\tconst stored = Number.parseInt(text(block, 148, 8).trim(), 8);\n\tlet sum = 0;\n\tfor (let index = 0; index < BLOCK; index++) sum += index >= 148 && index < 156 ? 0x20 : block[index]!;\n\tif (stored !== sum) throw new Error(\"tar: a header's checksum does not hold\");\n\tconst flag = String.fromCharCode(block[156]!);\n\tconst type = flag === \"0\" || flag === \"\\u0000\" ? \"file\" : flag === \"5\" ? \"directory\" : undefined;\n\tif (type === undefined) throw new Error(`tar: an entry of type ${JSON.stringify(flag)} is refused (files only)`);\n\tconst prefix = text(block, 345, 155);\n\tconst name = text(block, 0, 100);\n\tconst path = (prefix === \"\" ? name : `${prefix}/${name}`).replace(/\\/$/, \"\");\n\tcheckPath(path);\n\tconst size = Number.parseInt(text(block, 124, 12).trim() || \"0\", 8);\n\tif (!Number.isSafeInteger(size) || size < 0) throw new Error(`tar: ${path} has no valid size`);\n\treturn { path, size: type === \"directory\" ? 0 : size, type };\n}\n\n/** The NUL-terminated text of a header field. */\nfunction text(block: Uint8Array, offset: number, length: number): string {\n\tconst bytes = block.subarray(offset, offset + length);\n\tconst end = bytes.indexOf(0);\n\treturn new TextDecoder().decode(end < 0 ? bytes : bytes.subarray(0, end));\n}\n\n/** Reads exactly as many bytes as asked from a stream of chunks (fewer only at its end). */\nclass ByteReader {\n\treadonly #source: AsyncIterator<Uint8Array>;\n\t#buffer = new Uint8Array();\n\n\tconstructor(source: AsyncIterable<Uint8Array>) {\n\t\tthis.#source = source[Symbol.asyncIterator]();\n\t}\n\n\t/** Up to `length` bytes: `length` unless the stream ends first. */\n\tasync read(length: number): Promise<Uint8Array> {\n\t\twhile (this.#buffer.length < length) {\n\t\t\tconst next = await this.#source.next();\n\t\t\tif (next.done === true) break;\n\t\t\tconst joined = new Uint8Array(this.#buffer.length + next.value.length);\n\t\t\tjoined.set(this.#buffer);\n\t\t\tjoined.set(next.value, this.#buffer.length);\n\t\t\tthis.#buffer = joined;\n\t\t}\n\t\tconst taken = this.#buffer.subarray(0, Math.min(length, this.#buffer.length));\n\t\tthis.#buffer = this.#buffer.subarray(taken.length);\n\t\treturn taken;\n\t}\n\n\t/** Skips `length` bytes. */\n\tasync skip(length: number): Promise<void> {\n\t\tlet left = length;\n\t\twhile (left > 0) {\n\t\t\tconst skipped = await this.read(Math.min(left, 64 * 1024));\n\t\t\tif (skipped.length === 0) throw new Error(\"tar: the archive ends early\");\n\t\t\tleft -= skipped.length;\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,37 @@
1
+ /** A finished upload: what it was begun with and its size, its bytes moved to the path `finish` was given. */
2
+ export type Finished<T> = {
3
+ readonly data: T;
4
+ readonly size: number;
5
+ };
6
+ /**
7
+ * The uploads under way of one `Files` object, in the directory `run` (this object's own, made on first use), at most
8
+ * `max` at once: each holds a file handle until it ends, so a caller beginning uploads without end would exhaust the
9
+ * process's descriptors. Each carries its owner's `T` (what the file becomes when it finishes).
10
+ */
11
+ export declare class Uploads<T> {
12
+ #private;
13
+ constructor(run: string, max: number);
14
+ /** The bytes accepted by every upload under way (they count against the host's cap). */
15
+ get size(): number;
16
+ /** The id of the upload under way whose data `matches`, if any. */
17
+ find(matches: (data: T) => boolean): string | undefined;
18
+ /** A new upload carrying `data`: its id; `unavailable` (`busy`) while `max` are under way. */
19
+ begin(data: T): Promise<string>;
20
+ /**
21
+ * Writes `bytes` at `offset` of upload `id`, which must be where the accepted appends reached (else `invalid`, its
22
+ * details the expected `{ offset }`); `room(adding, fileSize)` refuses what the caps do not allow, before anything
23
+ * is accepted. A failed write ends the upload.
24
+ */
25
+ append(id: string, offset: number, bytes: Uint8Array, room: (adding: number, fileSize: number) => void): Promise<void>;
26
+ /** The bytes of upload `id` written so far, once its writes in flight landed: where a writer resumes. */
27
+ uploaded(id: string): Promise<number>;
28
+ /** Ends upload `id` once its writes landed and moves its file to `path`; refused when a write of it failed. */
29
+ finish(id: string, path: string): Promise<Finished<T>>;
30
+ /** Drops upload `id` once its writes landed (an unknown one: nothing): its writer gave up. */
31
+ cancel(id: string): Promise<void>;
32
+ /** Drops the uploads unwritten for `idleMs`, once their writes landed. */
33
+ expire(idleMs: number): Promise<void>;
34
+ /** Drops every upload under way (their object ended). */
35
+ close(): Promise<void>;
36
+ }
37
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../../src/node/app/uploads.ts"],"names":[],"mappings":"AAwBA,8GAA8G;AAC9G,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;;;GAIG;AACH,qBAAa,OAAO,CAAC,CAAC;;IAKrB,YAAY,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAGnC;IAED,wFAAwF;IACxF,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED,mEAAmE;IACnE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,CAGtD;IAED,8FAA8F;IACxF,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBpC;IAED;;;;OAIG;IACG,MAAM,CACX,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAC9C,OAAO,CAAC,IAAI,CAAC,CA2Bf;IAED,yGAAyG;IACnG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1C;IAED,+GAA+G;IACzG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAQ3D;IAED,8FAA8F;IACxF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtC;IAED,0EAA0E;IACpE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1C;IAED,yDAAyD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CAqBD"}
@@ -0,0 +1,157 @@
1
+ // Chunked uploads of one `Files` object (slice 13 §4, design §23 "Chunked transfers"): each upload one file handle in
2
+ // the run's directory, written at positions. An append is accepted at the offset the accepted appends reached, so a
3
+ // writer may send several without waiting (the call window allows it): each write lands at its own position whatever
4
+ // order the thread pool completes them in. `uploaded`, `finish` and expiry wait for an upload's writes in flight; a
5
+ // failed write ends its upload.
6
+ import { mkdir, open, rename, rm } from "node:fs/promises";
7
+ import { join } from "node:path";
8
+ import { ChordError } from "../../data/index.js";
9
+ import { invalid } from "../../data/internal.js";
10
+ import { newToken } from "./secrets.js";
11
+ /**
12
+ * The uploads under way of one `Files` object, in the directory `run` (this object's own, made on first use), at most
13
+ * `max` at once: each holds a file handle until it ends, so a caller beginning uploads without end would exhaust the
14
+ * process's descriptors. Each carries its owner's `T` (what the file becomes when it finishes).
15
+ */
16
+ export class Uploads {
17
+ #run;
18
+ #max;
19
+ #uploads = new Map();
20
+ constructor(run, max) {
21
+ this.#run = run;
22
+ this.#max = max;
23
+ }
24
+ /** The bytes accepted by every upload under way (they count against the host's cap). */
25
+ get size() {
26
+ let size = 0;
27
+ for (const upload of this.#uploads.values())
28
+ size += upload.size;
29
+ return size;
30
+ }
31
+ /** The id of the upload under way whose data `matches`, if any. */
32
+ find(matches) {
33
+ for (const [id, upload] of this.#uploads)
34
+ if (matches(upload.data))
35
+ return id;
36
+ return undefined;
37
+ }
38
+ /** A new upload carrying `data`: its id; `unavailable` (`busy`) while `max` are under way. */
39
+ async begin(data) {
40
+ if (this.#uploads.size >= this.#max) {
41
+ throw new ChordError({
42
+ code: "unavailable",
43
+ reason: "busy",
44
+ message: `files: ${this.#max} uploads are under way; finish one, or wait for an idle one to expire`,
45
+ });
46
+ }
47
+ const id = newToken(12);
48
+ await mkdir(this.#run, { recursive: true, mode: 0o700 });
49
+ const handle = await open(join(this.#run, id), "wx", 0o600);
50
+ const upload = {
51
+ data,
52
+ handle,
53
+ size: 0,
54
+ touched: Date.now(),
55
+ writes: new Set(),
56
+ failed: false,
57
+ ended: undefined,
58
+ };
59
+ this.#uploads.set(id, upload);
60
+ return id;
61
+ }
62
+ /**
63
+ * Writes `bytes` at `offset` of upload `id`, which must be where the accepted appends reached (else `invalid`, its
64
+ * details the expected `{ offset }`); `room(adding, fileSize)` refuses what the caps do not allow, before anything
65
+ * is accepted. A failed write ends the upload.
66
+ */
67
+ async append(id, offset, bytes, room) {
68
+ const upload = this.#underway(id);
69
+ if (offset !== upload.size) {
70
+ throw invalid("args", `files: upload ${id} is at offset ${upload.size}, not ${offset}`, {
71
+ offset: upload.size,
72
+ });
73
+ }
74
+ room(bytes.length, upload.size + bytes.length);
75
+ // Accepted now, with no await before the write starts: the next append may follow at once, its write going to
76
+ // its own position.
77
+ upload.size += bytes.length;
78
+ upload.touched = Date.now();
79
+ const write = upload.handle.write(bytes, 0, bytes.length, offset);
80
+ upload.writes.add(write);
81
+ try {
82
+ await write;
83
+ }
84
+ catch (error) {
85
+ upload.writes.delete(write);
86
+ if (!upload.failed) {
87
+ upload.failed = true;
88
+ this.#uploads.delete(id);
89
+ await this.#end(upload);
90
+ await rm(join(this.#run, id), { force: true });
91
+ }
92
+ throw error;
93
+ }
94
+ upload.writes.delete(write);
95
+ }
96
+ /** The bytes of upload `id` written so far, once its writes in flight landed: where a writer resumes. */
97
+ async uploaded(id) {
98
+ const upload = this.#underway(id);
99
+ await Promise.allSettled([...upload.writes]);
100
+ if (upload.failed)
101
+ throw failedUpload(id);
102
+ return upload.size;
103
+ }
104
+ /** Ends upload `id` once its writes landed and moves its file to `path`; refused when a write of it failed. */
105
+ async finish(id, path) {
106
+ const upload = this.#underway(id);
107
+ // Taken out first: an append arriving now finds no upload.
108
+ this.#uploads.delete(id);
109
+ await this.#end(upload);
110
+ if (upload.failed)
111
+ throw failedUpload(id);
112
+ await rename(join(this.#run, id), path);
113
+ return { data: upload.data, size: upload.size };
114
+ }
115
+ /** Drops upload `id` once its writes landed (an unknown one: nothing): its writer gave up. */
116
+ async cancel(id) {
117
+ const upload = this.#uploads.get(id);
118
+ if (upload !== undefined)
119
+ await this.#discard(id, upload);
120
+ }
121
+ /** Drops the uploads unwritten for `idleMs`, once their writes landed. */
122
+ async expire(idleMs) {
123
+ const now = Date.now();
124
+ for (const [id, upload] of this.#uploads) {
125
+ if (now - upload.touched >= idleMs)
126
+ await this.#discard(id, upload);
127
+ }
128
+ }
129
+ /** Drops every upload under way (their object ended). */
130
+ async close() {
131
+ for (const [id, upload] of this.#uploads)
132
+ await this.#discard(id, upload);
133
+ }
134
+ /** The upload `id` under way; else `invalid`. */
135
+ #underway(id) {
136
+ const upload = this.#uploads.get(id);
137
+ if (upload === undefined)
138
+ throw invalid("args", `files: no upload ${id} (finished, failed, expired or unknown)`);
139
+ return upload;
140
+ }
141
+ /** Takes upload `id` out, closes its file once its writes landed and removes it. */
142
+ async #discard(id, upload) {
143
+ this.#uploads.delete(id);
144
+ await this.#end(upload);
145
+ await rm(join(this.#run, id), { force: true });
146
+ }
147
+ /** Closes `upload`'s file once its writes in flight landed; once, whoever ends it first. */
148
+ #end(upload) {
149
+ upload.ended ??= Promise.allSettled([...upload.writes]).then(() => upload.handle.close());
150
+ return upload.ended;
151
+ }
152
+ }
153
+ /** The refusal of an upload one of whose writes failed. */
154
+ function failedUpload(id) {
155
+ return invalid("args", `files: upload ${id} failed to write and was dropped`);
156
+ }
157
+ //# sourceMappingURL=uploads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../../src/node/app/uploads.ts"],"names":[],"mappings":"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","sourcesContent":["// Chunked uploads of one `Files` object (slice 13 §4, design §23 \"Chunked transfers\"): each upload one file handle in\n// the run's directory, written at positions. An append is accepted at the offset the accepted appends reached, so a\n// writer may send several without waiting (the call window allows it): each write lands at its own position whatever\n// order the thread pool completes them in. `uploaded`, `finish` and expiry wait for an upload's writes in flight; a\n// failed write ends its upload.\n\nimport type { FileHandle } from \"node:fs/promises\";\nimport { mkdir, open, rename, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ChordError } from \"../../data/index.ts\";\nimport { invalid } from \"../../data/internal.ts\";\nimport { newToken } from \"./secrets.ts\";\n\n/** An upload under way: its owner's data, its file, the bytes accepted, its writes in flight, its first failed write, its end. */\ntype Upload<T> = {\n\treadonly data: T;\n\treadonly handle: FileHandle;\n\tsize: number;\n\ttouched: number;\n\treadonly writes: Set<Promise<unknown>>;\n\tfailed: boolean;\n\tended: Promise<void> | undefined;\n};\n\n/** A finished upload: what it was begun with and its size, its bytes moved to the path `finish` was given. */\nexport type Finished<T> = { readonly data: T; readonly size: number };\n\n/**\n * The uploads under way of one `Files` object, in the directory `run` (this object's own, made on first use), at most\n * `max` at once: each holds a file handle until it ends, so a caller beginning uploads without end would exhaust the\n * process's descriptors. Each carries its owner's `T` (what the file becomes when it finishes).\n */\nexport class Uploads<T> {\n\treadonly #run: string;\n\treadonly #max: number;\n\treadonly #uploads = new Map<string, Upload<T>>();\n\n\tconstructor(run: string, max: number) {\n\t\tthis.#run = run;\n\t\tthis.#max = max;\n\t}\n\n\t/** The bytes accepted by every upload under way (they count against the host's cap). */\n\tget size(): number {\n\t\tlet size = 0;\n\t\tfor (const upload of this.#uploads.values()) size += upload.size;\n\t\treturn size;\n\t}\n\n\t/** The id of the upload under way whose data `matches`, if any. */\n\tfind(matches: (data: T) => boolean): string | undefined {\n\t\tfor (const [id, upload] of this.#uploads) if (matches(upload.data)) return id;\n\t\treturn undefined;\n\t}\n\n\t/** A new upload carrying `data`: its id; `unavailable` (`busy`) while `max` are under way. */\n\tasync begin(data: T): Promise<string> {\n\t\tif (this.#uploads.size >= this.#max) {\n\t\t\tthrow new ChordError({\n\t\t\t\tcode: \"unavailable\",\n\t\t\t\treason: \"busy\",\n\t\t\t\tmessage: `files: ${this.#max} uploads are under way; finish one, or wait for an idle one to expire`,\n\t\t\t});\n\t\t}\n\t\tconst id = newToken(12);\n\t\tawait mkdir(this.#run, { recursive: true, mode: 0o700 });\n\t\tconst handle = await open(join(this.#run, id), \"wx\", 0o600);\n\t\tconst upload: Upload<T> = {\n\t\t\tdata,\n\t\t\thandle,\n\t\t\tsize: 0,\n\t\t\ttouched: Date.now(),\n\t\t\twrites: new Set(),\n\t\t\tfailed: false,\n\t\t\tended: undefined,\n\t\t};\n\t\tthis.#uploads.set(id, upload);\n\t\treturn id;\n\t}\n\n\t/**\n\t * Writes `bytes` at `offset` of upload `id`, which must be where the accepted appends reached (else `invalid`, its\n\t * details the expected `{ offset }`); `room(adding, fileSize)` refuses what the caps do not allow, before anything\n\t * is accepted. A failed write ends the upload.\n\t */\n\tasync append(\n\t\tid: string,\n\t\toffset: number,\n\t\tbytes: Uint8Array,\n\t\troom: (adding: number, fileSize: number) => void,\n\t): Promise<void> {\n\t\tconst upload = this.#underway(id);\n\t\tif (offset !== upload.size) {\n\t\t\tthrow invalid(\"args\", `files: upload ${id} is at offset ${upload.size}, not ${offset}`, {\n\t\t\t\toffset: upload.size,\n\t\t\t});\n\t\t}\n\t\troom(bytes.length, upload.size + bytes.length);\n\t\t// Accepted now, with no await before the write starts: the next append may follow at once, its write going to\n\t\t// its own position.\n\t\tupload.size += bytes.length;\n\t\tupload.touched = Date.now();\n\t\tconst write = upload.handle.write(bytes, 0, bytes.length, offset);\n\t\tupload.writes.add(write);\n\t\ttry {\n\t\t\tawait write;\n\t\t} catch (error) {\n\t\t\tupload.writes.delete(write);\n\t\t\tif (!upload.failed) {\n\t\t\t\tupload.failed = true;\n\t\t\t\tthis.#uploads.delete(id);\n\t\t\t\tawait this.#end(upload);\n\t\t\t\tawait rm(join(this.#run, id), { force: true });\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tupload.writes.delete(write);\n\t}\n\n\t/** The bytes of upload `id` written so far, once its writes in flight landed: where a writer resumes. */\n\tasync uploaded(id: string): Promise<number> {\n\t\tconst upload = this.#underway(id);\n\t\tawait Promise.allSettled([...upload.writes]);\n\t\tif (upload.failed) throw failedUpload(id);\n\t\treturn upload.size;\n\t}\n\n\t/** Ends upload `id` once its writes landed and moves its file to `path`; refused when a write of it failed. */\n\tasync finish(id: string, path: string): Promise<Finished<T>> {\n\t\tconst upload = this.#underway(id);\n\t\t// Taken out first: an append arriving now finds no upload.\n\t\tthis.#uploads.delete(id);\n\t\tawait this.#end(upload);\n\t\tif (upload.failed) throw failedUpload(id);\n\t\tawait rename(join(this.#run, id), path);\n\t\treturn { data: upload.data, size: upload.size };\n\t}\n\n\t/** Drops upload `id` once its writes landed (an unknown one: nothing): its writer gave up. */\n\tasync cancel(id: string): Promise<void> {\n\t\tconst upload = this.#uploads.get(id);\n\t\tif (upload !== undefined) await this.#discard(id, upload);\n\t}\n\n\t/** Drops the uploads unwritten for `idleMs`, once their writes landed. */\n\tasync expire(idleMs: number): Promise<void> {\n\t\tconst now = Date.now();\n\t\tfor (const [id, upload] of this.#uploads) {\n\t\t\tif (now - upload.touched >= idleMs) await this.#discard(id, upload);\n\t\t}\n\t}\n\n\t/** Drops every upload under way (their object ended). */\n\tasync close(): Promise<void> {\n\t\tfor (const [id, upload] of this.#uploads) await this.#discard(id, upload);\n\t}\n\n\t/** The upload `id` under way; else `invalid`. */\n\t#underway(id: string): Upload<T> {\n\t\tconst upload = this.#uploads.get(id);\n\t\tif (upload === undefined) throw invalid(\"args\", `files: no upload ${id} (finished, failed, expired or unknown)`);\n\t\treturn upload;\n\t}\n\n\t/** Takes upload `id` out, closes its file once its writes landed and removes it. */\n\tasync #discard(id: string, upload: Upload<T>): Promise<void> {\n\t\tthis.#uploads.delete(id);\n\t\tawait this.#end(upload);\n\t\tawait rm(join(this.#run, id), { force: true });\n\t}\n\n\t/** Closes `upload`'s file once its writes in flight landed; once, whoever ends it first. */\n\t#end(upload: Upload<T>): Promise<void> {\n\t\tupload.ended ??= Promise.allSettled([...upload.writes]).then(() => upload.handle.close());\n\t\treturn upload.ended;\n\t}\n}\n\n/** The refusal of an upload one of whose writes failed. */\nfunction failedUpload(id: string): Error {\n\treturn invalid(\"args\", `files: upload ${id} failed to write and was dropped`);\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import { type Schema } from "../../contracts/index.ts";
2
+ import type { Principal } from "../../data/index.ts";
3
+ import { type Facet } from "../../host/index.ts";
4
+ import type { JsonValue } from "../../json.ts";
5
+ /** The users plugin for profiles of schema `profile`: its contract and the facet serving it on the server. */
6
+ export declare function defineUsers<T extends JsonValue, P extends Principal = Principal>(profile: Schema<T>): {
7
+ Users: import("../../contracts/contract.ts").Contract<{
8
+ kind: "local";
9
+ name: "chord.app.users";
10
+ params: {};
11
+ history: [{
12
+ version: "1";
13
+ variants: {
14
+ members: {
15
+ state: {
16
+ readonly list: Schema<{
17
+ id: string;
18
+ profile: unknown extends T ? T : T;
19
+ }[]>;
20
+ };
21
+ methods: {
22
+ readonly get: import("../../contracts/schema.ts").Method<import("../../contracts/schema.ts").StringSchema, Schema<(unknown extends T ? T : T) | null>>;
23
+ readonly update: import("../../contracts/schema.ts").Method<Schema<{
24
+ id: string;
25
+ profile: unknown extends T ? T : T;
26
+ }>, import("../../contracts/schema.ts").NullSchema>;
27
+ readonly remove: import("../../contracts/schema.ts").Method<import("../../contracts/schema.ts").StringSchema, import("../../contracts/schema.ts").NullSchema>;
28
+ };
29
+ keyed: {};
30
+ };
31
+ };
32
+ changes: never;
33
+ }];
34
+ }>;
35
+ facet: Facet<P>;
36
+ };
37
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/node/app/users.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqC,KAAK,MAAM,EAAc,MAAM,0BAA0B,CAAC;AACtG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,8GAA8G;AAC9G,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoDnG"}
@@ -0,0 +1,62 @@
1
+ // The users plugin (slice 13 §3, decision "The app kit, point 2: principals and users"): accounts keyed by the user's
2
+ // id with a profile the app describes (a schema it passes in: a Slack-like profile or just a name), kept in the
3
+ // server's store. User data never rides in the principal: a principal names the user, `Users` holds the rest.
4
+ // An exported facet, not a plugin directory: it takes the app's schema as an argument (settings are arguments), and a
5
+ // plugin directory could not import it (plugins import only the app's API). The app loads it in its root by
6
+ // re-exporting it through its API (`export const users = defineUsers(Profile)` in `/v3/server`, a one-line plugin).
7
+ import { arr, local, map, method, nul, obj, str, union } from "../../contracts/index.js";
8
+ import { invalid } from "../../data/internal.js";
9
+ import { defineState } from "../../documents/index.js";
10
+ import { defineFacet } from "../../host/index.js";
11
+ /** The users plugin for profiles of schema `profile`: its contract and the facet serving it on the server. */
12
+ export function defineUsers(profile) {
13
+ const Users = local("chord.app.users", {
14
+ version: 1,
15
+ params: {},
16
+ members: {
17
+ /** Every user: id and profile. */
18
+ list: arr(obj({ id: str(), profile })),
19
+ /** The profile of user `id`, or `null`. */
20
+ get: method(str(), union([profile, nul()])),
21
+ /** Sets the profile of user `id` (a new user: an account made). */
22
+ update: method(obj({ id: str(), profile })),
23
+ /** Removes user `id`'s account. */
24
+ remove: method(str()),
25
+ },
26
+ });
27
+ // Stored as JSON: the document's types cannot follow a generic profile, the contract's members do.
28
+ const stored = profile;
29
+ const Accounts = defineState("chord.app.users", {
30
+ schema: obj({ users: map(stored) }),
31
+ version: 1,
32
+ initial: () => ({ users: {} }),
33
+ persist: true,
34
+ checkpointWhen: (_value, _ops, { deltasSinceBase }) => deltasSinceBase >= 50,
35
+ });
36
+ const facet = defineFacet((host) => host.serve(Users, (_params, self) => {
37
+ const accounts = self.state(Accounts);
38
+ return {
39
+ list: self.derive([accounts], ([value]) => Object.entries(value.users).map(([id, each]) => ({ id, profile: each }))),
40
+ // A trust boundary: `id` is the caller's (`Object.hasOwn`: no inherited member is a user). Written by
41
+ // `update` from a `T`.
42
+ get: async (id) => (Object.hasOwn(accounts.value.users, id) ? accounts.value.users[id] : null),
43
+ update: async ({ id, profile: next }, ctx) => {
44
+ // As a key it would set the record's prototype, not add a user.
45
+ if (id === "__proto__")
46
+ throw invalid("args", "users: __proto__ is no user id");
47
+ await accounts.change((draft) => {
48
+ draft.users[id] = next;
49
+ }, ctx);
50
+ return null;
51
+ },
52
+ remove: async (id, ctx) => {
53
+ await accounts.change((draft) => {
54
+ delete draft.users[id];
55
+ }, ctx);
56
+ return null;
57
+ },
58
+ };
59
+ }));
60
+ return { Users, facet };
61
+ }
62
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../src/node/app/users.ts"],"names":[],"mappings":"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","sourcesContent":["// The users plugin (slice 13 §3, decision \"The app kit, point 2: principals and users\"): accounts keyed by the user's\n// id with a profile the app describes (a schema it passes in: a Slack-like profile or just a name), kept in the\n// server's store. User data never rides in the principal: a principal names the user, `Users` holds the rest.\n// An exported facet, not a plugin directory: it takes the app's schema as an argument (settings are arguments), and a\n// plugin directory could not import it (plugins import only the app's API). The app loads it in its root by\n// re-exporting it through its API (`export const users = defineUsers(Profile)` in `/v3/server`, a one-line plugin).\n\nimport { arr, local, map, method, nul, obj, type Schema, str, union } from \"../../contracts/index.ts\";\nimport type { Principal } from \"../../data/index.ts\";\nimport { invalid } from \"../../data/internal.ts\";\nimport { defineState } from \"../../documents/index.ts\";\nimport { defineFacet, type Facet } from \"../../host/index.ts\";\nimport type { JsonValue } from \"../../json.ts\";\n\n/** The users plugin for profiles of schema `profile`: its contract and the facet serving it on the server. */\nexport function defineUsers<T extends JsonValue, P extends Principal = Principal>(profile: Schema<T>) {\n\tconst Users = local(\"chord.app.users\", {\n\t\tversion: 1,\n\t\tparams: {},\n\t\tmembers: {\n\t\t\t/** Every user: id and profile. */\n\t\t\tlist: arr(obj({ id: str(), profile })),\n\t\t\t/** The profile of user `id`, or `null`. */\n\t\t\tget: method(str(), union([profile, nul()])),\n\t\t\t/** Sets the profile of user `id` (a new user: an account made). */\n\t\t\tupdate: method(obj({ id: str(), profile })),\n\t\t\t/** Removes user `id`'s account. */\n\t\t\tremove: method(str()),\n\t\t},\n\t});\n\t// Stored as JSON: the document's types cannot follow a generic profile, the contract's members do.\n\tconst stored = profile as Schema<JsonValue>;\n\tconst Accounts = defineState(\"chord.app.users\", {\n\t\tschema: obj({ users: map(stored) }),\n\t\tversion: 1,\n\t\tinitial: () => ({ users: {} }),\n\t\tpersist: true,\n\t\tcheckpointWhen: (_value, _ops, { deltasSinceBase }) => deltasSinceBase >= 50,\n\t});\n\tconst facet: Facet<P> = defineFacet<P>((host) =>\n\t\thost.serve(Users, (_params, self) => {\n\t\t\tconst accounts = self.state(Accounts);\n\t\t\treturn {\n\t\t\t\tlist: self.derive([accounts], ([value]) =>\n\t\t\t\t\tObject.entries(value.users).map(([id, each]) => ({ id, profile: each as T })),\n\t\t\t\t),\n\t\t\t\t// A trust boundary: `id` is the caller's (`Object.hasOwn`: no inherited member is a user). Written by\n\t\t\t\t// `update` from a `T`.\n\t\t\t\tget: async (id) => (Object.hasOwn(accounts.value.users, id) ? (accounts.value.users[id] as T) : null),\n\t\t\t\tupdate: async ({ id, profile: next }, ctx) => {\n\t\t\t\t\t// As a key it would set the record's prototype, not add a user.\n\t\t\t\t\tif (id === \"__proto__\") throw invalid(\"args\", \"users: __proto__ is no user id\");\n\t\t\t\t\tawait accounts.change((draft) => {\n\t\t\t\t\t\tdraft.users[id] = next as JsonValue;\n\t\t\t\t\t}, ctx);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t\tremove: async (id, ctx) => {\n\t\t\t\t\tawait accounts.change((draft) => {\n\t\t\t\t\t\tdelete draft.users[id];\n\t\t\t\t\t}, ctx);\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t};\n\t\t}),\n\t);\n\treturn { Users, facet };\n}\n"]}