@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,500 @@
1
+ /**
2
+ * @module space/roles
3
+ * Who may do what in a space: its roles, its members, its invites, and the
4
+ * history of changes to them — replayed the same way on every peer.
5
+ *
6
+ * This module knows people and permissions. It knows nothing about polls or
7
+ * todos: a collection's rules name a permission (`can:moderate`), and this
8
+ * module answers one question about it — *does this account hold that
9
+ * permission here, as of this point in the space's history?*
10
+ *
11
+ * **Roles.** A role is a name, a rank and a list of permissions. Permissions
12
+ * are plain strings: three the protocol checks itself (`manage`, `invite`,
13
+ * `define`) and whatever the collections in the space declare
14
+ * (`app.poll/moderate`). A `*` in a role's permission matches any run of
15
+ * characters, so `*` alone is every permission.
16
+ *
17
+ * **Rank.** You may change people and roles ranked below you, and give out
18
+ * roles up to your own rank. Two people at the same rank can never remove each
19
+ * other — only themselves.
20
+ *
21
+ * **The access history.** Every change to a role, a member, an invite, a
22
+ * revoked note or a collection definition is a record whose `seen` names the
23
+ * latest changes its author knew of. That makes a small graph. Replaying it:
24
+ *
25
+ * 1. A change comes after everything it saw.
26
+ * 2. Changes that did not see each other go in this order: ones that take
27
+ * something away first — counting everything on the way to one, so a
28
+ * removal that also saw something else still comes first — then the
29
+ * author with the higher rank, then the lower id.
30
+ * 3. A change counts only if its author had the power — both as of what they
31
+ * had seen, and at its turn in the replay. Of two changes to the same thing
32
+ * that did not see each other, the first in the replay wins.
33
+ *
34
+ * Everything here is pure and synchronous: the runtime checks signatures,
35
+ * opens bodies and verifies invite signatures, and hands over plain events.
36
+ */
37
+ /** The permissions the protocol checks itself. Every other one belongs to a collection. */
38
+ export const MANAGE = 'manage';
39
+ export const INVITE = 'invite';
40
+ export const DEFINE = 'define';
41
+ export const ROLE_COLLECTION = 'sys.role';
42
+ export const MEMBER_COLLECTION = 'sys.member';
43
+ export const INVITE_COLLECTION = 'sys.invite';
44
+ export const REVOKE_COLLECTION = 'sys.revoke';
45
+ /** Collection definitions are part of the access history too: they decide what a rule asks for */
46
+ export const DEFINITION_COLLECTION = 'sys.collection';
47
+ /** Every collection whose records are part of the access history */
48
+ export const ACCESS_COLLECTIONS = new Set([
49
+ ROLE_COLLECTION,
50
+ MEMBER_COLLECTION,
51
+ INVITE_COLLECTION,
52
+ REVOKE_COLLECTION,
53
+ DEFINITION_COLLECTION,
54
+ ]);
55
+ export const ROLE_NAME_PATTERN = /^[a-z0-9][a-z0-9._-]{0,39}$/;
56
+ /** Why a role is malformed, or null */
57
+ export function checkRole(role) {
58
+ const r = role;
59
+ if (!r || typeof r !== 'object')
60
+ return 'A role must be an object';
61
+ if (typeof r.name !== 'string' || !ROLE_NAME_PATTERN.test(r.name))
62
+ return 'A role name is 1–40 characters of a–z, 0–9 and . _ -';
63
+ if (r.title !== undefined && (typeof r.title !== 'string' || r.title.length > 80))
64
+ return 'A role title is text of at most 80 characters';
65
+ if (typeof r.rank !== 'number' || !Number.isFinite(r.rank))
66
+ return 'A role rank must be a number';
67
+ if (!Array.isArray(r.permissions) || !r.permissions.every((p) => typeof p === 'string' && p.length > 0 && p.length <= 200)) {
68
+ return 'A role\'s permissions must be a list of names';
69
+ }
70
+ return null;
71
+ }
72
+ /** Whether a role's permission (which may hold `*`) matches a permission */
73
+ export function permissionMatches(pattern, permission) {
74
+ if (pattern === permission || pattern === '*')
75
+ return true;
76
+ if (!pattern.includes('*'))
77
+ return false;
78
+ const regex = new RegExp(`^${pattern.split('*').map((part) => part.replace(/[.+?^${}()|[\]\\/]/g, '\\$&')).join('.*')}$`);
79
+ return regex.test(permission);
80
+ }
81
+ /** Whether a role holds a permission */
82
+ export function roleHolds(role, permission) {
83
+ return !!role && role.permissions.some((pattern) => permissionMatches(pattern, permission));
84
+ }
85
+ /**
86
+ * Whether someone holding `granted` may hand out `permission`: one of theirs
87
+ * must cover it. A `*` in theirs matches anything, including a `*`.
88
+ */
89
+ function covers(granted, permission) {
90
+ return granted.some((pattern) => permissionMatches(pattern, permission));
91
+ }
92
+ /** A role's standing as rank; below everyone when there is none */
93
+ const rankOf = (role) => (role ? role.rank : -Infinity);
94
+ function startState(genesis) {
95
+ return {
96
+ roles: new Map(genesis.roles.map((role) => [role.name, role])),
97
+ members: new Map([[genesis.creator, genesis.creatorRole]]),
98
+ invites: new Map(),
99
+ definitions: new Map(),
100
+ };
101
+ }
102
+ const copyState = (state) => ({
103
+ roles: new Map(state.roles),
104
+ members: new Map(state.members),
105
+ invites: new Map(state.invites),
106
+ definitions: new Map(state.definitions),
107
+ });
108
+ function roleOf(state, did) {
109
+ const name = state.members.get(did);
110
+ return name === undefined ? null : (state.roles.get(name) ?? null);
111
+ }
112
+ /** Whether an account holds a permission in a state */
113
+ export function holds(state, did, permission) {
114
+ return roleHolds(roleOf(state, did), permission);
115
+ }
116
+ /** The role an account holds in a state, or null */
117
+ export function standing(state, did) {
118
+ return roleOf(state, did);
119
+ }
120
+ /** Whether a change takes something away — those go first among changes that did not see each other */
121
+ function takesAway(event, state) {
122
+ switch (event.kind) {
123
+ case 'revoke':
124
+ return true;
125
+ case 'invite':
126
+ return !event.open;
127
+ case 'member': {
128
+ if (event.role === null)
129
+ return true;
130
+ const before = roleOf(state, event.did);
131
+ const after = state.roles.get(event.role) ?? null;
132
+ return !!before && rankOf(after) < before.rank;
133
+ }
134
+ case 'role': {
135
+ const before = state.roles.get(event.name);
136
+ if (!before)
137
+ return false;
138
+ if (event.role === null)
139
+ return true;
140
+ return event.role.rank < before.rank || before.permissions.some((p) => !event.role.permissions.includes(p));
141
+ }
142
+ case 'definition':
143
+ return false;
144
+ }
145
+ }
146
+ /**
147
+ * Whether a change could take something away, judged from the change alone —
148
+ * for changes not yet placed, whose effect depends on a state not reached yet.
149
+ * Changing someone else's role, or any role, might lower it.
150
+ */
151
+ function mayTakeAway(event) {
152
+ switch (event.kind) {
153
+ case 'revoke':
154
+ return true;
155
+ case 'invite':
156
+ return !event.open;
157
+ case 'member':
158
+ return event.role === null || (event.root !== event.did && event.viaInvite === undefined);
159
+ case 'role':
160
+ return true;
161
+ case 'definition':
162
+ return false;
163
+ }
164
+ }
165
+ /**
166
+ * Why a change is not allowed in a state, or null when it is. The one place
167
+ * the rank rule lives.
168
+ */
169
+ function refusal(event, state) {
170
+ const author = roleOf(state, event.root);
171
+ switch (event.kind) {
172
+ case 'role': {
173
+ if (!roleHolds(author, MANAGE))
174
+ return 'Its author may not manage roles';
175
+ const existing = state.roles.get(event.name);
176
+ if (existing && existing.rank >= author.rank)
177
+ return 'Its author may only change roles ranked below their own';
178
+ if (!event.role)
179
+ return existing ? null : 'There is no such role to remove';
180
+ if (event.role.rank >= author.rank)
181
+ return 'Its author may only make roles ranked below their own';
182
+ const missing = event.role.permissions.find((p) => !covers(author.permissions, p));
183
+ return missing ? `Its author cannot give a permission they do not hold (${missing})` : null;
184
+ }
185
+ case 'member': {
186
+ const current = roleOf(state, event.did);
187
+ // Joining with an invite: your own record, for the invite's role, while not a member.
188
+ if (event.viaInvite !== undefined) {
189
+ const invite = state.invites.get(event.viaInvite);
190
+ if (event.root !== event.did)
191
+ return 'Only the person joining can use an invite for themselves';
192
+ if (!invite?.open)
193
+ return 'The invite is not open';
194
+ if (invite.role !== event.role)
195
+ return 'The invite is for another role';
196
+ if (current)
197
+ return 'Already a member';
198
+ return state.roles.has(invite.role) ? null : 'The invite\'s role no longer exists';
199
+ }
200
+ // Leaving: anyone may remove themselves.
201
+ if (event.root === event.did && event.role === null)
202
+ return current ? null : 'Not a member';
203
+ if (!roleHolds(author, MANAGE))
204
+ return 'Its author may not manage members';
205
+ if (current && current.rank >= author.rank)
206
+ return 'Its author may only change people ranked below them';
207
+ if (event.role === null)
208
+ return current ? null : 'Not a member';
209
+ const next = state.roles.get(event.role);
210
+ if (!next)
211
+ return `There is no role "${event.role}"`;
212
+ return next.rank > author.rank ? 'Its author may only give roles up to their own rank' : null;
213
+ }
214
+ case 'invite': {
215
+ if (!roleHolds(author, INVITE))
216
+ return 'Its author may not make invites';
217
+ const existing = state.invites.get(event.inviteKey);
218
+ if (existing) {
219
+ const was = state.roles.get(existing.role);
220
+ if (was && was.rank > author.rank)
221
+ return 'Its author may only change invites up to their own rank';
222
+ }
223
+ if (!event.open)
224
+ return existing ? null : 'There is no such invite to close';
225
+ const role = state.roles.get(event.role);
226
+ if (!role)
227
+ return `There is no role "${event.role}"`;
228
+ return role.rank > author.rank ? 'Its author may only invite up to their own rank' : null;
229
+ }
230
+ case 'revoke':
231
+ return event.root === event.issuer ? null : 'Only whoever signed a note may revoke it';
232
+ case 'definition': {
233
+ const existing = state.definitions.get(event.name);
234
+ if (!existing)
235
+ return roleHolds(author, DEFINE) ? null : 'Its author may not define collections';
236
+ // Changing one: whoever first defined it, while a member, or anyone who manages the space.
237
+ if (roleHolds(author, MANAGE))
238
+ return null;
239
+ return author && existing.definedBy === event.root ? null : 'Only whoever defined it, or someone who manages the space, may change it';
240
+ }
241
+ }
242
+ }
243
+ /** The people whose standing a change may lower — for keep lists */
244
+ function affected(event, state) {
245
+ if (event.kind === 'member')
246
+ return [event.did];
247
+ if (event.kind === 'role')
248
+ return [...state.members].filter(([, role]) => role === event.name).map(([did]) => did);
249
+ return [];
250
+ }
251
+ function apply(event, state) {
252
+ switch (event.kind) {
253
+ case 'role':
254
+ if (event.role)
255
+ state.roles.set(event.name, event.role);
256
+ else
257
+ state.roles.delete(event.name);
258
+ return;
259
+ case 'member':
260
+ if (event.role === null)
261
+ state.members.delete(event.did);
262
+ else
263
+ state.members.set(event.did, event.role);
264
+ return;
265
+ case 'invite':
266
+ state.invites.set(event.inviteKey, { role: event.role, open: event.open, event: event.id });
267
+ return;
268
+ case 'revoke':
269
+ return;
270
+ case 'definition': {
271
+ if (event.deleted) {
272
+ state.definitions.delete(event.name);
273
+ return;
274
+ }
275
+ const definedBy = state.definitions.get(event.name)?.definedBy ?? event.root;
276
+ state.definitions.set(event.name, { event: event.id, definedBy });
277
+ return;
278
+ }
279
+ }
280
+ }
281
+ /**
282
+ * Replays a space's access history.
283
+ * @param genesis What the space started with
284
+ * @param events Every change held, in any order; duplicates are ignored
285
+ */
286
+ export function replayAccess(genesis, events) {
287
+ const byId = new Map();
288
+ for (const event of events)
289
+ if (!byId.has(event.id))
290
+ byId.set(event.id, event);
291
+ // A change waits until everything it saw is here — and so does anything that saw it.
292
+ const waiting = new Set();
293
+ const isKnown = (id) => id === genesis.id || byId.has(id);
294
+ let changed = true;
295
+ while (changed) {
296
+ changed = false;
297
+ for (const event of byId.values()) {
298
+ if (waiting.has(event.id))
299
+ continue;
300
+ if (event.seen.some((parent) => parent === event.id || !isKnown(parent) || waiting.has(parent))) {
301
+ waiting.add(event.id);
302
+ changed = true;
303
+ }
304
+ }
305
+ }
306
+ // A cycle can only be forged — ids are hashes of what they saw — but must not hang the replay.
307
+ const placeable = [...byId.values()].filter((event) => !waiting.has(event.id));
308
+ const ancestorCache = new Map();
309
+ const ancestors = (id) => {
310
+ const cached = ancestorCache.get(id);
311
+ if (cached)
312
+ return cached;
313
+ const result = new Set();
314
+ const stack = [...(byId.get(id)?.seen ?? [])];
315
+ while (stack.length > 0) {
316
+ const next = stack.pop();
317
+ if (result.has(next) || next === genesis.id)
318
+ continue;
319
+ result.add(next);
320
+ stack.push(...(byId.get(next)?.seen ?? []));
321
+ }
322
+ ancestorCache.set(id, result);
323
+ return result;
324
+ };
325
+ // Kahn's order, choosing among the ready changes by the tie-break.
326
+ const children = new Map();
327
+ const pending = new Map();
328
+ for (const event of placeable) {
329
+ const parents = [...new Set(event.seen.filter((p) => p !== genesis.id))];
330
+ pending.set(event.id, parents.length);
331
+ for (const parent of parents)
332
+ children.set(parent, [...(children.get(parent) ?? []), event.id]);
333
+ }
334
+ const ready = new Set(placeable.filter((event) => pending.get(event.id) === 0).map((event) => event.id));
335
+ const state = startState(genesis);
336
+ const statuses = new Map();
337
+ const order = [];
338
+ const appliedByKey = new Map();
339
+ const reductions = [];
340
+ const revokes = new Map();
341
+ const stateAtCache = new Map();
342
+ const stateAt = (seen) => {
343
+ const cacheKey = [...new Set(seen)].sort().join(',');
344
+ const cached = stateAtCache.get(cacheKey);
345
+ if (cached)
346
+ return cached;
347
+ const cut = new Set();
348
+ for (const id of seen) {
349
+ if (id === genesis.id)
350
+ continue;
351
+ cut.add(id);
352
+ for (const ancestor of ancestors(id))
353
+ cut.add(ancestor);
354
+ }
355
+ const folded = startState(genesis);
356
+ for (const id of order)
357
+ if (cut.has(id))
358
+ apply(byId.get(id), folded);
359
+ stateAtCache.set(cacheKey, folded);
360
+ return folded;
361
+ };
362
+ // What a change leads to: itself and everything that saw it, directly or not.
363
+ const descendantCache = new Map();
364
+ const leadsTo = (id) => {
365
+ const cached = descendantCache.get(id);
366
+ if (cached)
367
+ return cached;
368
+ const found = new Set([id]);
369
+ const stack = [id];
370
+ while (stack.length > 0) {
371
+ for (const child of children.get(stack.pop()) ?? []) {
372
+ if (!found.has(child)) {
373
+ found.add(child);
374
+ stack.push(child);
375
+ }
376
+ }
377
+ }
378
+ const result = [...found].map((other) => byId.get(other));
379
+ descendantCache.set(id, result);
380
+ return result;
381
+ };
382
+ /**
383
+ * The order among changes ready to be placed. What matters is not only the
384
+ * change itself but the strongest taking-away it leads to: a removal that
385
+ * also saw something not yet placed must still come before a change it had
386
+ * not seen — so everything on its way gets its priority. Then: taking away
387
+ * before giving, the higher-ranked author, the lower id.
388
+ */
389
+ const priority = (event) => {
390
+ let strongest = Infinity;
391
+ for (const step of leadsTo(event.id)) {
392
+ if (step === event ? takesAway(step, state) || mayTakeAway(step) : mayTakeAway(step)) {
393
+ strongest = Math.min(strongest, -rankOf(roleOf(state, step.root)));
394
+ }
395
+ }
396
+ return [strongest, takesAway(event, state) ? 0 : 1, -rankOf(roleOf(state, event.root)), event.id];
397
+ };
398
+ const comesFirst = (a, b) => a[0] !== b[0] ? a[0] < b[0] : a[1] !== b[1] ? a[1] < b[1] : a[2] !== b[2] ? a[2] < b[2] : a[3] < b[3];
399
+ while (ready.size > 0) {
400
+ let best = null;
401
+ let bestKey = null;
402
+ for (const id of ready) {
403
+ const event = byId.get(id);
404
+ const key = priority(event);
405
+ if (!bestKey || comesFirst(key, bestKey)) {
406
+ best = event;
407
+ bestKey = key;
408
+ }
409
+ }
410
+ const event = best;
411
+ ready.delete(event.id);
412
+ for (const child of children.get(event.id) ?? []) {
413
+ const left = pending.get(child) - 1;
414
+ pending.set(child, left);
415
+ if (left === 0)
416
+ ready.add(child);
417
+ }
418
+ // Of two changes to one thing that did not see each other, the first in the replay stands.
419
+ const rival = (appliedByKey.get(event.key) ?? []).find((other) => !ancestors(event.id).has(other));
420
+ const reason = (rival ? 'A change to the same thing that it had not seen came first' : null) ??
421
+ // Its author had to have the power as of what they saw…
422
+ refusal(event, stateAt(event.seen)) ??
423
+ // …and still have it at its turn.
424
+ refusal(event, state);
425
+ if (reason) {
426
+ statuses.set(event.id, { status: 'dropped', reason });
427
+ continue;
428
+ }
429
+ const who = affected(event, state);
430
+ const before = who.map((did) => roleOf(state, did));
431
+ apply(event, state);
432
+ who.forEach((did, i) => reductions.push({ event: event.id, did, before: before[i], after: roleOf(state, did) }));
433
+ if (event.kind === 'revoke' && !revokes.has(event.note))
434
+ revokes.set(event.note, { event: event.id, keep: new Set(event.keep) });
435
+ statuses.set(event.id, { status: 'applied', index: order.length });
436
+ order.push(event.id);
437
+ appliedByKey.set(event.key, [...(appliedByKey.get(event.key) ?? []), event.id]);
438
+ }
439
+ for (const id of waiting)
440
+ statuses.set(id, { status: 'waiting' });
441
+ const keepOf = new Map(order.map((id) => [id, new Set(byId.get(id).keep)]));
442
+ const heads = () => {
443
+ const parents = new Set();
444
+ for (const event of placeable)
445
+ for (const parent of event.seen)
446
+ parents.add(parent);
447
+ return placeable
448
+ .map((event) => event.id)
449
+ .filter((id) => !parents.has(id))
450
+ .sort();
451
+ };
452
+ return Object.freeze({
453
+ current: state,
454
+ status: (id) => statuses.get(id) ?? null,
455
+ heads,
456
+ at(seen) {
457
+ return seen.every((id) => id === genesis.id || (byId.has(id) && !waiting.has(id))) ? stateAt(seen) : null;
458
+ },
459
+ judge(record, needs) {
460
+ if (!seen(record.seen))
461
+ return { ok: false, reason: 'Access changes it depends on have not arrived yet', later: true };
462
+ const revoked = record.note ? revokes.get(record.note) : undefined;
463
+ if (revoked && !revoked.keep.has(record.id))
464
+ return { ok: false, reason: 'The note it was written under was revoked' };
465
+ const cutState = stateAt(record.seen);
466
+ if (!needs(roleOf(cutState, record.root), cutState)) {
467
+ return { ok: false, reason: 'Its author was not allowed to, as of what it had seen' };
468
+ }
469
+ // A change it had not seen, that took this power away, stands unless it kept the record.
470
+ const cut = new Set();
471
+ for (const id of record.seen) {
472
+ cut.add(id);
473
+ for (const ancestor of ancestors(id))
474
+ cut.add(ancestor);
475
+ }
476
+ for (const reduction of reductions) {
477
+ if (reduction.did !== record.root || cut.has(reduction.event))
478
+ continue;
479
+ if (keepOf.get(reduction.event)?.has(record.id))
480
+ continue;
481
+ if (needs(reduction.before, cutState) && !needs(reduction.after, cutState)) {
482
+ return { ok: false, reason: 'Its author\'s access was taken away' };
483
+ }
484
+ }
485
+ return { ok: true };
486
+ },
487
+ revoked: (note) => revokes.get(note) ?? null,
488
+ named: (did) => did === genesis.creator || [...byId.values()].some((event) => event.kind === 'member' && event.did === did && event.role !== null),
489
+ knownInvite: (key) => [...byId.values()].some((event) => event.kind === 'invite' && event.inviteKey === key),
490
+ });
491
+ function seen(ids) {
492
+ return ids.every((id) => id === genesis.id || (byId.has(id) && !waiting.has(id)));
493
+ }
494
+ }
495
+ /** Freezes a state for handing out */
496
+ export function snapshot(state) {
497
+ const copy = copyState(state);
498
+ return Object.freeze(copy);
499
+ }
500
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/space/roles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @module space-access
3
+ * What a space is, fixed at creation — and the keys around it that anyone can
4
+ * check without holding a secret.
5
+ *
6
+ * The space's **genesis** names its creator, its visibility, the roles it
7
+ * starts with and which of them the creator holds, and — for a private space —
8
+ * the public half of its read key. The space id is the genesis's hash. A space
9
+ * someone hands you — in an invite, from a host — either hashes to its id or
10
+ * is refused, so nobody can quietly change who started it or with which roles.
11
+ * Everything after that — new roles, members, invites — is records in the
12
+ * space's access history (`space/roles.ts`).
13
+ *
14
+ * A private space's **read key pair** is derived from its AES key, so everyone
15
+ * who can read already has it. A node checks a connecting reader against its
16
+ * public half — without the space key.
17
+ *
18
+ * An **invite link** carries a random secret. Its public half is written into
19
+ * the space as an invite record, for one role. Whoever holds the secret joins
20
+ * by writing their own member record, signed a second time by the secret over
21
+ * the space and their identity — so the signature cannot be moved to anyone
22
+ * else, or another space. Deleting the invite record closes the link.
23
+ */
24
+ import type { CryptoProvider, Space } from '../types.js';
25
+ import type { SpaceKey } from '../privacy/space-encryption.js';
26
+ /** A key pair belonging to a space, and its public half as a did:key */
27
+ export interface SpaceKeyPair {
28
+ readonly did: string;
29
+ readonly privateKey: CryptoKey;
30
+ }
31
+ /** What a space is, fixed at creation. Its hash is the space id. */
32
+ export interface SpaceGenesis {
33
+ readonly v: 2;
34
+ readonly creator: string;
35
+ readonly visibility: Space['visibility'];
36
+ readonly roles: Space['roles'];
37
+ readonly creatorRole: string;
38
+ readonly createdAt: string;
39
+ readonly nonce: string;
40
+ readonly readKey?: string;
41
+ readonly encryptionKeyId?: string;
42
+ }
43
+ /** A fresh secret for an invite link */
44
+ export declare function generateInviteSecret(): Uint8Array;
45
+ /** The key pair an invite link's secret stands for */
46
+ export declare function deriveInviteKey(secret: Uint8Array, provider: CryptoProvider): Promise<SpaceKeyPair>;
47
+ /** The read key pair of a private space, from its AES key */
48
+ export declare function deriveReadKey(spaceKey: SpaceKey, provider: CryptoProvider): Promise<SpaceKeyPair>;
49
+ /**
50
+ * What the read key pair is made from — one way from the space key, so
51
+ * holding it proves you may read without letting you decrypt anything. It is
52
+ * what a pass hands a node that carries a space it cannot read (`space/pass.ts`).
53
+ */
54
+ export declare function deriveReadSeed(spaceKey: SpaceKey): Promise<Uint8Array>;
55
+ /** The read key pair, from its seed */
56
+ export declare function readKeyFromSeed(seed: Uint8Array, provider: CryptoProvider): Promise<SpaceKeyPair>;
57
+ /** The fields of a space its id is made from */
58
+ export declare function spaceGenesis(space: Omit<Space, 'id' | 'name'>): SpaceGenesis;
59
+ /** The id a space with this genesis has */
60
+ export declare function spaceIdOf(genesis: SpaceGenesis): Promise<string>;
61
+ /** Why a set of starting roles cannot found a space, or null */
62
+ export declare function checkStartingRoles(roles: unknown, creatorRole: unknown): string | null;
63
+ /**
64
+ * Why a space someone handed over cannot be trusted, or null when it can:
65
+ * its id must be its genesis's hash, and it must have the keys its kind needs.
66
+ */
67
+ export declare function checkSpace(space: Space): Promise<string | null>;
68
+ /** The key of an account's member record */
69
+ export declare const memberKey: (did: string) => Promise<string>;
70
+ /** The key of an invite's record, from its public key */
71
+ export declare const inviteKey: (inviteDid: string) => Promise<string>;
72
+ /** The key of the record revoking a note, from the note's CID */
73
+ export declare const revokeKey: (noteCid: string) => Promise<string>;
74
+ /** The key of a role's record */
75
+ export declare const roleKey: (name: string) => string;
76
+ /** An invite key's signature, letting `did` join `spaceId` — what a member record carries when it joins by invite */
77
+ export declare function signInvite(spaceId: string, did: string, invite: SpaceKeyPair, provider: CryptoProvider): Promise<string>;
78
+ /** Whether an invite key signed for `did` to join `spaceId` */
79
+ export declare function verifyInvite(spaceId: string, did: string, inviteDid: string, signature: string, provider: CryptoProvider): Promise<boolean>;
80
+ //# sourceMappingURL=space-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-access.d.ts","sourceRoot":"","sources":["../../src/space/space-access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAU/D,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;CAChC;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wCAAwC;AACxC,wBAAgB,oBAAoB,IAAI,UAAU,CAEjD;AAuBD,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAEnG;AAED,6DAA6D;AAC7D,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAEvG;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAG5E;AAED,uCAAuC;AACvC,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAIvG;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,YAAY,CAY5E;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAStF;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWrE;AAYD,4CAA4C;AAC5C,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,oBAA2B,CAAC;AACjE,yDAAyD;AACzD,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,oBAAiC,CAAC;AAC7E,iEAAiE;AACjE,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,oBAA+B,CAAC;AACzE,iCAAiC;AACjC,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,WAAmB,CAAC;AAIxD,qHAAqH;AACrH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9H;AAED,+DAA+D;AAC/D,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAOjJ"}