@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,427 @@
1
+ /**
2
+ * @module elements/weave-auth
3
+ * `<weave-auth>`: the whole sign-in flow as one element.
4
+ *
5
+ * ```html
6
+ * <weave-auth app-name="Todo" relays="wss://relay.example"></weave-auth>
7
+ * <script type="module">
8
+ * import '@weaveprotocol/core/elements';
9
+ * document.querySelector('weave-auth').addEventListener('weave-session', (event) => {
10
+ * const session = event.detail.session; // null when signed out
11
+ * if (session) start(session.node);
12
+ * });
13
+ * </script>
14
+ * ```
15
+ *
16
+ * Or hand it a flow you made yourself, to share it with the rest of the page:
17
+ * `element.auth = createWeaveAuth({ … })`.
18
+ *
19
+ * It draws into its own light DOM, not a shadow root, on purpose: password
20
+ * managers find and fill forms in the page far more reliably than forms inside
21
+ * a shadow root, and the account password living in a password manager is the
22
+ * point of the whole design. Its styles are scoped to the element instead.
23
+ *
24
+ * It fills whatever box it is put in — a page, a modal, a panel — and draws
25
+ * nothing once signed in; the host decides what happens then.
26
+ */
27
+ import { createWeaveAuth } from '../session/auth.js';
28
+ import { accountCredentialName, deviceCredentialName, offerToSave } from '../session/credentials.js';
29
+ import { adoptStyles, h, svg } from './dom.js';
30
+ import { AUTH_CSS } from './auth-styles.js';
31
+ const Base = (globalThis.HTMLElement ?? class {
32
+ });
33
+ /** The mark and the name, above every step */
34
+ function wordmark() {
35
+ return h('div', { class: 'wa-wordmark' }, svg('<svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M2 5 L7 15 L10 8 L13 15 L18 5" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linejoin="round" stroke-linecap="round"/></svg>'), 'Weave');
36
+ }
37
+ /** A small deterministic hash, enough to seed a 5×5 pattern and a hue. */
38
+ function hash(text) {
39
+ let value = 2166136261;
40
+ for (let i = 0; i < text.length; i++) {
41
+ value ^= text.charCodeAt(i);
42
+ value = Math.imul(value, 16777619);
43
+ }
44
+ return value >>> 0;
45
+ }
46
+ /**
47
+ * A visual fingerprint for an account, derived from its DID — the same
48
+ * everywhere it appears, so a wrong account is obvious before its name is read.
49
+ */
50
+ function avatar(did, size = 32) {
51
+ const seed = hash(did);
52
+ const hue = seed % 360;
53
+ const cells = [];
54
+ for (let x = 0; x < 3; x++) {
55
+ for (let y = 0; y < 5; y++) {
56
+ if (((seed >> (x * 5 + y)) & 1) === 0)
57
+ continue;
58
+ cells.push(`<rect x="${x}" y="${y}" width="1" height="1"/>`);
59
+ if (x < 2)
60
+ cells.push(`<rect x="${4 - x}" y="${y}" width="1" height="1"/>`);
61
+ }
62
+ }
63
+ return svg(`<svg class="wa-avatar" width="${size}" height="${size}" viewBox="0 0 5 5" role="img" aria-label="Account avatar" style="background:hsl(${hue} 46% 92%)"><g fill="hsl(${hue} 62% 48%)">${cells.join('')}</g></svg>`);
64
+ }
65
+ /** An explanation, folded away until asked for. */
66
+ function info(label, ...text) {
67
+ const popover = h('span', { class: 'wa-popover', role: 'note', hidden: true }, ...text);
68
+ const button = h('button', {
69
+ type: 'button',
70
+ class: 'wa-info-button',
71
+ 'aria-label': label,
72
+ 'aria-expanded': 'false',
73
+ onclick: () => {
74
+ popover.hidden = !popover.hidden;
75
+ button.setAttribute('aria-expanded', String(!popover.hidden));
76
+ },
77
+ onkeydown: (event) => {
78
+ if (event.key === 'Escape')
79
+ popover.hidden = true;
80
+ },
81
+ }, 'i');
82
+ return h('span', { class: 'wa-info' }, button, popover);
83
+ }
84
+ function errorBox(error) {
85
+ if (!error)
86
+ return null;
87
+ return h('div', { class: 'wa-error-box', role: 'alert' }, h('p', { class: 'wa-error' }, error.message), error.hint ? h('p', { class: 'wa-small' }, error.hint) : null);
88
+ }
89
+ function option(title, text, onclick, disabled, recommended = false) {
90
+ return h('button', { type: 'button', class: 'wa-option', onclick, disabled }, h('span', { class: 'wa-option-title' }, title, recommended ? h('span', { class: 'wa-badge' }, 'Recommended') : null), h('span', { class: 'wa-option-text' }, text));
91
+ }
92
+ function link(text, onclick, disabled = false) {
93
+ return h('button', { type: 'button', class: 'wa-link', onclick, disabled }, text);
94
+ }
95
+ function describePairing(stage) {
96
+ switch (stage.kind) {
97
+ case 'waiting':
98
+ return 'Looking for your computer…';
99
+ case 'connected':
100
+ return 'Found it. Collecting your spaces…';
101
+ case 'received':
102
+ return stage.spaces === 1 ? 'Got 1 space.' : `Got ${stage.spaces} spaces.`;
103
+ case 'sent':
104
+ return 'Done.';
105
+ case 'failed':
106
+ return stage.reason;
107
+ }
108
+ }
109
+ export class WeaveAuthElement extends Base {
110
+ #auth = null;
111
+ #unsubscribe = null;
112
+ #announced = undefined;
113
+ // What only this element cares about: which fold is open, what is typed.
114
+ #drafts = new Map();
115
+ #showCode = false;
116
+ #filledAs = '';
117
+ #copied = false;
118
+ #lastSelected = null;
119
+ /** The flow this element draws. Set it to share one with the rest of the page; otherwise one is made from the attributes. */
120
+ get auth() {
121
+ this.#auth ??= createWeaveAuth({
122
+ ...(this.getAttribute('app-name') ? { appName: this.getAttribute('app-name') } : {}),
123
+ network: {
124
+ relays: (this.getAttribute('relays') ?? '').split(',').map((url) => url.trim()).filter(Boolean),
125
+ nodes: (this.getAttribute('nodes') ?? '').split(',').map((url) => url.trim()).filter(Boolean),
126
+ },
127
+ });
128
+ return this.#auth;
129
+ }
130
+ set auth(auth) {
131
+ if (auth === this.#auth)
132
+ return;
133
+ this.#auth = auth;
134
+ if (this.isConnected)
135
+ this.#follow();
136
+ }
137
+ connectedCallback() {
138
+ adoptStyles('weave-auth', AUTH_CSS);
139
+ if (this.#auth) {
140
+ this.#follow();
141
+ return;
142
+ }
143
+ // A framework may set `auth` just after inserting the element; wait a
144
+ // moment before making one from the attributes instead.
145
+ queueMicrotask(() => {
146
+ if (this.isConnected && !this.#unsubscribe)
147
+ this.#follow();
148
+ });
149
+ }
150
+ disconnectedCallback() {
151
+ this.#unsubscribe?.();
152
+ this.#unsubscribe = null;
153
+ }
154
+ #follow() {
155
+ this.#unsubscribe?.();
156
+ const auth = this.auth;
157
+ this.#unsubscribe = auth.subscribe((state) => this.#changed(state));
158
+ this.#changed(auth.getState());
159
+ void auth.start();
160
+ }
161
+ #changed(state) {
162
+ // A new account row, or a new screen, starts with empty fields.
163
+ if (state.selectedId !== this.#lastSelected) {
164
+ this.#lastSelected = state.selectedId;
165
+ this.#reset();
166
+ }
167
+ this.#render(state);
168
+ const session = state.stage === 'ready' ? state.session : null;
169
+ if (session !== this.#announced) {
170
+ this.#announced = session;
171
+ this.dispatchEvent(new CustomEvent('weave-session', { detail: { session }, bubbles: true, composed: true }));
172
+ }
173
+ }
174
+ #reset() {
175
+ this.#drafts.clear();
176
+ this.#showCode = false;
177
+ this.#filledAs = '';
178
+ }
179
+ /** Redraws, keeping focus and what was typed. */
180
+ #render(state) {
181
+ const focused = this.contains(globalThis.document.activeElement)
182
+ ? globalThis.document.activeElement.dataset.key
183
+ : undefined;
184
+ this.replaceChildren(...this.#screen(state));
185
+ const again = focused
186
+ ? this.querySelector(`[data-key="${focused}"]`)
187
+ : this.querySelector('[autofocus]');
188
+ again?.focus();
189
+ }
190
+ /** An input that survives a redraw */
191
+ #input(key, props) {
192
+ return h('input', {
193
+ ...props,
194
+ 'data-key': key,
195
+ value: this.#drafts.get(key) ?? props.value ?? '',
196
+ oninput: (event) => this.#drafts.set(key, event.target.value),
197
+ });
198
+ }
199
+ #screen(state) {
200
+ if (state.stage === 'ready')
201
+ return [];
202
+ if (state.stage === 'starting')
203
+ return [h('div', { class: 'wa-card' }, h('p', { class: 'wa-hint' }, 'Looking for your accounts…'))];
204
+ if (state.stage === 'pair')
205
+ return [this.#pair(state)];
206
+ if (state.stage === 'create')
207
+ return [state.freshCode ? this.#saveCode(state, state.freshCode) : this.#create(state)];
208
+ if (state.stage === 'where')
209
+ return [this.#where(state)];
210
+ if (state.stage === 'welcome')
211
+ return [this.#welcome(state)];
212
+ return [this.#signIn(state)];
213
+ }
214
+ // ─── Where should your data live ───────────────────────────────────
215
+ #where(state) {
216
+ const auth = this.auth;
217
+ return h('div', { class: 'wa-card' }, wordmark(), h('h1', { class: 'wa-title' }, 'Where should your data live?'), h('p', { class: 'wa-subtitle' }, 'You can change this later.'), h('div', { class: 'wa-options' }, option('Choose a pod', 'A folder on your computer that holds your Weave data. Every app you open it in sees the same account and the same spaces.', () => void auth.choosePod(), state.busy, true), option('Continue in this browser', "Nothing to set up. Your data syncs with your other devices, but other apps on other addresses can't open it.", () => void auth.useBrowser(), state.busy)), h('p', { class: 'wa-small', style: 'margin-top:16px' }, 'Your browser will ask to see the folder, then to save into it.', info('Why a pod', 'Your data becomes yours the way any other file is: copy it, back it up, or put the folder in iCloud or Dropbox and your devices stay in step with no server involved. It is also the only storage a second app on a different address can read.')), errorBox(state.error));
218
+ }
219
+ #placeLine(state) {
220
+ const place = state.place;
221
+ if (!place)
222
+ return null;
223
+ return h('p', { class: 'wa-small', style: 'margin-top:24px' }, place.kind === 'folder' ? `Pod: ${place.directory?.name ?? 'your folder'}` : 'Stored in this browser', state.folderAvailable ? [' · ', link('Change', () => this.auth.changeStorage(), state.busy)] : null);
224
+ }
225
+ // ─── New here, or not ──────────────────────────────────────────────
226
+ #welcome(state) {
227
+ const auth = this.auth;
228
+ return h('div', { class: 'wa-card' }, wordmark(), h('h1', { class: 'wa-title' }, 'Do you have a Weave account?'), h('p', { class: 'wa-subtitle' }, 'One account works in every Weave app.'), h('div', { class: 'wa-options' }, option('Create a new account', "We'll make you a strong password to save in your password manager.", () => auth.startCreating(), state.busy), option('I already have one', 'Sign in with the account password you saved when you made it.', () => auth.showSignIn(), state.busy)), errorBox(state.error), this.#placeLine(state));
229
+ }
230
+ // ─── Choosing an account, and getting in ───────────────────────────
231
+ /**
232
+ * The account-password form.
233
+ *
234
+ * The username field is off-screen, but deliberately not `display: none` —
235
+ * a field taken out of the layout is not counted as a username, while one
236
+ * merely moved out of view is filled normally. And writable: a manager fills
237
+ * the whole credential at once, so a read-only username keeps showing the
238
+ * account that was clicked while the password quietly belongs to another.
239
+ * Letting it be overwritten is what makes the mismatch detectable.
240
+ */
241
+ #codeForm(state, selected) {
242
+ const username = h('input', {
243
+ type: 'text',
244
+ name: 'username',
245
+ autocomplete: 'username',
246
+ value: accountCredentialName(selected?.name ?? 'My account'),
247
+ class: 'wa-offscreen',
248
+ tabindex: '-1',
249
+ 'aria-hidden': 'true',
250
+ });
251
+ const password = this.#input('code', {
252
+ type: 'password',
253
+ name: 'password',
254
+ placeholder: 'Your account password',
255
+ autocomplete: 'current-password',
256
+ spellcheck: 'false',
257
+ 'aria-label': 'Account password',
258
+ disabled: state.busy,
259
+ });
260
+ // Autofill sets the DOM value directly; read what it filled as well.
261
+ password.addEventListener('input', () => {
262
+ const filled = username.value.trim();
263
+ if (filled !== this.#filledAs) {
264
+ this.#filledAs = filled;
265
+ this.#render(this.auth.getState());
266
+ }
267
+ });
268
+ return h('form', {
269
+ class: 'wa-form',
270
+ onsubmit: (event) => {
271
+ event.preventDefault();
272
+ const code = password.value.trim();
273
+ if (code)
274
+ void this.auth.signInWithCode(code);
275
+ },
276
+ }, username, password, h('button', { type: 'submit', class: 'wa-button', disabled: state.busy }, state.busy ? 'Signing in…' : 'Sign in'));
277
+ }
278
+ #signIn(state) {
279
+ const auth = this.auth;
280
+ const { accounts, entry, place } = state;
281
+ const selected = accounts.find((account) => account.id === state.selectedId) ?? null;
282
+ const rows = accounts.map((account) => {
283
+ const isSelected = account.id === state.selectedId;
284
+ const body = [];
285
+ if (isSelected && entry) {
286
+ const hasShortcut = entry.shortcuts.length > 0;
287
+ const needsCode = this.#showCode || (!hasShortcut && !entry.hasPassword);
288
+ // An account with wraps, none of them usable here, has been used on
289
+ // another site — a passkey works on one web address only.
290
+ const seenElsewhere = entry.vault.wraps.length > 0;
291
+ if (hasShortcut && !this.#showCode) {
292
+ body.push(h('button', { type: 'button', class: 'wa-button', 'data-key': 'passkey', disabled: state.busy, onclick: () => void auth.signInWithPasskey() }, state.busy ? 'Waiting…' : 'Unlock with passkey'));
293
+ }
294
+ if (entry.hasPassword && !this.#showCode) {
295
+ const devicePassword = this.#input('device-password', {
296
+ type: 'password',
297
+ name: 'password',
298
+ placeholder: 'Password on this device',
299
+ autocomplete: 'current-password',
300
+ 'aria-label': 'Device password',
301
+ disabled: state.busy,
302
+ });
303
+ body.push(h('form', {
304
+ class: 'wa-form',
305
+ style: hasShortcut ? 'margin-top:10px' : '',
306
+ onsubmit: (event) => {
307
+ event.preventDefault();
308
+ if (devicePassword.value)
309
+ void auth.signInWithPassword(devicePassword.value);
310
+ },
311
+ }, h('input', {
312
+ type: 'text',
313
+ name: 'username',
314
+ autocomplete: 'username',
315
+ value: deviceCredentialName(account.name),
316
+ readonly: true,
317
+ class: 'wa-offscreen',
318
+ tabindex: '-1',
319
+ 'aria-hidden': 'true',
320
+ }), devicePassword, h('button', { type: 'submit', class: 'wa-button', disabled: state.busy }, 'Unlock')));
321
+ }
322
+ if (needsCode) {
323
+ if (!hasShortcut && !entry.hasPassword) {
324
+ body.push(h('p', { class: 'wa-small', style: 'margin:0 0 10px' }, seenElsewhere ? 'New to this app.' : 'No passkey set up here yet.', info('Why it is asking for the password', seenElsewhere
325
+ ? 'This account’s passkeys belong to the apps that made them — a passkey works on one web address only. Sign in once with your account password and this app can add its own.'
326
+ : 'Once you are in, you can add a passkey so this app stops asking.')));
327
+ }
328
+ body.push(this.#codeForm(state, selected));
329
+ }
330
+ else {
331
+ body.push(h('div', { class: 'wa-links' }, link('Use my account password instead', () => {
332
+ this.#showCode = true;
333
+ this.#filledAs = '';
334
+ this.#render(auth.getState());
335
+ }, state.busy)));
336
+ }
337
+ if (this.#showCode && this.#filledAs !== '' && this.#filledAs !== accountCredentialName(account.name)) {
338
+ body.push(h('p', { class: 'wa-error', style: 'margin-top:10px' }, 'Your password manager filled ', h('strong', null, this.#filledAs), ', not ', h('strong', null, account.name), '. Pick the entry named ', h('strong', null, account.name), ', or open that account instead.'));
339
+ }
340
+ }
341
+ return h('div', { class: 'wa-account' }, h('button', {
342
+ type: 'button',
343
+ class: 'wa-account-row',
344
+ 'aria-expanded': String(isSelected),
345
+ disabled: state.busy,
346
+ // Clicking the open row must not wipe what a manager just filled.
347
+ onclick: () => (isSelected ? undefined : void auth.select(account.id)),
348
+ }, avatar(account.did), h('span', { style: 'flex:1;min-width:0' }, h('span', { class: 'wa-account-name' }, account.name), h('span', { class: 'wa-account-did' }, `${account.did.slice(0, 18)}…${account.did.slice(-4)}`))), body.length > 0 ? h('div', { class: 'wa-account-body' }, ...body) : null);
349
+ });
350
+ return h('div', { class: 'wa-card' }, wordmark(), h('h1', { class: 'wa-title' }, accounts.length > 0 ? 'Welcome back' : 'Sign in'), h('p', { class: 'wa-subtitle' }, accounts.length > 0 ? 'Choose your account.' : 'Paste the account password you saved when you made it.'), ...rows, accounts.length === 0
351
+ ? [
352
+ h('p', { class: 'wa-hint' }, place?.kind === 'folder' ? 'This pod has no accounts yet.' : 'No accounts in this browser yet.', info('Why this works with nothing stored', 'The password is your key written out, not a hint to look something up with — so it opens the account in an app that has never seen you. If your account is in a pod, opening the pod below brings it back without the password.')),
353
+ this.#codeForm(state, null),
354
+ ]
355
+ : null, errorBox(state.error), h('div', { class: 'wa-links' }, link('Create a new account', () => auth.startCreating(), state.busy)), place
356
+ ? h('p', { class: 'wa-small', style: 'margin-top:16px' }, place.kind === 'folder' ? `Pod: ${place.directory?.name ?? 'your folder'}` : 'Accounts kept in this browser')
357
+ : null, state.folderAvailable
358
+ ? h('div', { class: 'wa-links' }, link(place?.kind === 'folder' ? 'Open a different pod' : 'Open a pod', () => void auth.choosePod(), state.busy), place?.kind === 'folder' ? link('Use this browser instead', () => void auth.useBrowser(), state.busy) : null)
359
+ : null);
360
+ }
361
+ // ─── Making an account ─────────────────────────────────────────────
362
+ #create(state) {
363
+ const auth = this.auth;
364
+ const name = this.#input('name', {
365
+ type: 'text',
366
+ placeholder: 'Your name',
367
+ autocomplete: 'off',
368
+ autofocus: true,
369
+ disabled: state.busy,
370
+ });
371
+ return h('div', { class: 'wa-card' }, wordmark(), h('h1', { class: 'wa-title' }, 'Create your account'), h('p', { class: 'wa-subtitle' }, 'Your data stays with you, not on a server.'), h('form', {
372
+ class: 'wa-form',
373
+ onsubmit: (event) => {
374
+ event.preventDefault();
375
+ if (name.value.trim())
376
+ void auth.createAccount(name.value.trim());
377
+ },
378
+ }, name, h('button', { type: 'submit', class: 'wa-button', disabled: state.busy }, state.busy ? 'Creating…' : 'Create account')), h('div', { class: 'wa-links' }, link('I already have an account', () => auth.showSignIn(), state.busy)), h('p', { class: 'wa-small' }, "We'll generate a strong password and show it once.", info('What happens next', 'Save it in your password manager. It opens your account in any Weave app, even one that has never seen you — and nobody can reissue it.')), errorBox(state.error));
379
+ }
380
+ /**
381
+ * The new account's password, shown once.
382
+ *
383
+ * Framed as a password because that is what it is for: your password
384
+ * manager saves it here and fills it in on the next app. A real form with
385
+ * both fields is what makes a manager offer to save.
386
+ */
387
+ #saveCode(state, code) {
388
+ const auth = this.auth;
389
+ const filedAs = accountCredentialName(state.session?.account.name ?? 'My account');
390
+ return h('div', { class: 'wa-card' }, wordmark(), h('h1', { class: 'wa-title' }, 'Save your password'), h('p', { class: 'wa-hint' }, 'Save this to your password manager now — it will fill itself in from then on.', info('About this password', 'It is generated rather than chosen, and it ', h('em', null, 'is'), ' your key rather than a backup of it. That is what lets it work on an app that has never seen you, with nothing stored anywhere. It is shown once and nobody can reissue it.')), h('form', {
391
+ class: 'wa-form',
392
+ onsubmit: (event) => {
393
+ event.preventDefault();
394
+ void offerToSave(filedAs, code, filedAs).then(() => auth.codeSaved());
395
+ },
396
+ }, h('input', { type: 'text', name: 'username', autocomplete: 'username', value: filedAs, readonly: true, 'aria-label': 'Account name' }), h('input', { type: 'password', name: 'password', autocomplete: 'new-password', value: code, readonly: true, 'aria-label': 'Account password' }), h('button', { type: 'submit', class: 'wa-button' }, "I've saved it — continue")), h('code', { class: 'wa-code' }, code), h('div', { class: 'wa-links' }, link(this.#copied ? 'Copied' : 'Copy', () => {
397
+ void globalThis.navigator.clipboard
398
+ ?.writeText(code)
399
+ .then(() => {
400
+ this.#copied = true;
401
+ this.#render(auth.getState());
402
+ })
403
+ .catch(() => { });
404
+ })), h('p', { class: 'wa-small' }, 'It is the only way into this account from an app that has never seen it. Nobody can reissue it, and it is stored nowhere but where you put it. On this device you can add a passkey afterwards, so you will rarely need it again.'));
405
+ }
406
+ // ─── Arriving from a phone-pairing QR code ─────────────────────────
407
+ /**
408
+ * One button. Everything needed is already in the address bar, but signing
409
+ * in still takes a tap: the code in the link is a secret, and a page that
410
+ * used it the instant it loaded would sign someone in from a link they had
411
+ * merely opened by accident.
412
+ */
413
+ #pair(state) {
414
+ const auth = this.auth;
415
+ return h('div', { class: 'wa-card' }, wordmark(), h('h1', { class: 'wa-title' }, 'Add this phone'), h('p', { class: 'wa-subtitle' }, 'You scanned a code from your computer.'), h('p', { class: 'wa-hint' }, 'This phone becomes the same account, with its own copy of your spaces.', info('What happens next', 'It syncs with your computer when both are around, and keeps working when they are not. Your spaces come over the network directly between the two devices — the relay only introduces them.')), h('button', { type: 'button', class: 'wa-button', disabled: state.busy, onclick: () => void auth.acceptPairing() }, state.busy ? 'Setting up…' : 'Set up this phone'), state.pairingStage
416
+ ? h('p', { class: state.pairingStage.kind === 'failed' ? 'wa-error' : 'wa-hint', style: 'margin-top:12px' }, describePairing(state.pairingStage))
417
+ : null, errorBox(state.error), h('p', { class: 'wa-small' }, 'Keep the code showing until this finishes.'), h('div', { class: 'wa-links' }, link('Not now', () => auth.dismissPairing(), state.busy)));
418
+ }
419
+ }
420
+ /** Registers `<weave-auth>`, once. Importing this module does it for you. */
421
+ export function defineWeaveAuth(tag = 'weave-auth') {
422
+ const registry = globalThis.customElements;
423
+ if (registry && !registry.get(tag))
424
+ registry.define(tag, WeaveAuthElement);
425
+ }
426
+ defineWeaveAuth();
427
+ //# sourceMappingURL=weave-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weave-auth.js","sourceRoot":"","sources":["../../src/elements/weave-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @module account-store
3
+ * The accounts that live somewhere — in a folder, or in this browser.
4
+ *
5
+ * A folder is a disk, not a person. Several people can keep accounts in one, and
6
+ * one person can keep several: work and personal, or a spare for testing. So the
7
+ * folder holds a list of who has an account in it, and a subtree per account.
8
+ *
9
+ * ```
10
+ * <folder>/
11
+ * accounts.json name, DID and id of each account
12
+ * accounts/<id>/account.json that account's keys, locked
13
+ * accounts/<id>/stores/... that account's spaces
14
+ * ```
15
+ *
16
+ * **The list is readable without unlocking anything**, which it has to be — you
17
+ * cannot offer someone a choice of accounts without knowing their names. So
18
+ * whoever holds the folder can see how many accounts are in it and what they
19
+ * are called. What they cannot do is open one.
20
+ *
21
+ * A browser with no folder keeps the same shape in IndexedDB, so the app above
22
+ * has one model rather than two.
23
+ */
24
+ import type { DirectoryHandleLike } from '../storage/folder-adapter.js';
25
+ import type { AccountVault } from './account-vault.js';
26
+ /** What can be known about an account without unlocking it */
27
+ export interface AccountSummary {
28
+ /** Stable, random, and the name of this account's subtree */
29
+ readonly id: string;
30
+ /** What the person called it. A label — never part of any key. */
31
+ readonly name: string;
32
+ readonly did: string;
33
+ readonly createdAt: string;
34
+ /**
35
+ * Where this account's spaces live, relative to the store root.
36
+ *
37
+ * Carried rather than computed so that an account written before folders
38
+ * held more than one keeps its data exactly where it already is, instead of
39
+ * needing every file moved.
40
+ */
41
+ readonly dataPath: string;
42
+ readonly lastUsedAt?: string;
43
+ }
44
+ export interface AccountStore {
45
+ readonly kind: 'folder' | 'browser';
46
+ /**
47
+ * Every account here, most recently used first.
48
+ *
49
+ * At most one entry per identity. Two rows for one DID is always a mistake —
50
+ * they would appear as separate accounts in a picker while being the same
51
+ * person — so a duplicate is collapsed onto the most recently used.
52
+ */
53
+ list(): Promise<ReadonlyArray<AccountSummary>>;
54
+ /** One account's locked keys */
55
+ read(id: string): Promise<AccountVault | null>;
56
+ /** Adds or replaces an account */
57
+ write(summary: AccountSummary, vault: AccountVault): Promise<void>;
58
+ /** Forgets an account, and everything it owns */
59
+ remove(id: string): Promise<void>;
60
+ }
61
+ /** Where a brand new account keeps its spaces. */
62
+ export declare function accountDataPath(id: string): string;
63
+ /** A short, stable, filename-safe id for a new account. */
64
+ export declare function newAccountId(): string;
65
+ /**
66
+ * Whether an id has the shape {@link newAccountId} gives one.
67
+ *
68
+ * An id names a directory, and `remove` deletes that directory with everything
69
+ * in it. The list it comes from is a plain file in a folder that may be synced
70
+ * or shared, so an id is checked before it is trusted with a path.
71
+ */
72
+ export declare function isAccountId(id: unknown): id is string;
73
+ /**
74
+ * Opens the accounts kept in a folder.
75
+ *
76
+ * @param dir The data folder
77
+ * @returns A store over it
78
+ */
79
+ export declare function createFolderAccountStore(dir: DirectoryHandleLike): AccountStore;
80
+ /**
81
+ * Opens the accounts kept in this browser, for when there is no folder.
82
+ *
83
+ * Same shape as a folder store, so nothing above has to know which it got —
84
+ * the difference is only that no other origin can read this one.
85
+ *
86
+ * @param dbName Overridable for tests
87
+ * @returns A store over this origin's database
88
+ */
89
+ export declare function createBrowserAccountStore(dbName?: string): Promise<AccountStore>;
90
+ /**
91
+ * Finds the account in a folder that predates the list, so it can join it.
92
+ *
93
+ * Its data stays exactly where it is. Moving it would mean copying every file
94
+ * by hand — the File System Access API cannot rename across directories — for
95
+ * no benefit, so the summary records where the spaces already live instead.
96
+ *
97
+ * @param dir The data folder
98
+ * @param existing Accounts already listed, so one is not adopted twice
99
+ * @returns What to write into the list, or null when there is nothing to adopt
100
+ */
101
+ export declare function adoptLegacyFolderAccount(dir: DirectoryHandleLike, existing: ReadonlyArray<AccountSummary>): Promise<{
102
+ summary: AccountSummary;
103
+ vault: AccountVault;
104
+ } | null>;
105
+ /**
106
+ * Lists a folder's accounts, adopting a pre-list one if it finds it.
107
+ *
108
+ * @param dir The data folder
109
+ * @param store The store over it
110
+ * @returns Every account, including one just adopted
111
+ */
112
+ export declare function listFolderAccounts(dir: DirectoryHandleLike, store: AccountStore): Promise<ReadonlyArray<AccountSummary>>;
113
+ //# sourceMappingURL=account-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-store.d.ts","sourceRoot":"","sources":["../../src/identity/account-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC;;;;;;OAMG;IACH,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/C,gCAAgC;IAChC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,kCAAkC;IAClC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,iDAAiD;IACjD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAQD,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM,CAErD;AAgED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,GAAG,YAAY,CAiF/E;AA+CD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B/F;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,mBAAmB,EACxB,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,GACtC,OAAO,CAAC;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,CAAC,CAoBlE;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAOxC"}