@earendil-works/chord 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1299) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +115 -90
  3. package/dist/context/index.d.ts +1 -1
  4. package/dist/context/index.d.ts.map +1 -1
  5. package/dist/context/index.js +1 -1
  6. package/dist/context/index.js.map +1 -1
  7. package/dist/contracts/accepts.d.ts +81 -0
  8. package/dist/contracts/accepts.d.ts.map +1 -0
  9. package/dist/contracts/accepts.js +123 -0
  10. package/dist/contracts/accepts.js.map +1 -0
  11. package/dist/contracts/contract.d.ts +121 -0
  12. package/dist/contracts/contract.d.ts.map +1 -0
  13. package/dist/contracts/contract.js +50 -0
  14. package/dist/contracts/contract.js.map +1 -0
  15. package/dist/contracts/declare.d.ts +107 -0
  16. package/dist/contracts/declare.d.ts.map +1 -0
  17. package/dist/contracts/declare.js +136 -0
  18. package/dist/contracts/declare.js.map +1 -0
  19. package/dist/contracts/evolve.d.ts +92 -0
  20. package/dist/contracts/evolve.d.ts.map +1 -0
  21. package/dist/contracts/evolve.js +179 -0
  22. package/dist/contracts/evolve.js.map +1 -0
  23. package/dist/contracts/fingerprint.d.ts +16 -0
  24. package/dist/contracts/fingerprint.d.ts.map +1 -0
  25. package/dist/contracts/fingerprint.js +50 -0
  26. package/dist/contracts/fingerprint.js.map +1 -0
  27. package/dist/contracts/history.d.ts +71 -0
  28. package/dist/contracts/history.d.ts.map +1 -0
  29. package/dist/contracts/history.js +3 -0
  30. package/dist/contracts/history.js.map +1 -0
  31. package/dist/contracts/host-kind.d.ts +40 -0
  32. package/dist/contracts/host-kind.d.ts.map +1 -0
  33. package/dist/contracts/host-kind.js +37 -0
  34. package/dist/contracts/host-kind.js.map +1 -0
  35. package/dist/contracts/index.d.ts +7 -0
  36. package/dist/contracts/index.d.ts.map +1 -0
  37. package/dist/contracts/index.js +6 -0
  38. package/dist/contracts/index.js.map +1 -0
  39. package/dist/contracts/internal.d.ts +10 -0
  40. package/dist/contracts/internal.d.ts.map +1 -0
  41. package/dist/contracts/internal.js +9 -0
  42. package/dist/contracts/internal.js.map +1 -0
  43. package/dist/contracts/names.d.ts +3 -0
  44. package/dist/contracts/names.d.ts.map +1 -0
  45. package/dist/contracts/names.js +13 -0
  46. package/dist/contracts/names.js.map +1 -0
  47. package/dist/contracts/params.d.ts +28 -0
  48. package/dist/contracts/params.d.ts.map +1 -0
  49. package/dist/contracts/params.js +50 -0
  50. package/dist/contracts/params.js.map +1 -0
  51. package/dist/contracts/schema.d.ts +102 -0
  52. package/dist/contracts/schema.d.ts.map +1 -0
  53. package/dist/contracts/schema.js +103 -0
  54. package/dist/contracts/schema.js.map +1 -0
  55. package/dist/contracts/snapshot.d.ts +16 -0
  56. package/dist/contracts/snapshot.d.ts.map +1 -0
  57. package/dist/contracts/snapshot.js +167 -0
  58. package/dist/contracts/snapshot.js.map +1 -0
  59. package/dist/data/args.d.ts +50 -0
  60. package/dist/data/args.d.ts.map +1 -0
  61. package/dist/data/args.js +83 -0
  62. package/dist/data/args.js.map +1 -0
  63. package/dist/data/errors.d.ts +80 -0
  64. package/dist/data/errors.d.ts.map +1 -0
  65. package/dist/data/errors.js +116 -0
  66. package/dist/data/errors.js.map +1 -0
  67. package/dist/data/failure.d.ts +26 -0
  68. package/dist/data/failure.d.ts.map +1 -0
  69. package/dist/data/failure.js +77 -0
  70. package/dist/data/failure.js.map +1 -0
  71. package/dist/data/index.d.ts +4 -0
  72. package/dist/data/index.d.ts.map +1 -0
  73. package/dist/data/index.js +5 -0
  74. package/dist/data/index.js.map +1 -0
  75. package/dist/data/internal.d.ts +7 -0
  76. package/dist/data/internal.d.ts.map +1 -0
  77. package/dist/data/internal.js +8 -0
  78. package/dist/data/internal.js.map +1 -0
  79. package/dist/data/params.d.ts +20 -0
  80. package/dist/data/params.d.ts.map +1 -0
  81. package/dist/data/params.js +31 -0
  82. package/dist/data/params.js.map +1 -0
  83. package/dist/data/principal.d.ts +22 -0
  84. package/dist/data/principal.d.ts.map +1 -0
  85. package/dist/data/principal.js +49 -0
  86. package/dist/data/principal.js.map +1 -0
  87. package/dist/data/validator.d.ts +12 -0
  88. package/dist/data/validator.d.ts.map +1 -0
  89. package/dist/data/validator.js +35 -0
  90. package/dist/data/validator.js.map +1 -0
  91. package/dist/delta/apply-immutable-trusted.js +3 -4
  92. package/dist/delta/apply-immutable-trusted.js.map +1 -1
  93. package/dist/delta/diff.d.ts.map +1 -1
  94. package/dist/delta/diff.js +5 -3
  95. package/dist/delta/diff.js.map +1 -1
  96. package/dist/delta/index.d.ts +9 -1
  97. package/dist/delta/index.d.ts.map +1 -1
  98. package/dist/delta/index.js +15 -11
  99. package/dist/delta/index.js.map +1 -1
  100. package/dist/delta/pending.d.ts +36 -0
  101. package/dist/delta/pending.d.ts.map +1 -0
  102. package/dist/delta/pending.js +143 -0
  103. package/dist/delta/pending.js.map +1 -0
  104. package/dist/delta/tracker.d.ts +12 -0
  105. package/dist/delta/tracker.d.ts.map +1 -1
  106. package/dist/delta/tracker.js +109 -39
  107. package/dist/delta/tracker.js.map +1 -1
  108. package/dist/documents/address-source.d.ts +20 -0
  109. package/dist/documents/address-source.d.ts.map +1 -0
  110. package/dist/documents/address-source.js +44 -0
  111. package/dist/documents/address-source.js.map +1 -0
  112. package/dist/documents/definition.d.ts +84 -0
  113. package/dist/documents/definition.d.ts.map +1 -0
  114. package/dist/documents/definition.js +74 -0
  115. package/dist/documents/definition.js.map +1 -0
  116. package/dist/documents/documents.d.ts +126 -0
  117. package/dist/documents/documents.d.ts.map +1 -0
  118. package/dist/documents/documents.js +248 -0
  119. package/dist/documents/documents.js.map +1 -0
  120. package/dist/documents/fence.d.ts +9 -0
  121. package/dist/documents/fence.d.ts.map +1 -0
  122. package/dist/documents/fence.js +15 -0
  123. package/dist/documents/fence.js.map +1 -0
  124. package/dist/documents/handles.d.ts +76 -0
  125. package/dist/documents/handles.d.ts.map +1 -0
  126. package/dist/documents/handles.js +66 -0
  127. package/dist/documents/handles.js.map +1 -0
  128. package/dist/documents/index.d.ts +4 -0
  129. package/dist/documents/index.d.ts.map +1 -0
  130. package/dist/documents/index.js +3 -0
  131. package/dist/documents/index.js.map +1 -0
  132. package/dist/documents/internal.d.ts +9 -0
  133. package/dist/documents/internal.d.ts.map +1 -0
  134. package/dist/documents/internal.js +9 -0
  135. package/dist/documents/internal.js.map +1 -0
  136. package/dist/documents/keyed-slot.d.ts +103 -0
  137. package/dist/documents/keyed-slot.d.ts.map +1 -0
  138. package/dist/documents/keyed-slot.js +395 -0
  139. package/dist/documents/keyed-slot.js.map +1 -0
  140. package/dist/documents/line.d.ts +7 -0
  141. package/dist/documents/line.d.ts.map +1 -0
  142. package/dist/documents/line.js +14 -0
  143. package/dist/documents/line.js.map +1 -0
  144. package/dist/documents/persistence.d.ts +104 -0
  145. package/dist/documents/persistence.d.ts.map +1 -0
  146. package/dist/documents/persistence.js +129 -0
  147. package/dist/documents/persistence.js.map +1 -0
  148. package/dist/documents/residency.d.ts +31 -0
  149. package/dist/documents/residency.d.ts.map +1 -0
  150. package/dist/documents/residency.js +93 -0
  151. package/dist/documents/residency.js.map +1 -0
  152. package/dist/documents/slot.d.ts +109 -0
  153. package/dist/documents/slot.d.ts.map +1 -0
  154. package/dist/documents/slot.js +181 -0
  155. package/dist/documents/slot.js.map +1 -0
  156. package/dist/documents/transaction.d.ts +143 -0
  157. package/dist/documents/transaction.d.ts.map +1 -0
  158. package/dist/documents/transaction.js +442 -0
  159. package/dist/documents/transaction.js.map +1 -0
  160. package/dist/host/activity.d.ts +31 -0
  161. package/dist/host/activity.d.ts.map +1 -0
  162. package/dist/host/activity.js +40 -0
  163. package/dist/host/activity.js.map +1 -0
  164. package/dist/host/adapted.d.ts +49 -0
  165. package/dist/host/adapted.d.ts.map +1 -0
  166. package/dist/host/adapted.js +214 -0
  167. package/dist/host/adapted.js.map +1 -0
  168. package/dist/host/attempt.d.ts +308 -0
  169. package/dist/host/attempt.d.ts.map +1 -0
  170. package/dist/host/attempt.js +1199 -0
  171. package/dist/host/attempt.js.map +1 -0
  172. package/dist/host/backoff.d.ts +29 -0
  173. package/dist/host/backoff.d.ts.map +1 -0
  174. package/dist/host/backoff.js +69 -0
  175. package/dist/host/backoff.js.map +1 -0
  176. package/dist/host/ctx.d.ts +94 -0
  177. package/dist/host/ctx.d.ts.map +1 -0
  178. package/dist/host/ctx.js +200 -0
  179. package/dist/host/ctx.js.map +1 -0
  180. package/dist/host/deadline.d.ts +12 -0
  181. package/dist/host/deadline.d.ts.map +1 -0
  182. package/dist/host/deadline.js +40 -0
  183. package/dist/host/deadline.js.map +1 -0
  184. package/dist/host/dependencies.d.ts +65 -0
  185. package/dist/host/dependencies.d.ts.map +1 -0
  186. package/dist/host/dependencies.js +115 -0
  187. package/dist/host/dependencies.js.map +1 -0
  188. package/dist/host/destination.d.ts +48 -0
  189. package/dist/host/destination.d.ts.map +1 -0
  190. package/dist/host/destination.js +101 -0
  191. package/dist/host/destination.js.map +1 -0
  192. package/dist/host/facet.d.ts +84 -0
  193. package/dist/host/facet.d.ts.map +1 -0
  194. package/dist/host/facet.js +55 -0
  195. package/dist/host/facet.js.map +1 -0
  196. package/dist/host/follow.d.ts +52 -0
  197. package/dist/host/follow.d.ts.map +1 -0
  198. package/dist/host/follow.js +207 -0
  199. package/dist/host/follow.js.map +1 -0
  200. package/dist/host/host.d.ts +571 -0
  201. package/dist/host/host.d.ts.map +1 -0
  202. package/dist/host/host.js +1318 -0
  203. package/dist/host/host.js.map +1 -0
  204. package/dist/host/index.d.ts +17 -0
  205. package/dist/host/index.d.ts.map +1 -0
  206. package/dist/host/index.js +6 -0
  207. package/dist/host/index.js.map +1 -0
  208. package/dist/host/internal.d.ts +11 -0
  209. package/dist/host/internal.d.ts.map +1 -0
  210. package/dist/host/internal.js +9 -0
  211. package/dist/host/internal.js.map +1 -0
  212. package/dist/host/members.d.ts +50 -0
  213. package/dist/host/members.d.ts.map +1 -0
  214. package/dist/host/members.js +107 -0
  215. package/dist/host/members.js.map +1 -0
  216. package/dist/host/native.d.ts +64 -0
  217. package/dist/host/native.d.ts.map +1 -0
  218. package/dist/host/native.js +126 -0
  219. package/dist/host/native.js.map +1 -0
  220. package/dist/host/object.d.ts +331 -0
  221. package/dist/host/object.d.ts.map +1 -0
  222. package/dist/host/object.js +1296 -0
  223. package/dist/host/object.js.map +1 -0
  224. package/dist/host/old-work.d.ts +34 -0
  225. package/dist/host/old-work.d.ts.map +1 -0
  226. package/dist/host/old-work.js +52 -0
  227. package/dist/host/old-work.js.map +1 -0
  228. package/dist/host/parked.d.ts +23 -0
  229. package/dist/host/parked.d.ts.map +1 -0
  230. package/dist/host/parked.js +79 -0
  231. package/dist/host/parked.js.map +1 -0
  232. package/dist/host/presence.d.ts +34 -0
  233. package/dist/host/presence.d.ts.map +1 -0
  234. package/dist/host/presence.js +117 -0
  235. package/dist/host/presence.js.map +1 -0
  236. package/dist/host/readiness.d.ts +27 -0
  237. package/dist/host/readiness.d.ts.map +1 -0
  238. package/dist/host/readiness.js +134 -0
  239. package/dist/host/readiness.js.map +1 -0
  240. package/dist/host/ref-state.d.ts +53 -0
  241. package/dist/host/ref-state.d.ts.map +1 -0
  242. package/dist/host/ref-state.js +83 -0
  243. package/dist/host/ref-state.js.map +1 -0
  244. package/dist/host/reference-keys.d.ts +36 -0
  245. package/dist/host/reference-keys.d.ts.map +1 -0
  246. package/dist/host/reference-keys.js +168 -0
  247. package/dist/host/reference-keys.js.map +1 -0
  248. package/dist/host/reference-source.d.ts +65 -0
  249. package/dist/host/reference-source.d.ts.map +1 -0
  250. package/dist/host/reference-source.js +285 -0
  251. package/dist/host/reference-source.js.map +1 -0
  252. package/dist/host/reference.d.ts +321 -0
  253. package/dist/host/reference.d.ts.map +1 -0
  254. package/dist/host/reference.js +797 -0
  255. package/dist/host/reference.js.map +1 -0
  256. package/dist/host/reload-cycle.d.ts +16 -0
  257. package/dist/host/reload-cycle.d.ts.map +1 -0
  258. package/dist/host/reload-cycle.js +81 -0
  259. package/dist/host/reload-cycle.js.map +1 -0
  260. package/dist/host/retry-on.d.ts +28 -0
  261. package/dist/host/retry-on.d.ts.map +1 -0
  262. package/dist/host/retry-on.js +52 -0
  263. package/dist/host/retry-on.js.map +1 -0
  264. package/dist/host/revocation.d.ts +16 -0
  265. package/dist/host/revocation.d.ts.map +1 -0
  266. package/dist/host/revocation.js +27 -0
  267. package/dist/host/revocation.js.map +1 -0
  268. package/dist/host/root.d.ts +37 -0
  269. package/dist/host/root.d.ts.map +1 -0
  270. package/dist/host/root.js +68 -0
  271. package/dist/host/root.js.map +1 -0
  272. package/dist/host/route.d.ts +64 -0
  273. package/dist/host/route.d.ts.map +1 -0
  274. package/dist/host/route.js +227 -0
  275. package/dist/host/route.js.map +1 -0
  276. package/dist/host/routines.d.ts +78 -0
  277. package/dist/host/routines.d.ts.map +1 -0
  278. package/dist/host/routines.js +398 -0
  279. package/dist/host/routines.js.map +1 -0
  280. package/dist/host/sleep.d.ts +9 -0
  281. package/dist/host/sleep.d.ts.map +1 -0
  282. package/dist/host/sleep.js +40 -0
  283. package/dist/host/sleep.js.map +1 -0
  284. package/dist/host/staging.d.ts +94 -0
  285. package/dist/host/staging.d.ts.map +1 -0
  286. package/dist/host/staging.js +304 -0
  287. package/dist/host/staging.js.map +1 -0
  288. package/dist/host/unbound-clock.d.ts +23 -0
  289. package/dist/host/unbound-clock.d.ts.map +1 -0
  290. package/dist/host/unbound-clock.js +58 -0
  291. package/dist/host/unbound-clock.js.map +1 -0
  292. package/dist/host/unbound.d.ts +37 -0
  293. package/dist/host/unbound.d.ts.map +1 -0
  294. package/dist/host/unbound.js +88 -0
  295. package/dist/host/unbound.js.map +1 -0
  296. package/dist/host/uuid.d.ts +3 -0
  297. package/dist/host/uuid.d.ts.map +1 -0
  298. package/dist/host/uuid.js +38 -0
  299. package/dist/host/uuid.js.map +1 -0
  300. package/dist/index.d.ts +29 -18
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +20 -9
  303. package/dist/index.js.map +1 -1
  304. package/dist/jobs/definition.d.ts +96 -0
  305. package/dist/jobs/definition.d.ts.map +1 -0
  306. package/dist/jobs/definition.js +83 -0
  307. package/dist/jobs/definition.js.map +1 -0
  308. package/dist/jobs/index.d.ts +5 -0
  309. package/dist/jobs/index.d.ts.map +1 -0
  310. package/dist/jobs/index.js +3 -0
  311. package/dist/jobs/index.js.map +1 -0
  312. package/dist/jobs/internal.d.ts +3 -0
  313. package/dist/jobs/internal.d.ts.map +1 -0
  314. package/dist/jobs/internal.js +4 -0
  315. package/dist/jobs/internal.js.map +1 -0
  316. package/dist/jobs/job.d.ts +149 -0
  317. package/dist/jobs/job.d.ts.map +1 -0
  318. package/dist/jobs/job.js +387 -0
  319. package/dist/jobs/job.js.map +1 -0
  320. package/dist/jobs/persisted.d.ts +38 -0
  321. package/dist/jobs/persisted.d.ts.map +1 -0
  322. package/dist/jobs/persisted.js +95 -0
  323. package/dist/jobs/persisted.js.map +1 -0
  324. package/dist/jobs/records.d.ts +231 -0
  325. package/dist/jobs/records.d.ts.map +1 -0
  326. package/dist/jobs/records.js +871 -0
  327. package/dist/jobs/records.js.map +1 -0
  328. package/dist/jobs/run-states.d.ts +69 -0
  329. package/dist/jobs/run-states.d.ts.map +1 -0
  330. package/dist/jobs/run-states.js +228 -0
  331. package/dist/jobs/run-states.js.map +1 -0
  332. package/dist/jobs/run.d.ts +117 -0
  333. package/dist/jobs/run.d.ts.map +1 -0
  334. package/dist/jobs/run.js +204 -0
  335. package/dist/jobs/run.js.map +1 -0
  336. package/dist/jobs/running.d.ts +44 -0
  337. package/dist/jobs/running.d.ts.map +1 -0
  338. package/dist/jobs/running.js +117 -0
  339. package/dist/jobs/running.js.map +1 -0
  340. package/dist/jobs/stored.d.ts +63 -0
  341. package/dist/jobs/stored.d.ts.map +1 -0
  342. package/dist/jobs/stored.js +55 -0
  343. package/dist/jobs/stored.js.map +1 -0
  344. package/dist/link/binary.d.ts +4 -0
  345. package/dist/link/binary.d.ts.map +1 -0
  346. package/dist/link/binary.js +544 -0
  347. package/dist/link/binary.js.map +1 -0
  348. package/dist/link/channel.d.ts +68 -0
  349. package/dist/link/channel.d.ts.map +1 -0
  350. package/dist/link/channel.js +215 -0
  351. package/dist/link/channel.js.map +1 -0
  352. package/dist/link/errors.d.ts +7 -0
  353. package/dist/link/errors.d.ts.map +1 -0
  354. package/dist/link/errors.js +21 -0
  355. package/dist/link/errors.js.map +1 -0
  356. package/dist/link/index.d.ts +8 -0
  357. package/dist/link/index.d.ts.map +1 -0
  358. package/dist/link/index.js +8 -0
  359. package/dist/link/index.js.map +1 -0
  360. package/dist/link/internal.d.ts +9 -0
  361. package/dist/link/internal.d.ts.map +1 -0
  362. package/dist/link/internal.js +10 -0
  363. package/dist/link/internal.js.map +1 -0
  364. package/dist/link/ipc.d.ts +22 -0
  365. package/dist/link/ipc.d.ts.map +1 -0
  366. package/dist/link/ipc.js +64 -0
  367. package/dist/link/ipc.js.map +1 -0
  368. package/dist/link/link.d.ts +34 -0
  369. package/dist/link/link.d.ts.map +1 -0
  370. package/dist/link/link.js +87 -0
  371. package/dist/link/link.js.map +1 -0
  372. package/dist/link/message.d.ts +262 -0
  373. package/dist/link/message.d.ts.map +1 -0
  374. package/dist/link/message.js +156 -0
  375. package/dist/link/message.js.map +1 -0
  376. package/dist/link/part.d.ts +80 -0
  377. package/dist/link/part.d.ts.map +1 -0
  378. package/dist/link/part.js +165 -0
  379. package/dist/link/part.js.map +1 -0
  380. package/dist/link/text.d.ts +6 -0
  381. package/dist/link/text.d.ts.map +1 -0
  382. package/dist/link/text.js +355 -0
  383. package/dist/link/text.js.map +1 -0
  384. package/dist/link/values.d.ts +40 -0
  385. package/dist/link/values.d.ts.map +1 -0
  386. package/dist/link/values.js +121 -0
  387. package/dist/link/values.js.map +1 -0
  388. package/dist/link/websocket.d.ts +26 -0
  389. package/dist/link/websocket.d.ts.map +1 -0
  390. package/dist/link/websocket.js +91 -0
  391. package/dist/link/websocket.js.map +1 -0
  392. package/dist/node/app/app.d.ts +269 -0
  393. package/dist/node/app/app.d.ts.map +1 -0
  394. package/dist/node/app/app.js +513 -0
  395. package/dist/node/app/app.js.map +1 -0
  396. package/dist/node/app/archive.d.ts +37 -0
  397. package/dist/node/app/archive.d.ts.map +1 -0
  398. package/dist/node/app/archive.js +204 -0
  399. package/dist/node/app/archive.js.map +1 -0
  400. package/dist/node/app/blobs.d.ts +23 -0
  401. package/dist/node/app/blobs.d.ts.map +1 -0
  402. package/dist/node/app/blobs.js +64 -0
  403. package/dist/node/app/blobs.js.map +1 -0
  404. package/dist/node/app/data.d.ts +35 -0
  405. package/dist/node/app/data.d.ts.map +1 -0
  406. package/dist/node/app/data.js +44 -0
  407. package/dist/node/app/data.js.map +1 -0
  408. package/dist/node/app/ephemeral-sessions.d.ts +20 -0
  409. package/dist/node/app/ephemeral-sessions.d.ts.map +1 -0
  410. package/dist/node/app/ephemeral-sessions.js +69 -0
  411. package/dist/node/app/ephemeral-sessions.js.map +1 -0
  412. package/dist/node/app/ephemeral.d.ts +11 -0
  413. package/dist/node/app/ephemeral.d.ts.map +1 -0
  414. package/dist/node/app/ephemeral.js +34 -0
  415. package/dist/node/app/ephemeral.js.map +1 -0
  416. package/dist/node/app/files-copy.d.ts +13 -0
  417. package/dist/node/app/files-copy.d.ts.map +1 -0
  418. package/dist/node/app/files-copy.js +86 -0
  419. package/dist/node/app/files-copy.js.map +1 -0
  420. package/dist/node/app/files-entry.d.ts +4 -0
  421. package/dist/node/app/files-entry.d.ts.map +1 -0
  422. package/dist/node/app/files-entry.js +7 -0
  423. package/dist/node/app/files-entry.js.map +1 -0
  424. package/dist/node/app/files-index.d.ts +180 -0
  425. package/dist/node/app/files-index.d.ts.map +1 -0
  426. package/dist/node/app/files-index.js +535 -0
  427. package/dist/node/app/files-index.js.map +1 -0
  428. package/dist/node/app/files.d.ts +363 -0
  429. package/dist/node/app/files.d.ts.map +1 -0
  430. package/dist/node/app/files.js +368 -0
  431. package/dist/node/app/files.js.map +1 -0
  432. package/dist/node/app/folder-views.d.ts +21 -0
  433. package/dist/node/app/folder-views.d.ts.map +1 -0
  434. package/dist/node/app/folder-views.js +55 -0
  435. package/dist/node/app/folder-views.js.map +1 -0
  436. package/dist/node/app/index.d.ts +12 -0
  437. package/dist/node/app/index.d.ts.map +1 -0
  438. package/dist/node/app/index.js +15 -0
  439. package/dist/node/app/index.js.map +1 -0
  440. package/dist/node/app/info.d.ts +66 -0
  441. package/dist/node/app/info.d.ts.map +1 -0
  442. package/dist/node/app/info.js +37 -0
  443. package/dist/node/app/info.js.map +1 -0
  444. package/dist/node/app/invite.d.ts +5 -0
  445. package/dist/node/app/invite.d.ts.map +1 -0
  446. package/dist/node/app/invite.js +64 -0
  447. package/dist/node/app/invite.js.map +1 -0
  448. package/dist/node/app/layout.d.ts +36 -0
  449. package/dist/node/app/layout.d.ts.map +1 -0
  450. package/dist/node/app/layout.js +87 -0
  451. package/dist/node/app/layout.js.map +1 -0
  452. package/dist/node/app/owner.d.ts +31 -0
  453. package/dist/node/app/owner.d.ts.map +1 -0
  454. package/dist/node/app/owner.js +104 -0
  455. package/dist/node/app/owner.js.map +1 -0
  456. package/dist/node/app/pairing.d.ts +55 -0
  457. package/dist/node/app/pairing.d.ts.map +1 -0
  458. package/dist/node/app/pairing.js +183 -0
  459. package/dist/node/app/pairing.js.map +1 -0
  460. package/dist/node/app/secrets.d.ts +16 -0
  461. package/dist/node/app/secrets.d.ts.map +1 -0
  462. package/dist/node/app/secrets.js +72 -0
  463. package/dist/node/app/secrets.js.map +1 -0
  464. package/dist/node/app/sessions.d.ts +72 -0
  465. package/dist/node/app/sessions.d.ts.map +1 -0
  466. package/dist/node/app/sessions.js +222 -0
  467. package/dist/node/app/sessions.js.map +1 -0
  468. package/dist/node/app/tar.d.ts +24 -0
  469. package/dist/node/app/tar.d.ts.map +1 -0
  470. package/dist/node/app/tar.js +167 -0
  471. package/dist/node/app/tar.js.map +1 -0
  472. package/dist/node/app/uploads.d.ts +37 -0
  473. package/dist/node/app/uploads.d.ts.map +1 -0
  474. package/dist/node/app/uploads.js +157 -0
  475. package/dist/node/app/uploads.js.map +1 -0
  476. package/dist/node/app/users.d.ts +37 -0
  477. package/dist/node/app/users.d.ts.map +1 -0
  478. package/dist/node/app/users.js +62 -0
  479. package/dist/node/app/users.js.map +1 -0
  480. package/dist/node/app/worker.d.ts +18 -0
  481. package/dist/node/app/worker.d.ts.map +1 -0
  482. package/dist/node/app/worker.js +84 -0
  483. package/dist/node/app/worker.js.map +1 -0
  484. package/dist/node/compression.d.ts +7 -0
  485. package/dist/node/compression.d.ts.map +1 -0
  486. package/dist/node/compression.js +25 -0
  487. package/dist/node/compression.js.map +1 -0
  488. package/dist/node/http/admission.d.ts +63 -0
  489. package/dist/node/http/admission.d.ts.map +1 -0
  490. package/dist/node/http/admission.js +134 -0
  491. package/dist/node/http/admission.js.map +1 -0
  492. package/dist/node/http/authenticate.d.ts +21 -0
  493. package/dist/node/http/authenticate.d.ts.map +1 -0
  494. package/dist/node/http/authenticate.js +34 -0
  495. package/dist/node/http/authenticate.js.map +1 -0
  496. package/dist/node/http/cookies.d.ts +32 -0
  497. package/dist/node/http/cookies.d.ts.map +1 -0
  498. package/dist/node/http/cookies.js +70 -0
  499. package/dist/node/http/cookies.js.map +1 -0
  500. package/dist/node/http/file.d.ts +23 -0
  501. package/dist/node/http/file.d.ts.map +1 -0
  502. package/dist/node/http/file.js +94 -0
  503. package/dist/node/http/file.js.map +1 -0
  504. package/dist/node/http/headers.d.ts +37 -0
  505. package/dist/node/http/headers.d.ts.map +1 -0
  506. package/dist/node/http/headers.js +136 -0
  507. package/dist/node/http/headers.js.map +1 -0
  508. package/dist/node/http/http.d.ts +111 -0
  509. package/dist/node/http/http.d.ts.map +1 -0
  510. package/dist/node/http/http.js +524 -0
  511. package/dist/node/http/http.js.map +1 -0
  512. package/dist/node/http/incoming.d.ts +19 -0
  513. package/dist/node/http/incoming.d.ts.map +1 -0
  514. package/dist/node/http/incoming.js +31 -0
  515. package/dist/node/http/incoming.js.map +1 -0
  516. package/dist/node/http/index.d.ts +11 -0
  517. package/dist/node/http/index.d.ts.map +1 -0
  518. package/dist/node/http/index.js +12 -0
  519. package/dist/node/http/index.js.map +1 -0
  520. package/dist/node/http/node.d.ts +78 -0
  521. package/dist/node/http/node.d.ts.map +1 -0
  522. package/dist/node/http/node.js +291 -0
  523. package/dist/node/http/node.js.map +1 -0
  524. package/dist/node/http/request.d.ts +60 -0
  525. package/dist/node/http/request.d.ts.map +1 -0
  526. package/dist/node/http/request.js +118 -0
  527. package/dist/node/http/request.js.map +1 -0
  528. package/dist/node/http/response.d.ts +63 -0
  529. package/dist/node/http/response.d.ts.map +1 -0
  530. package/dist/node/http/response.js +202 -0
  531. package/dist/node/http/response.js.map +1 -0
  532. package/dist/node/http/router.d.ts +132 -0
  533. package/dist/node/http/router.d.ts.map +1 -0
  534. package/dist/node/http/router.js +267 -0
  535. package/dist/node/http/router.js.map +1 -0
  536. package/dist/node/http/upgrades.d.ts +61 -0
  537. package/dist/node/http/upgrades.d.ts.map +1 -0
  538. package/dist/node/http/upgrades.js +192 -0
  539. package/dist/node/http/upgrades.js.map +1 -0
  540. package/dist/node/plugins/base-inputs.d.ts +14 -0
  541. package/dist/node/plugins/base-inputs.d.ts.map +1 -0
  542. package/dist/node/plugins/base-inputs.js +33 -0
  543. package/dist/node/plugins/base-inputs.js.map +1 -0
  544. package/dist/node/plugins/build.d.ts +77 -0
  545. package/dist/node/plugins/build.d.ts.map +1 -0
  546. package/dist/node/plugins/build.js +576 -0
  547. package/dist/node/plugins/build.js.map +1 -0
  548. package/dist/node/plugins/css-modules.d.ts +13 -0
  549. package/dist/node/plugins/css-modules.d.ts.map +1 -0
  550. package/dist/node/plugins/css-modules.js +58 -0
  551. package/dist/node/plugins/css-modules.js.map +1 -0
  552. package/dist/node/plugins/discover.d.ts +67 -0
  553. package/dist/node/plugins/discover.d.ts.map +1 -0
  554. package/dist/node/plugins/discover.js +369 -0
  555. package/dist/node/plugins/discover.js.map +1 -0
  556. package/dist/node/plugins/evaluate.d.ts +33 -0
  557. package/dist/node/plugins/evaluate.d.ts.map +1 -0
  558. package/dist/node/plugins/evaluate.js +121 -0
  559. package/dist/node/plugins/evaluate.js.map +1 -0
  560. package/dist/node/plugins/index.d.ts +11 -0
  561. package/dist/node/plugins/index.d.ts.map +1 -0
  562. package/dist/node/plugins/index.js +13 -0
  563. package/dist/node/plugins/index.js.map +1 -0
  564. package/dist/node/plugins/install.d.ts +38 -0
  565. package/dist/node/plugins/install.d.ts.map +1 -0
  566. package/dist/node/plugins/install.js +213 -0
  567. package/dist/node/plugins/install.js.map +1 -0
  568. package/dist/node/plugins/plugins.d.ts +162 -0
  569. package/dist/node/plugins/plugins.d.ts.map +1 -0
  570. package/dist/node/plugins/plugins.js +244 -0
  571. package/dist/node/plugins/plugins.js.map +1 -0
  572. package/dist/node/plugins/runtime.d.ts +57 -0
  573. package/dist/node/plugins/runtime.d.ts.map +1 -0
  574. package/dist/node/plugins/runtime.js +92 -0
  575. package/dist/node/plugins/runtime.js.map +1 -0
  576. package/dist/node/plugins/stack.d.ts +16 -0
  577. package/dist/node/plugins/stack.d.ts.map +1 -0
  578. package/dist/node/plugins/stack.js +61 -0
  579. package/dist/node/plugins/stack.js.map +1 -0
  580. package/dist/node/plugins/testing.d.ts +58 -0
  581. package/dist/node/plugins/testing.d.ts.map +1 -0
  582. package/dist/node/plugins/testing.js +210 -0
  583. package/dist/node/plugins/testing.js.map +1 -0
  584. package/dist/node/plugins/watcher.d.ts +69 -0
  585. package/dist/node/plugins/watcher.d.ts.map +1 -0
  586. package/dist/node/plugins/watcher.js +622 -0
  587. package/dist/node/plugins/watcher.js.map +1 -0
  588. package/dist/node/surfaces/bundle.d.ts +31 -0
  589. package/dist/node/surfaces/bundle.d.ts.map +1 -0
  590. package/dist/node/surfaces/bundle.js +118 -0
  591. package/dist/node/surfaces/bundle.js.map +1 -0
  592. package/dist/node/surfaces/current.d.ts +17 -0
  593. package/dist/node/surfaces/current.d.ts.map +1 -0
  594. package/dist/node/surfaces/current.js +54 -0
  595. package/dist/node/surfaces/current.js.map +1 -0
  596. package/dist/node/surfaces/index.d.ts +6 -0
  597. package/dist/node/surfaces/index.d.ts.map +1 -0
  598. package/dist/node/surfaces/index.js +6 -0
  599. package/dist/node/surfaces/index.js.map +1 -0
  600. package/dist/node/surfaces/published.d.ts +27 -0
  601. package/dist/node/surfaces/published.d.ts.map +1 -0
  602. package/dist/node/surfaces/published.js +142 -0
  603. package/dist/node/surfaces/published.js.map +1 -0
  604. package/dist/node/surfaces/served.d.ts +15 -0
  605. package/dist/node/surfaces/served.d.ts.map +1 -0
  606. package/dist/node/surfaces/served.js +42 -0
  607. package/dist/node/surfaces/served.js.map +1 -0
  608. package/dist/node/surfaces/surface-build.d.ts +53 -0
  609. package/dist/node/surfaces/surface-build.d.ts.map +1 -0
  610. package/dist/node/surfaces/surface-build.js +105 -0
  611. package/dist/node/surfaces/surface-build.js.map +1 -0
  612. package/dist/node/surfaces/tui.d.ts +40 -0
  613. package/dist/node/surfaces/tui.d.ts.map +1 -0
  614. package/dist/node/surfaces/tui.js +55 -0
  615. package/dist/node/surfaces/tui.js.map +1 -0
  616. package/dist/node/surfaces/web.d.ts +56 -0
  617. package/dist/node/surfaces/web.d.ts.map +1 -0
  618. package/dist/node/surfaces/web.js +108 -0
  619. package/dist/node/surfaces/web.js.map +1 -0
  620. package/dist/node/tui/actions.d.ts +49 -0
  621. package/dist/node/tui/actions.d.ts.map +1 -0
  622. package/dist/node/tui/actions.js +195 -0
  623. package/dist/node/tui/actions.js.map +1 -0
  624. package/dist/node/tui/credentials.d.ts +17 -0
  625. package/dist/node/tui/credentials.d.ts.map +1 -0
  626. package/dist/node/tui/credentials.js +54 -0
  627. package/dist/node/tui/credentials.js.map +1 -0
  628. package/dist/node/tui/filter.d.ts +5 -0
  629. package/dist/node/tui/filter.d.ts.map +1 -0
  630. package/dist/node/tui/filter.js +79 -0
  631. package/dist/node/tui/filter.js.map +1 -0
  632. package/dist/node/tui/index.d.ts +6 -0
  633. package/dist/node/tui/index.d.ts.map +1 -0
  634. package/dist/node/tui/index.js +6 -0
  635. package/dist/node/tui/index.js.map +1 -0
  636. package/dist/node/tui/launcher.d.ts +40 -0
  637. package/dist/node/tui/launcher.d.ts.map +1 -0
  638. package/dist/node/tui/launcher.js +439 -0
  639. package/dist/node/tui/launcher.js.map +1 -0
  640. package/dist/node/tui/pipe.d.ts +18 -0
  641. package/dist/node/tui/pipe.d.ts.map +1 -0
  642. package/dist/node/tui/pipe.js +134 -0
  643. package/dist/node/tui/pipe.js.map +1 -0
  644. package/dist/node/tui/sandbox.d.ts +54 -0
  645. package/dist/node/tui/sandbox.d.ts.map +1 -0
  646. package/dist/node/tui/sandbox.js +431 -0
  647. package/dist/node/tui/sandbox.js.map +1 -0
  648. package/dist/node/workers/base.d.ts +30 -0
  649. package/dist/node/workers/base.d.ts.map +1 -0
  650. package/dist/node/workers/base.js +255 -0
  651. package/dist/node/workers/base.js.map +1 -0
  652. package/dist/node/workers/child.d.ts +4 -0
  653. package/dist/node/workers/child.d.ts.map +1 -0
  654. package/dist/node/workers/child.js +6 -0
  655. package/dist/node/workers/child.js.map +1 -0
  656. package/dist/node/workers/control.d.ts +83 -0
  657. package/dist/node/workers/control.d.ts.map +1 -0
  658. package/dist/node/workers/control.js +77 -0
  659. package/dist/node/workers/control.js.map +1 -0
  660. package/dist/node/workers/index.d.ts +4 -0
  661. package/dist/node/workers/index.d.ts.map +1 -0
  662. package/dist/node/workers/index.js +7 -0
  663. package/dist/node/workers/index.js.map +1 -0
  664. package/dist/node/workers/lock.d.ts +30 -0
  665. package/dist/node/workers/lock.d.ts.map +1 -0
  666. package/dist/node/workers/lock.js +180 -0
  667. package/dist/node/workers/lock.js.map +1 -0
  668. package/dist/node/workers/main.d.ts +46 -0
  669. package/dist/node/workers/main.d.ts.map +1 -0
  670. package/dist/node/workers/main.js +230 -0
  671. package/dist/node/workers/main.js.map +1 -0
  672. package/dist/node/workers/process.d.ts +42 -0
  673. package/dist/node/workers/process.d.ts.map +1 -0
  674. package/dist/node/workers/process.js +125 -0
  675. package/dist/node/workers/process.js.map +1 -0
  676. package/dist/node/workers/workers.d.ts +122 -0
  677. package/dist/node/workers/workers.d.ts.map +1 -0
  678. package/dist/node/workers/workers.js +677 -0
  679. package/dist/node/workers/workers.js.map +1 -0
  680. package/dist/output.d.ts +1 -1
  681. package/dist/output.d.ts.map +1 -1
  682. package/dist/output.js +4 -2
  683. package/dist/output.js.map +1 -1
  684. package/dist/react/hooks.d.ts +43 -0
  685. package/dist/react/hooks.d.ts.map +1 -0
  686. package/dist/react/hooks.js +82 -0
  687. package/dist/react/hooks.js.map +1 -0
  688. package/dist/react/index.d.ts +3 -0
  689. package/dist/react/index.d.ts.map +1 -0
  690. package/dist/react/index.js +4 -0
  691. package/dist/react/index.js.map +1 -0
  692. package/dist/react/stores.d.ts +9 -0
  693. package/dist/react/stores.d.ts.map +1 -0
  694. package/dist/react/stores.js +37 -0
  695. package/dist/react/stores.js.map +1 -0
  696. package/dist/registries/contribution.d.ts +50 -0
  697. package/dist/registries/contribution.d.ts.map +1 -0
  698. package/dist/registries/contribution.js +129 -0
  699. package/dist/registries/contribution.js.map +1 -0
  700. package/dist/registries/entries.d.ts +18 -0
  701. package/dist/registries/entries.d.ts.map +1 -0
  702. package/dist/registries/entries.js +42 -0
  703. package/dist/registries/entries.js.map +1 -0
  704. package/dist/registries/index.d.ts +3 -0
  705. package/dist/registries/index.d.ts.map +1 -0
  706. package/dist/registries/index.js +5 -0
  707. package/dist/registries/index.js.map +1 -0
  708. package/dist/registries/internal.d.ts +4 -0
  709. package/dist/registries/internal.d.ts.map +1 -0
  710. package/dist/registries/internal.js +5 -0
  711. package/dist/registries/internal.js.map +1 -0
  712. package/dist/registries/record.d.ts +115 -0
  713. package/dist/registries/record.d.ts.map +1 -0
  714. package/dist/registries/record.js +283 -0
  715. package/dist/registries/record.js.map +1 -0
  716. package/dist/registries/registry.d.ts +74 -0
  717. package/dist/registries/registry.d.ts.map +1 -0
  718. package/dist/registries/registry.js +14 -0
  719. package/dist/registries/registry.js.map +1 -0
  720. package/dist/registries/value.d.ts +48 -0
  721. package/dist/registries/value.d.ts.map +1 -0
  722. package/dist/registries/value.js +224 -0
  723. package/dist/registries/value.js.map +1 -0
  724. package/dist/remote/calls.d.ts +25 -0
  725. package/dist/remote/calls.d.ts.map +1 -0
  726. package/dist/remote/calls.js +62 -0
  727. package/dist/remote/calls.js.map +1 -0
  728. package/dist/remote/consumer.d.ts +43 -0
  729. package/dist/remote/consumer.d.ts.map +1 -0
  730. package/dist/remote/consumer.js +350 -0
  731. package/dist/remote/consumer.js.map +1 -0
  732. package/dist/remote/hold.d.ts +141 -0
  733. package/dist/remote/hold.d.ts.map +1 -0
  734. package/dist/remote/hold.js +579 -0
  735. package/dist/remote/hold.js.map +1 -0
  736. package/dist/remote/host-link.d.ts +77 -0
  737. package/dist/remote/host-link.d.ts.map +1 -0
  738. package/dist/remote/host-link.js +184 -0
  739. package/dist/remote/host-link.js.map +1 -0
  740. package/dist/remote/internal.d.ts +6 -0
  741. package/dist/remote/internal.d.ts.map +1 -0
  742. package/dist/remote/internal.js +6 -0
  743. package/dist/remote/internal.js.map +1 -0
  744. package/dist/remote/path.d.ts +46 -0
  745. package/dist/remote/path.d.ts.map +1 -0
  746. package/dist/remote/path.js +73 -0
  747. package/dist/remote/path.js.map +1 -0
  748. package/dist/remote/provider.d.ts +89 -0
  749. package/dist/remote/provider.d.ts.map +1 -0
  750. package/dist/remote/provider.js +597 -0
  751. package/dist/remote/provider.js.map +1 -0
  752. package/dist/remote/relay.d.ts +69 -0
  753. package/dist/remote/relay.d.ts.map +1 -0
  754. package/dist/remote/relay.js +219 -0
  755. package/dist/remote/relay.js.map +1 -0
  756. package/dist/remote/remote-object.d.ts +138 -0
  757. package/dist/remote/remote-object.d.ts.map +1 -0
  758. package/dist/remote/remote-object.js +492 -0
  759. package/dist/remote/remote-object.js.map +1 -0
  760. package/dist/remote/replica.d.ts +59 -0
  761. package/dist/remote/replica.d.ts.map +1 -0
  762. package/dist/remote/replica.js +125 -0
  763. package/dist/remote/replica.js.map +1 -0
  764. package/dist/sqlite/cloudflare.d.ts +2 -0
  765. package/dist/sqlite/cloudflare.d.ts.map +1 -1
  766. package/dist/sqlite/cloudflare.js +10 -0
  767. package/dist/sqlite/cloudflare.js.map +1 -1
  768. package/dist/sqlite/database.d.ts +5 -2
  769. package/dist/sqlite/database.d.ts.map +1 -1
  770. package/dist/sqlite/database.js.map +1 -1
  771. package/dist/sqlite/node.d.ts +13 -2
  772. package/dist/sqlite/node.d.ts.map +1 -1
  773. package/dist/sqlite/node.js +31 -8
  774. package/dist/sqlite/node.js.map +1 -1
  775. package/dist/state/batch.d.ts +64 -0
  776. package/dist/state/batch.d.ts.map +1 -0
  777. package/dist/state/batch.js +164 -0
  778. package/dist/state/batch.js.map +1 -0
  779. package/dist/state/derive.d.ts +52 -0
  780. package/dist/state/derive.d.ts.map +1 -0
  781. package/dist/state/derive.js +182 -0
  782. package/dist/state/derive.js.map +1 -0
  783. package/dist/state/index.d.ts +6 -0
  784. package/dist/state/index.d.ts.map +1 -0
  785. package/dist/state/index.js +4 -0
  786. package/dist/state/index.js.map +1 -0
  787. package/dist/state/internal.d.ts +6 -0
  788. package/dist/state/internal.d.ts.map +1 -0
  789. package/dist/state/internal.js +8 -0
  790. package/dist/state/internal.js.map +1 -0
  791. package/dist/state/native-source.d.ts +106 -0
  792. package/dist/state/native-source.d.ts.map +1 -0
  793. package/dist/state/native-source.js +240 -0
  794. package/dist/state/native-source.js.map +1 -0
  795. package/dist/state/watchable.d.ts +114 -0
  796. package/dist/state/watchable.d.ts.map +1 -0
  797. package/dist/state/watchable.js +156 -0
  798. package/dist/state/watchable.js.map +1 -0
  799. package/dist/state/writable.d.ts +32 -0
  800. package/dist/state/writable.d.ts.map +1 -0
  801. package/dist/state/writable.js +49 -0
  802. package/dist/state/writable.js.map +1 -0
  803. package/dist/store/adapter.d.ts +67 -0
  804. package/dist/store/adapter.d.ts.map +1 -0
  805. package/dist/store/adapter.js +118 -0
  806. package/dist/store/adapter.js.map +1 -0
  807. package/dist/store/allocator.d.ts +17 -0
  808. package/dist/store/allocator.d.ts.map +1 -0
  809. package/dist/store/allocator.js +30 -0
  810. package/dist/store/allocator.js.map +1 -0
  811. package/dist/store/applier.d.ts +8 -0
  812. package/dist/store/applier.d.ts.map +1 -0
  813. package/dist/store/applier.js +375 -0
  814. package/dist/store/applier.js.map +1 -0
  815. package/dist/store/apply-batch.d.ts +12 -0
  816. package/dist/store/apply-batch.d.ts.map +1 -0
  817. package/dist/store/apply-batch.js +83 -0
  818. package/dist/store/apply-batch.js.map +1 -0
  819. package/dist/store/archive.d.ts +32 -0
  820. package/dist/store/archive.d.ts.map +1 -0
  821. package/dist/store/archive.js +130 -0
  822. package/dist/store/archive.js.map +1 -0
  823. package/dist/store/backend.d.ts +10 -0
  824. package/dist/store/backend.d.ts.map +1 -0
  825. package/dist/store/backend.js +15 -0
  826. package/dist/store/backend.js.map +1 -0
  827. package/dist/store/catalog.d.ts +24 -0
  828. package/dist/store/catalog.d.ts.map +1 -0
  829. package/dist/store/catalog.js +17 -0
  830. package/dist/store/catalog.js.map +1 -0
  831. package/dist/store/claims.d.ts +23 -0
  832. package/dist/store/claims.d.ts.map +1 -0
  833. package/dist/store/claims.js +65 -0
  834. package/dist/store/claims.js.map +1 -0
  835. package/dist/store/columns.d.ts +77 -0
  836. package/dist/store/columns.d.ts.map +1 -0
  837. package/dist/store/columns.js +77 -0
  838. package/dist/store/columns.js.map +1 -0
  839. package/dist/store/engine.d.ts +176 -0
  840. package/dist/store/engine.d.ts.map +1 -0
  841. package/dist/store/engine.js +283 -0
  842. package/dist/store/engine.js.map +1 -0
  843. package/dist/store/evaluate.d.ts +17 -0
  844. package/dist/store/evaluate.d.ts.map +1 -0
  845. package/dist/store/evaluate.js +128 -0
  846. package/dist/store/evaluate.js.map +1 -0
  847. package/dist/store/export.d.ts +17 -0
  848. package/dist/store/export.d.ts.map +1 -0
  849. package/dist/store/export.js +200 -0
  850. package/dist/store/export.js.map +1 -0
  851. package/dist/store/expression.d.ts +150 -0
  852. package/dist/store/expression.d.ts.map +1 -0
  853. package/dist/store/expression.js +268 -0
  854. package/dist/store/expression.js.map +1 -0
  855. package/dist/store/import.d.ts +10 -0
  856. package/dist/store/import.d.ts.map +1 -0
  857. package/dist/store/import.js +276 -0
  858. package/dist/store/import.js.map +1 -0
  859. package/dist/store/index.d.ts +16 -0
  860. package/dist/store/index.d.ts.map +1 -0
  861. package/dist/store/index.js +13 -0
  862. package/dist/store/index.js.map +1 -0
  863. package/dist/store/json-column.d.ts +33 -0
  864. package/dist/store/json-column.d.ts.map +1 -0
  865. package/dist/store/json-column.js +62 -0
  866. package/dist/store/json-column.js.map +1 -0
  867. package/dist/store/jsonl.d.ts +9 -0
  868. package/dist/store/jsonl.d.ts.map +1 -0
  869. package/dist/store/jsonl.js +61 -0
  870. package/dist/store/jsonl.js.map +1 -0
  871. package/dist/store/live-query.d.ts +108 -0
  872. package/dist/store/live-query.d.ts.map +1 -0
  873. package/dist/store/live-query.js +254 -0
  874. package/dist/store/live-query.js.map +1 -0
  875. package/dist/store/outbox.d.ts +26 -0
  876. package/dist/store/outbox.d.ts.map +1 -0
  877. package/dist/store/outbox.js +80 -0
  878. package/dist/store/outbox.js.map +1 -0
  879. package/dist/store/query.d.ts +39 -0
  880. package/dist/store/query.d.ts.map +1 -0
  881. package/dist/store/query.js +97 -0
  882. package/dist/store/query.js.map +1 -0
  883. package/dist/store/refusal.d.ts +15 -0
  884. package/dist/store/refusal.d.ts.map +1 -0
  885. package/dist/store/refusal.js +36 -0
  886. package/dist/store/refusal.js.map +1 -0
  887. package/dist/store/rows.d.ts +80 -0
  888. package/dist/store/rows.d.ts.map +1 -0
  889. package/dist/store/rows.js +183 -0
  890. package/dist/store/rows.js.map +1 -0
  891. package/dist/store/schema.d.ts +25 -0
  892. package/dist/store/schema.d.ts.map +1 -0
  893. package/dist/store/schema.js +115 -0
  894. package/dist/store/schema.js.map +1 -0
  895. package/dist/store/sql.d.ts +73 -0
  896. package/dist/store/sql.d.ts.map +1 -0
  897. package/dist/store/sql.js +234 -0
  898. package/dist/store/sql.js.map +1 -0
  899. package/dist/store/step.d.ts +50 -0
  900. package/dist/store/step.d.ts.map +1 -0
  901. package/dist/store/step.js +52 -0
  902. package/dist/store/step.js.map +1 -0
  903. package/dist/store/store.d.ts +171 -0
  904. package/dist/store/store.d.ts.map +1 -0
  905. package/dist/store/store.js +818 -0
  906. package/dist/store/store.js.map +1 -0
  907. package/dist/store/table-changes.d.ts +29 -0
  908. package/dist/store/table-changes.d.ts.map +1 -0
  909. package/dist/store/table-changes.js +102 -0
  910. package/dist/store/table-changes.js.map +1 -0
  911. package/dist/store/table-evolve.d.ts +74 -0
  912. package/dist/store/table-evolve.d.ts.map +1 -0
  913. package/dist/store/table-evolve.js +201 -0
  914. package/dist/store/table-evolve.js.map +1 -0
  915. package/dist/store/table-handle.d.ts +73 -0
  916. package/dist/store/table-handle.d.ts.map +1 -0
  917. package/dist/store/table-handle.js +101 -0
  918. package/dist/store/table-handle.js.map +1 -0
  919. package/dist/store/table-history.d.ts +75 -0
  920. package/dist/store/table-history.d.ts.map +1 -0
  921. package/dist/store/table-history.js +42 -0
  922. package/dist/store/table-history.js.map +1 -0
  923. package/dist/store/table-migration.d.ts +16 -0
  924. package/dist/store/table-migration.d.ts.map +1 -0
  925. package/dist/store/table-migration.js +202 -0
  926. package/dist/store/table-migration.js.map +1 -0
  927. package/dist/store/table-writes.d.ts +125 -0
  928. package/dist/store/table-writes.d.ts.map +1 -0
  929. package/dist/store/table-writes.js +170 -0
  930. package/dist/store/table-writes.js.map +1 -0
  931. package/dist/store/table.d.ts +80 -0
  932. package/dist/store/table.d.ts.map +1 -0
  933. package/dist/store/table.js +103 -0
  934. package/dist/store/table.js.map +1 -0
  935. package/dist/store/text.d.ts +14 -0
  936. package/dist/store/text.d.ts.map +1 -0
  937. package/dist/store/text.js +51 -0
  938. package/dist/store/text.js.map +1 -0
  939. package/dist/store/writes.d.ts +5 -0
  940. package/dist/store/writes.d.ts.map +1 -0
  941. package/dist/store/writes.js +4 -0
  942. package/dist/store/writes.js.map +1 -0
  943. package/dist/surfaces/active-language.d.ts +20 -0
  944. package/dist/surfaces/active-language.d.ts.map +1 -0
  945. package/dist/surfaces/active-language.js +78 -0
  946. package/dist/surfaces/active-language.js.map +1 -0
  947. package/dist/surfaces/active-theme.d.ts +16 -0
  948. package/dist/surfaces/active-theme.d.ts.map +1 -0
  949. package/dist/surfaces/active-theme.js +47 -0
  950. package/dist/surfaces/active-theme.js.map +1 -0
  951. package/dist/surfaces/client.d.ts +96 -0
  952. package/dist/surfaces/client.d.ts.map +1 -0
  953. package/dist/surfaces/client.js +264 -0
  954. package/dist/surfaces/client.js.map +1 -0
  955. package/dist/surfaces/connection.d.ts +49 -0
  956. package/dist/surfaces/connection.d.ts.map +1 -0
  957. package/dist/surfaces/connection.js +142 -0
  958. package/dist/surfaces/connection.js.map +1 -0
  959. package/dist/surfaces/format.d.ts +5 -0
  960. package/dist/surfaces/format.d.ts.map +1 -0
  961. package/dist/surfaces/format.js +37 -0
  962. package/dist/surfaces/format.js.map +1 -0
  963. package/dist/surfaces/index.d.ts +15 -0
  964. package/dist/surfaces/index.d.ts.map +1 -0
  965. package/dist/surfaces/index.js +18 -0
  966. package/dist/surfaces/index.js.map +1 -0
  967. package/dist/surfaces/language.d.ts +53 -0
  968. package/dist/surfaces/language.d.ts.map +1 -0
  969. package/dist/surfaces/language.js +74 -0
  970. package/dist/surfaces/language.js.map +1 -0
  971. package/dist/surfaces/loaded.d.ts +42 -0
  972. package/dist/surfaces/loaded.d.ts.map +1 -0
  973. package/dist/surfaces/loaded.js +116 -0
  974. package/dist/surfaces/loaded.js.map +1 -0
  975. package/dist/surfaces/locale-choice.d.ts +25 -0
  976. package/dist/surfaces/locale-choice.d.ts.map +1 -0
  977. package/dist/surfaces/locale-choice.js +14 -0
  978. package/dist/surfaces/locale-choice.js.map +1 -0
  979. package/dist/surfaces/messages.d.ts +67 -0
  980. package/dist/surfaces/messages.d.ts.map +1 -0
  981. package/dist/surfaces/messages.js +112 -0
  982. package/dist/surfaces/messages.js.map +1 -0
  983. package/dist/surfaces/page-state.d.ts +14 -0
  984. package/dist/surfaces/page-state.d.ts.map +1 -0
  985. package/dist/surfaces/page-state.js +43 -0
  986. package/dist/surfaces/page-state.js.map +1 -0
  987. package/dist/surfaces/preference.d.ts +32 -0
  988. package/dist/surfaces/preference.d.ts.map +1 -0
  989. package/dist/surfaces/preference.js +72 -0
  990. package/dist/surfaces/preference.js.map +1 -0
  991. package/dist/surfaces/registered.d.ts +33 -0
  992. package/dist/surfaces/registered.d.ts.map +1 -0
  993. package/dist/surfaces/registered.js +51 -0
  994. package/dist/surfaces/registered.js.map +1 -0
  995. package/dist/surfaces/scripts.d.ts +84 -0
  996. package/dist/surfaces/scripts.d.ts.map +1 -0
  997. package/dist/surfaces/scripts.js +28 -0
  998. package/dist/surfaces/scripts.js.map +1 -0
  999. package/dist/surfaces/theme-choice.d.ts +31 -0
  1000. package/dist/surfaces/theme-choice.d.ts.map +1 -0
  1001. package/dist/surfaces/theme-choice.js +18 -0
  1002. package/dist/surfaces/theme-choice.js.map +1 -0
  1003. package/dist/surfaces/themes.d.ts +43 -0
  1004. package/dist/surfaces/themes.d.ts.map +1 -0
  1005. package/dist/surfaces/themes.js +110 -0
  1006. package/dist/surfaces/themes.js.map +1 -0
  1007. package/dist/surfaces/translations.d.ts +29 -0
  1008. package/dist/surfaces/translations.d.ts.map +1 -0
  1009. package/dist/surfaces/translations.js +57 -0
  1010. package/dist/surfaces/translations.js.map +1 -0
  1011. package/dist/sync/batch.d.ts +18 -0
  1012. package/dist/sync/batch.d.ts.map +1 -0
  1013. package/dist/sync/batch.js +125 -0
  1014. package/dist/sync/batch.js.map +1 -0
  1015. package/dist/sync/client.d.ts +166 -0
  1016. package/dist/sync/client.d.ts.map +1 -0
  1017. package/dist/sync/client.js +438 -0
  1018. package/dist/sync/client.js.map +1 -0
  1019. package/dist/sync/files.d.ts +46 -0
  1020. package/dist/sync/files.d.ts.map +1 -0
  1021. package/dist/sync/files.js +13 -0
  1022. package/dist/sync/files.js.map +1 -0
  1023. package/dist/sync/filesystem.d.ts +37 -0
  1024. package/dist/sync/filesystem.d.ts.map +1 -0
  1025. package/dist/sync/filesystem.js +185 -0
  1026. package/dist/sync/filesystem.js.map +1 -0
  1027. package/dist/sync/index.d.ts +8 -0
  1028. package/dist/sync/index.d.ts.map +1 -0
  1029. package/dist/sync/index.js +9 -0
  1030. package/dist/sync/index.js.map +1 -0
  1031. package/dist/sync/lines.d.ts +18 -0
  1032. package/dist/sync/lines.d.ts.map +1 -0
  1033. package/dist/sync/lines.js +46 -0
  1034. package/dist/sync/lines.js.map +1 -0
  1035. package/dist/sync/remote.d.ts +130 -0
  1036. package/dist/sync/remote.d.ts.map +1 -0
  1037. package/dist/sync/remote.js +46 -0
  1038. package/dist/sync/remote.js.map +1 -0
  1039. package/dist/sync/state.d.ts +17 -0
  1040. package/dist/sync/state.d.ts.map +1 -0
  1041. package/dist/sync/state.js +40 -0
  1042. package/dist/sync/state.js.map +1 -0
  1043. package/dist/telemetry-ingest/batch.d.ts +70 -0
  1044. package/dist/telemetry-ingest/batch.d.ts.map +1 -0
  1045. package/dist/telemetry-ingest/batch.js +110 -0
  1046. package/dist/telemetry-ingest/batch.js.map +1 -0
  1047. package/dist/telemetry-ingest/facet.d.ts +21 -0
  1048. package/dist/telemetry-ingest/facet.d.ts.map +1 -0
  1049. package/dist/telemetry-ingest/facet.js +96 -0
  1050. package/dist/telemetry-ingest/facet.js.map +1 -0
  1051. package/dist/telemetry-ingest/index.d.ts +5 -0
  1052. package/dist/telemetry-ingest/index.d.ts.map +1 -0
  1053. package/dist/telemetry-ingest/index.js +8 -0
  1054. package/dist/telemetry-ingest/index.js.map +1 -0
  1055. package/dist/telemetry-ingest/recorder.d.ts +50 -0
  1056. package/dist/telemetry-ingest/recorder.d.ts.map +1 -0
  1057. package/dist/telemetry-ingest/recorder.js +298 -0
  1058. package/dist/telemetry-ingest/recorder.js.map +1 -0
  1059. package/dist/telemetry-ingest/sender.d.ts +14 -0
  1060. package/dist/telemetry-ingest/sender.d.ts.map +1 -0
  1061. package/dist/telemetry-ingest/sender.js +64 -0
  1062. package/dist/telemetry-ingest/sender.js.map +1 -0
  1063. package/dist/telemetry-sqlite/index.d.ts +13 -4
  1064. package/dist/telemetry-sqlite/index.d.ts.map +1 -1
  1065. package/dist/telemetry-sqlite/index.js +81 -241
  1066. package/dist/telemetry-sqlite/index.js.map +1 -1
  1067. package/dist/telemetry-sqlite/node.d.ts +13 -0
  1068. package/dist/telemetry-sqlite/node.d.ts.map +1 -0
  1069. package/dist/telemetry-sqlite/node.js +27 -0
  1070. package/dist/telemetry-sqlite/node.js.map +1 -0
  1071. package/dist/telemetry-sqlite/schema.d.ts +9 -0
  1072. package/dist/telemetry-sqlite/schema.d.ts.map +1 -0
  1073. package/dist/telemetry-sqlite/schema.js +61 -0
  1074. package/dist/telemetry-sqlite/schema.js.map +1 -0
  1075. package/dist/telemetry-sqlite/store.d.ts +3 -0
  1076. package/dist/telemetry-sqlite/store.d.ts.map +1 -1
  1077. package/dist/telemetry-sqlite/store.js +24 -13
  1078. package/dist/telemetry-sqlite/store.js.map +1 -1
  1079. package/dist/telemetry.d.ts +937 -0
  1080. package/dist/telemetry.d.ts.map +1 -0
  1081. package/dist/telemetry.js +470 -0
  1082. package/dist/telemetry.js.map +1 -0
  1083. package/dist/tui/bridge.d.ts +112 -0
  1084. package/dist/tui/bridge.d.ts.map +1 -0
  1085. package/dist/tui/bridge.js +9 -0
  1086. package/dist/tui/bridge.js.map +1 -0
  1087. package/dist/tui/channel.d.ts +44 -0
  1088. package/dist/tui/channel.d.ts.map +1 -0
  1089. package/dist/tui/channel.js +150 -0
  1090. package/dist/tui/channel.js.map +1 -0
  1091. package/dist/tui/frames.d.ts +5 -0
  1092. package/dist/tui/frames.d.ts.map +1 -0
  1093. package/dist/tui/frames.js +52 -0
  1094. package/dist/tui/frames.js.map +1 -0
  1095. package/dist/tui/index.d.ts +7 -0
  1096. package/dist/tui/index.d.ts.map +1 -0
  1097. package/dist/tui/index.js +8 -0
  1098. package/dist/tui/index.js.map +1 -0
  1099. package/dist/tui/runtime.d.ts +46 -0
  1100. package/dist/tui/runtime.d.ts.map +1 -0
  1101. package/dist/tui/runtime.js +101 -0
  1102. package/dist/tui/runtime.js.map +1 -0
  1103. package/dist/tui/scope.d.ts +46 -0
  1104. package/dist/tui/scope.d.ts.map +1 -0
  1105. package/dist/tui/scope.js +141 -0
  1106. package/dist/tui/scope.js.map +1 -0
  1107. package/dist/tui/terminal.d.ts +15 -0
  1108. package/dist/tui/terminal.d.ts.map +1 -0
  1109. package/dist/tui/terminal.js +37 -0
  1110. package/dist/tui/terminal.js.map +1 -0
  1111. package/dist/tui/theme.d.ts +17 -0
  1112. package/dist/tui/theme.d.ts.map +1 -0
  1113. package/dist/tui/theme.js +38 -0
  1114. package/dist/tui/theme.js.map +1 -0
  1115. package/dist/watch.d.ts +194 -0
  1116. package/dist/watch.d.ts.map +1 -0
  1117. package/dist/watch.js +383 -0
  1118. package/dist/watch.js.map +1 -0
  1119. package/dist/web/environment.d.ts +4 -0
  1120. package/dist/web/environment.d.ts.map +1 -0
  1121. package/dist/web/environment.js +37 -0
  1122. package/dist/web/environment.js.map +1 -0
  1123. package/dist/web/index.d.ts +5 -0
  1124. package/dist/web/index.d.ts.map +1 -0
  1125. package/dist/web/index.js +7 -0
  1126. package/dist/web/index.js.map +1 -0
  1127. package/dist/web/language.d.ts +7 -0
  1128. package/dist/web/language.d.ts.map +1 -0
  1129. package/dist/web/language.js +21 -0
  1130. package/dist/web/language.js.map +1 -0
  1131. package/dist/web/page.d.ts +29 -0
  1132. package/dist/web/page.d.ts.map +1 -0
  1133. package/dist/web/page.js +92 -0
  1134. package/dist/web/page.js.map +1 -0
  1135. package/dist/web/scripts.d.ts +23 -0
  1136. package/dist/web/scripts.d.ts.map +1 -0
  1137. package/dist/web/scripts.js +50 -0
  1138. package/dist/web/scripts.js.map +1 -0
  1139. package/dist/web/styles.d.ts +17 -0
  1140. package/dist/web/styles.d.ts.map +1 -0
  1141. package/dist/web/styles.js +218 -0
  1142. package/dist/web/styles.js.map +1 -0
  1143. package/dist/web/themes.d.ts +6 -0
  1144. package/dist/web/themes.d.ts.map +1 -0
  1145. package/dist/web/themes.js +31 -0
  1146. package/dist/web/themes.js.map +1 -0
  1147. package/docs/benchmarks.md +1036 -0
  1148. package/docs/decisions.md +3436 -0
  1149. package/docs/dependencies/book.md +1671 -0
  1150. package/docs/dependencies/index.html +2641 -0
  1151. package/docs/dependencies/model.md +330 -0
  1152. package/docs/design.md +3065 -0
  1153. package/docs/durable-observers/book.md +432 -0
  1154. package/docs/durable-observers/index.html +517 -0
  1155. package/docs/flow-control/book.md +333 -0
  1156. package/docs/flow-control/fold/index.html +265 -0
  1157. package/docs/flow-control/index.html +548 -0
  1158. package/docs/flow-control/window/index.html +228 -0
  1159. package/docs/guide-plugins-hosts/book.md +957 -0
  1160. package/docs/guide-plugins-hosts/index.html +952 -0
  1161. package/docs/http-workers/book.md +378 -0
  1162. package/docs/http-workers/index.html +515 -0
  1163. package/docs/i18n/book.md +217 -0
  1164. package/docs/i18n/index.html +344 -0
  1165. package/docs/layer-1.md +311 -0
  1166. package/docs/layer-2.md +216 -0
  1167. package/docs/p3-features/README.md +6 -0
  1168. package/docs/p3-features/book.md +478 -0
  1169. package/docs/plugin-authoring.md +276 -0
  1170. package/docs/plugin-model/book.md +186 -0
  1171. package/docs/plugin-model/index.html +310 -0
  1172. package/docs/plugin-primer/book.md +273 -0
  1173. package/docs/plugin-primer/index.html +430 -0
  1174. package/docs/slice-1.md +236 -0
  1175. package/docs/slice-10.md +288 -0
  1176. package/docs/slice-11.md +114 -0
  1177. package/docs/slice-12.md +132 -0
  1178. package/docs/slice-13.md +121 -0
  1179. package/docs/slice-2.md +174 -0
  1180. package/docs/slice-3a.md +296 -0
  1181. package/docs/slice-3b.md +197 -0
  1182. package/docs/slice-4.md +146 -0
  1183. package/docs/slice-4a.md +418 -0
  1184. package/docs/slice-4b.md +208 -0
  1185. package/docs/slice-5.md +281 -0
  1186. package/docs/slice-6a.md +676 -0
  1187. package/docs/slice-6b.md +332 -0
  1188. package/docs/slice-7a.md +130 -0
  1189. package/docs/slice-7b/book.md +608 -0
  1190. package/docs/slice-7b/index.html +842 -0
  1191. package/docs/slice-7b.md +255 -0
  1192. package/docs/slice-7c.md +165 -0
  1193. package/docs/slice-8.md +194 -0
  1194. package/docs/slice-9.md +110 -0
  1195. package/docs/slices.md +241 -0
  1196. package/docs/store/book.md +670 -0
  1197. package/docs/store/index.html +861 -0
  1198. package/docs/store/walkthrough.md +193 -0
  1199. package/docs/theming/book.md +223 -0
  1200. package/docs/theming/index.html +371 -0
  1201. package/docs/tutorial/book.md +2169 -0
  1202. package/docs/tutorial/index.html +2112 -0
  1203. package/docs/tutorial/screens/click-after.png +0 -0
  1204. package/docs/tutorial/screens/click-before.png +0 -0
  1205. package/docs/tutorial/screens/edited.png +0 -0
  1206. package/docs/tutorial/screens/french.png +0 -0
  1207. package/docs/tutorial/screens/harbor.png +0 -0
  1208. package/docs/tutorial/screens/page.png +0 -0
  1209. package/docs/tutorial/screens/traces-ada.png +0 -0
  1210. package/docs/tutorial/screens/traces.png +0 -0
  1211. package/package.json +114 -20
  1212. package/src/delta/README.md +69 -0
  1213. package/dist/cell.d.ts +0 -122
  1214. package/dist/cell.d.ts.map +0 -1
  1215. package/dist/cell.js +0 -356
  1216. package/dist/cell.js.map +0 -1
  1217. package/dist/cluster.d.ts +0 -27
  1218. package/dist/cluster.d.ts.map +0 -1
  1219. package/dist/cluster.js +0 -230
  1220. package/dist/cluster.js.map +0 -1
  1221. package/dist/connection.d.ts +0 -270
  1222. package/dist/connection.d.ts.map +0 -1
  1223. package/dist/connection.js +0 -1216
  1224. package/dist/connection.js.map +0 -1
  1225. package/dist/contract.d.ts +0 -208
  1226. package/dist/contract.d.ts.map +0 -1
  1227. package/dist/contract.js +0 -246
  1228. package/dist/contract.js.map +0 -1
  1229. package/dist/declare.d.ts +0 -33
  1230. package/dist/declare.d.ts.map +0 -1
  1231. package/dist/declare.js +0 -2
  1232. package/dist/declare.js.map +0 -1
  1233. package/dist/errors.d.ts +0 -28
  1234. package/dist/errors.d.ts.map +0 -1
  1235. package/dist/errors.js +0 -59
  1236. package/dist/errors.js.map +0 -1
  1237. package/dist/host.d.ts +0 -348
  1238. package/dist/host.d.ts.map +0 -1
  1239. package/dist/host.js +0 -1000
  1240. package/dist/host.js.map +0 -1
  1241. package/dist/link.d.ts +0 -107
  1242. package/dist/link.d.ts.map +0 -1
  1243. package/dist/link.js +0 -355
  1244. package/dist/link.js.map +0 -1
  1245. package/dist/loader.d.ts +0 -4
  1246. package/dist/loader.d.ts.map +0 -1
  1247. package/dist/loader.js +0 -73
  1248. package/dist/loader.js.map +0 -1
  1249. package/dist/manager.d.ts +0 -115
  1250. package/dist/manager.d.ts.map +0 -1
  1251. package/dist/manager.js +0 -345
  1252. package/dist/manager.js.map +0 -1
  1253. package/dist/node.d.ts +0 -4
  1254. package/dist/node.d.ts.map +0 -1
  1255. package/dist/node.js +0 -4
  1256. package/dist/node.js.map +0 -1
  1257. package/dist/object.d.ts +0 -438
  1258. package/dist/object.d.ts.map +0 -1
  1259. package/dist/object.js +0 -1571
  1260. package/dist/object.js.map +0 -1
  1261. package/dist/publish.d.ts +0 -5
  1262. package/dist/publish.d.ts.map +0 -1
  1263. package/dist/publish.js +0 -40
  1264. package/dist/publish.js.map +0 -1
  1265. package/dist/registry.d.ts +0 -25
  1266. package/dist/registry.d.ts.map +0 -1
  1267. package/dist/registry.js +0 -6
  1268. package/dist/registry.js.map +0 -1
  1269. package/dist/reload.d.ts +0 -126
  1270. package/dist/reload.d.ts.map +0 -1
  1271. package/dist/reload.js +0 -653
  1272. package/dist/reload.js.map +0 -1
  1273. package/dist/remote.d.ts +0 -165
  1274. package/dist/remote.d.ts.map +0 -1
  1275. package/dist/remote.js +0 -612
  1276. package/dist/remote.js.map +0 -1
  1277. package/dist/schema.d.ts +0 -21
  1278. package/dist/schema.d.ts.map +0 -1
  1279. package/dist/schema.js +0 -228
  1280. package/dist/schema.js.map +0 -1
  1281. package/dist/state.d.ts +0 -92
  1282. package/dist/state.d.ts.map +0 -1
  1283. package/dist/state.js +0 -287
  1284. package/dist/state.js.map +0 -1
  1285. package/dist/types.d.ts +0 -88
  1286. package/dist/types.d.ts.map +0 -1
  1287. package/dist/types.js +0 -2
  1288. package/dist/types.js.map +0 -1
  1289. package/dist/websocket.d.ts +0 -15
  1290. package/dist/websocket.d.ts.map +0 -1
  1291. package/dist/websocket.js +0 -16
  1292. package/dist/websocket.js.map +0 -1
  1293. package/dist/wire.d.ts +0 -216
  1294. package/dist/wire.d.ts.map +0 -1
  1295. package/dist/wire.js +0 -165
  1296. package/dist/wire.js.map +0 -1
  1297. package/docs/guide.md +0 -814
  1298. package/docs/spec.md +0 -288
  1299. package/docs/tutorial.md +0 -931
package/dist/contract.js DELETED
@@ -1,246 +0,0 @@
1
- import { Type } from "typebox";
2
- import { Value } from "typebox/value";
3
- import { ChordError, invalid } from "./errors.js";
4
- import { canonicalJson, fits, hash64 } from "./schema.js";
5
- const MEMBER = Symbol("chord.member");
6
- export function method(args, result) {
7
- return { [MEMBER]: "method", args, result };
8
- }
9
- /** A native in-process object identified by `name@version` (local contracts only). */
10
- export const opaque = (id) => {
11
- if (!/^[^@\s]+@\d+$/.test(id))
12
- throw new TypeError(`opaque id must be name@version: ${id}`);
13
- return { [MEMBER]: "opaque", id };
14
- };
15
- /** Objects of the type live on the host named `name` (`hostNamed("server")`). */
16
- export function hostNamed(name) {
17
- if (typeof name !== "string" || name === "")
18
- throw new TypeError("hostNamed needs a host name");
19
- return { name };
20
- }
21
- /**
22
- * Objects of the type live on `prefix` + the value of the input's string field `key`: `hostFamily("session:",
23
- * "session")` puts `{ session: "S1", … }` on `session:S1`. The field is required and must be a non-empty string.
24
- */
25
- export function hostFamily(prefix, key) {
26
- if (typeof prefix !== "string" || prefix === "")
27
- throw new TypeError("hostFamily needs a host-name prefix");
28
- if (typeof key !== "string" || key === "")
29
- throw new TypeError("hostFamily needs an input field name");
30
- return { prefix, key };
31
- }
32
- /** The host an object of `placement` with this (normalized) input lives on. Throws `invalid/placement`. */
33
- export function resolveHost(typeName, placement, input) {
34
- if ("name" in placement)
35
- return placement.name;
36
- const value = input !== null && typeof input === "object" ? input[placement.key] : undefined;
37
- if (typeof value !== "string" || value === "")
38
- throw invalid("placement", `${typeName}: input field ${placement.key} names no host`);
39
- return placement.prefix + value;
40
- }
41
- /** Whether the host named `hostName` may serve a type of `placement`. */
42
- export const placedOn = (placement, hostName) => "name" in placement
43
- ? placement.name === hostName
44
- : hostName.startsWith(placement.prefix) && hostName.length > placement.prefix.length;
45
- export const placementText = (placement) => "name" in placement ? placement.name : `${placement.prefix}<${placement.key}>`;
46
- // A description travels as a reference's contract token (wire.ts), so it is declared once, as the schema that validates it.
47
- // `TSchema` is an empty interface: any object is one, which is all a peer's schema is checked for here.
48
- const SchemaObject = Type.Unsafe(Type.Object({}));
49
- const MemberDescriptionSchema = Type.Union([
50
- // Absent `args`: the method takes none. Absent `result`: it returns nothing.
51
- Type.Object({
52
- kind: Type.Literal("method"),
53
- args: Type.Optional(SchemaObject),
54
- result: Type.Optional(SchemaObject),
55
- }),
56
- Type.Object({ kind: Type.Literal("state"), schema: SchemaObject }),
57
- Type.Object({ kind: Type.Literal("opaque"), id: Type.String() }),
58
- ]);
59
- /** Local contracts have one unnamed variant. */
60
- export const LOCAL_VARIANT = "";
61
- const PlacementSchema = Type.Union([
62
- Type.Object({ name: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
63
- Type.Object({ prefix: Type.String({ minLength: 1 }), key: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
64
- ]);
65
- export const DescriptionSchema = Type.Object({
66
- name: Type.String({ minLength: 1 }),
67
- scope: Type.Union([Type.Literal("remote"), Type.Literal("local")]),
68
- version: Type.Integer(),
69
- input: SchemaObject,
70
- /** Remote types only (required there): where their objects live. */
71
- host: Type.Optional(PlacementSchema),
72
- variants: Type.Record(Type.String(), Type.Record(Type.String(), MemberDescriptionSchema)),
73
- });
74
- /** Names a reference uses itself; members may not use them. */
75
- export const RESERVED_MEMBERS = new Set([
76
- "variant",
77
- "status",
78
- "ready",
79
- "shape",
80
- "error",
81
- "onShape",
82
- "onStatus",
83
- "release",
84
- "then",
85
- "contract",
86
- ]);
87
- function describeMember(name, member, scope) {
88
- if (RESERVED_MEMBERS.has(name))
89
- throw new TypeError(`member name is reserved: ${name}`);
90
- const brand = member[MEMBER];
91
- if (brand === "method") {
92
- const spec = member;
93
- return {
94
- kind: "method",
95
- ...(spec.args === undefined ? {} : { args: spec.args }),
96
- ...(spec.result === undefined ? {} : { result: spec.result }),
97
- };
98
- }
99
- if (brand === "opaque") {
100
- if (scope === "remote")
101
- throw new TypeError(`remote contracts cannot expose opaque members: ${name}`);
102
- return { kind: "opaque", id: member.id };
103
- }
104
- return { kind: "state", schema: member };
105
- }
106
- function finish(contract) {
107
- return { ...contract, fingerprint: hash64(canonicalJson(contract.description)) };
108
- }
109
- function checkHeader(name, version) {
110
- if (!name)
111
- throw new TypeError("contract name is empty");
112
- if (!Number.isInteger(version) || version < 1)
113
- throw new TypeError(`contract version must be a positive integer`);
114
- }
115
- export function remote(name, def) {
116
- checkHeader(name, def.version);
117
- const placement = def.host;
118
- if (placement === undefined || !Value.Check(PlacementSchema, placement))
119
- throw new TypeError(`remote contract ${name} needs \`host\`: hostNamed(…) or hostFamily(…)`);
120
- // A JSON copy: the description travels, and a placement object may carry nothing else.
121
- const host = "name" in placement ? { name: placement.name } : { prefix: placement.prefix, key: placement.key };
122
- const variants = {};
123
- if (Object.keys(def.variants).length === 0)
124
- throw new TypeError(`remote contract ${name} has no variants`);
125
- for (const [kind, variant] of Object.entries(def.variants)) {
126
- const members = {};
127
- for (const [key, schema] of Object.entries(variant.state ?? {}))
128
- members[key] = describeMember(key, schema, "remote");
129
- for (const [key, spec] of Object.entries(variant.methods ?? {})) {
130
- if (key in members)
131
- throw new TypeError(`member ${key} is both state and method in ${name}.${kind}`);
132
- members[key] = describeMember(key, spec, "remote");
133
- if (members[key].kind !== "method")
134
- throw new TypeError(`methods.${key} is not a method()`);
135
- }
136
- variants[kind] = members;
137
- }
138
- const description = { name, scope: "remote", version: def.version, input: def.input, host, variants };
139
- return finish({
140
- scope: "remote",
141
- name,
142
- version: def.version,
143
- input: def.input,
144
- def,
145
- description,
146
- });
147
- }
148
- export function local(name, def) {
149
- checkHeader(name, def.version);
150
- const members = {};
151
- for (const [key, member] of Object.entries(def.members ?? {}))
152
- members[key] = describeMember(key, member, "local");
153
- const description = {
154
- name,
155
- scope: "local",
156
- version: def.version,
157
- input: def.input,
158
- variants: { [LOCAL_VARIANT]: members },
159
- };
160
- return finish({ scope: "local", name, version: def.version, input: def.input, def, description });
161
- }
162
- /**
163
- * A consumer token received over a link (only its description travels). Has no `def`, so it is only good for binding
164
- * and validation, never for TypeScript types.
165
- */
166
- export function contractFromDescription(description) {
167
- const { name, scope, version, input, host } = description;
168
- if (typeof name !== "string" ||
169
- (scope !== "remote" && scope !== "local") ||
170
- !Number.isInteger(version) ||
171
- (scope === "remote") !== (host !== undefined)) {
172
- throw new ChordError("invalid", "malformed contract token", { reason: "token" });
173
- }
174
- const base = { name, version, input, description, fingerprint: hash64(canonicalJson(description)) };
175
- return scope === "remote"
176
- ? { ...base, scope, def: { version, input, host: host, variants: {} } }
177
- : { ...base, scope, def: { version, input } };
178
- }
179
- /** Returns why `provider` does not cover `consumer`, or undefined when it does. */
180
- export function coverage(provider, consumer) {
181
- if (provider.name !== consumer.name || provider.scope !== consumer.scope)
182
- return "different type";
183
- if (!samePlacement(provider, consumer))
184
- return "host";
185
- if (!fits(consumer.input, provider.input))
186
- return "input";
187
- for (const [kind, consumerMembers] of Object.entries(consumer.variants)) {
188
- const providerMembers = provider.variants[kind];
189
- if (providerMembers === undefined)
190
- return `variant ${kind} missing`;
191
- for (const [name, wanted] of Object.entries(consumerMembers)) {
192
- const offered = providerMembers[name];
193
- if (offered === undefined || offered.kind !== wanted.kind)
194
- return `${kind}.${name} missing or of another kind`;
195
- if (offered.kind === "method" && wanted.kind === "method") {
196
- // Both take arguments or neither does; a consumer that expects no result accepts any.
197
- if ((wanted.args === undefined) !== (offered.args === undefined))
198
- return `${kind}.${name} arguments`;
199
- if (wanted.args !== undefined && offered.args !== undefined && !fits(wanted.args, offered.args))
200
- return `${kind}.${name} arguments`;
201
- if (wanted.result !== undefined && (offered.result === undefined || !fits(offered.result, wanted.result)))
202
- return `${kind}.${name} result`;
203
- }
204
- else if (offered.kind === "state" && wanted.kind === "state") {
205
- if (!fits(offered.schema, wanted.schema))
206
- return `${kind}.${name} state`;
207
- }
208
- else if (offered.kind === "opaque" && wanted.kind === "opaque" && offered.id !== wanted.id) {
209
- return `${kind}.${name} opaque ${offered.id} != ${wanted.id}`;
210
- }
211
- }
212
- }
213
- return undefined;
214
- }
215
- const samePlacement = (a, b) => canonicalJson(a.host ?? null) === canonicalJson(b.host ?? null);
216
- const placementOf = (description) => description.host === undefined ? "(local)" : placementText(description.host);
217
- /** How a consumer token binds to a provider: directly or through an `accepts` adapter. Throws contract_mismatch. */
218
- export function bind(provider, accepts, consumer) {
219
- if (provider.fingerprint === consumer.fingerprint)
220
- return undefined;
221
- // A moved type is another type for its consumers: no adapter reaches across hosts.
222
- if (!samePlacement(provider.description, consumer.description)) {
223
- throw new ChordError("contract_mismatch", `${provider.name} lives on ${placementOf(provider.description)}, the consumer expects ${placementOf(consumer.description)}`);
224
- }
225
- if (provider.version === consumer.version) {
226
- const reason = coverage(provider.description, consumer.description);
227
- if (reason === undefined)
228
- return undefined;
229
- throw new ChordError("contract_mismatch", `${provider.name}@${provider.version} does not cover the consumer's description (${reason}); forgotten version bump?`);
230
- }
231
- const adapter = accepts?.[consumer.version];
232
- if (adapter === undefined) {
233
- throw new ChordError("contract_mismatch", `${provider.name}: provider version ${provider.version}, consumer version ${consumer.version}, no accepts adapter`);
234
- }
235
- return adapter;
236
- }
237
- /** Whether `contract`'s method `name` takes no arguments (it is called as `ref.name(ctx)`). */
238
- export function takesNoArgs(contract, name) {
239
- for (const members of Object.values(contract.description.variants)) {
240
- const member = members[name];
241
- if (member?.kind === "method")
242
- return member.args === undefined;
243
- }
244
- return false;
245
- }
246
- //# sourceMappingURL=contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Static, type TSchema, Type } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport { ChordError, invalid } from \"./errors.ts\";\nimport { canonicalJson, fits, hash64 } from \"./schema.ts\";\nimport type { Ctx, Exposed, Readable, RefBase, StateSource } from \"./types.ts\";\n\nconst MEMBER = Symbol(\"chord.member\");\n\n/** A method's arguments and result; `undefined`: it takes no arguments, or returns nothing (void). */\nexport interface MethodSpec<\n\tA extends TSchema | undefined = TSchema | undefined,\n\tR extends TSchema | undefined = TSchema | undefined,\n> {\n\treadonly [MEMBER]: \"method\";\n\treadonly args: A;\n\treadonly result: R;\n}\n\nexport interface OpaqueSpec<T = unknown> {\n\treadonly [MEMBER]: \"opaque\";\n\treadonly id: string;\n\t/** Type carrier only; never set. */\n\treadonly type?: T;\n}\n\n/**\n * A method. `method()`: no arguments (called as `ref.name(ctx)`, implemented as `(ctx) => …`) and no result.\n * `method(args)`: no result, the handler returns nothing (void). `method(args, result)`, or `method(undefined, result)`\n * for a method without arguments that returns something.\n */\nexport function method(): MethodSpec<undefined, undefined>;\nexport function method<A extends TSchema>(args: A): MethodSpec<A, undefined>;\nexport function method<A extends TSchema | undefined, R extends TSchema>(args: A, result: R): MethodSpec<A, R>;\nexport function method(args?: TSchema, result?: TSchema): MethodSpec {\n\treturn { [MEMBER]: \"method\", args, result };\n}\n\n/** A native in-process object identified by `name@version` (local contracts only). */\nexport const opaque = <T = unknown>(id: string): OpaqueSpec<T> => {\n\tif (!/^[^@\\s]+@\\d+$/.test(id)) throw new TypeError(`opaque id must be name@version: ${id}`);\n\treturn { [MEMBER]: \"opaque\", id };\n};\n\nexport interface VariantDef {\n\treadonly state?: Readonly<Record<string, TSchema>>;\n\treadonly methods?: Readonly<Record<string, MethodSpec>>;\n}\n\n/** Where objects of a remote type live: one named host. */\nexport interface HostNamed {\n\treadonly name: string;\n}\n\n/** Where objects of a remote type live: the host `prefix` + the input's string field `key` (`session:` + `session`). */\nexport interface HostFamily<K extends string = string> {\n\treadonly prefix: string;\n\treadonly key: K;\n}\n\n/** A remote type's placement: data only, so a description carries it and every host can check it. */\nexport type Placement = HostNamed | HostFamily;\n\n/** Objects of the type live on the host named `name` (`hostNamed(\"server\")`). */\nexport function hostNamed(name: string): HostNamed {\n\tif (typeof name !== \"string\" || name === \"\") throw new TypeError(\"hostNamed needs a host name\");\n\treturn { name };\n}\n\n/**\n * Objects of the type live on `prefix` + the value of the input's string field `key`: `hostFamily(\"session:\",\n * \"session\")` puts `{ session: \"S1\", … }` on `session:S1`. The field is required and must be a non-empty string.\n */\nexport function hostFamily<const K extends string>(prefix: string, key: K): HostFamily<K> {\n\tif (typeof prefix !== \"string\" || prefix === \"\") throw new TypeError(\"hostFamily needs a host-name prefix\");\n\tif (typeof key !== \"string\" || key === \"\") throw new TypeError(\"hostFamily needs an input field name\");\n\treturn { prefix, key };\n}\n\n/** Required string fields of `I`: what a `hostFamily` may name. */\ntype StringKeys<I> = { [K in keyof I]-?: I[K] extends string ? K : never }[keyof I] & string;\n/** The placements a remote type with input `I` may have. */\nexport type PlacementFor<I> = HostNamed | HostFamily<StringKeys<I>>;\n\n/** The host an object of `placement` with this (normalized) input lives on. Throws `invalid/placement`. */\nexport function resolveHost(typeName: string, placement: Placement, input: unknown): string {\n\tif (\"name\" in placement) return placement.name;\n\tconst value =\n\t\tinput !== null && typeof input === \"object\" ? (input as Record<string, unknown>)[placement.key] : undefined;\n\tif (typeof value !== \"string\" || value === \"\")\n\t\tthrow invalid(\"placement\", `${typeName}: input field ${placement.key} names no host`);\n\treturn placement.prefix + value;\n}\n\n/** Whether the host named `hostName` may serve a type of `placement`. */\nexport const placedOn = (placement: Placement, hostName: string): boolean =>\n\t\"name\" in placement\n\t\t? placement.name === hostName\n\t\t: hostName.startsWith(placement.prefix) && hostName.length > placement.prefix.length;\n\nexport const placementText = (placement: Placement): string =>\n\t\"name\" in placement ? placement.name : `${placement.prefix}<${placement.key}>`;\n\nexport interface RemoteDef {\n\treadonly version: number;\n\treadonly input: TSchema;\n\t/** Where its objects live: `hostNamed(…)` or `hostFamily(…)`. Part of the contract (and its fingerprint). */\n\treadonly host: Placement;\n\treadonly variants: Readonly<Record<string, VariantDef>>;\n}\n\n/** A local member: a method, an opaque native object, or a state member described by its schema. */\nexport type LocalMember = MethodSpec | OpaqueSpec | TSchema;\n\nexport interface LocalDef {\n\treadonly version: number;\n\treadonly input: TSchema;\n\treadonly members?: Readonly<Record<string, LocalMember>>;\n}\n\n// A description travels as a reference's contract token (wire.ts), so it is declared once, as the schema that validates it.\n// `TSchema` is an empty interface: any object is one, which is all a peer's schema is checked for here.\nconst SchemaObject = Type.Unsafe<TSchema>(Type.Object({}));\n\nconst MemberDescriptionSchema = Type.Union([\n\t// Absent `args`: the method takes none. Absent `result`: it returns nothing.\n\tType.Object({\n\t\tkind: Type.Literal(\"method\"),\n\t\targs: Type.Optional(SchemaObject),\n\t\tresult: Type.Optional(SchemaObject),\n\t}),\n\tType.Object({ kind: Type.Literal(\"state\"), schema: SchemaObject }),\n\tType.Object({ kind: Type.Literal(\"opaque\"), id: Type.String() }),\n]);\nexport type MemberDescription = Static<typeof MemberDescriptionSchema>;\n\n/** Local contracts have one unnamed variant. */\nexport const LOCAL_VARIANT = \"\";\n\nconst PlacementSchema = Type.Union([\n\tType.Object({ name: Type.String({ minLength: 1 }) }, { additionalProperties: false }),\n\tType.Object(\n\t\t{ prefix: Type.String({ minLength: 1 }), key: Type.String({ minLength: 1 }) },\n\t\t{ additionalProperties: false },\n\t),\n]);\n\nexport const DescriptionSchema = Type.Object({\n\tname: Type.String({ minLength: 1 }),\n\tscope: Type.Union([Type.Literal(\"remote\"), Type.Literal(\"local\")]),\n\tversion: Type.Integer(),\n\tinput: SchemaObject,\n\t/** Remote types only (required there): where their objects live. */\n\thost: Type.Optional(PlacementSchema),\n\tvariants: Type.Record(Type.String(), Type.Record(Type.String(), MemberDescriptionSchema)),\n});\nexport type Description = Static<typeof DescriptionSchema>;\n\ninterface ContractBase {\n\treadonly name: string;\n\treadonly version: number;\n\treadonly input: TSchema;\n\treadonly description: Description;\n\treadonly fingerprint: string;\n}\n\nexport interface RemoteContract<D extends RemoteDef = RemoteDef> extends ContractBase {\n\treadonly scope: \"remote\";\n\treadonly def: D;\n}\n\nexport interface LocalContract<D extends LocalDef = LocalDef> extends ContractBase {\n\treadonly scope: \"local\";\n\treadonly def: D;\n}\n\nexport type AnyContract = RemoteContract | LocalContract;\n\n/** Names a reference uses itself; members may not use them. */\nexport const RESERVED_MEMBERS: ReadonlySet<string> = new Set([\n\t\"variant\",\n\t\"status\",\n\t\"ready\",\n\t\"shape\",\n\t\"error\",\n\t\"onShape\",\n\t\"onStatus\",\n\t\"release\",\n\t\"then\",\n\t\"contract\",\n]);\n\nfunction describeMember(name: string, member: unknown, scope: \"remote\" | \"local\"): MemberDescription {\n\tif (RESERVED_MEMBERS.has(name)) throw new TypeError(`member name is reserved: ${name}`);\n\tconst brand = (member as { [MEMBER]?: string })[MEMBER];\n\tif (brand === \"method\") {\n\t\tconst spec = member as MethodSpec;\n\t\treturn {\n\t\t\tkind: \"method\",\n\t\t\t...(spec.args === undefined ? {} : { args: spec.args }),\n\t\t\t...(spec.result === undefined ? {} : { result: spec.result }),\n\t\t};\n\t}\n\tif (brand === \"opaque\") {\n\t\tif (scope === \"remote\") throw new TypeError(`remote contracts cannot expose opaque members: ${name}`);\n\t\treturn { kind: \"opaque\", id: (member as OpaqueSpec).id };\n\t}\n\treturn { kind: \"state\", schema: member as TSchema };\n}\n\nfunction finish<C extends AnyContract>(contract: Omit<C, \"fingerprint\">): C {\n\treturn { ...contract, fingerprint: hash64(canonicalJson(contract.description)) } as C;\n}\n\nfunction checkHeader(name: string, version: number): void {\n\tif (!name) throw new TypeError(\"contract name is empty\");\n\tif (!Number.isInteger(version) || version < 1) throw new TypeError(`contract version must be a positive integer`);\n}\n\nexport function remote<const D extends RemoteDef>(\n\tname: string,\n\tdef: D & { readonly host: PlacementFor<Static<D[\"input\"]>> },\n): RemoteContract<D> {\n\tcheckHeader(name, def.version);\n\tconst placement = def.host as Placement | undefined;\n\tif (placement === undefined || !Value.Check(PlacementSchema, placement))\n\t\tthrow new TypeError(`remote contract ${name} needs \\`host\\`: hostNamed(…) or hostFamily(…)`);\n\t// A JSON copy: the description travels, and a placement object may carry nothing else.\n\tconst host: Placement =\n\t\t\"name\" in placement ? { name: placement.name } : { prefix: placement.prefix, key: placement.key };\n\tconst variants: Record<string, Record<string, MemberDescription>> = {};\n\tif (Object.keys(def.variants).length === 0) throw new TypeError(`remote contract ${name} has no variants`);\n\tfor (const [kind, variant] of Object.entries(def.variants)) {\n\t\tconst members: Record<string, MemberDescription> = {};\n\t\tfor (const [key, schema] of Object.entries(variant.state ?? {}))\n\t\t\tmembers[key] = describeMember(key, schema, \"remote\");\n\t\tfor (const [key, spec] of Object.entries(variant.methods ?? {})) {\n\t\t\tif (key in members) throw new TypeError(`member ${key} is both state and method in ${name}.${kind}`);\n\t\t\tmembers[key] = describeMember(key, spec, \"remote\");\n\t\t\tif (members[key].kind !== \"method\") throw new TypeError(`methods.${key} is not a method()`);\n\t\t}\n\t\tvariants[kind] = members;\n\t}\n\tconst description: Description = { name, scope: \"remote\", version: def.version, input: def.input, host, variants };\n\treturn finish<RemoteContract<D>>({\n\t\tscope: \"remote\",\n\t\tname,\n\t\tversion: def.version,\n\t\tinput: def.input,\n\t\tdef,\n\t\tdescription,\n\t});\n}\n\nexport function local<const D extends LocalDef>(name: string, def: D): LocalContract<D> {\n\tcheckHeader(name, def.version);\n\tconst members: Record<string, MemberDescription> = {};\n\tfor (const [key, member] of Object.entries(def.members ?? {})) members[key] = describeMember(key, member, \"local\");\n\tconst description: Description = {\n\t\tname,\n\t\tscope: \"local\",\n\t\tversion: def.version,\n\t\tinput: def.input,\n\t\tvariants: { [LOCAL_VARIANT]: members },\n\t};\n\treturn finish<LocalContract<D>>({ scope: \"local\", name, version: def.version, input: def.input, def, description });\n}\n\n/**\n * A consumer token received over a link (only its description travels). Has no `def`, so it is only good for binding\n * and validation, never for TypeScript types.\n */\nexport function contractFromDescription(description: Description): AnyContract {\n\tconst { name, scope, version, input, host } = description;\n\tif (\n\t\ttypeof name !== \"string\" ||\n\t\t(scope !== \"remote\" && scope !== \"local\") ||\n\t\t!Number.isInteger(version) ||\n\t\t(scope === \"remote\") !== (host !== undefined)\n\t) {\n\t\tthrow new ChordError(\"invalid\", \"malformed contract token\", { reason: \"token\" });\n\t}\n\tconst base = { name, version, input, description, fingerprint: hash64(canonicalJson(description)) };\n\treturn scope === \"remote\"\n\t\t? { ...base, scope, def: { version, input, host: host!, variants: {} } }\n\t\t: { ...base, scope, def: { version, input } };\n}\n\n/** Returns why `provider` does not cover `consumer`, or undefined when it does. */\nexport function coverage(provider: Description, consumer: Description): string | undefined {\n\tif (provider.name !== consumer.name || provider.scope !== consumer.scope) return \"different type\";\n\tif (!samePlacement(provider, consumer)) return \"host\";\n\tif (!fits(consumer.input, provider.input)) return \"input\";\n\tfor (const [kind, consumerMembers] of Object.entries(consumer.variants)) {\n\t\tconst providerMembers = provider.variants[kind];\n\t\tif (providerMembers === undefined) return `variant ${kind} missing`;\n\t\tfor (const [name, wanted] of Object.entries(consumerMembers)) {\n\t\t\tconst offered = providerMembers[name];\n\t\t\tif (offered === undefined || offered.kind !== wanted.kind) return `${kind}.${name} missing or of another kind`;\n\t\t\tif (offered.kind === \"method\" && wanted.kind === \"method\") {\n\t\t\t\t// Both take arguments or neither does; a consumer that expects no result accepts any.\n\t\t\t\tif ((wanted.args === undefined) !== (offered.args === undefined)) return `${kind}.${name} arguments`;\n\t\t\t\tif (wanted.args !== undefined && offered.args !== undefined && !fits(wanted.args, offered.args))\n\t\t\t\t\treturn `${kind}.${name} arguments`;\n\t\t\t\tif (wanted.result !== undefined && (offered.result === undefined || !fits(offered.result, wanted.result)))\n\t\t\t\t\treturn `${kind}.${name} result`;\n\t\t\t} else if (offered.kind === \"state\" && wanted.kind === \"state\") {\n\t\t\t\tif (!fits(offered.schema, wanted.schema)) return `${kind}.${name} state`;\n\t\t\t} else if (offered.kind === \"opaque\" && wanted.kind === \"opaque\" && offered.id !== wanted.id) {\n\t\t\t\treturn `${kind}.${name} opaque ${offered.id} != ${wanted.id}`;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst samePlacement = (a: Description, b: Description): boolean =>\n\tcanonicalJson(a.host ?? null) === canonicalJson(b.host ?? null);\nconst placementOf = (description: Description): string =>\n\tdescription.host === undefined ? \"(local)\" : placementText(description.host);\n\n/** Maps the provider's current implementation to the view a consumer of an older contract version expects. */\nexport type Adapter = (current: Record<string, unknown>) => Record<string, unknown>;\nexport type Accepts = Readonly<Record<number, Adapter>>;\n\n/** How a consumer token binds to a provider: directly or through an `accepts` adapter. Throws contract_mismatch. */\nexport function bind(provider: AnyContract, accepts: Accepts | undefined, consumer: AnyContract): Adapter | undefined {\n\tif (provider.fingerprint === consumer.fingerprint) return undefined;\n\t// A moved type is another type for its consumers: no adapter reaches across hosts.\n\tif (!samePlacement(provider.description, consumer.description)) {\n\t\tthrow new ChordError(\n\t\t\t\"contract_mismatch\",\n\t\t\t`${provider.name} lives on ${placementOf(provider.description)}, the consumer expects ${placementOf(consumer.description)}`,\n\t\t);\n\t}\n\tif (provider.version === consumer.version) {\n\t\tconst reason = coverage(provider.description, consumer.description);\n\t\tif (reason === undefined) return undefined;\n\t\tthrow new ChordError(\n\t\t\t\"contract_mismatch\",\n\t\t\t`${provider.name}@${provider.version} does not cover the consumer's description (${reason}); forgotten version bump?`,\n\t\t);\n\t}\n\tconst adapter = accepts?.[consumer.version];\n\tif (adapter === undefined) {\n\t\tthrow new ChordError(\n\t\t\t\"contract_mismatch\",\n\t\t\t`${provider.name}: provider version ${provider.version}, consumer version ${consumer.version}, no accepts adapter`,\n\t\t);\n\t}\n\treturn adapter;\n}\n\n// ─── Static types ────────────────────────────────────────────────────────────\n\ntype Empty = Record<never, never>;\ntype StateOf<V> = V extends { readonly state: infer S extends Readonly<Record<string, TSchema>> } ? S : Empty;\ntype StaticOf<S> = S extends TSchema ? Static<S> : never;\ntype MethodsOf<V> = V extends { readonly methods: infer M extends Readonly<Record<string, MethodSpec>> } ? M : Empty;\n\n/** What a handler returns: the result's value, or nothing for a void method. */\ntype Returned<R> = [R] extends [TSchema] ? Static<R> | Promise<Static<R>> : void | Promise<void>;\n/** What a call resolves to. */\ntype Resolved<R> = [R] extends [TSchema] ? Static<R> : undefined;\n\n/** A method's handler; `P` is the app's principal type (`ctx.principal`). */\nexport type MethodImplementation<M, P = unknown> = M extends MethodSpec<infer A, infer R>\n\t? [A] extends [TSchema]\n\t\t? (args: Static<A>, ctx: Ctx<P>) => Returned<R>\n\t\t: (ctx: Ctx<P>) => Returned<R>\n\t: never;\nexport type Call<M> = M extends MethodSpec<infer A, infer R>\n\t? [A] extends [TSchema]\n\t\t? (args: Static<A>, ctx?: Ctx) => Promise<Resolved<R>>\n\t\t: (ctx?: Ctx) => Promise<Resolved<R>>\n\t: never;\n\n/** Whether `contract`'s method `name` takes no arguments (it is called as `ref.name(ctx)`). */\nexport function takesNoArgs(contract: AnyContract, name: string): boolean {\n\tfor (const members of Object.values(contract.description.variants)) {\n\t\tconst member = members[name];\n\t\tif (member?.kind === \"method\") return member.args === undefined;\n\t}\n\treturn false;\n}\n\ntype VariantImplementation<K, V, P> = { readonly variant: K } & {\n\treadonly [S in keyof StateOf<V>]: StateSource<StaticOf<StateOf<V>[S]>>;\n} & {\n\treadonly [M in keyof MethodsOf<V>]: MethodImplementation<MethodsOf<V>[M], P>;\n};\n/**\n * A reference in one variant: its state members are plain readables (a reference you hold has its state) and its\n * methods calls. `variant` discriminates the union `Ref` is for a multi-variant type.\n */\ntype VariantRef<C extends AnyContract, K, V> = RefBase<C> & { readonly variant: K } & {\n\treadonly [S in keyof StateOf<V>]: Readable<StaticOf<StateOf<V>[S]>>;\n} & {\n\treadonly [M in keyof MethodsOf<V>]: Call<MethodsOf<V>[M]>;\n};\n\ntype LocalImplementationMember<M, P> = M extends MethodSpec\n\t? MethodImplementation<M, P>\n\t: M extends OpaqueSpec<infer T>\n\t\t? T | Exposed<T>\n\t\t: M extends TSchema\n\t\t\t? StateSource<Static<M>>\n\t\t\t: never;\ntype LocalRefMember<M> = M extends MethodSpec\n\t? Call<M>\n\t: M extends OpaqueSpec<infer T>\n\t\t? T | undefined\n\t\t: M extends TSchema\n\t\t\t? Readable<Static<M>>\n\t\t\t: never;\ntype LocalMembers<D> = D extends { readonly members: infer M extends Readonly<Record<string, LocalMember>> }\n\t? M\n\t: Empty;\n\nexport type InputOf<C> = C extends { readonly def: { readonly input: infer I extends TSchema } } ? Static<I> : never;\n\n/** What a factory returns for contract C; its methods' `ctx.principal` is `P`. */\nexport type ImplementationOf<C, P = unknown> = C extends RemoteContract<infer D>\n\t? { [K in keyof D[\"variants\"]]: VariantImplementation<K, D[\"variants\"][K], P> }[keyof D[\"variants\"]]\n\t: C extends LocalContract<infer D>\n\t\t? { readonly [K in keyof LocalMembers<D>]: LocalImplementationMember<LocalMembers<D>[K], P> } & Record<\n\t\t\t\tstring,\n\t\t\t\tunknown\n\t\t\t>\n\t\t: never;\n\n/**\n * What `get` returns for contract C. A remote type's reference is a union discriminated by `variant`: another variant's\n * members are reachable only after narrowing (`if (ref.variant === \"editor\") ref.add(…)`). A local type's reference has\n * its members.\n */\nexport type Ref<C extends AnyContract = AnyContract> = C extends RemoteContract<infer D>\n\t? { [K in keyof D[\"variants\"]]: VariantRef<C, K, D[\"variants\"][K]> }[keyof D[\"variants\"]]\n\t: C extends LocalContract<infer D>\n\t\t? RefBase<C> & { readonly [K in keyof LocalMembers<D>]: LocalRefMember<LocalMembers<D>[K]> }\n\t\t: never;\n"]}
package/dist/declare.d.ts DELETED
@@ -1,33 +0,0 @@
1
- import type { Ctx } from "./types.ts";
2
- export interface Subscribable<E> {
3
- subscribe(listener: (event: E) => void): () => void;
4
- }
5
- /** `self.resource(name, declaration)`: something the object opens and later closes (a database, a watch, a socket). */
6
- export interface ResourceDeclaration<T> {
7
- /** Bump to replace the resource at the next reload (a native value has no schema to detect a change). */
8
- readonly version: number;
9
- /** References or resources that must be live/open first. A change replaces the resource. */
10
- readonly deps?: readonly unknown[];
11
- /** Exclusive resources are replaced at the gate: old closed before new opened. */
12
- readonly exclusive?: boolean;
13
- open(options: {
14
- readonly signal: AbortSignal;
15
- }): T | Promise<T>;
16
- close?(value: T): void | Promise<void>;
17
- }
18
- export interface Resource<T> {
19
- readonly key: string;
20
- /** Throws not_ready until opened. */
21
- readonly value: T;
22
- }
23
- /** A listener as `self.on` declares it. */
24
- export interface ListenerDecl {
25
- readonly source: unknown;
26
- readonly select: ((value: never) => Subscribable<unknown>) | undefined;
27
- readonly fn: (event: unknown, ctx: Ctx) => void | Promise<void>;
28
- }
29
- /** What `self.on(name, source, …)` passes to `select`: a resource's opened value, or the source itself. */
30
- export type ValueOf<S> = S extends Subscribable<unknown> ? S : S extends Resource<infer T> ? T : S;
31
- /** What `self.on(name, source, handler)` delivers: a readable's values, an event source's events. */
32
- export type EventOf<S> = S extends Subscribable<infer E> ? E : S extends Resource<infer T> ? EventOf<T> : never;
33
- //# sourceMappingURL=declare.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"declare.d.ts","sourceRoot":"","sources":["../src/declare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAItC,MAAM,WAAW,YAAY,CAAC,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACpD;AAED,uHAAuH;AACvH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACrC,yGAAyG;IACzG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CAClB;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACvE,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAGD,2GAA2G;AAC3G,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnG,qGAAqG;AACrG,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC"}
package/dist/declare.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=declare.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"declare.js","sourceRoot":"","sources":["../src/declare.ts"],"names":[],"mappings":"","sourcesContent":["import type { Ctx } from \"./types.ts\";\n\n// What a factory declares through `self` besides state cells: the shapes of resources and listeners.\n\nexport interface Subscribable<E> {\n\tsubscribe(listener: (event: E) => void): () => void;\n}\n\n/** `self.resource(name, declaration)`: something the object opens and later closes (a database, a watch, a socket). */\nexport interface ResourceDeclaration<T> {\n\t/** Bump to replace the resource at the next reload (a native value has no schema to detect a change). */\n\treadonly version: number;\n\t/** References or resources that must be live/open first. A change replaces the resource. */\n\treadonly deps?: readonly unknown[];\n\t/** Exclusive resources are replaced at the gate: old closed before new opened. */\n\treadonly exclusive?: boolean;\n\topen(options: { readonly signal: AbortSignal }): T | Promise<T>;\n\tclose?(value: T): void | Promise<void>;\n}\n\nexport interface Resource<T> {\n\treadonly key: string;\n\t/** Throws not_ready until opened. */\n\treadonly value: T;\n}\n\n/** A listener as `self.on` declares it. */\nexport interface ListenerDecl {\n\treadonly source: unknown;\n\treadonly select: ((value: never) => Subscribable<unknown>) | undefined;\n\treadonly fn: (event: unknown, ctx: Ctx) => void | Promise<void>;\n}\n\n// A cell has a `key` and a `value` too: sources are matched before resources.\n/** What `self.on(name, source, …)` passes to `select`: a resource's opened value, or the source itself. */\nexport type ValueOf<S> = S extends Subscribable<unknown> ? S : S extends Resource<infer T> ? T : S;\n/** What `self.on(name, source, handler)` delivers: a readable's values, an event source's events. */\nexport type EventOf<S> = S extends Subscribable<infer E> ? E : S extends Resource<infer T> ? EventOf<T> : never;\n"]}
package/dist/errors.d.ts DELETED
@@ -1,28 +0,0 @@
1
- /** Error codes callers see (guide table). A refused or aborted reload keeps the code of its cause. */
2
- export declare const CHORD_ERROR_CODES: readonly ["aborted", "contract_mismatch", "forbidden", "gone", "invalid", "not_in_variant", "not_ready", "released", "superseded", "unavailable", "upgrade_conflict", "upgrade_required"];
3
- export type ChordErrorCode = (typeof CHORD_ERROR_CODES)[number];
4
- /**
5
- * Finer cause inside a code, for logs and tests: e.g. `invalid` + `args`, `result`, `state`, `input`, `implementation`,
6
- * `duplicate`, `cycle`, `read_only`, `not_host_lifetime`, `registry_conflict`; `unavailable` + `unknown_type`.
7
- */
8
- export type ChordErrorReason = string;
9
- export declare class ChordError extends Error {
10
- readonly code: ChordErrorCode;
11
- readonly reason: ChordErrorReason | undefined;
12
- readonly retryable: boolean;
13
- readonly details: unknown;
14
- constructor(code: ChordErrorCode, message: string, options?: {
15
- cause?: unknown;
16
- details?: unknown;
17
- reason?: ChordErrorReason;
18
- });
19
- }
20
- export declare const isChordError: (error: unknown, code?: ChordErrorCode) => error is ChordError;
21
- /** For factories and methods refusing a principal: `throw forbidden()`. */
22
- export declare const forbidden: (message?: string) => ChordError;
23
- export declare const invalid: (reason: ChordErrorReason, message: string, details?: unknown) => ChordError;
24
- /** Keeps a ChordError's code; anything else becomes `unavailable` with the original as cause. */
25
- export declare const asChordError: (error: unknown, context: string) => ChordError;
26
- /** Runs every step, then throws one error, or an AggregateError when several failed. */
27
- export declare function runAll(steps: readonly (() => unknown)[], message: string): Promise<void>;
28
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,eAAO,MAAM,iBAAiB,YAC7B,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,kBAAkB,CACT,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAItC,qBAAa,UAAW,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,YACC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAE,EAU3E;CACD;AAED,eAAO,MAAM,YAAY,UAAW,OAAO,SAAS,cAAc,KAAG,KAAK,IAAI,UACH,CAAC;AAE5E,2EAA2E;AAC3E,eAAO,MAAM,SAAS,wBAA4B,UAAkD,CAAC;AAErG,eAAO,MAAM,OAAO,WAAY,gBAAgB,WAAW,MAAM,YAAY,OAAO,KAAG,UAC/B,CAAC;AAEzD,iGAAiG;AACjG,eAAO,MAAM,YAAY,UAAW,OAAO,WAAW,MAAM,KAAG,UAK1D,CAAC;AAEN,wFAAwF;AACxF,wBAAsB,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9F"}
package/dist/errors.js DELETED
@@ -1,59 +0,0 @@
1
- /** Error codes callers see (guide table). A refused or aborted reload keeps the code of its cause. */
2
- export const CHORD_ERROR_CODES = [
3
- "aborted",
4
- "contract_mismatch",
5
- "forbidden",
6
- "gone",
7
- "invalid",
8
- "not_in_variant",
9
- "not_ready",
10
- "released",
11
- "superseded",
12
- "unavailable",
13
- "upgrade_conflict",
14
- "upgrade_required",
15
- ];
16
- const RETRYABLE = new Set(["superseded", "upgrade_conflict"]);
17
- export class ChordError extends Error {
18
- code;
19
- reason;
20
- retryable;
21
- details;
22
- constructor(code, message, options) {
23
- super(`${code}${options?.reason ? `/${options.reason}` : ""}: ${message}`, {
24
- cause: options?.cause,
25
- });
26
- this.name = "ChordError";
27
- this.code = code;
28
- this.reason = options?.reason;
29
- this.retryable = RETRYABLE.has(code);
30
- this.details = options?.details;
31
- }
32
- }
33
- export const isChordError = (error, code) => error instanceof ChordError && (code === undefined || error.code === code);
34
- /** For factories and methods refusing a principal: `throw forbidden()`. */
35
- export const forbidden = (message = "forbidden") => new ChordError("forbidden", message);
36
- export const invalid = (reason, message, details) => new ChordError("invalid", message, { reason, details });
37
- /** Keeps a ChordError's code; anything else becomes `unavailable` with the original as cause. */
38
- export const asChordError = (error, context) => error instanceof ChordError
39
- ? error
40
- : new ChordError("unavailable", `${context}: ${error instanceof Error ? error.message : String(error)}`, {
41
- cause: error,
42
- });
43
- /** Runs every step, then throws one error, or an AggregateError when several failed. */
44
- export async function runAll(steps, message) {
45
- const errors = [];
46
- for (const step of steps) {
47
- try {
48
- await step();
49
- }
50
- catch (error) {
51
- errors.push(error);
52
- }
53
- }
54
- if (errors.length === 1)
55
- throw errors[0];
56
- if (errors.length > 1)
57
- throw new AggregateError(errors, message);
58
- }
59
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,SAAS;IACT,mBAAmB;IACnB,WAAW;IACX,MAAM;IACN,SAAS;IACT,gBAAgB;IAChB,WAAW;IACX,UAAU;IACV,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,kBAAkB;CACT,CAAC;AASX,MAAM,SAAS,GAAgC,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAE3F,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC3B,IAAI,CAAiB;IACrB,MAAM,CAA+B;IACrC,SAAS,CAAU;IACnB,OAAO,CAAU;IAC1B,YACC,IAAoB,EACpB,OAAe,EACf,OAA2E;QAE3E,KAAK,CAAC,GAAG,IAAI,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,EAAE;YAC1E,KAAK,EAAE,OAAO,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IACjC,CAAC;CACD;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,IAAqB,EAAuB,EAAE,CAC1F,KAAK,YAAY,UAAU,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAE5E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,WAAW,EAAc,EAAE,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAwB,EAAE,OAAe,EAAE,OAAiB,EAAc,EAAE,CACnG,IAAI,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAEzD,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,OAAe,EAAc,EAAE,CAC3E,KAAK,YAAY,UAAU;IAC1B,CAAC,CAAC,KAAK;IACP,CAAC,CAAC,IAAI,UAAU,CAAC,aAAa,EAAE,GAAG,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;QACvG,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;AAEN,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAiC,EAAE,OAAe;IAC9E,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,MAAM,IAAI,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC","sourcesContent":["/** Error codes callers see (guide table). A refused or aborted reload keeps the code of its cause. */\nexport const CHORD_ERROR_CODES = [\n\t\"aborted\",\n\t\"contract_mismatch\",\n\t\"forbidden\",\n\t\"gone\",\n\t\"invalid\",\n\t\"not_in_variant\",\n\t\"not_ready\",\n\t\"released\",\n\t\"superseded\",\n\t\"unavailable\",\n\t\"upgrade_conflict\",\n\t\"upgrade_required\",\n] as const;\nexport type ChordErrorCode = (typeof CHORD_ERROR_CODES)[number];\n\n/**\n * Finer cause inside a code, for logs and tests: e.g. `invalid` + `args`, `result`, `state`, `input`, `implementation`,\n * `duplicate`, `cycle`, `read_only`, `not_host_lifetime`, `registry_conflict`; `unavailable` + `unknown_type`.\n */\nexport type ChordErrorReason = string;\n\nconst RETRYABLE: ReadonlySet<ChordErrorCode> = new Set([\"superseded\", \"upgrade_conflict\"]);\n\nexport class ChordError extends Error {\n\treadonly code: ChordErrorCode;\n\treadonly reason: ChordErrorReason | undefined;\n\treadonly retryable: boolean;\n\treadonly details: unknown;\n\tconstructor(\n\t\tcode: ChordErrorCode,\n\t\tmessage: string,\n\t\toptions?: { cause?: unknown; details?: unknown; reason?: ChordErrorReason },\n\t) {\n\t\tsuper(`${code}${options?.reason ? `/${options.reason}` : \"\"}: ${message}`, {\n\t\t\tcause: options?.cause,\n\t\t});\n\t\tthis.name = \"ChordError\";\n\t\tthis.code = code;\n\t\tthis.reason = options?.reason;\n\t\tthis.retryable = RETRYABLE.has(code);\n\t\tthis.details = options?.details;\n\t}\n}\n\nexport const isChordError = (error: unknown, code?: ChordErrorCode): error is ChordError =>\n\terror instanceof ChordError && (code === undefined || error.code === code);\n\n/** For factories and methods refusing a principal: `throw forbidden()`. */\nexport const forbidden = (message = \"forbidden\"): ChordError => new ChordError(\"forbidden\", message);\n\nexport const invalid = (reason: ChordErrorReason, message: string, details?: unknown): ChordError =>\n\tnew ChordError(\"invalid\", message, { reason, details });\n\n/** Keeps a ChordError's code; anything else becomes `unavailable` with the original as cause. */\nexport const asChordError = (error: unknown, context: string): ChordError =>\n\terror instanceof ChordError\n\t\t? error\n\t\t: new ChordError(\"unavailable\", `${context}: ${error instanceof Error ? error.message : String(error)}`, {\n\t\t\t\tcause: error,\n\t\t\t});\n\n/** Runs every step, then throws one error, or an AggregateError when several failed. */\nexport async function runAll(steps: readonly (() => unknown)[], message: string): Promise<void> {\n\tconst errors: unknown[] = [];\n\tfor (const step of steps) {\n\t\ttry {\n\t\t\tawait step();\n\t\t} catch (error) {\n\t\t\terrors.push(error);\n\t\t}\n\t}\n\tif (errors.length === 1) throw errors[0];\n\tif (errors.length > 1) throw new AggregateError(errors, message);\n}\n"]}