@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":"auth.js","sourceRoot":"","sources":["../../src/session/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ import { type Capability } from '../identity/ucan.js';
2
+ import type { RootSigner } from '../identity/root-signer.js';
3
+ import { type StoreFactory } from '../node/stores.js';
4
+ import type { NewSpace, NodeNetworkConfig, P2PNode } from '../node/types.js';
5
+ import type { KeyValueStore } from './stay-signed-in.js';
6
+ /** What an app asks a home for */
7
+ export interface ConnectRequest {
8
+ readonly v: 1;
9
+ /** The app's key — the note is made out to it */
10
+ readonly audience: string;
11
+ /** What the app calls itself. Shown, but never trusted: the home shows the origin too. */
12
+ readonly name?: string;
13
+ /**
14
+ * `write` to change the spaces it is given, `read` only to look. `carry` is
15
+ * for a carrier — a browser extension keeping the spaces online — which gets
16
+ * passes and no keys (`connectCarrier`).
17
+ */
18
+ readonly access: 'read' | 'write' | 'carry';
19
+ /**
20
+ * `spaces` (the default): only the spaces the person picks, and any made for
21
+ * the app. `account`: every space, the account's space list, and making and
22
+ * joining spaces itself — for an app that is a view onto the whole account.
23
+ * Either way the app never gets the seed.
24
+ */
25
+ readonly scope?: 'spaces' | 'account';
26
+ /** Spaces the home should make for the app, and give it */
27
+ readonly create?: ReadonlyArray<NewSpace>;
28
+ /** Whether to offer the person's existing spaces to pick from. Default true. */
29
+ readonly chooseSpaces?: boolean;
30
+ /**
31
+ * The key is an agent's — one on the person's computer, connected with
32
+ * `weave connect` (`agent-link.ts`). Its note says so (`AGENT_FACT`), so
33
+ * every record it writes shows as "via agent", and every peer refuses it
34
+ * changing the space's collections or who may do what, or the account's
35
+ * list of spaces. It may be given chosen spaces or the whole account, but
36
+ * never spaces made for it.
37
+ */
38
+ readonly agent?: boolean;
39
+ /** How many days the note should last, 1–365. The home decides; default 7. */
40
+ readonly days?: number;
41
+ }
42
+ /** The longest a home gives a note for */
43
+ export declare const MAX_GRANT_DAYS = 365;
44
+ /** A space an app was given */
45
+ export interface GrantedSpace {
46
+ readonly id: string;
47
+ readonly name: string;
48
+ /** What the app joins it with — carrying the key, for a private space */
49
+ readonly invite: string;
50
+ }
51
+ /** What the home hands back when the person approves */
52
+ export interface Grant {
53
+ readonly v: 1;
54
+ /** The account's identity — what the app acts for */
55
+ readonly did: string;
56
+ /** The account's name, for showing who is connected */
57
+ readonly name: string;
58
+ /** The signed note: the account → the app's key, for these spaces, until `expiresAt` */
59
+ readonly token: string;
60
+ readonly access: 'read' | 'write';
61
+ readonly scope: 'spaces' | 'account';
62
+ readonly spaces: ReadonlyArray<GrantedSpace>;
63
+ /**
64
+ * With `account` scope: the key the account's space list is derived from
65
+ * (base64url), so the app sees every space and adds the ones it makes or
66
+ * joins. It opens every private space in the account — which is what whole
67
+ * account access means — but it cannot sign as the account.
68
+ */
69
+ readonly accountKey?: string;
70
+ /** Unix seconds */
71
+ readonly expiresAt: number;
72
+ /** Present, and true, when the note is an agent's */
73
+ readonly agent?: true;
74
+ /** The home that granted it, so the app can go back there */
75
+ readonly home: string;
76
+ /**
77
+ * Relays the home meets peers on. A home someone runs themselves may use
78
+ * different ones from the app, and two peers that share no relay never
79
+ * meet — so the app joins these as well.
80
+ */
81
+ readonly relays?: ReadonlyArray<string>;
82
+ }
83
+ /**
84
+ * What the home hands a carrier: a way into its carry space, which holds a
85
+ * pass for each of the account's spaces — and nothing that reads or writes
86
+ * them (`space/pass.ts`).
87
+ */
88
+ export interface CarryGrant {
89
+ readonly v: 1;
90
+ readonly kind: 'carry';
91
+ /** The account it carries for */
92
+ readonly did: string;
93
+ /** The account's name, for showing whose spaces these are */
94
+ readonly name: string;
95
+ /** The carry space, and the view-only invite to it */
96
+ readonly carry: {
97
+ readonly space: string;
98
+ readonly invite: string;
99
+ };
100
+ /**
101
+ * Where the account keeps its data, when it lives in a pod: the path inside
102
+ * the pod folder, and the folder's name to help the person find it. Null
103
+ * when the account lives in the home's browser storage.
104
+ */
105
+ readonly pod: {
106
+ readonly dataPath: string;
107
+ readonly folder: string;
108
+ } | null;
109
+ readonly relays?: ReadonlyArray<string>;
110
+ /** The home that granted it */
111
+ readonly home: string;
112
+ }
113
+ /**
114
+ * Turns what a person typed into a home's connect page:
115
+ * `weave.example.com` → `https://weave.example.com/connect`. Plain `http` only
116
+ * for this machine, where development happens.
117
+ * @throws When it is not a web address
118
+ */
119
+ export declare function homeAddress(input: string): string;
120
+ /** The capabilities a grant carries, for these spaces */
121
+ export declare function grantCapabilities(access: 'read' | 'write', spaceIds: ReadonlyArray<string> | 'all'): Capability[];
122
+ /** The app's own key, and its DID */
123
+ export interface AppKey {
124
+ readonly keys: CryptoKeyPair;
125
+ readonly did: string;
126
+ }
127
+ /**
128
+ * This app's key: made once, kept in this site's IndexedDB, and never
129
+ * exportable — a script that gets into the page can sign with it while it is
130
+ * there, but cannot carry it off.
131
+ */
132
+ export declare function appKey(name?: string): Promise<AppKey>;
133
+ /** Forgets this app's key. The next connection makes a new one. */
134
+ export declare function forgetAppKey(name?: string): Promise<void>;
135
+ export interface ConnectOptions {
136
+ /** The home's connect page, e.g. `https://weave.example/connect` */
137
+ readonly home: string;
138
+ /** What to ask for; `audience` is filled in with this app's key */
139
+ readonly request: Omit<ConnectRequest, 'v' | 'audience'>;
140
+ /** The key to ask for. Default: {@link appKey} under `keyName`. */
141
+ readonly key?: AppKey;
142
+ /** Which of this app's keys to use when `key` is not given. Default `default`. */
143
+ readonly keyName?: string;
144
+ /**
145
+ * Ask for a note made out to this key instead of one of the app's own —
146
+ * an agent's, which lives on another computer (`offerAgentLink`).
147
+ */
148
+ readonly audience?: string;
149
+ /** How long to wait for the person. Default 10 minutes. */
150
+ readonly timeoutMs?: number;
151
+ }
152
+ /**
153
+ * Opens the home and asks for access. Call it from a click — browsers only
154
+ * allow a popup that a person asked for.
155
+ *
156
+ * @returns The grant, checked: signed by the account, made out to this app's key
157
+ * @throws When the popup is blocked, closed, denied, or the answer does not check out
158
+ */
159
+ export declare function connectToHome(options: ConnectOptions): Promise<Grant>;
160
+ /**
161
+ * Asks a home to use this carrier — a browser extension, say — for the
162
+ * account. Call it from a click, in a page that stays open until the answer
163
+ * comes: an extension's toolbar popup closes the moment the home's window
164
+ * takes focus, and the answer would have nowhere to go.
165
+ *
166
+ * @param options.key The carrier's own key; it becomes its name to peers
167
+ * @returns The grant, checked: an invite to a private carry space the account made
168
+ */
169
+ export declare function connectCarrier(options: {
170
+ readonly home: string;
171
+ readonly key: AppKey;
172
+ readonly name?: string;
173
+ readonly timeoutMs?: number;
174
+ }): Promise<CarryGrant>;
175
+ /** A signer that answers with the note the home gave — the app holds nothing else. */
176
+ export declare function grantSigner(grant: Grant): RootSigner;
177
+ /**
178
+ * Starts a node acting for the account, under a grant.
179
+ *
180
+ * It joins the granted spaces (again, harmlessly, on later starts) and keeps
181
+ * its data in this site's storage. It has no account key: it sees the spaces
182
+ * it was given, not the account's whole list.
183
+ */
184
+ export declare function startConnectedNode(params: {
185
+ readonly grant: Grant;
186
+ readonly key?: AppKey;
187
+ readonly network?: NodeNetworkConfig;
188
+ readonly stores?: StoreFactory;
189
+ }): Promise<P2PNode>;
190
+ /** Where an app keeps its grant between visits */
191
+ export declare function grantStore(storage?: KeyValueStore | null, key?: string): {
192
+ load(): Grant | null;
193
+ save(grant: Grant): void;
194
+ forget(): void;
195
+ };
196
+ /** A request as the home received it */
197
+ export interface IncomingRequest {
198
+ readonly request: ConnectRequest;
199
+ /** Where it came from, as the browser reports it — the only name to trust */
200
+ readonly origin: string;
201
+ /** Sends the grant back to that origin, and closes the window */
202
+ approve(grant: Omit<Grant, 'home'> | Omit<CarryGrant, 'home'>): void;
203
+ /** Says no, and closes the window */
204
+ deny(reason?: string): void;
205
+ }
206
+ /**
207
+ * Waits for the app that opened this page to say what it wants.
208
+ * @returns The request, or null when this page was not opened by an app
209
+ */
210
+ export declare function receiveConnectRequest(timeoutMs?: number): Promise<IncomingRequest | null>;
211
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/session/connect.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAyB,KAAK,UAAU,EAAkB,MAAM,qBAAqB,CAAC;AAE7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,kCAAkC;AAClC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACtC,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1C,gFAAgF;IAChF,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,0CAA0C;AAC1C,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wDAAwD;AACxD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,qDAAqD;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBjD;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,UAAU,EAAE,CAGjH;AAID,qCAAqC;AACrC,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AA0BD;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,IAAI,SAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAS9D;AAED,mEAAmE;AACnE,wBAAsB,YAAY,CAAC,IAAI,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC;IACzD,mEAAmE;IACnE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAU3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,UAAU,CAAC,CAOtB;AAwDD,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAapD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBnB;AAED,kDAAkD;AAClD,wBAAgB,UAAU,CAAC,OAAO,GAAE,aAAa,GAAG,IAAsC,EAAE,GAAG,SAAgB;YAEnG,KAAK,GAAG,IAAI;gBAQR,KAAK,GAAG,IAAI;cAGd,IAAI;EAIjB;AAID,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACrE,qCAAqC;IACrC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,SAAS,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA8CzF"}
@@ -0,0 +1,355 @@
1
+ /**
2
+ * @module session/connect
3
+ * An app using an account without ever seeing its seed.
4
+ *
5
+ * The account lives in an *account home* — a page, at an address the person
6
+ * chose, that holds the account and does nothing else. An app that wants to
7
+ * act for the account:
8
+ *
9
+ * 1. Makes its own key, kept in its own site's storage, never exportable.
10
+ * 2. Opens the home in a popup, and says what it wants: read or write, and
11
+ * which spaces — existing ones the person picks, or new ones for it.
12
+ * 3. The person unlocks at the home (a passkey, or the account password from
13
+ * their password manager) and approves.
14
+ * 4. The home signs a note — a UCAN — saying the app's key may write in those
15
+ * spaces until a date, and hands back invites for them.
16
+ * 5. The app starts a node that signs with its key under that note.
17
+ *
18
+ * Every peer checks the note, so the app cannot write anywhere it was not
19
+ * given. It never holds the seed, so it cannot become the account.
20
+ *
21
+ * The popup and the app talk with `postMessage`. Each side checks the other's
22
+ * origin as the browser reports it — never as a message claims it — and the
23
+ * home only ever sends a grant to the origin that asked for it.
24
+ */
25
+ import { createP256Provider } from '../identity/crypto-p256.js';
26
+ import { publicKeyToDid, P256_MULTICODEC } from '../identity/did.js';
27
+ import { cidFromBytes } from '../utils/hash.js';
28
+ import { base64UrlDecode, utf8Encode } from '../utils/encoding.js';
29
+ import { verifyUCAN, parseUCAN } from '../identity/ucan.js';
30
+ import { isAgentNote } from '../identity/agent-note.js';
31
+ import { createNode } from '../node/node.js';
32
+ import { indexedDBStores } from '../node/stores.js';
33
+ import { checkStartingRoles } from '../space/space-access.js';
34
+ import { parseSpaceInvite } from '../space/space-manager.js';
35
+ /** Messages between an app and the home it opened */
36
+ const HELLO = 'weave:hello';
37
+ const REQUEST = 'weave:request';
38
+ const GRANT = 'weave:grant';
39
+ const DENIED = 'weave:denied';
40
+ /** The longest a home gives a note for */
41
+ export const MAX_GRANT_DAYS = 365;
42
+ /**
43
+ * Turns what a person typed into a home's connect page:
44
+ * `weave.example.com` → `https://weave.example.com/connect`. Plain `http` only
45
+ * for this machine, where development happens.
46
+ * @throws When it is not a web address
47
+ */
48
+ export function homeAddress(input) {
49
+ const trimmed = input.trim();
50
+ if (!trimmed)
51
+ throw new Error('Type the address of your account home.');
52
+ const local = /^(localhost|127\.0\.0\.1|\[::1\])(:\d+)?(\/|$)/.test(trimmed);
53
+ const withScheme = /^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed) ? trimmed : `${local ? 'http' : 'https'}://${trimmed}`;
54
+ let url;
55
+ try {
56
+ url = new URL(withScheme);
57
+ }
58
+ catch {
59
+ throw new Error(`"${trimmed}" is not a web address.`);
60
+ }
61
+ const loopback = ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname);
62
+ // Browsers parse more than they should ("not a url" becomes a host), so ask
63
+ // for a name that could be a real domain.
64
+ if (!loopback && !/^([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,}$/i.test(url.hostname)) {
65
+ throw new Error(`"${trimmed}" is not a web address.`);
66
+ }
67
+ if (url.protocol !== 'https:' && !(url.protocol === 'http:' && loopback)) {
68
+ throw new Error('An account home must be on https.');
69
+ }
70
+ if (url.pathname === '/' || url.pathname === '')
71
+ url.pathname = '/connect';
72
+ url.hash = '';
73
+ url.search = '';
74
+ return url.href;
75
+ }
76
+ /** The capabilities a grant carries, for these spaces */
77
+ export function grantCapabilities(access, spaceIds) {
78
+ const can = access === 'write' ? 'expression/*' : 'expression/read';
79
+ return spaceIds === 'all' ? [{ with: '*', can }] : spaceIds.map((id) => ({ with: `space:${id}`, can }));
80
+ }
81
+ const KEY_DB = 'weave-app-key';
82
+ function openKeyDb() {
83
+ return new Promise((resolve, reject) => {
84
+ const request = globalThis.indexedDB.open(KEY_DB, 1);
85
+ request.onupgradeneeded = () => request.result.createObjectStore('keys');
86
+ request.onsuccess = () => resolve(request.result);
87
+ request.onerror = () => reject(request.error);
88
+ });
89
+ }
90
+ async function keyStore(mode, run) {
91
+ const db = await openKeyDb();
92
+ try {
93
+ return await new Promise((resolve, reject) => {
94
+ const request = run(db.transaction('keys', mode).objectStore('keys'));
95
+ request.onsuccess = () => resolve(request.result);
96
+ request.onerror = () => reject(request.error);
97
+ });
98
+ }
99
+ finally {
100
+ db.close();
101
+ }
102
+ }
103
+ /**
104
+ * This app's key: made once, kept in this site's IndexedDB, and never
105
+ * exportable — a script that gets into the page can sign with it while it is
106
+ * there, but cannot carry it off.
107
+ */
108
+ export async function appKey(name = 'default') {
109
+ const provider = createP256Provider();
110
+ let keys = await keyStore('readonly', (store) => store.get(name));
111
+ if (!keys) {
112
+ const made = await provider.generateKeyPair();
113
+ keys = { privateKey: made.privateKey, publicKey: made.publicKey };
114
+ await keyStore('readwrite', (store) => store.put(keys, name));
115
+ }
116
+ return { keys, did: publicKeyToDid(await provider.exportPublicKey(keys.publicKey), P256_MULTICODEC) };
117
+ }
118
+ /** Forgets this app's key. The next connection makes a new one. */
119
+ export async function forgetAppKey(name = 'default') {
120
+ await keyStore('readwrite', (store) => store.delete(name));
121
+ }
122
+ /**
123
+ * Opens the home and asks for access. Call it from a click — browsers only
124
+ * allow a popup that a person asked for.
125
+ *
126
+ * @returns The grant, checked: signed by the account, made out to this app's key
127
+ * @throws When the popup is blocked, closed, denied, or the answer does not check out
128
+ */
129
+ export async function connectToHome(options) {
130
+ const homeUrl = new URL(options.home, globalThis.location.href);
131
+ // Opened before anything is awaited, so it still counts as the click's.
132
+ const popup = openHome(homeUrl);
133
+ const audience = options.audience ?? (options.key ?? (await appKey(options.keyName))).did;
134
+ const grant = (await askHome(popup, homeUrl.origin, { v: 1, audience, ...options.request }, options.timeoutMs));
135
+ await checkGrant(grant, audience);
136
+ // An agent's note must say so, or its writes would pass as the person's own.
137
+ if (options.request.agent && !isAgentNote(grant.token))
138
+ throw new Error('The home gave an ordinary note, not an agent\'s. Update your account home.');
139
+ return { ...grant, home: homeUrl.href };
140
+ }
141
+ /**
142
+ * Asks a home to use this carrier — a browser extension, say — for the
143
+ * account. Call it from a click, in a page that stays open until the answer
144
+ * comes: an extension's toolbar popup closes the moment the home's window
145
+ * takes focus, and the answer would have nowhere to go.
146
+ *
147
+ * @param options.key The carrier's own key; it becomes its name to peers
148
+ * @returns The grant, checked: an invite to a private carry space the account made
149
+ */
150
+ export async function connectCarrier(options) {
151
+ const homeUrl = new URL(options.home, globalThis.location.href);
152
+ const popup = openHome(homeUrl);
153
+ const request = { v: 1, audience: options.key.did, access: 'carry', ...(options.name ? { name: options.name } : {}) };
154
+ const grant = (await askHome(popup, homeUrl.origin, request, options.timeoutMs));
155
+ checkCarryGrant(grant);
156
+ return { ...grant, home: homeUrl.href };
157
+ }
158
+ /** Refuses a carry grant that is not an invite to a private space the account made. */
159
+ function checkCarryGrant(grant) {
160
+ if (grant?.kind !== 'carry' || typeof grant.did !== 'string' || typeof grant.carry?.invite !== 'string') {
161
+ throw new Error('The home did not answer with a way to carry your spaces.');
162
+ }
163
+ const invite = parseSpaceInvite(grant.carry.invite);
164
+ if (invite.space.id !== grant.carry.space || invite.space.creator !== grant.did || invite.space.visibility !== 'private' || !invite.key) {
165
+ throw new Error('The carry space the home named does not check out.');
166
+ }
167
+ if (grant.pod !== null && (typeof grant.pod?.dataPath !== 'string' || grant.pod.dataPath.split('/').some((part) => !part || part === '..'))) {
168
+ throw new Error('The pod the home named does not check out.');
169
+ }
170
+ }
171
+ function openHome(homeUrl) {
172
+ const popup = globalThis.open(homeUrl.href, 'weave-home', 'popup,width=460,height=720');
173
+ if (!popup)
174
+ throw new Error('The browser blocked the window. Allow pop-ups for this site and try again.');
175
+ return popup;
176
+ }
177
+ /** Sends the request once the home says hello, and waits for its answer. */
178
+ function askHome(popup, homeOrigin, request, timeoutMs = 10 * 60_000) {
179
+ return new Promise((resolve, reject) => {
180
+ const done = (finish) => {
181
+ globalThis.removeEventListener('message', onMessage);
182
+ globalThis.clearInterval(watch);
183
+ globalThis.clearTimeout(timer);
184
+ finish();
185
+ };
186
+ const onMessage = (event) => {
187
+ // Only the popup we opened, at the address we opened it on.
188
+ if (event.source !== popup || event.origin !== homeOrigin)
189
+ return;
190
+ const data = event.data;
191
+ if (data?.type === HELLO)
192
+ popup.postMessage({ type: REQUEST, request }, homeOrigin);
193
+ else if (data?.type === GRANT && data.grant)
194
+ done(() => resolve(data.grant));
195
+ else if (data?.type === DENIED)
196
+ done(() => reject(new Error(data.reason ?? 'Access was not given.')));
197
+ };
198
+ const watch = globalThis.setInterval(() => {
199
+ if (popup.closed)
200
+ done(() => reject(new Error('The window was closed before access was given.')));
201
+ }, 500);
202
+ const timer = globalThis.setTimeout(() => done(() => reject(new Error('No answer from your account home.'))), timeoutMs);
203
+ globalThis.addEventListener('message', onMessage);
204
+ });
205
+ }
206
+ /** Refuses a grant that is not a valid note from the account to this key. */
207
+ async function checkGrant(grant, audience) {
208
+ const verified = await verifyUCAN(grant.token, createP256Provider());
209
+ if (!verified.valid)
210
+ throw new Error(`The grant does not check out: ${verified.reason ?? 'invalid'}`);
211
+ const { payload } = parseUCAN(grant.token);
212
+ if (payload.aud !== audience)
213
+ throw new Error('The grant was made out to a different key.');
214
+ if (payload.iss !== grant.did)
215
+ throw new Error('The grant was not signed by the account it names.');
216
+ }
217
+ /** A signer that answers with the note the home gave — the app holds nothing else. */
218
+ export function grantSigner(grant) {
219
+ let token = null;
220
+ return {
221
+ did: grant.did,
222
+ custody: 'remote',
223
+ async delegate() {
224
+ if (grant.expiresAt <= Math.floor(Date.now() / 1000)) {
225
+ throw new Error('Access has run out. Connect to your account home again.');
226
+ }
227
+ token ??= cidFromBytes(utf8Encode(grant.token)).then((cid) => ({ ...parseUCAN(grant.token), encoded: grant.token, cid }));
228
+ return token;
229
+ },
230
+ };
231
+ }
232
+ /**
233
+ * Starts a node acting for the account, under a grant.
234
+ *
235
+ * It joins the granted spaces (again, harmlessly, on later starts) and keeps
236
+ * its data in this site's storage. It has no account key: it sees the spaces
237
+ * it was given, not the account's whole list.
238
+ */
239
+ export async function startConnectedNode(params) {
240
+ const key = params.key ?? (await appKey());
241
+ // The home's relays as well as the app's, so the two always share one.
242
+ const relays = [...new Set([...(params.network?.relays ?? []), ...(params.grant.relays ?? [])])];
243
+ const network = params.network || relays.length ? { ...params.network, relays } : undefined;
244
+ const node = await createNode({
245
+ signer: grantSigner(params.grant),
246
+ sessionKey: key.keys,
247
+ stores: params.stores ?? indexedDBStores(`weave-app:${params.grant.did}`),
248
+ ...(params.grant.accountKey ? { accountKey: base64UrlDecode(params.grant.accountKey) } : {}),
249
+ ...(network ? { network } : {}),
250
+ });
251
+ const held = new Set((await node.spaces.list()).map((space) => space.id));
252
+ for (const space of params.grant.spaces) {
253
+ if (!held.has(space.id))
254
+ await node.spaces.join(space.invite);
255
+ }
256
+ return node;
257
+ }
258
+ /** Where an app keeps its grant between visits */
259
+ export function grantStore(storage = globalThis.localStorage ?? null, key = 'weave.grant') {
260
+ return {
261
+ load() {
262
+ try {
263
+ const grant = JSON.parse(storage?.getItem(key) ?? 'null');
264
+ return grant && grant.expiresAt > Math.floor(Date.now() / 1000) ? grant : null;
265
+ }
266
+ catch {
267
+ return null;
268
+ }
269
+ },
270
+ save(grant) {
271
+ storage?.setItem(key, JSON.stringify(grant));
272
+ },
273
+ forget() {
274
+ storage?.removeItem(key);
275
+ },
276
+ };
277
+ }
278
+ /**
279
+ * Waits for the app that opened this page to say what it wants.
280
+ * @returns The request, or null when this page was not opened by an app
281
+ */
282
+ export function receiveConnectRequest(timeoutMs = 10_000) {
283
+ const opener = globalThis.opener;
284
+ if (!opener)
285
+ return Promise.resolve(null);
286
+ return new Promise((resolve) => {
287
+ const onMessage = (event) => {
288
+ if (event.source !== opener)
289
+ return;
290
+ const data = event.data;
291
+ if (data?.type !== REQUEST)
292
+ return;
293
+ globalThis.removeEventListener('message', onMessage);
294
+ globalThis.clearTimeout(timer);
295
+ // A request this home cannot read — often an app newer than the home —
296
+ // is answered, not ignored: otherwise both sides wait with nothing said.
297
+ if (!isRequest(data.request)) {
298
+ opener.postMessage({ type: DENIED, reason: 'Your account home did not understand what was asked. It may be older than this app — update it, or use another home.' }, event.origin);
299
+ globalThis.setTimeout(() => globalThis.close(), 100);
300
+ resolve(null);
301
+ return;
302
+ }
303
+ const origin = event.origin;
304
+ const reply = (message) => {
305
+ opener.postMessage(message, origin);
306
+ // A moment's grace, so the answer is delivered before the window goes.
307
+ globalThis.setTimeout(() => globalThis.close(), 100);
308
+ };
309
+ resolve({
310
+ request: data.request,
311
+ origin,
312
+ approve: (grant) => reply({ type: GRANT, grant }),
313
+ deny: (reason) => reply({ type: DENIED, reason: reason ?? 'Access was not given.' }),
314
+ });
315
+ };
316
+ const timer = globalThis.setTimeout(() => {
317
+ globalThis.removeEventListener('message', onMessage);
318
+ resolve(null);
319
+ }, timeoutMs);
320
+ globalThis.addEventListener('message', onMessage);
321
+ // Nothing secret in a hello, so any origin may hear it; the request that
322
+ // answers it is what names the app.
323
+ opener.postMessage({ type: HELLO }, '*');
324
+ });
325
+ }
326
+ function isRequest(value) {
327
+ const request = value;
328
+ return (!!request &&
329
+ request.v === 1 &&
330
+ typeof request.audience === 'string' &&
331
+ request.audience.startsWith('did:key:') &&
332
+ (request.access === 'read' || request.access === 'write' || request.access === 'carry') &&
333
+ (request.scope === undefined || request.scope === 'spaces' || request.scope === 'account') &&
334
+ (request.name === undefined || (typeof request.name === 'string' && request.name.length <= 80)) &&
335
+ (request.create === undefined || isNewSpaces(request.create)) &&
336
+ (request.days === undefined || (Number.isInteger(request.days) && request.days >= 1 && request.days <= MAX_GRANT_DAYS)) &&
337
+ // An agent works in spaces that exist: none made for it, and no carrying.
338
+ (request.agent === undefined ||
339
+ request.agent === false ||
340
+ (request.agent === true && request.access !== 'carry' && request.create === undefined)));
341
+ }
342
+ /** At most this many spaces made for an app in one go */
343
+ const MAX_CREATE = 8;
344
+ /** Spaces an app asks to have made: few, named, with a visibility — the roles are checked when they are made */
345
+ function isNewSpaces(value) {
346
+ return (Array.isArray(value) &&
347
+ value.length <= MAX_CREATE &&
348
+ value.every((space) => !!space &&
349
+ typeof space.name === 'string' &&
350
+ space.name.trim().length > 0 &&
351
+ space.name.length <= 80 &&
352
+ (space.visibility === 'private' || space.visibility === 'public') &&
353
+ (space.roles === undefined || checkStartingRoles(space.roles, space.creatorRole ?? [...space.roles].sort((a, b) => b.rank - a.rank)[0]?.name) === null)));
354
+ }
355
+ //# sourceMappingURL=connect.js.map