@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.
- package/README.md +1106 -0
- package/dist/elements/auth-styles.d.ts +18 -0
- package/dist/elements/auth-styles.d.ts.map +1 -0
- package/dist/elements/auth-styles.js +150 -0
- package/dist/elements/auth-styles.js.map +1 -0
- package/dist/elements/dom.d.ts +28 -0
- package/dist/elements/dom.d.ts.map +1 -0
- package/dist/elements/dom.js +74 -0
- package/dist/elements/dom.js.map +1 -0
- package/dist/elements/index.d.ts +13 -0
- package/dist/elements/index.d.ts.map +1 -0
- package/dist/elements/index.js +11 -0
- package/dist/elements/index.js.map +1 -0
- package/dist/elements/weave-auth.d.ts +52 -0
- package/dist/elements/weave-auth.d.ts.map +1 -0
- package/dist/elements/weave-auth.js +427 -0
- package/dist/elements/weave-auth.js.map +1 -0
- package/dist/identity/account-store.d.ts +113 -0
- package/dist/identity/account-store.d.ts.map +1 -0
- package/dist/identity/account-store.js +305 -0
- package/dist/identity/account-store.js.map +1 -0
- package/dist/identity/account-vault.d.ts +199 -0
- package/dist/identity/account-vault.d.ts.map +1 -0
- package/dist/identity/account-vault.js +251 -0
- package/dist/identity/account-vault.js.map +1 -0
- package/dist/identity/agent-note.d.ts +19 -0
- package/dist/identity/agent-note.d.ts.map +1 -0
- package/dist/identity/agent-note.js +29 -0
- package/dist/identity/agent-note.js.map +1 -0
- package/dist/identity/crypto-p256.d.ts +7 -0
- package/dist/identity/crypto-p256.d.ts.map +1 -0
- package/dist/identity/crypto-p256.js +84 -0
- package/dist/identity/crypto-p256.js.map +1 -0
- package/dist/identity/device-key.d.ts +60 -0
- package/dist/identity/device-key.d.ts.map +1 -0
- package/dist/identity/device-key.js +103 -0
- package/dist/identity/device-key.js.map +1 -0
- package/dist/identity/did.d.ts +22 -0
- package/dist/identity/did.d.ts.map +1 -0
- package/dist/identity/did.js +37 -0
- package/dist/identity/did.js.map +1 -0
- package/dist/identity/folder-account.d.ts +65 -0
- package/dist/identity/folder-account.d.ts.map +1 -0
- package/dist/identity/folder-account.js +115 -0
- package/dist/identity/folder-account.js.map +1 -0
- package/dist/identity/identity-manager.d.ts +36 -0
- package/dist/identity/identity-manager.d.ts.map +1 -0
- package/dist/identity/identity-manager.js +115 -0
- package/dist/identity/identity-manager.js.map +1 -0
- package/dist/identity/index.d.ts +10 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +10 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/keys.d.ts +24 -0
- package/dist/identity/keys.d.ts.map +1 -0
- package/dist/identity/keys.js +38 -0
- package/dist/identity/keys.js.map +1 -0
- package/dist/identity/pairing.d.ts +83 -0
- package/dist/identity/pairing.d.ts.map +1 -0
- package/dist/identity/pairing.js +120 -0
- package/dist/identity/pairing.js.map +1 -0
- package/dist/identity/passkey-diagnostics.d.ts +54 -0
- package/dist/identity/passkey-diagnostics.d.ts.map +1 -0
- package/dist/identity/passkey-diagnostics.js +178 -0
- package/dist/identity/passkey-diagnostics.js.map +1 -0
- package/dist/identity/recovery-code.d.ts +50 -0
- package/dist/identity/recovery-code.d.ts.map +1 -0
- package/dist/identity/recovery-code.js +116 -0
- package/dist/identity/recovery-code.js.map +1 -0
- package/dist/identity/root-signer.d.ts +59 -0
- package/dist/identity/root-signer.d.ts.map +1 -0
- package/dist/identity/root-signer.js +44 -0
- package/dist/identity/root-signer.js.map +1 -0
- package/dist/identity/ucan.d.ts +164 -0
- package/dist/identity/ucan.d.ts.map +1 -0
- package/dist/identity/ucan.js +273 -0
- package/dist/identity/ucan.js.map +1 -0
- package/dist/identity/webauthn.d.ts +87 -0
- package/dist/identity/webauthn.d.ts.map +1 -0
- package/dist/identity/webauthn.js +155 -0
- package/dist/identity/webauthn.js.map +1 -0
- package/dist/index.d.ts +116 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/index.js.map +1 -0
- package/dist/network/index.d.ts +17 -0
- package/dist/network/index.d.ts.map +1 -0
- package/dist/network/index.js +10 -0
- package/dist/network/index.js.map +1 -0
- package/dist/network/introductions.d.ts +85 -0
- package/dist/network/introductions.d.ts.map +1 -0
- package/dist/network/introductions.js +94 -0
- package/dist/network/introductions.js.map +1 -0
- package/dist/network/local-transport.d.ts +22 -0
- package/dist/network/local-transport.d.ts.map +1 -0
- package/dist/network/local-transport.js +55 -0
- package/dist/network/local-transport.js.map +1 -0
- package/dist/network/mesh.d.ts +31 -0
- package/dist/network/mesh.d.ts.map +1 -0
- package/dist/network/mesh.js +332 -0
- package/dist/network/mesh.js.map +1 -0
- package/dist/network/multi-signaling.d.ts +29 -0
- package/dist/network/multi-signaling.d.ts.map +1 -0
- package/dist/network/multi-signaling.js +125 -0
- package/dist/network/multi-signaling.js.map +1 -0
- package/dist/network/network-manager.d.ts +37 -0
- package/dist/network/network-manager.d.ts.map +1 -0
- package/dist/network/network-manager.js +64 -0
- package/dist/network/network-manager.js.map +1 -0
- package/dist/network/peer-auth.d.ts +98 -0
- package/dist/network/peer-auth.d.ts.map +1 -0
- package/dist/network/peer-auth.js +86 -0
- package/dist/network/peer-auth.js.map +1 -0
- package/dist/network/rtc-transport.d.ts +18 -0
- package/dist/network/rtc-transport.d.ts.map +1 -0
- package/dist/network/rtc-transport.js +149 -0
- package/dist/network/rtc-transport.js.map +1 -0
- package/dist/network/signaling.d.ts +40 -0
- package/dist/network/signaling.d.ts.map +1 -0
- package/dist/network/signaling.js +124 -0
- package/dist/network/signaling.js.map +1 -0
- package/dist/network/transport.d.ts +50 -0
- package/dist/network/transport.d.ts.map +1 -0
- package/dist/network/transport.js +13 -0
- package/dist/network/transport.js.map +1 -0
- package/dist/network/ws-transport.d.ts +42 -0
- package/dist/network/ws-transport.d.ts.map +1 -0
- package/dist/network/ws-transport.js +194 -0
- package/dist/network/ws-transport.js.map +1 -0
- package/dist/node/actions.d.ts +62 -0
- package/dist/node/actions.d.ts.map +1 -0
- package/dist/node/actions.js +500 -0
- package/dist/node/actions.js.map +1 -0
- package/dist/node/carrier.d.ts +85 -0
- package/dist/node/carrier.d.ts.map +1 -0
- package/dist/node/carrier.js +192 -0
- package/dist/node/carrier.js.map +1 -0
- package/dist/node/copy.d.ts +38 -0
- package/dist/node/copy.d.ts.map +1 -0
- package/dist/node/copy.js +53 -0
- package/dist/node/copy.js.map +1 -0
- package/dist/node/index.d.ts +16 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +11 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/node.d.ts +12 -0
- package/dist/node/node.d.ts.map +1 -0
- package/dist/node/node.js +872 -0
- package/dist/node/node.js.map +1 -0
- package/dist/node/space-runtime.d.ts +144 -0
- package/dist/node/space-runtime.d.ts.map +1 -0
- package/dist/node/space-runtime.js +1221 -0
- package/dist/node/space-runtime.js.map +1 -0
- package/dist/node/stores.d.ts +45 -0
- package/dist/node/stores.d.ts.map +1 -0
- package/dist/node/stores.js +31 -0
- package/dist/node/stores.js.map +1 -0
- package/dist/node/types.d.ts +508 -0
- package/dist/node/types.d.ts.map +1 -0
- package/dist/node/types.js +2 -0
- package/dist/node/types.js.map +1 -0
- package/dist/privacy/index.d.ts +4 -0
- package/dist/privacy/index.d.ts.map +1 -0
- package/dist/privacy/index.js +4 -0
- package/dist/privacy/index.js.map +1 -0
- package/dist/privacy/key-distribution.d.ts +42 -0
- package/dist/privacy/key-distribution.d.ts.map +1 -0
- package/dist/privacy/key-distribution.js +50 -0
- package/dist/privacy/key-distribution.js.map +1 -0
- package/dist/privacy/privacy-guard.d.ts +24 -0
- package/dist/privacy/privacy-guard.d.ts.map +1 -0
- package/dist/privacy/privacy-guard.js +87 -0
- package/dist/privacy/privacy-guard.js.map +1 -0
- package/dist/privacy/space-encryption.d.ts +48 -0
- package/dist/privacy/space-encryption.d.ts.map +1 -0
- package/dist/privacy/space-encryption.js +61 -0
- package/dist/privacy/space-encryption.js.map +1 -0
- package/dist/query/engine.d.ts +27 -0
- package/dist/query/engine.d.ts.map +1 -0
- package/dist/query/engine.js +84 -0
- package/dist/query/engine.js.map +1 -0
- package/dist/query/filter.d.ts +15 -0
- package/dist/query/filter.d.ts.map +1 -0
- package/dist/query/filter.js +207 -0
- package/dist/query/filter.js.map +1 -0
- package/dist/query/types.d.ts +144 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query/types.js +22 -0
- package/dist/query/types.js.map +1 -0
- package/dist/react/context.d.ts +81 -0
- package/dist/react/context.d.ts.map +1 -0
- package/dist/react/context.js +95 -0
- package/dist/react/context.js.map +1 -0
- package/dist/react/index.d.ts +40 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +36 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/use-live.d.ts +16 -0
- package/dist/react/use-live.d.ts.map +1 -0
- package/dist/react/use-live.js +55 -0
- package/dist/react/use-live.js.map +1 -0
- package/dist/react/use-query.d.ts +17 -0
- package/dist/react/use-query.d.ts.map +1 -0
- package/dist/react/use-query.js +23 -0
- package/dist/react/use-query.js.map +1 -0
- package/dist/react/use-space.d.ts +29 -0
- package/dist/react/use-space.d.ts.map +1 -0
- package/dist/react/use-space.js +48 -0
- package/dist/react/use-space.js.map +1 -0
- package/dist/react/use-spaces.d.ts +19 -0
- package/dist/react/use-spaces.d.ts.map +1 -0
- package/dist/react/use-spaces.js +55 -0
- package/dist/react/use-spaces.js.map +1 -0
- package/dist/react/use-weave-auth.d.ts +10 -0
- package/dist/react/use-weave-auth.d.ts.map +1 -0
- package/dist/react/use-weave-auth.js +15 -0
- package/dist/react/use-weave-auth.js.map +1 -0
- package/dist/react/weave-auth.d.ts +17 -0
- package/dist/react/weave-auth.d.ts.map +1 -0
- package/dist/react/weave-auth.js +38 -0
- package/dist/react/weave-auth.js.map +1 -0
- package/dist/records/describe.d.ts +38 -0
- package/dist/records/describe.d.ts.map +1 -0
- package/dist/records/describe.js +101 -0
- package/dist/records/describe.js.map +1 -0
- package/dist/records/links.d.ts +14 -0
- package/dist/records/links.d.ts.map +1 -0
- package/dist/records/links.js +25 -0
- package/dist/records/links.js.map +1 -0
- package/dist/records/rules.d.ts +59 -0
- package/dist/records/rules.d.ts.map +1 -0
- package/dist/records/rules.js +118 -0
- package/dist/records/rules.js.map +1 -0
- package/dist/records/version.d.ts +54 -0
- package/dist/records/version.d.ts.map +1 -0
- package/dist/records/version.js +70 -0
- package/dist/records/version.js.map +1 -0
- package/dist/schema/collection-def.d.ts +96 -0
- package/dist/schema/collection-def.d.ts.map +1 -0
- package/dist/schema/collection-def.js +272 -0
- package/dist/schema/collection-def.js.map +1 -0
- package/dist/schema/expression.d.ts +69 -0
- package/dist/schema/expression.d.ts.map +1 -0
- package/dist/schema/expression.js +92 -0
- package/dist/schema/expression.js.map +1 -0
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +4 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/schema-engine.d.ts +42 -0
- package/dist/schema/schema-engine.d.ts.map +1 -0
- package/dist/schema/schema-engine.js +36 -0
- package/dist/schema/schema-engine.js.map +1 -0
- package/dist/schema/signer.d.ts +27 -0
- package/dist/schema/signer.d.ts.map +1 -0
- package/dist/schema/signer.js +36 -0
- package/dist/schema/signer.js.map +1 -0
- package/dist/schemas/apps.d.ts +88 -0
- package/dist/schemas/apps.d.ts.map +1 -0
- package/dist/schemas/apps.js +168 -0
- package/dist/schemas/apps.js.map +1 -0
- package/dist/schemas/index.d.ts +410 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +208 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/screens.d.ts +67 -0
- package/dist/schemas/screens.d.ts.map +1 -0
- package/dist/schemas/screens.js +242 -0
- package/dist/schemas/screens.js.map +1 -0
- package/dist/session/agent-link.d.ts +79 -0
- package/dist/session/agent-link.d.ts.map +1 -0
- package/dist/session/agent-link.js +251 -0
- package/dist/session/agent-link.js.map +1 -0
- package/dist/session/auth.d.ts +233 -0
- package/dist/session/auth.d.ts.map +1 -0
- package/dist/session/auth.js +783 -0
- package/dist/session/auth.js.map +1 -0
- package/dist/session/connect.d.ts +211 -0
- package/dist/session/connect.d.ts.map +1 -0
- package/dist/session/connect.js +355 -0
- package/dist/session/connect.js.map +1 -0
- package/dist/session/connection.d.ts +70 -0
- package/dist/session/connection.d.ts.map +1 -0
- package/dist/session/connection.js +120 -0
- package/dist/session/connection.js.map +1 -0
- package/dist/session/credentials.d.ts +44 -0
- package/dist/session/credentials.d.ts.map +1 -0
- package/dist/session/credentials.js +60 -0
- package/dist/session/credentials.js.map +1 -0
- package/dist/session/index.d.ts +25 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +18 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/pairing.d.ts +59 -0
- package/dist/session/pairing.d.ts.map +1 -0
- package/dist/session/pairing.js +144 -0
- package/dist/session/pairing.js.map +1 -0
- package/dist/session/places.d.ts +62 -0
- package/dist/session/places.d.ts.map +1 -0
- package/dist/session/places.js +101 -0
- package/dist/session/places.js.map +1 -0
- package/dist/session/stay-signed-in.d.ts +37 -0
- package/dist/session/stay-signed-in.d.ts.map +1 -0
- package/dist/session/stay-signed-in.js +124 -0
- package/dist/session/stay-signed-in.js.map +1 -0
- package/dist/space/account-registry.d.ts +64 -0
- package/dist/space/account-registry.d.ts.map +1 -0
- package/dist/space/account-registry.js +66 -0
- package/dist/space/account-registry.js.map +1 -0
- package/dist/space/index.d.ts +3 -0
- package/dist/space/index.d.ts.map +1 -0
- package/dist/space/index.js +3 -0
- package/dist/space/index.js.map +1 -0
- package/dist/space/pass.d.ts +63 -0
- package/dist/space/pass.d.ts.map +1 -0
- package/dist/space/pass.js +54 -0
- package/dist/space/pass.js.map +1 -0
- package/dist/space/presets.d.ts +31 -0
- package/dist/space/presets.d.ts.map +1 -0
- package/dist/space/presets.js +24 -0
- package/dist/space/presets.js.map +1 -0
- package/dist/space/roles.d.ts +186 -0
- package/dist/space/roles.d.ts.map +1 -0
- package/dist/space/roles.js +500 -0
- package/dist/space/roles.js.map +1 -0
- package/dist/space/space-access.d.ts +80 -0
- package/dist/space/space-access.d.ts.map +1 -0
- package/dist/space/space-access.js +135 -0
- package/dist/space/space-access.js.map +1 -0
- package/dist/space/space-manager.d.ts +87 -0
- package/dist/space/space-manager.d.ts.map +1 -0
- package/dist/space/space-manager.js +187 -0
- package/dist/space/space-manager.js.map +1 -0
- package/dist/storage/directory-access.d.ts +78 -0
- package/dist/storage/directory-access.d.ts.map +1 -0
- package/dist/storage/directory-access.js +164 -0
- package/dist/storage/directory-access.js.map +1 -0
- package/dist/storage/encrypted-adapter.d.ts +49 -0
- package/dist/storage/encrypted-adapter.d.ts.map +1 -0
- package/dist/storage/encrypted-adapter.js +106 -0
- package/dist/storage/encrypted-adapter.js.map +1 -0
- package/dist/storage/folder-adapter.d.ts +105 -0
- package/dist/storage/folder-adapter.d.ts.map +1 -0
- package/dist/storage/folder-adapter.js +280 -0
- package/dist/storage/folder-adapter.js.map +1 -0
- package/dist/storage/folder-reconcile.d.ts +53 -0
- package/dist/storage/folder-reconcile.d.ts.map +1 -0
- package/dist/storage/folder-reconcile.js +65 -0
- package/dist/storage/folder-reconcile.js.map +1 -0
- package/dist/storage/index.d.ts +10 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +9 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/indexeddb-adapter.d.ts +12 -0
- package/dist/storage/indexeddb-adapter.d.ts.map +1 -0
- package/dist/storage/indexeddb-adapter.js +190 -0
- package/dist/storage/indexeddb-adapter.js.map +1 -0
- package/dist/storage/mst.d.ts +121 -0
- package/dist/storage/mst.d.ts.map +1 -0
- package/dist/storage/mst.js +402 -0
- package/dist/storage/mst.js.map +1 -0
- package/dist/storage/storage-provider.d.ts +85 -0
- package/dist/storage/storage-provider.d.ts.map +1 -0
- package/dist/storage/storage-provider.js +220 -0
- package/dist/storage/storage-provider.js.map +1 -0
- package/dist/sync/anti-entropy.d.ts +49 -0
- package/dist/sync/anti-entropy.d.ts.map +1 -0
- package/dist/sync/anti-entropy.js +62 -0
- package/dist/sync/anti-entropy.js.map +1 -0
- package/dist/sync/index.d.ts +4 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +4 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/sync-engine.d.ts +71 -0
- package/dist/sync/sync-engine.d.ts.map +1 -0
- package/dist/sync/sync-engine.js +309 -0
- package/dist/sync/sync-engine.js.map +1 -0
- package/dist/sync/sync-messages.d.ts +75 -0
- package/dist/sync/sync-messages.d.ts.map +1 -0
- package/dist/sync/sync-messages.js +12 -0
- package/dist/sync/sync-messages.js.map +1 -0
- package/dist/types.d.ts +243 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/encoding.d.ts +63 -0
- package/dist/utils/encoding.d.ts.map +1 -0
- package/dist/utils/encoding.js +130 -0
- package/dist/utils/encoding.js.map +1 -0
- package/dist/utils/errors.d.ts +43 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +28 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/events.d.ts +19 -0
- package/dist/utils/events.d.ts.map +1 -0
- package/dist/utils/events.js +27 -0
- package/dist/utils/events.js.map +1 -0
- package/dist/utils/hash.d.ts +23 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +49 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/validation/capability-gate.d.ts +50 -0
- package/dist/validation/capability-gate.d.ts.map +1 -0
- package/dist/validation/capability-gate.js +71 -0
- package/dist/validation/capability-gate.js.map +1 -0
- package/dist/validation/crypto-gate.d.ts +16 -0
- package/dist/validation/crypto-gate.d.ts.map +1 -0
- package/dist/validation/crypto-gate.js +37 -0
- package/dist/validation/crypto-gate.js.map +1 -0
- package/dist/validation/index.d.ts +6 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +6 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/stateful-gate.d.ts +15 -0
- package/dist/validation/stateful-gate.d.ts.map +1 -0
- package/dist/validation/stateful-gate.js +50 -0
- package/dist/validation/stateful-gate.js.map +1 -0
- package/dist/validation/structural-gate.d.ts +18 -0
- package/dist/validation/structural-gate.d.ts.map +1 -0
- package/dist/validation/structural-gate.js +54 -0
- package/dist/validation/structural-gate.js.map +1 -0
- package/dist/validation/validation-engine.d.ts +28 -0
- package/dist/validation/validation-engine.d.ts.map +1 -0
- package/dist/validation/validation-engine.js +38 -0
- package/dist/validation/validation-engine.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module space/presets
|
|
3
|
+
* Starting roles for a space — plain data, and nothing more.
|
|
4
|
+
*
|
|
5
|
+
* The protocol takes no position on what roles a space should have: it reads
|
|
6
|
+
* whatever roles a space's genesis names, and never looks at a preset's name.
|
|
7
|
+
* These are for app developers who want a sensible start. Pass one when
|
|
8
|
+
* creating a space, change it, or write your own.
|
|
9
|
+
*
|
|
10
|
+
* `*` alone is every permission. `*` + `/` + `*` is every permission a
|
|
11
|
+
* collection declares — so a moderator here can moderate whatever apps the
|
|
12
|
+
* space holds, now and later, without managing the space itself.
|
|
13
|
+
*/
|
|
14
|
+
import type { SpaceRole } from '../types.js';
|
|
15
|
+
export interface RolePreset {
|
|
16
|
+
readonly roles: ReadonlyArray<SpaceRole>;
|
|
17
|
+
/** Which of them the creator starts with */
|
|
18
|
+
readonly creatorRole: string;
|
|
19
|
+
}
|
|
20
|
+
/** Just the creator. Invites are view-only: there is no role below theirs. */
|
|
21
|
+
export declare const solo: RolePreset;
|
|
22
|
+
/** A small group working together: everyone invited can write, invite and add collections. */
|
|
23
|
+
export declare const team: RolePreset;
|
|
24
|
+
/** A community: admins run it, moderators keep order in every app, members take part. */
|
|
25
|
+
export declare const community: RolePreset;
|
|
26
|
+
export declare const rolePresets: Readonly<{
|
|
27
|
+
solo: RolePreset;
|
|
28
|
+
team: RolePreset;
|
|
29
|
+
community: RolePreset;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/space/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACzC,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,8EAA8E;AAC9E,eAAO,MAAM,IAAI,EAAE,UAGjB,CAAC;AAEH,8FAA8F;AAC9F,eAAO,MAAM,IAAI,EAAE,UAMjB,CAAC;AAEH,yFAAyF;AACzF,eAAO,MAAM,SAAS,EAAE,UAOtB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;EAA2C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Just the creator. Invites are view-only: there is no role below theirs. */
|
|
2
|
+
export const solo = Object.freeze({
|
|
3
|
+
roles: Object.freeze([{ name: 'owner', title: 'Owner', rank: 100, permissions: ['*'] }]),
|
|
4
|
+
creatorRole: 'owner',
|
|
5
|
+
});
|
|
6
|
+
/** A small group working together: everyone invited can write, invite and add collections. */
|
|
7
|
+
export const team = Object.freeze({
|
|
8
|
+
roles: Object.freeze([
|
|
9
|
+
{ name: 'owner', title: 'Owner', rank: 100, permissions: ['*'] },
|
|
10
|
+
{ name: 'editor', title: 'Editor', rank: 10, permissions: ['invite', 'define'] },
|
|
11
|
+
]),
|
|
12
|
+
creatorRole: 'owner',
|
|
13
|
+
});
|
|
14
|
+
/** A community: admins run it, moderators keep order in every app, members take part. */
|
|
15
|
+
export const community = Object.freeze({
|
|
16
|
+
roles: Object.freeze([
|
|
17
|
+
{ name: 'admin', title: 'Admin', rank: 100, permissions: ['*'] },
|
|
18
|
+
{ name: 'moderator', title: 'Moderator', rank: 50, permissions: ['invite', '*/*'] },
|
|
19
|
+
{ name: 'member', title: 'Member', rank: 0, permissions: [] },
|
|
20
|
+
]),
|
|
21
|
+
creatorRole: 'admin',
|
|
22
|
+
});
|
|
23
|
+
export const rolePresets = Object.freeze({ solo, team, community });
|
|
24
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/space/presets.ts"],"names":[],"mappings":"AAqBA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxF,WAAW,EAAE,OAAO;CACrB,CAAC,CAAC;AAEH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE;QAChE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;KACjF,CAAC;IACF,WAAW,EAAE,OAAO;CACrB,CAAC,CAAC;AAEH,yFAAyF;AACzF,MAAM,CAAC,MAAM,SAAS,GAAe,MAAM,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE;QAChE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QACnF,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;KAC9D,CAAC;IACF,WAAW,EAAE,OAAO;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
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
|
+
import type { SpaceRole } from '../types.js';
|
|
38
|
+
/** A role, as a space defines it */
|
|
39
|
+
export type Role = SpaceRole;
|
|
40
|
+
/** The permissions the protocol checks itself. Every other one belongs to a collection. */
|
|
41
|
+
export declare const MANAGE = "manage";
|
|
42
|
+
export declare const INVITE = "invite";
|
|
43
|
+
export declare const DEFINE = "define";
|
|
44
|
+
export declare const ROLE_COLLECTION = "sys.role";
|
|
45
|
+
export declare const MEMBER_COLLECTION = "sys.member";
|
|
46
|
+
export declare const INVITE_COLLECTION = "sys.invite";
|
|
47
|
+
export declare const REVOKE_COLLECTION = "sys.revoke";
|
|
48
|
+
/** Collection definitions are part of the access history too: they decide what a rule asks for */
|
|
49
|
+
export declare const DEFINITION_COLLECTION = "sys.collection";
|
|
50
|
+
/** Every collection whose records are part of the access history */
|
|
51
|
+
export declare const ACCESS_COLLECTIONS: ReadonlySet<string>;
|
|
52
|
+
export declare const ROLE_NAME_PATTERN: RegExp;
|
|
53
|
+
/** Why a role is malformed, or null */
|
|
54
|
+
export declare function checkRole(role: unknown): string | null;
|
|
55
|
+
/** Whether a role's permission (which may hold `*`) matches a permission */
|
|
56
|
+
export declare function permissionMatches(pattern: string, permission: string): boolean;
|
|
57
|
+
/** Whether a role holds a permission */
|
|
58
|
+
export declare function roleHolds(role: Role | null | undefined, permission: string): boolean;
|
|
59
|
+
interface EventBase {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
/** The record key it changes: `role:moderator`, `member:…`, `invite:…`, `revoke:…`, `collection:…` */
|
|
62
|
+
readonly key: string;
|
|
63
|
+
/** The account behind the key that signed it */
|
|
64
|
+
readonly root: string;
|
|
65
|
+
/** The latest access changes its author knew of */
|
|
66
|
+
readonly seen: ReadonlyArray<string>;
|
|
67
|
+
/** Records by the people this takes power from, that the author had seen and that stay */
|
|
68
|
+
readonly keep: ReadonlyArray<string>;
|
|
69
|
+
}
|
|
70
|
+
export type AccessEvent = EventBase & ({
|
|
71
|
+
readonly kind: 'role';
|
|
72
|
+
readonly name: string; /** Null: the role is removed */
|
|
73
|
+
readonly role: Role | null;
|
|
74
|
+
} | {
|
|
75
|
+
readonly kind: 'member';
|
|
76
|
+
readonly did: string;
|
|
77
|
+
/** Null: they are no longer a member */
|
|
78
|
+
readonly role: string | null;
|
|
79
|
+
/** The invite's public key, when the runtime checked the invite's signature on this record */
|
|
80
|
+
readonly viaInvite?: string;
|
|
81
|
+
} | {
|
|
82
|
+
readonly kind: 'invite';
|
|
83
|
+
readonly inviteKey: string;
|
|
84
|
+
readonly role: string;
|
|
85
|
+
readonly open: boolean;
|
|
86
|
+
} | {
|
|
87
|
+
readonly kind: 'revoke'; /** The note's CID */
|
|
88
|
+
readonly note: string; /** Who signed the note */
|
|
89
|
+
readonly issuer: string;
|
|
90
|
+
} | {
|
|
91
|
+
readonly kind: 'definition';
|
|
92
|
+
readonly name: string;
|
|
93
|
+
readonly deleted: boolean;
|
|
94
|
+
});
|
|
95
|
+
/** Who holds what, at one point in the history */
|
|
96
|
+
export interface AccessState {
|
|
97
|
+
readonly roles: ReadonlyMap<string, Role>;
|
|
98
|
+
/** Account DID → role name */
|
|
99
|
+
readonly members: ReadonlyMap<string, string>;
|
|
100
|
+
/** Invite public key → its role, and whether it is open */
|
|
101
|
+
readonly invites: ReadonlyMap<string, {
|
|
102
|
+
readonly role: string;
|
|
103
|
+
readonly open: boolean;
|
|
104
|
+
readonly event: string;
|
|
105
|
+
}>;
|
|
106
|
+
/** Collection name → the id of the definition in force, and who first defined it */
|
|
107
|
+
readonly definitions: ReadonlyMap<string, {
|
|
108
|
+
readonly event: string;
|
|
109
|
+
readonly definedBy: string;
|
|
110
|
+
}>;
|
|
111
|
+
}
|
|
112
|
+
/** What a space starts with, from its genesis */
|
|
113
|
+
export interface AccessGenesis {
|
|
114
|
+
/** The space id — also the id every change implicitly comes after */
|
|
115
|
+
readonly id: string;
|
|
116
|
+
readonly creator: string;
|
|
117
|
+
readonly roles: ReadonlyArray<Role>;
|
|
118
|
+
readonly creatorRole: string;
|
|
119
|
+
}
|
|
120
|
+
export type EventStatus = {
|
|
121
|
+
readonly status: 'applied';
|
|
122
|
+
readonly index: number;
|
|
123
|
+
} | {
|
|
124
|
+
readonly status: 'dropped';
|
|
125
|
+
readonly reason: string;
|
|
126
|
+
} | {
|
|
127
|
+
readonly status: 'waiting';
|
|
128
|
+
};
|
|
129
|
+
export type RecordVerdict = {
|
|
130
|
+
readonly ok: true;
|
|
131
|
+
} | {
|
|
132
|
+
readonly ok: false;
|
|
133
|
+
readonly reason: string;
|
|
134
|
+
readonly later?: boolean;
|
|
135
|
+
};
|
|
136
|
+
export interface AccessHistory {
|
|
137
|
+
/** Who holds what once everything held is replayed */
|
|
138
|
+
readonly current: AccessState;
|
|
139
|
+
/** What became of one change */
|
|
140
|
+
status(id: string): EventStatus | null;
|
|
141
|
+
/** The latest changes — what a new record's `seen` names */
|
|
142
|
+
heads(): ReadonlyArray<string>;
|
|
143
|
+
/** The state as of what `seen` names, or null when some of it is not here */
|
|
144
|
+
at(seen: ReadonlyArray<string>): AccessState | null;
|
|
145
|
+
/**
|
|
146
|
+
* Whether a record stands: its author's standing, as of what it saw, must
|
|
147
|
+
* satisfy `needs`; and no later change it had not seen took that away —
|
|
148
|
+
* unless that change kept it.
|
|
149
|
+
* @param record The record's id, its account, what it saw, and the note it was written under
|
|
150
|
+
* @param needs What the record requires of its author's role
|
|
151
|
+
*/
|
|
152
|
+
judge(record: {
|
|
153
|
+
readonly id: string;
|
|
154
|
+
readonly root: string;
|
|
155
|
+
readonly seen: ReadonlyArray<string>;
|
|
156
|
+
readonly note?: string;
|
|
157
|
+
}, needs: (role: Role | null, state: AccessState) => boolean): RecordVerdict;
|
|
158
|
+
/** The applied change that revoked a note, if any */
|
|
159
|
+
revoked(note: string): {
|
|
160
|
+
readonly event: string;
|
|
161
|
+
readonly keep: ReadonlySet<string>;
|
|
162
|
+
} | null;
|
|
163
|
+
/**
|
|
164
|
+
* Whether an account appears anywhere in the history — the creator, or
|
|
165
|
+
* named by any member change, whatever became of it. Only grows as changes
|
|
166
|
+
* arrive, so it can decide what to store without two peers ever disagreeing
|
|
167
|
+
* for good.
|
|
168
|
+
*/
|
|
169
|
+
named(did: string): boolean;
|
|
170
|
+
/** Whether any change held opens an invite with this key */
|
|
171
|
+
knownInvite(inviteKey: string): boolean;
|
|
172
|
+
}
|
|
173
|
+
/** Whether an account holds a permission in a state */
|
|
174
|
+
export declare function holds(state: AccessState, did: string, permission: string): boolean;
|
|
175
|
+
/** The role an account holds in a state, or null */
|
|
176
|
+
export declare function standing(state: AccessState, did: string): Role | null;
|
|
177
|
+
/**
|
|
178
|
+
* Replays a space's access history.
|
|
179
|
+
* @param genesis What the space started with
|
|
180
|
+
* @param events Every change held, in any order; duplicates are ignored
|
|
181
|
+
*/
|
|
182
|
+
export declare function replayAccess(genesis: AccessGenesis, events: ReadonlyArray<AccessEvent>): AccessHistory;
|
|
183
|
+
/** Freezes a state for handing out */
|
|
184
|
+
export declare function snapshot(state: AccessState): AccessState;
|
|
185
|
+
export {};
|
|
186
|
+
//# sourceMappingURL=roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/space/roles.ts"],"names":[],"mappings":"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"}
|