@weaveprotocol/core 0.1.0

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 (430) hide show
  1. package/README.md +1106 -0
  2. package/dist/elements/auth-styles.d.ts +18 -0
  3. package/dist/elements/auth-styles.d.ts.map +1 -0
  4. package/dist/elements/auth-styles.js +150 -0
  5. package/dist/elements/auth-styles.js.map +1 -0
  6. package/dist/elements/dom.d.ts +28 -0
  7. package/dist/elements/dom.d.ts.map +1 -0
  8. package/dist/elements/dom.js +74 -0
  9. package/dist/elements/dom.js.map +1 -0
  10. package/dist/elements/index.d.ts +13 -0
  11. package/dist/elements/index.d.ts.map +1 -0
  12. package/dist/elements/index.js +11 -0
  13. package/dist/elements/index.js.map +1 -0
  14. package/dist/elements/weave-auth.d.ts +52 -0
  15. package/dist/elements/weave-auth.d.ts.map +1 -0
  16. package/dist/elements/weave-auth.js +427 -0
  17. package/dist/elements/weave-auth.js.map +1 -0
  18. package/dist/identity/account-store.d.ts +113 -0
  19. package/dist/identity/account-store.d.ts.map +1 -0
  20. package/dist/identity/account-store.js +305 -0
  21. package/dist/identity/account-store.js.map +1 -0
  22. package/dist/identity/account-vault.d.ts +199 -0
  23. package/dist/identity/account-vault.d.ts.map +1 -0
  24. package/dist/identity/account-vault.js +251 -0
  25. package/dist/identity/account-vault.js.map +1 -0
  26. package/dist/identity/agent-note.d.ts +19 -0
  27. package/dist/identity/agent-note.d.ts.map +1 -0
  28. package/dist/identity/agent-note.js +29 -0
  29. package/dist/identity/agent-note.js.map +1 -0
  30. package/dist/identity/crypto-p256.d.ts +7 -0
  31. package/dist/identity/crypto-p256.d.ts.map +1 -0
  32. package/dist/identity/crypto-p256.js +84 -0
  33. package/dist/identity/crypto-p256.js.map +1 -0
  34. package/dist/identity/device-key.d.ts +60 -0
  35. package/dist/identity/device-key.d.ts.map +1 -0
  36. package/dist/identity/device-key.js +103 -0
  37. package/dist/identity/device-key.js.map +1 -0
  38. package/dist/identity/did.d.ts +22 -0
  39. package/dist/identity/did.d.ts.map +1 -0
  40. package/dist/identity/did.js +37 -0
  41. package/dist/identity/did.js.map +1 -0
  42. package/dist/identity/folder-account.d.ts +65 -0
  43. package/dist/identity/folder-account.d.ts.map +1 -0
  44. package/dist/identity/folder-account.js +115 -0
  45. package/dist/identity/folder-account.js.map +1 -0
  46. package/dist/identity/identity-manager.d.ts +36 -0
  47. package/dist/identity/identity-manager.d.ts.map +1 -0
  48. package/dist/identity/identity-manager.js +115 -0
  49. package/dist/identity/identity-manager.js.map +1 -0
  50. package/dist/identity/index.d.ts +10 -0
  51. package/dist/identity/index.d.ts.map +1 -0
  52. package/dist/identity/index.js +10 -0
  53. package/dist/identity/index.js.map +1 -0
  54. package/dist/identity/keys.d.ts +24 -0
  55. package/dist/identity/keys.d.ts.map +1 -0
  56. package/dist/identity/keys.js +38 -0
  57. package/dist/identity/keys.js.map +1 -0
  58. package/dist/identity/pairing.d.ts +83 -0
  59. package/dist/identity/pairing.d.ts.map +1 -0
  60. package/dist/identity/pairing.js +120 -0
  61. package/dist/identity/pairing.js.map +1 -0
  62. package/dist/identity/passkey-diagnostics.d.ts +54 -0
  63. package/dist/identity/passkey-diagnostics.d.ts.map +1 -0
  64. package/dist/identity/passkey-diagnostics.js +178 -0
  65. package/dist/identity/passkey-diagnostics.js.map +1 -0
  66. package/dist/identity/recovery-code.d.ts +50 -0
  67. package/dist/identity/recovery-code.d.ts.map +1 -0
  68. package/dist/identity/recovery-code.js +116 -0
  69. package/dist/identity/recovery-code.js.map +1 -0
  70. package/dist/identity/root-signer.d.ts +59 -0
  71. package/dist/identity/root-signer.d.ts.map +1 -0
  72. package/dist/identity/root-signer.js +44 -0
  73. package/dist/identity/root-signer.js.map +1 -0
  74. package/dist/identity/ucan.d.ts +164 -0
  75. package/dist/identity/ucan.d.ts.map +1 -0
  76. package/dist/identity/ucan.js +273 -0
  77. package/dist/identity/ucan.js.map +1 -0
  78. package/dist/identity/webauthn.d.ts +87 -0
  79. package/dist/identity/webauthn.d.ts.map +1 -0
  80. package/dist/identity/webauthn.js +155 -0
  81. package/dist/identity/webauthn.js.map +1 -0
  82. package/dist/index.d.ts +116 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +85 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/network/index.d.ts +17 -0
  87. package/dist/network/index.d.ts.map +1 -0
  88. package/dist/network/index.js +10 -0
  89. package/dist/network/index.js.map +1 -0
  90. package/dist/network/introductions.d.ts +85 -0
  91. package/dist/network/introductions.d.ts.map +1 -0
  92. package/dist/network/introductions.js +94 -0
  93. package/dist/network/introductions.js.map +1 -0
  94. package/dist/network/local-transport.d.ts +22 -0
  95. package/dist/network/local-transport.d.ts.map +1 -0
  96. package/dist/network/local-transport.js +55 -0
  97. package/dist/network/local-transport.js.map +1 -0
  98. package/dist/network/mesh.d.ts +31 -0
  99. package/dist/network/mesh.d.ts.map +1 -0
  100. package/dist/network/mesh.js +332 -0
  101. package/dist/network/mesh.js.map +1 -0
  102. package/dist/network/multi-signaling.d.ts +29 -0
  103. package/dist/network/multi-signaling.d.ts.map +1 -0
  104. package/dist/network/multi-signaling.js +125 -0
  105. package/dist/network/multi-signaling.js.map +1 -0
  106. package/dist/network/network-manager.d.ts +37 -0
  107. package/dist/network/network-manager.d.ts.map +1 -0
  108. package/dist/network/network-manager.js +64 -0
  109. package/dist/network/network-manager.js.map +1 -0
  110. package/dist/network/peer-auth.d.ts +98 -0
  111. package/dist/network/peer-auth.d.ts.map +1 -0
  112. package/dist/network/peer-auth.js +86 -0
  113. package/dist/network/peer-auth.js.map +1 -0
  114. package/dist/network/rtc-transport.d.ts +18 -0
  115. package/dist/network/rtc-transport.d.ts.map +1 -0
  116. package/dist/network/rtc-transport.js +149 -0
  117. package/dist/network/rtc-transport.js.map +1 -0
  118. package/dist/network/signaling.d.ts +40 -0
  119. package/dist/network/signaling.d.ts.map +1 -0
  120. package/dist/network/signaling.js +124 -0
  121. package/dist/network/signaling.js.map +1 -0
  122. package/dist/network/transport.d.ts +50 -0
  123. package/dist/network/transport.d.ts.map +1 -0
  124. package/dist/network/transport.js +13 -0
  125. package/dist/network/transport.js.map +1 -0
  126. package/dist/network/ws-transport.d.ts +42 -0
  127. package/dist/network/ws-transport.d.ts.map +1 -0
  128. package/dist/network/ws-transport.js +194 -0
  129. package/dist/network/ws-transport.js.map +1 -0
  130. package/dist/node/actions.d.ts +62 -0
  131. package/dist/node/actions.d.ts.map +1 -0
  132. package/dist/node/actions.js +500 -0
  133. package/dist/node/actions.js.map +1 -0
  134. package/dist/node/carrier.d.ts +85 -0
  135. package/dist/node/carrier.d.ts.map +1 -0
  136. package/dist/node/carrier.js +192 -0
  137. package/dist/node/carrier.js.map +1 -0
  138. package/dist/node/copy.d.ts +38 -0
  139. package/dist/node/copy.d.ts.map +1 -0
  140. package/dist/node/copy.js +53 -0
  141. package/dist/node/copy.js.map +1 -0
  142. package/dist/node/index.d.ts +16 -0
  143. package/dist/node/index.d.ts.map +1 -0
  144. package/dist/node/index.js +11 -0
  145. package/dist/node/index.js.map +1 -0
  146. package/dist/node/node.d.ts +12 -0
  147. package/dist/node/node.d.ts.map +1 -0
  148. package/dist/node/node.js +872 -0
  149. package/dist/node/node.js.map +1 -0
  150. package/dist/node/space-runtime.d.ts +144 -0
  151. package/dist/node/space-runtime.d.ts.map +1 -0
  152. package/dist/node/space-runtime.js +1221 -0
  153. package/dist/node/space-runtime.js.map +1 -0
  154. package/dist/node/stores.d.ts +45 -0
  155. package/dist/node/stores.d.ts.map +1 -0
  156. package/dist/node/stores.js +31 -0
  157. package/dist/node/stores.js.map +1 -0
  158. package/dist/node/types.d.ts +508 -0
  159. package/dist/node/types.d.ts.map +1 -0
  160. package/dist/node/types.js +2 -0
  161. package/dist/node/types.js.map +1 -0
  162. package/dist/privacy/index.d.ts +4 -0
  163. package/dist/privacy/index.d.ts.map +1 -0
  164. package/dist/privacy/index.js +4 -0
  165. package/dist/privacy/index.js.map +1 -0
  166. package/dist/privacy/key-distribution.d.ts +42 -0
  167. package/dist/privacy/key-distribution.d.ts.map +1 -0
  168. package/dist/privacy/key-distribution.js +50 -0
  169. package/dist/privacy/key-distribution.js.map +1 -0
  170. package/dist/privacy/privacy-guard.d.ts +24 -0
  171. package/dist/privacy/privacy-guard.d.ts.map +1 -0
  172. package/dist/privacy/privacy-guard.js +87 -0
  173. package/dist/privacy/privacy-guard.js.map +1 -0
  174. package/dist/privacy/space-encryption.d.ts +48 -0
  175. package/dist/privacy/space-encryption.d.ts.map +1 -0
  176. package/dist/privacy/space-encryption.js +61 -0
  177. package/dist/privacy/space-encryption.js.map +1 -0
  178. package/dist/query/engine.d.ts +27 -0
  179. package/dist/query/engine.d.ts.map +1 -0
  180. package/dist/query/engine.js +84 -0
  181. package/dist/query/engine.js.map +1 -0
  182. package/dist/query/filter.d.ts +15 -0
  183. package/dist/query/filter.d.ts.map +1 -0
  184. package/dist/query/filter.js +207 -0
  185. package/dist/query/filter.js.map +1 -0
  186. package/dist/query/types.d.ts +144 -0
  187. package/dist/query/types.d.ts.map +1 -0
  188. package/dist/query/types.js +22 -0
  189. package/dist/query/types.js.map +1 -0
  190. package/dist/react/context.d.ts +81 -0
  191. package/dist/react/context.d.ts.map +1 -0
  192. package/dist/react/context.js +95 -0
  193. package/dist/react/context.js.map +1 -0
  194. package/dist/react/index.d.ts +40 -0
  195. package/dist/react/index.d.ts.map +1 -0
  196. package/dist/react/index.js +36 -0
  197. package/dist/react/index.js.map +1 -0
  198. package/dist/react/use-live.d.ts +16 -0
  199. package/dist/react/use-live.d.ts.map +1 -0
  200. package/dist/react/use-live.js +55 -0
  201. package/dist/react/use-live.js.map +1 -0
  202. package/dist/react/use-query.d.ts +17 -0
  203. package/dist/react/use-query.d.ts.map +1 -0
  204. package/dist/react/use-query.js +23 -0
  205. package/dist/react/use-query.js.map +1 -0
  206. package/dist/react/use-space.d.ts +29 -0
  207. package/dist/react/use-space.d.ts.map +1 -0
  208. package/dist/react/use-space.js +48 -0
  209. package/dist/react/use-space.js.map +1 -0
  210. package/dist/react/use-spaces.d.ts +19 -0
  211. package/dist/react/use-spaces.d.ts.map +1 -0
  212. package/dist/react/use-spaces.js +55 -0
  213. package/dist/react/use-spaces.js.map +1 -0
  214. package/dist/react/use-weave-auth.d.ts +10 -0
  215. package/dist/react/use-weave-auth.d.ts.map +1 -0
  216. package/dist/react/use-weave-auth.js +15 -0
  217. package/dist/react/use-weave-auth.js.map +1 -0
  218. package/dist/react/weave-auth.d.ts +17 -0
  219. package/dist/react/weave-auth.d.ts.map +1 -0
  220. package/dist/react/weave-auth.js +38 -0
  221. package/dist/react/weave-auth.js.map +1 -0
  222. package/dist/records/describe.d.ts +38 -0
  223. package/dist/records/describe.d.ts.map +1 -0
  224. package/dist/records/describe.js +101 -0
  225. package/dist/records/describe.js.map +1 -0
  226. package/dist/records/links.d.ts +14 -0
  227. package/dist/records/links.d.ts.map +1 -0
  228. package/dist/records/links.js +25 -0
  229. package/dist/records/links.js.map +1 -0
  230. package/dist/records/rules.d.ts +59 -0
  231. package/dist/records/rules.d.ts.map +1 -0
  232. package/dist/records/rules.js +118 -0
  233. package/dist/records/rules.js.map +1 -0
  234. package/dist/records/version.d.ts +54 -0
  235. package/dist/records/version.d.ts.map +1 -0
  236. package/dist/records/version.js +70 -0
  237. package/dist/records/version.js.map +1 -0
  238. package/dist/schema/collection-def.d.ts +96 -0
  239. package/dist/schema/collection-def.d.ts.map +1 -0
  240. package/dist/schema/collection-def.js +272 -0
  241. package/dist/schema/collection-def.js.map +1 -0
  242. package/dist/schema/expression.d.ts +69 -0
  243. package/dist/schema/expression.d.ts.map +1 -0
  244. package/dist/schema/expression.js +92 -0
  245. package/dist/schema/expression.js.map +1 -0
  246. package/dist/schema/index.d.ts +4 -0
  247. package/dist/schema/index.d.ts.map +1 -0
  248. package/dist/schema/index.js +4 -0
  249. package/dist/schema/index.js.map +1 -0
  250. package/dist/schema/schema-engine.d.ts +42 -0
  251. package/dist/schema/schema-engine.d.ts.map +1 -0
  252. package/dist/schema/schema-engine.js +36 -0
  253. package/dist/schema/schema-engine.js.map +1 -0
  254. package/dist/schema/signer.d.ts +27 -0
  255. package/dist/schema/signer.d.ts.map +1 -0
  256. package/dist/schema/signer.js +36 -0
  257. package/dist/schema/signer.js.map +1 -0
  258. package/dist/schemas/apps.d.ts +88 -0
  259. package/dist/schemas/apps.d.ts.map +1 -0
  260. package/dist/schemas/apps.js +168 -0
  261. package/dist/schemas/apps.js.map +1 -0
  262. package/dist/schemas/index.d.ts +410 -0
  263. package/dist/schemas/index.d.ts.map +1 -0
  264. package/dist/schemas/index.js +208 -0
  265. package/dist/schemas/index.js.map +1 -0
  266. package/dist/schemas/screens.d.ts +67 -0
  267. package/dist/schemas/screens.d.ts.map +1 -0
  268. package/dist/schemas/screens.js +242 -0
  269. package/dist/schemas/screens.js.map +1 -0
  270. package/dist/session/agent-link.d.ts +79 -0
  271. package/dist/session/agent-link.d.ts.map +1 -0
  272. package/dist/session/agent-link.js +251 -0
  273. package/dist/session/agent-link.js.map +1 -0
  274. package/dist/session/auth.d.ts +233 -0
  275. package/dist/session/auth.d.ts.map +1 -0
  276. package/dist/session/auth.js +783 -0
  277. package/dist/session/auth.js.map +1 -0
  278. package/dist/session/connect.d.ts +211 -0
  279. package/dist/session/connect.d.ts.map +1 -0
  280. package/dist/session/connect.js +355 -0
  281. package/dist/session/connect.js.map +1 -0
  282. package/dist/session/connection.d.ts +70 -0
  283. package/dist/session/connection.d.ts.map +1 -0
  284. package/dist/session/connection.js +120 -0
  285. package/dist/session/connection.js.map +1 -0
  286. package/dist/session/credentials.d.ts +44 -0
  287. package/dist/session/credentials.d.ts.map +1 -0
  288. package/dist/session/credentials.js +60 -0
  289. package/dist/session/credentials.js.map +1 -0
  290. package/dist/session/index.d.ts +25 -0
  291. package/dist/session/index.d.ts.map +1 -0
  292. package/dist/session/index.js +18 -0
  293. package/dist/session/index.js.map +1 -0
  294. package/dist/session/pairing.d.ts +59 -0
  295. package/dist/session/pairing.d.ts.map +1 -0
  296. package/dist/session/pairing.js +144 -0
  297. package/dist/session/pairing.js.map +1 -0
  298. package/dist/session/places.d.ts +62 -0
  299. package/dist/session/places.d.ts.map +1 -0
  300. package/dist/session/places.js +101 -0
  301. package/dist/session/places.js.map +1 -0
  302. package/dist/session/stay-signed-in.d.ts +37 -0
  303. package/dist/session/stay-signed-in.d.ts.map +1 -0
  304. package/dist/session/stay-signed-in.js +124 -0
  305. package/dist/session/stay-signed-in.js.map +1 -0
  306. package/dist/space/account-registry.d.ts +64 -0
  307. package/dist/space/account-registry.d.ts.map +1 -0
  308. package/dist/space/account-registry.js +66 -0
  309. package/dist/space/account-registry.js.map +1 -0
  310. package/dist/space/index.d.ts +3 -0
  311. package/dist/space/index.d.ts.map +1 -0
  312. package/dist/space/index.js +3 -0
  313. package/dist/space/index.js.map +1 -0
  314. package/dist/space/pass.d.ts +63 -0
  315. package/dist/space/pass.d.ts.map +1 -0
  316. package/dist/space/pass.js +54 -0
  317. package/dist/space/pass.js.map +1 -0
  318. package/dist/space/presets.d.ts +31 -0
  319. package/dist/space/presets.d.ts.map +1 -0
  320. package/dist/space/presets.js +24 -0
  321. package/dist/space/presets.js.map +1 -0
  322. package/dist/space/roles.d.ts +186 -0
  323. package/dist/space/roles.d.ts.map +1 -0
  324. package/dist/space/roles.js +500 -0
  325. package/dist/space/roles.js.map +1 -0
  326. package/dist/space/space-access.d.ts +80 -0
  327. package/dist/space/space-access.d.ts.map +1 -0
  328. package/dist/space/space-access.js +135 -0
  329. package/dist/space/space-access.js.map +1 -0
  330. package/dist/space/space-manager.d.ts +87 -0
  331. package/dist/space/space-manager.d.ts.map +1 -0
  332. package/dist/space/space-manager.js +187 -0
  333. package/dist/space/space-manager.js.map +1 -0
  334. package/dist/storage/directory-access.d.ts +78 -0
  335. package/dist/storage/directory-access.d.ts.map +1 -0
  336. package/dist/storage/directory-access.js +164 -0
  337. package/dist/storage/directory-access.js.map +1 -0
  338. package/dist/storage/encrypted-adapter.d.ts +49 -0
  339. package/dist/storage/encrypted-adapter.d.ts.map +1 -0
  340. package/dist/storage/encrypted-adapter.js +106 -0
  341. package/dist/storage/encrypted-adapter.js.map +1 -0
  342. package/dist/storage/folder-adapter.d.ts +105 -0
  343. package/dist/storage/folder-adapter.d.ts.map +1 -0
  344. package/dist/storage/folder-adapter.js +280 -0
  345. package/dist/storage/folder-adapter.js.map +1 -0
  346. package/dist/storage/folder-reconcile.d.ts +53 -0
  347. package/dist/storage/folder-reconcile.d.ts.map +1 -0
  348. package/dist/storage/folder-reconcile.js +65 -0
  349. package/dist/storage/folder-reconcile.js.map +1 -0
  350. package/dist/storage/index.d.ts +10 -0
  351. package/dist/storage/index.d.ts.map +1 -0
  352. package/dist/storage/index.js +9 -0
  353. package/dist/storage/index.js.map +1 -0
  354. package/dist/storage/indexeddb-adapter.d.ts +12 -0
  355. package/dist/storage/indexeddb-adapter.d.ts.map +1 -0
  356. package/dist/storage/indexeddb-adapter.js +190 -0
  357. package/dist/storage/indexeddb-adapter.js.map +1 -0
  358. package/dist/storage/mst.d.ts +121 -0
  359. package/dist/storage/mst.d.ts.map +1 -0
  360. package/dist/storage/mst.js +402 -0
  361. package/dist/storage/mst.js.map +1 -0
  362. package/dist/storage/storage-provider.d.ts +85 -0
  363. package/dist/storage/storage-provider.d.ts.map +1 -0
  364. package/dist/storage/storage-provider.js +220 -0
  365. package/dist/storage/storage-provider.js.map +1 -0
  366. package/dist/sync/anti-entropy.d.ts +49 -0
  367. package/dist/sync/anti-entropy.d.ts.map +1 -0
  368. package/dist/sync/anti-entropy.js +62 -0
  369. package/dist/sync/anti-entropy.js.map +1 -0
  370. package/dist/sync/index.d.ts +4 -0
  371. package/dist/sync/index.d.ts.map +1 -0
  372. package/dist/sync/index.js +4 -0
  373. package/dist/sync/index.js.map +1 -0
  374. package/dist/sync/sync-engine.d.ts +71 -0
  375. package/dist/sync/sync-engine.d.ts.map +1 -0
  376. package/dist/sync/sync-engine.js +309 -0
  377. package/dist/sync/sync-engine.js.map +1 -0
  378. package/dist/sync/sync-messages.d.ts +75 -0
  379. package/dist/sync/sync-messages.d.ts.map +1 -0
  380. package/dist/sync/sync-messages.js +12 -0
  381. package/dist/sync/sync-messages.js.map +1 -0
  382. package/dist/types.d.ts +243 -0
  383. package/dist/types.d.ts.map +1 -0
  384. package/dist/types.js +7 -0
  385. package/dist/types.js.map +1 -0
  386. package/dist/utils/encoding.d.ts +63 -0
  387. package/dist/utils/encoding.d.ts.map +1 -0
  388. package/dist/utils/encoding.js +130 -0
  389. package/dist/utils/encoding.js.map +1 -0
  390. package/dist/utils/errors.d.ts +43 -0
  391. package/dist/utils/errors.d.ts.map +1 -0
  392. package/dist/utils/errors.js +28 -0
  393. package/dist/utils/errors.js.map +1 -0
  394. package/dist/utils/events.d.ts +19 -0
  395. package/dist/utils/events.d.ts.map +1 -0
  396. package/dist/utils/events.js +27 -0
  397. package/dist/utils/events.js.map +1 -0
  398. package/dist/utils/hash.d.ts +23 -0
  399. package/dist/utils/hash.d.ts.map +1 -0
  400. package/dist/utils/hash.js +49 -0
  401. package/dist/utils/hash.js.map +1 -0
  402. package/dist/utils/index.d.ts +9 -0
  403. package/dist/utils/index.d.ts.map +1 -0
  404. package/dist/utils/index.js +9 -0
  405. package/dist/utils/index.js.map +1 -0
  406. package/dist/validation/capability-gate.d.ts +50 -0
  407. package/dist/validation/capability-gate.d.ts.map +1 -0
  408. package/dist/validation/capability-gate.js +71 -0
  409. package/dist/validation/capability-gate.js.map +1 -0
  410. package/dist/validation/crypto-gate.d.ts +16 -0
  411. package/dist/validation/crypto-gate.d.ts.map +1 -0
  412. package/dist/validation/crypto-gate.js +37 -0
  413. package/dist/validation/crypto-gate.js.map +1 -0
  414. package/dist/validation/index.d.ts +6 -0
  415. package/dist/validation/index.d.ts.map +1 -0
  416. package/dist/validation/index.js +6 -0
  417. package/dist/validation/index.js.map +1 -0
  418. package/dist/validation/stateful-gate.d.ts +15 -0
  419. package/dist/validation/stateful-gate.d.ts.map +1 -0
  420. package/dist/validation/stateful-gate.js +50 -0
  421. package/dist/validation/stateful-gate.js.map +1 -0
  422. package/dist/validation/structural-gate.d.ts +18 -0
  423. package/dist/validation/structural-gate.d.ts.map +1 -0
  424. package/dist/validation/structural-gate.js +54 -0
  425. package/dist/validation/structural-gate.js.map +1 -0
  426. package/dist/validation/validation-engine.d.ts +28 -0
  427. package/dist/validation/validation-engine.d.ts.map +1 -0
  428. package/dist/validation/validation-engine.js +38 -0
  429. package/dist/validation/validation-engine.js.map +1 -0
  430. package/package.json +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChD;;;OAGG;IACH,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxF,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;CAChC;AAED,iEAAiE;AACjE,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IAC/D,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,oBAAoB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5G,QAAQ,CAAC,KAAK,CAAC,EAAE;YACf,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;YACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IACnE,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;YAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACpE,QAAQ,CAAC,UAAU,EAAE;YACnB,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;gBAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrI,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;gBAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACvI,CAAC;KACH,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,CAAC,MAAM,IACnC;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;CAAE,CAAC;AAExF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED,gFAAgF;AAChF,MAAM,WAAW,IAAI;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,mGAAmG;IACnG,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,mGAAmG;IACnG,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,qEAAqE;AACrE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7C;AAED;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wHAAwH;IACxH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,gBAAgB;AAChB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,iBAAiB;AACjB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,sCAAsC;IACtC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7F,0BAA0B;IAC1B,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,8BAA8B;IAC9B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACtD,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,uBAAuB;IACvB,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,+BAA+B;AAC/B,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,+CAA+C;AAC/C,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAC3B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE9C,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAA0B,CAAC;AAC3E,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAA2B,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Core protocol types used across all modules.
3
+ * @module types
4
+ */
5
+ export const ok = (value) => ({ ok: true, value });
6
+ export const err = (error) => ({ ok: false, error });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2OH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Utility functions for encoding and decoding data.
3
+ * @module encoding
4
+ */
5
+ /**
6
+ * Encodes a string to a UTF-8 Uint8Array.
7
+ * @param {string} str - The string to encode.
8
+ * @returns {Uint8Array} The UTF-8 encoded bytes.
9
+ */
10
+ export declare function utf8Encode(str: string): Uint8Array;
11
+ /**
12
+ * Decodes a UTF-8 Uint8Array to a string.
13
+ * @param {Uint8Array} bytes - The bytes to decode.
14
+ * @returns {string} The decoded string.
15
+ */
16
+ export declare function utf8Decode(bytes: Uint8Array): string;
17
+ /**
18
+ * Encodes a Uint8Array to a base64url string without padding.
19
+ * @param {Uint8Array} bytes - The bytes to encode.
20
+ * @returns {string} The base64url encoded string.
21
+ */
22
+ export declare function base64UrlEncode(bytes: Uint8Array): string;
23
+ /**
24
+ * Decodes a base64url string to a Uint8Array.
25
+ * @param {string} str - The base64url string to decode.
26
+ * @returns {Uint8Array} The decoded bytes.
27
+ */
28
+ export declare function base64UrlDecode(str: string): Uint8Array;
29
+ /**
30
+ * Concatenates multiple Uint8Arrays into a single Uint8Array.
31
+ * @param {...Uint8Array[]} arrays - The arrays to concatenate.
32
+ * @returns {Uint8Array} The concatenated array.
33
+ */
34
+ export declare function concatBytes(...arrays: readonly Uint8Array[]): Uint8Array;
35
+ /**
36
+ * Encodes a number as an unsigned LEB128 varint.
37
+ * @param {number} n - The number to encode.
38
+ * @returns {Uint8Array} The varint encoded bytes.
39
+ */
40
+ export declare function varintEncode(n: number): Uint8Array;
41
+ /**
42
+ * Decodes an unsigned LEB128 varint from a Uint8Array.
43
+ * @param {Uint8Array} bytes - The bytes to decode.
44
+ * @param {number} [offset=0] - The offset to start decoding from.
45
+ * @returns {{ value: number; bytesRead: number }} The decoded number and the number of bytes read.
46
+ */
47
+ export declare function varintDecode(bytes: Uint8Array, offset?: number): {
48
+ readonly value: number;
49
+ readonly bytesRead: number;
50
+ };
51
+ /**
52
+ * Encodes a Uint8Array to a hex string.
53
+ * @param {Uint8Array} bytes - The bytes to encode.
54
+ * @returns {string} The hex string.
55
+ */
56
+ export declare function bytesToHex(bytes: Uint8Array): string;
57
+ /**
58
+ * Decodes a hex string to a Uint8Array.
59
+ * @param {string} hex - The hex string to decode.
60
+ * @returns {Uint8Array} The decoded bytes.
61
+ */
62
+ export declare function hexToBytes(hex: string): Uint8Array;
63
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAElD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIzD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAWvD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,CASxE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAYlD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,GAAE,MAAU,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAiB1H;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CASlD"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Utility functions for encoding and decoding data.
3
+ * @module encoding
4
+ */
5
+ const encoder = new TextEncoder();
6
+ const decoder = new TextDecoder();
7
+ /**
8
+ * Encodes a string to a UTF-8 Uint8Array.
9
+ * @param {string} str - The string to encode.
10
+ * @returns {Uint8Array} The UTF-8 encoded bytes.
11
+ */
12
+ export function utf8Encode(str) {
13
+ return encoder.encode(str);
14
+ }
15
+ /**
16
+ * Decodes a UTF-8 Uint8Array to a string.
17
+ * @param {Uint8Array} bytes - The bytes to decode.
18
+ * @returns {string} The decoded string.
19
+ */
20
+ export function utf8Decode(bytes) {
21
+ return decoder.decode(bytes);
22
+ }
23
+ /**
24
+ * Encodes a Uint8Array to a base64url string without padding.
25
+ * @param {Uint8Array} bytes - The bytes to encode.
26
+ * @returns {string} The base64url encoded string.
27
+ */
28
+ export function base64UrlEncode(bytes) {
29
+ const binString = Array.from(bytes, (byte) => String.fromCharCode(byte)).join('');
30
+ const base64 = globalThis.btoa(binString);
31
+ return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
32
+ }
33
+ /**
34
+ * Decodes a base64url string to a Uint8Array.
35
+ * @param {string} str - The base64url string to decode.
36
+ * @returns {Uint8Array} The decoded bytes.
37
+ */
38
+ export function base64UrlDecode(str) {
39
+ let base64 = str.replace(/-/g, '+').replace(/_/g, '/');
40
+ while (base64.length % 4) {
41
+ base64 += '=';
42
+ }
43
+ const binString = globalThis.atob(base64);
44
+ const bytes = new Uint8Array(binString.length);
45
+ for (let i = 0; i < binString.length; i++) {
46
+ bytes[i] = binString.charCodeAt(i);
47
+ }
48
+ return bytes;
49
+ }
50
+ /**
51
+ * Concatenates multiple Uint8Arrays into a single Uint8Array.
52
+ * @param {...Uint8Array[]} arrays - The arrays to concatenate.
53
+ * @returns {Uint8Array} The concatenated array.
54
+ */
55
+ export function concatBytes(...arrays) {
56
+ const totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0);
57
+ const result = new Uint8Array(totalLength);
58
+ let offset = 0;
59
+ for (const arr of arrays) {
60
+ result.set(arr, offset);
61
+ offset += arr.length;
62
+ }
63
+ return result;
64
+ }
65
+ /**
66
+ * Encodes a number as an unsigned LEB128 varint.
67
+ * @param {number} n - The number to encode.
68
+ * @returns {Uint8Array} The varint encoded bytes.
69
+ */
70
+ export function varintEncode(n) {
71
+ const bytes = [];
72
+ let value = n;
73
+ do {
74
+ let byte = value & 0x7f;
75
+ value >>>= 7;
76
+ if (value !== 0) {
77
+ byte |= 0x80;
78
+ }
79
+ bytes.push(byte);
80
+ } while (value !== 0);
81
+ return new Uint8Array(bytes);
82
+ }
83
+ /**
84
+ * Decodes an unsigned LEB128 varint from a Uint8Array.
85
+ * @param {Uint8Array} bytes - The bytes to decode.
86
+ * @param {number} [offset=0] - The offset to start decoding from.
87
+ * @returns {{ value: number; bytesRead: number }} The decoded number and the number of bytes read.
88
+ */
89
+ export function varintDecode(bytes, offset = 0) {
90
+ let value = 0;
91
+ let shift = 0;
92
+ let bytesRead = 0;
93
+ while (true) {
94
+ if (offset + bytesRead >= bytes.length) {
95
+ throw new Error('Varint decode out of bounds');
96
+ }
97
+ const byte = bytes[offset + bytesRead];
98
+ bytesRead++;
99
+ value |= (byte & 0x7f) << shift;
100
+ if ((byte & 0x80) === 0) {
101
+ break;
102
+ }
103
+ shift += 7;
104
+ }
105
+ return { value, bytesRead };
106
+ }
107
+ /**
108
+ * Encodes a Uint8Array to a hex string.
109
+ * @param {Uint8Array} bytes - The bytes to encode.
110
+ * @returns {string} The hex string.
111
+ */
112
+ export function bytesToHex(bytes) {
113
+ return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
114
+ }
115
+ /**
116
+ * Decodes a hex string to a Uint8Array.
117
+ * @param {string} hex - The hex string to decode.
118
+ * @returns {Uint8Array} The decoded bytes.
119
+ */
120
+ export function hexToBytes(hex) {
121
+ if (hex.length % 2 !== 0) {
122
+ throw new Error('Hex string must have an even length');
123
+ }
124
+ const bytes = new Uint8Array(hex.length / 2);
125
+ for (let i = 0; i < bytes.length; i++) {
126
+ bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
127
+ }
128
+ return bytes;
129
+ }
130
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/utils/encoding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @module errors
3
+ * Typed errors, so callers can branch on what went wrong instead of matching
4
+ * on message text.
5
+ */
6
+ export type ProtocolErrorCode =
7
+ /** The authenticator produced no PRF secret, so no key can be derived from it */
8
+ 'PRF_UNSUPPORTED'
9
+ /** The user dismissed or cancelled a passkey ceremony */
10
+ | 'PASSKEY_CANCELLED'
11
+ /** WebAuthn is not available in this environment at all */
12
+ | 'WEBAUTHN_UNAVAILABLE'
13
+ /** This browser has no File System Access API, so no folder can be opened */
14
+ | 'FOLDER_UNAVAILABLE'
15
+ /** The chosen folder holds an account file this version cannot read */
16
+ | 'FOLDER_ACCOUNT_UNREADABLE'
17
+ /** The passkey, passphrase or code offered did not open the folder */
18
+ | 'VAULT_UNLOCK_FAILED'
19
+ /** Removing that wrap would leave no way into the folder */
20
+ | 'VAULT_LAST_WRAP'
21
+ /** A pairing link or handover payload could not be read */
22
+ | 'PAIRING_TICKET_UNREADABLE';
23
+ export interface ProtocolError extends Error {
24
+ readonly code: ProtocolErrorCode;
25
+ /** What the caller can suggest doing about it */
26
+ readonly hint?: string;
27
+ }
28
+ /**
29
+ * Creates a tagged protocol error.
30
+ * @param code Machine-readable cause
31
+ * @param message Human-readable description
32
+ * @param hint Optional remedy to surface in a UI
33
+ * @returns The error, ready to throw
34
+ */
35
+ export declare function protocolError(code: ProtocolErrorCode, message: string, hint?: string): ProtocolError;
36
+ /**
37
+ * Narrows an unknown thrown value to a protocol error.
38
+ * @param error The caught value
39
+ * @param code Optionally require a specific code
40
+ * @returns Whether it is a protocol error (of that code)
41
+ */
42
+ export declare function isProtocolError(error: unknown, code?: ProtocolErrorCode): error is ProtocolError;
43
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB;AAC3B,iFAAiF;AAC/E,iBAAiB;AACnB,yDAAyD;GACvD,mBAAmB;AACrB,2DAA2D;GACzD,sBAAsB;AACxB,6EAA6E;GAC3E,oBAAoB;AACtB,uEAAuE;GACrE,2BAA2B;AAC7B,sEAAsE;GACpE,qBAAqB;AACvB,4DAA4D;GAC1D,iBAAiB;AACnB,2DAA2D;GACzD,2BAA2B,CAAC;AAEhC,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,iDAAiD;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAEpG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,KAAK,IAAI,aAAa,CAKhG"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module errors
3
+ * Typed errors, so callers can branch on what went wrong instead of matching
4
+ * on message text.
5
+ */
6
+ /**
7
+ * Creates a tagged protocol error.
8
+ * @param code Machine-readable cause
9
+ * @param message Human-readable description
10
+ * @param hint Optional remedy to surface in a UI
11
+ * @returns The error, ready to throw
12
+ */
13
+ export function protocolError(code, message, hint) {
14
+ return Object.assign(new Error(message), { code, ...(hint ? { hint } : {}) });
15
+ }
16
+ /**
17
+ * Narrows an unknown thrown value to a protocol error.
18
+ * @param error The caught value
19
+ * @param code Optionally require a specific code
20
+ * @returns Whether it is a protocol error (of that code)
21
+ */
22
+ export function isProtocolError(error, code) {
23
+ if (!(error instanceof Error) || typeof error.code !== 'string') {
24
+ return false;
25
+ }
26
+ return code === undefined || error.code === code;
27
+ }
28
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0BH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAuB,EAAE,OAAe,EAAE,IAAa;IACnF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,IAAwB;IACtE,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,OAAQ,KAAuB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,KAAK,SAAS,IAAK,KAAuB,CAAC,IAAI,KAAK,IAAI,CAAC;AACtE,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @module events
3
+ * The one way modules here let others listen to them.
4
+ */
5
+ type Listener = (...args: any[]) => void;
6
+ export interface Emitter<Events extends {
7
+ [K in keyof Events]: Listener;
8
+ }> {
9
+ on<K extends keyof Events>(event: K, callback: Events[K]): void;
10
+ off<K extends keyof Events>(event: K, callback: Events[K]): void;
11
+ /** Calls every listener; one that throws is reported and does not stop the rest. */
12
+ emit<K extends keyof Events>(event: K, ...args: Parameters<Events[K]>): void;
13
+ }
14
+ /** Creates an emitter for a map of event names to listener signatures. */
15
+ export declare function createEmitter<Events extends {
16
+ [K in keyof Events]: Listener;
17
+ }>(): Emitter<Events>;
18
+ export {};
19
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,KAAK,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAEzC,MAAM,WAAW,OAAO,CAAC,MAAM,SAAS;KAAG,CAAC,IAAI,MAAM,MAAM,GAAG,QAAQ;CAAE;IACvE,EAAE,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChE,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACjE,oFAAoF;IACpF,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC9E;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,MAAM,SAAS;KAAG,CAAC,IAAI,MAAM,MAAM,GAAG,QAAQ;CAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAmBjG"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @module events
3
+ * The one way modules here let others listen to them.
4
+ */
5
+ /** Creates an emitter for a map of event names to listener signatures. */
6
+ export function createEmitter() {
7
+ const listeners = new Map();
8
+ return {
9
+ on(event, callback) {
10
+ (listeners.get(event) ?? listeners.set(event, new Set()).get(event)).add(callback);
11
+ },
12
+ off(event, callback) {
13
+ listeners.get(event)?.delete(callback);
14
+ },
15
+ emit(event, ...args) {
16
+ for (const callback of [...(listeners.get(event) ?? [])]) {
17
+ try {
18
+ callback(...args);
19
+ }
20
+ catch (error) {
21
+ console.error(`Error in a listener for ${String(event)}:`, error);
22
+ }
23
+ }
24
+ },
25
+ };
26
+ }
27
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,0EAA0E;AAC1E,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACzD,OAAO;QACL,EAAE,CAAC,KAAK,EAAE,QAAQ;YAChB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtF,CAAC;QACD,GAAG,CAAC,KAAK,EAAE,QAAQ;YACjB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI;YACjB,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC;oBACH,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Hashing utilities.
3
+ * @module hash
4
+ */
5
+ /**
6
+ * Computes the SHA-256 hash of the given data.
7
+ * @param {Uint8Array} data - The data to hash.
8
+ * @returns {Promise<Uint8Array>} A promise that resolves to the hash bytes.
9
+ */
10
+ export declare function sha256(data: Uint8Array): Promise<Uint8Array>;
11
+ /**
12
+ * Encodes bytes to a base32 string without padding.
13
+ * @param {Uint8Array} bytes - The bytes to encode.
14
+ * @returns {string} The base32 encoded string.
15
+ */
16
+ export declare function base32Encode(bytes: Uint8Array): string;
17
+ /**
18
+ * Creates a CID-like content identifier (base32 of SHA-256).
19
+ * @param {Uint8Array} data - The data to compute the identifier for.
20
+ * @returns {Promise<string>} A promise that resolves to the CID-like string.
21
+ */
22
+ export declare function cidFromBytes(data: Uint8Array): Promise<string>;
23
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAGlE;AAOD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAmBtD;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Hashing utilities.
3
+ * @module hash
4
+ */
5
+ /**
6
+ * Computes the SHA-256 hash of the given data.
7
+ * @param {Uint8Array} data - The data to hash.
8
+ * @returns {Promise<Uint8Array>} A promise that resolves to the hash bytes.
9
+ */
10
+ export async function sha256(data) {
11
+ const buffer = await globalThis.crypto.subtle.digest('SHA-256', data);
12
+ return new Uint8Array(buffer);
13
+ }
14
+ /**
15
+ * Base32 encoding alphabet (RFC 4648).
16
+ */
17
+ const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
18
+ /**
19
+ * Encodes bytes to a base32 string without padding.
20
+ * @param {Uint8Array} bytes - The bytes to encode.
21
+ * @returns {string} The base32 encoded string.
22
+ */
23
+ export function base32Encode(bytes) {
24
+ let bits = 0;
25
+ let value = 0;
26
+ let output = '';
27
+ for (let i = 0; i < bytes.length; i++) {
28
+ value = (value << 8) | bytes[i];
29
+ bits += 8;
30
+ while (bits >= 5) {
31
+ output += BASE32_ALPHABET[(value >>> (bits - 5)) & 31];
32
+ bits -= 5;
33
+ }
34
+ }
35
+ if (bits > 0) {
36
+ output += BASE32_ALPHABET[(value << (5 - bits)) & 31];
37
+ }
38
+ return output.toLowerCase();
39
+ }
40
+ /**
41
+ * Creates a CID-like content identifier (base32 of SHA-256).
42
+ * @param {Uint8Array} data - The data to compute the identifier for.
43
+ * @returns {Promise<string>} A promise that resolves to the CID-like string.
44
+ */
45
+ export async function cidFromBytes(data) {
46
+ const hashBytes = await sha256(data);
47
+ return 'b' + base32Encode(hashBytes);
48
+ }
49
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/utils/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAgB;IAC3C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAoB,CAAC,CAAC;IACtF,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,eAAe,GAAG,kCAAkC,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,IAAI,CAAC,CAAC;QACV,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAE,CAAC;YACxD,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAE,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAgB;IACjD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Barrel export of all utilities.
3
+ * @module utils
4
+ */
5
+ export * from './encoding.js';
6
+ export * from './hash.js';
7
+ export * from './events.js';
8
+ export * from './errors.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Barrel export of all utilities.
3
+ * @module utils
4
+ */
5
+ export * from './encoding.js';
6
+ export * from './hash.js';
7
+ export * from './events.js';
8
+ export * from './errors.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { CryptoProvider, Expression } from '../types.js';
2
+ import type { GateResult } from './crypto-gate.js';
3
+ import { type Capability, type ProofResolver } from '../identity/ucan.js';
4
+ export interface CapabilityGateConfig {
5
+ /** Crypto provider used to verify the UCANs in the chain */
6
+ readonly provider: CryptoProvider;
7
+ /** The capability an author must hold to write this expression */
8
+ readonly requiredCapability: (expression: Expression) => Capability;
9
+ /**
10
+ * Looks up a parent UCAN by CID when a proof chain is longer than one link.
11
+ * Expressions usually carry a single delegation, which needs no resolver.
12
+ */
13
+ readonly resolveProof?: ProofResolver;
14
+ /**
15
+ * Decides whether a root identity may write this expression at all — space
16
+ * membership, an allow-list, or whatever the application's policy is.
17
+ * Defaults to accepting any root: the signature still proves who wrote it.
18
+ */
19
+ readonly isTrustedRoot?: (rootDid: string, expression: Expression) => boolean | Promise<boolean>;
20
+ }
21
+ export interface CapabilityGate {
22
+ validate(expression: Expression): Promise<GateResult>;
23
+ }
24
+ /**
25
+ * How far ahead of this machine's clock a record may be dated. Clocks disagree
26
+ * by seconds routinely; minutes is generous without letting a record claim a
27
+ * time when a delegation it does not yet hold will be valid.
28
+ */
29
+ export declare const MAX_CLOCK_SKEW_SECONDS = 300;
30
+ /**
31
+ * Creates a gate that checks an author was *authorized* to write an expression.
32
+ *
33
+ * The crypto gate proves an expression came from the key it claims. This one
34
+ * answers the next question: may that key write here? An expression signed by a
35
+ * delegated key carries a UCAN in `proof`, and the gate walks it back to a root
36
+ * identity, refusing anything that is expired, misaddressed, over-broad, or
37
+ * rooted in an identity the application does not trust.
38
+ *
39
+ * "Expired" means expired **when the record was signed**, judged by its
40
+ * `createdAt`. A record stays valid after its session ends, which is what lets a
41
+ * peer that shows up next week accept last week's data. The cost is that a
42
+ * leaked session key could backdate records into its own window — which is why
43
+ * session keys live in memory and are short-lived. A record dated in the future
44
+ * is refused outright.
45
+ *
46
+ * @param config Gate configuration
47
+ * @returns A CapabilityGate instance
48
+ */
49
+ export declare function createCapabilityGate(config: CapabilityGateConfig): CapabilityGate;
50
+ //# sourceMappingURL=capability-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-gate.d.ts","sourceRoot":"","sources":["../../src/validation/capability-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,UAAU,CAAC;IACpE;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClG;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACvD;AAID;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAiDjF"}
@@ -0,0 +1,71 @@
1
+ import { isCapabilitySubset, resolveDelegationRoot, } from '../identity/ucan.js';
2
+ const fail = (reason) => ({ passed: false, gate: 'capability', reason });
3
+ /**
4
+ * How far ahead of this machine's clock a record may be dated. Clocks disagree
5
+ * by seconds routinely; minutes is generous without letting a record claim a
6
+ * time when a delegation it does not yet hold will be valid.
7
+ */
8
+ export const MAX_CLOCK_SKEW_SECONDS = 300;
9
+ /**
10
+ * Creates a gate that checks an author was *authorized* to write an expression.
11
+ *
12
+ * The crypto gate proves an expression came from the key it claims. This one
13
+ * answers the next question: may that key write here? An expression signed by a
14
+ * delegated key carries a UCAN in `proof`, and the gate walks it back to a root
15
+ * identity, refusing anything that is expired, misaddressed, over-broad, or
16
+ * rooted in an identity the application does not trust.
17
+ *
18
+ * "Expired" means expired **when the record was signed**, judged by its
19
+ * `createdAt`. A record stays valid after its session ends, which is what lets a
20
+ * peer that shows up next week accept last week's data. The cost is that a
21
+ * leaked session key could backdate records into its own window — which is why
22
+ * session keys live in memory and are short-lived. A record dated in the future
23
+ * is refused outright.
24
+ *
25
+ * @param config Gate configuration
26
+ * @returns A CapabilityGate instance
27
+ */
28
+ export function createCapabilityGate(config) {
29
+ const { provider, requiredCapability, resolveProof = () => null, isTrustedRoot } = config;
30
+ return {
31
+ async validate(expression) {
32
+ try {
33
+ const required = requiredCapability(expression);
34
+ // No proof: the author is acting for itself, not on anyone's behalf.
35
+ if (!expression.proof) {
36
+ if (isTrustedRoot && !(await isTrustedRoot(expression.author, expression))) {
37
+ return fail(`Author ${expression.author} is not authorized here`);
38
+ }
39
+ return { passed: true, gate: 'capability' };
40
+ }
41
+ const signedAt = Math.floor(Date.parse(expression.createdAt) / 1000);
42
+ if (!Number.isFinite(signedAt)) {
43
+ return fail('Expression has no valid creation time');
44
+ }
45
+ if (signedAt > Math.floor(Date.now() / 1000) + MAX_CLOCK_SKEW_SECONDS) {
46
+ return fail('Expression is dated in the future');
47
+ }
48
+ const chain = await resolveDelegationRoot(expression.proof, resolveProof, provider, { at: signedAt });
49
+ if (!chain.valid || chain.rootDid === null) {
50
+ return fail(chain.reason ?? 'Invalid delegation chain');
51
+ }
52
+ // The delegation has to name this author as its audience, or anyone
53
+ // could attach someone else's valid UCAN to their own expression.
54
+ if (chain.audience !== expression.author) {
55
+ return fail('Proof was issued to a different key than the author');
56
+ }
57
+ if (!chain.capabilities.some((granted) => isCapabilitySubset(granted, required))) {
58
+ return fail(`Proof does not grant ${required.can} on ${required.with}`);
59
+ }
60
+ if (isTrustedRoot && !(await isTrustedRoot(chain.rootDid, expression))) {
61
+ return fail(`Root identity ${chain.rootDid} is not authorized here`);
62
+ }
63
+ return { passed: true, gate: 'capability' };
64
+ }
65
+ catch (error) {
66
+ return fail(error instanceof Error ? error.message : 'Capability check failed');
67
+ }
68
+ },
69
+ };
70
+ }
71
+ //# sourceMappingURL=capability-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-gate.js","sourceRoot":"","sources":["../../src/validation/capability-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { CryptoProvider, Expression } from '../types.js';
2
+ export interface GateResult {
3
+ readonly passed: boolean;
4
+ readonly gate: string;
5
+ readonly reason?: string;
6
+ }
7
+ export interface CryptoGate {
8
+ validate(expression: Expression, resolvePublicKey: (did: string) => Promise<CryptoKey>): Promise<GateResult>;
9
+ }
10
+ /**
11
+ * Creates a gate that performs cryptographic validation of expressions.
12
+ * @param provider The cryptographic provider to use.
13
+ * @returns A CryptoGate instance.
14
+ */
15
+ export declare function createCryptoGate(provider: CryptoProvider): CryptoGate;
16
+ //# sourceMappingURL=crypto-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto-gate.d.ts","sourceRoot":"","sources":["../../src/validation/crypto-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC9G;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,UAAU,CA8BrE"}