mindoodb 0.0.51 → 0.0.54
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-server.md +136 -71
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +30 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +67 -20
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.d.ts +2 -0
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.js +6 -62
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +82 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +229 -25
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
- package/dist/browser/index.mjs +59 -0
- package/dist/core/BaseMindooDB.d.ts +148 -80
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +890 -692
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +59 -7
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +407 -86
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +61 -9
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +363 -35
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/BaseMindooTenantFactory.d.ts +17 -1
- package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantFactory.js +286 -17
- package/dist/core/BaseMindooTenantFactory.js.map +1 -1
- package/dist/core/MindooDBServerAdmin.d.ts +44 -22
- package/dist/core/MindooDBServerAdmin.d.ts.map +1 -1
- package/dist/core/MindooDBServerAdmin.js +45 -21
- package/dist/core/MindooDBServerAdmin.js.map +1 -1
- package/dist/core/accesscontrol/DirectoryStateNode.d.ts +68 -1
- package/dist/core/accesscontrol/DirectoryStateNode.d.ts.map +1 -1
- package/dist/core/accesscontrol/DirectoryStateNode.js +157 -4
- package/dist/core/accesscontrol/DirectoryStateNode.js.map +1 -1
- package/dist/core/accesscontrol/directoryProjection.d.ts.map +1 -1
- package/dist/core/accesscontrol/directoryProjection.js +14 -5
- package/dist/core/accesscontrol/directoryProjection.js.map +1 -1
- package/dist/core/accesscontrol/grantKeys.d.ts +17 -14
- package/dist/core/accesscontrol/grantKeys.d.ts.map +1 -1
- package/dist/core/accesscontrol/grantKeys.js +51 -21
- package/dist/core/accesscontrol/grantKeys.js.map +1 -1
- package/dist/core/accesscontrol/types.d.ts +2 -1
- package/dist/core/accesscontrol/types.d.ts.map +1 -1
- package/dist/core/accesscontrol/types.js +3 -2
- package/dist/core/accesscontrol/types.js.map +1 -1
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts +7 -0
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/AuthenticationService.js +70 -14
- package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
- package/dist/core/appendonlystores/network/entryWireCodec.d.ts +51 -0
- package/dist/core/appendonlystores/network/entryWireCodec.d.ts.map +1 -0
- package/dist/core/appendonlystores/network/entryWireCodec.js +93 -0
- package/dist/core/appendonlystores/network/entryWireCodec.js.map +1 -0
- package/dist/core/appendonlystores/syncStores.d.ts +147 -0
- package/dist/core/appendonlystores/syncStores.d.ts.map +1 -0
- package/dist/core/appendonlystores/syncStores.js +612 -0
- package/dist/core/appendonlystores/syncStores.js.map +1 -0
- package/dist/core/builtinDbInvariants.d.ts +83 -0
- package/dist/core/builtinDbInvariants.d.ts.map +1 -0
- package/dist/core/builtinDbInvariants.js +244 -0
- package/dist/core/builtinDbInvariants.js.map +1 -0
- package/dist/core/copy/feasibility.d.ts.map +1 -1
- package/dist/core/copy/feasibility.js +3 -0
- package/dist/core/copy/feasibility.js.map +1 -1
- package/dist/core/copy/flatten.d.ts.map +1 -1
- package/dist/core/copy/flatten.js +6 -1
- package/dist/core/copy/flatten.js.map +1 -1
- package/dist/core/copy/host.d.ts +5 -0
- package/dist/core/copy/host.d.ts.map +1 -1
- package/dist/core/copy/preflight.d.ts.map +1 -1
- package/dist/core/copy/preflight.js +7 -1
- package/dist/core/copy/preflight.js.map +1 -1
- package/dist/core/copy/types.d.ts +7 -0
- package/dist/core/copy/types.d.ts.map +1 -1
- package/dist/core/crypto/EntrySignature.d.ts +8 -2
- package/dist/core/crypto/EntrySignature.d.ts.map +1 -1
- package/dist/core/crypto/EntrySignature.js +14 -5
- package/dist/core/crypto/EntrySignature.js.map +1 -1
- package/dist/core/crypto/MindooDocSigner.d.ts.map +1 -1
- package/dist/core/crypto/MindooDocSigner.js +11 -2
- package/dist/core/crypto/MindooDocSigner.js.map +1 -1
- package/dist/core/crypto/RSAEncryption.d.ts +19 -0
- package/dist/core/crypto/RSAEncryption.d.ts.map +1 -1
- package/dist/core/crypto/RSAEncryption.js +36 -3
- package/dist/core/crypto/RSAEncryption.js.map +1 -1
- package/dist/core/crypto/privateKeyEncryption.js +1 -1
- package/dist/core/crypto/privateKeyEncryption.js.map +1 -1
- package/dist/core/crypto/rsaOaep3072.d.ts +12 -0
- package/dist/core/crypto/rsaOaep3072.d.ts.map +1 -0
- package/dist/core/crypto/rsaOaep3072.js +30 -0
- package/dist/core/crypto/rsaOaep3072.js.map +1 -0
- package/dist/core/index.d.ts +7 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +33 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/join/deviceJoinBootstrap.d.ts +23 -0
- package/dist/core/join/deviceJoinBootstrap.d.ts.map +1 -0
- package/dist/core/join/deviceJoinBootstrap.js +37 -0
- package/dist/core/join/deviceJoinBootstrap.js.map +1 -0
- package/dist/core/keys/KeyBag.d.ts +20 -2
- package/dist/core/keys/KeyBag.d.ts.map +1 -1
- package/dist/core/keys/KeyBag.js +22 -10
- package/dist/core/keys/KeyBag.js.map +1 -1
- package/dist/core/logging/MindooLogger.d.ts.map +1 -1
- package/dist/core/logging/MindooLogger.js +65 -40
- package/dist/core/logging/MindooLogger.js.map +1 -1
- package/dist/core/tenantIdValidation.d.ts.map +1 -1
- package/dist/core/tenantIdValidation.js +1 -1
- package/dist/core/tenantIdValidation.js.map +1 -1
- package/dist/core/tenantSetup.d.ts +94 -9
- package/dist/core/tenantSetup.d.ts.map +1 -1
- package/dist/core/tenantSetup.js +208 -20
- package/dist/core/tenantSetup.js.map +1 -1
- package/dist/core/types.d.ts +313 -33
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +14 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/uri/joinRequestUri.d.ts.map +1 -1
- package/dist/core/uri/joinRequestUri.js +12 -3
- package/dist/core/uri/joinRequestUri.js.map +1 -1
- package/dist/core/userid/canonicalUsername.d.ts +66 -0
- package/dist/core/userid/canonicalUsername.d.ts.map +1 -0
- package/dist/core/userid/canonicalUsername.js +235 -0
- package/dist/core/userid/canonicalUsername.js.map +1 -0
- package/dist/core/userid/index.d.ts +9 -0
- package/dist/core/userid/index.d.ts.map +1 -1
- package/dist/core/userid/index.js +14 -0
- package/dist/core/userid/index.js.map +1 -1
- package/dist/core/userkeys/UserKeyDocument.d.ts +50 -0
- package/dist/core/userkeys/UserKeyDocument.d.ts.map +1 -0
- package/dist/core/userkeys/UserKeyDocument.js +145 -0
- package/dist/core/userkeys/UserKeyDocument.js.map +1 -0
- package/dist/core/userkeys/UserKeyManager.d.ts +170 -0
- package/dist/core/userkeys/UserKeyManager.d.ts.map +1 -0
- package/dist/core/userkeys/UserKeyManager.js +1277 -0
- package/dist/core/userkeys/UserKeyManager.js.map +1 -0
- package/dist/core/userkeys/fingerprint.d.ts +17 -0
- package/dist/core/userkeys/fingerprint.d.ts.map +1 -0
- package/dist/core/userkeys/fingerprint.js +59 -0
- package/dist/core/userkeys/fingerprint.js.map +1 -0
- package/dist/core/userkeys/index.d.ts +11 -0
- package/dist/core/userkeys/index.d.ts.map +1 -0
- package/dist/core/userkeys/index.js +49 -0
- package/dist/core/userkeys/index.js.map +1 -0
- package/dist/core/userkeys/recipients.d.ts +51 -0
- package/dist/core/userkeys/recipients.d.ts.map +1 -0
- package/dist/core/userkeys/recipients.js +292 -0
- package/dist/core/userkeys/recipients.js.map +1 -0
- package/dist/core/userkeys/resolveUserKeyDocument.d.ts +21 -0
- package/dist/core/userkeys/resolveUserKeyDocument.d.ts.map +1 -0
- package/dist/core/userkeys/resolveUserKeyDocument.js +98 -0
- package/dist/core/userkeys/resolveUserKeyDocument.js.map +1 -0
- package/dist/core/userkeys/sealedCrypto.d.ts +21 -0
- package/dist/core/userkeys/sealedCrypto.d.ts.map +1 -0
- package/dist/core/userkeys/sealedCrypto.js +79 -0
- package/dist/core/userkeys/sealedCrypto.js.map +1 -0
- package/dist/core/userkeys/sealedTypes.d.ts +72 -0
- package/dist/core/userkeys/sealedTypes.d.ts.map +1 -0
- package/dist/core/userkeys/sealedTypes.js +14 -0
- package/dist/core/userkeys/sealedTypes.js.map +1 -0
- package/dist/core/userkeys/types.d.ts +70 -0
- package/dist/core/userkeys/types.d.ts.map +1 -0
- package/dist/core/userkeys/types.js +48 -0
- package/dist/core/userkeys/types.js.map +1 -0
- package/dist/core/userkeys/validateUserKeyDocument.d.ts +19 -0
- package/dist/core/userkeys/validateUserKeyDocument.d.ts.map +1 -0
- package/dist/core/userkeys/validateUserKeyDocument.js +42 -0
- package/dist/core/userkeys/validateUserKeyDocument.js.map +1 -0
- package/dist/node/server/CapabilityMatcher.d.ts +7 -2
- package/dist/node/server/CapabilityMatcher.d.ts.map +1 -1
- package/dist/node/server/CapabilityMatcher.js +12 -3
- package/dist/node/server/CapabilityMatcher.js.map +1 -1
- package/dist/node/server/DeviceDiscoveryService.d.ts +36 -0
- package/dist/node/server/DeviceDiscoveryService.d.ts.map +1 -0
- package/dist/node/server/DeviceDiscoveryService.js +165 -0
- package/dist/node/server/DeviceDiscoveryService.js.map +1 -0
- package/dist/node/server/MindooDBServer.d.ts +27 -1
- package/dist/node/server/MindooDBServer.d.ts.map +1 -1
- package/dist/node/server/MindooDBServer.js +265 -220
- package/dist/node/server/MindooDBServer.js.map +1 -1
- package/dist/node/server/SyncEventBus.d.ts +10 -0
- package/dist/node/server/SyncEventBus.d.ts.map +1 -1
- package/dist/node/server/SyncEventBus.js.map +1 -1
- package/dist/node/server/SystemAdminAuth.d.ts +7 -0
- package/dist/node/server/SystemAdminAuth.d.ts.map +1 -1
- package/dist/node/server/SystemAdminAuth.js +4 -1
- package/dist/node/server/SystemAdminAuth.js.map +1 -1
- package/dist/node/server/TenantManager.d.ts +86 -5
- package/dist/node/server/TenantManager.d.ts.map +1 -1
- package/dist/node/server/TenantManager.js +235 -71
- package/dist/node/server/TenantManager.js.map +1 -1
- package/dist/node/server/add-to-network.d.ts.map +1 -1
- package/dist/node/server/add-to-network.js +33 -15
- package/dist/node/server/add-to-network.js.map +1 -1
- package/dist/node/server/canonicalSetupName.d.ts +22 -0
- package/dist/node/server/canonicalSetupName.d.ts.map +1 -0
- package/dist/node/server/canonicalSetupName.js +38 -0
- package/dist/node/server/canonicalSetupName.js.map +1 -0
- package/dist/node/server/config.d.ts.map +1 -1
- package/dist/node/server/config.js +33 -1
- package/dist/node/server/config.js.map +1 -1
- package/dist/node/server/peer/ClusterAuditLog.d.ts +64 -0
- package/dist/node/server/peer/ClusterAuditLog.d.ts.map +1 -0
- package/dist/node/server/peer/ClusterAuditLog.js +99 -0
- package/dist/node/server/peer/ClusterAuditLog.js.map +1 -0
- package/dist/node/server/peer/ClusterJobRunner.d.ts +43 -0
- package/dist/node/server/peer/ClusterJobRunner.d.ts.map +1 -0
- package/dist/node/server/peer/ClusterJobRunner.js +119 -0
- package/dist/node/server/peer/ClusterJobRunner.js.map +1 -0
- package/dist/node/server/peer/ClusterManager.d.ts +116 -0
- package/dist/node/server/peer/ClusterManager.d.ts.map +1 -0
- package/dist/node/server/peer/ClusterManager.js +274 -0
- package/dist/node/server/peer/ClusterManager.js.map +1 -0
- package/dist/node/server/peer/PeerAuthService.d.ts +69 -0
- package/dist/node/server/peer/PeerAuthService.d.ts.map +1 -0
- package/dist/node/server/peer/PeerAuthService.js +208 -0
- package/dist/node/server/peer/PeerAuthService.js.map +1 -0
- package/dist/node/server/peer/PeerReplicator.d.ts +232 -0
- package/dist/node/server/peer/PeerReplicator.d.ts.map +1 -0
- package/dist/node/server/peer/PeerReplicator.js +879 -0
- package/dist/node/server/peer/PeerReplicator.js.map +1 -0
- package/dist/node/server/peer/routes.d.ts +66 -0
- package/dist/node/server/peer/routes.d.ts.map +1 -0
- package/dist/node/server/peer/routes.js +322 -0
- package/dist/node/server/peer/routes.js.map +1 -0
- package/dist/node/server/peer/types.d.ts +244 -0
- package/dist/node/server/peer/types.d.ts.map +1 -0
- package/dist/node/server/peer/types.js +189 -0
- package/dist/node/server/peer/types.js.map +1 -0
- package/dist/node/server/server.d.ts +1 -1
- package/dist/node/server/server.js +18 -37
- package/dist/node/server/server.js.map +1 -1
- package/dist/node/server/serverinit.d.ts +2 -1
- package/dist/node/server/serverinit.d.ts.map +1 -1
- package/dist/node/server/serverinit.js +34 -12
- package/dist/node/server/serverinit.js.map +1 -1
- package/dist/node/server/types.d.ts +42 -30
- package/dist/node/server/types.d.ts.map +1 -1
- package/dist/node/server/types.js +1 -7
- package/dist/node/server/types.js.map +1 -1
- package/dist/node/server/validation.d.ts +0 -6
- package/dist/node/server/validation.d.ts.map +1 -1
- package/dist/node/server/validation.js +1 -7
- package/dist/node/server/validation.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtin database write invariants that hold even when the ACL master switch
|
|
3
|
+
* is engaged (docs/userkeys.md §6.5). These are not `evaluateAccess` rules —
|
|
4
|
+
* that function short-circuits to allow when no policy exists or the master
|
|
5
|
+
* switch is on.
|
|
6
|
+
*
|
|
7
|
+
* `directory`: only the tenant admin may write.
|
|
8
|
+
* `userdirectory`: admin may create and delete; only the person named by the
|
|
9
|
+
* document's `username_hash` may change. The tenant founder signs with the
|
|
10
|
+
* admin key, so an owner match still allows a change (they must wrap their
|
|
11
|
+
* own userkey). The admin may not change anyone else's document, so a planted
|
|
12
|
+
* public key cannot be swapped in after the fact. Anyone may read.
|
|
13
|
+
*
|
|
14
|
+
* Personal documents (see {@link PERSONAL_DOC_ID_PREFIXES}) are the exception
|
|
15
|
+
* inside `userdirectory`: they carry their owner's private data and are
|
|
16
|
+
* therefore usually sealed to recipients, which means neither the server nor
|
|
17
|
+
* another member can read `username_hash` out of them. Ownership for those is
|
|
18
|
+
* the person who signed `doc_create`, resolved from grants — no decryption
|
|
19
|
+
* involved. That person may change and delete their own document.
|
|
20
|
+
*/
|
|
21
|
+
export type BuiltinWriteOp = "doc_create" | "doc_change" | "doc_delete" | "doc_undelete" | "doc_snapshot";
|
|
22
|
+
/**
|
|
23
|
+
* Document-id prefixes inside `userdirectory` that hold one person's private
|
|
24
|
+
* data instead of published key material. The prefix is the discriminator
|
|
25
|
+
* because it is plain metadata: a sealed document's payload is opaque to the
|
|
26
|
+
* server, so any rule reading the payload could not be enforced there.
|
|
27
|
+
*
|
|
28
|
+
* `wks_` — roamed workspace and application list (one document per save id).
|
|
29
|
+
*/
|
|
30
|
+
export declare const PERSONAL_DOC_ID_PREFIXES: readonly ["wks_"];
|
|
31
|
+
/** Is this a personal-data document id inside `userdirectory`? */
|
|
32
|
+
export declare function isPersonalUserdirectoryDocId(docId: string | undefined | null): boolean;
|
|
33
|
+
export interface BuiltinWriteInput {
|
|
34
|
+
dbId: string;
|
|
35
|
+
op: BuiltinWriteOp;
|
|
36
|
+
signerKey: string;
|
|
37
|
+
adminPublicKey: string;
|
|
38
|
+
/** `username_hash` stored on the userkey document, when known. */
|
|
39
|
+
documentUsernameHash?: string | null;
|
|
40
|
+
/** `username_hash` of the signer's grant at the entry's trusted time. */
|
|
41
|
+
signerUsernameHash?: string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Document id. Only needed to recognize personal documents; the userkey rule
|
|
44
|
+
* keys off `username_hash` alone.
|
|
45
|
+
*/
|
|
46
|
+
docId?: string;
|
|
47
|
+
/**
|
|
48
|
+
* `username_hash` of the person who signed this document's `doc_create`.
|
|
49
|
+
* Ownership of a personal document, resolvable without decrypting it.
|
|
50
|
+
*/
|
|
51
|
+
creatorUsernameHash?: string | null;
|
|
52
|
+
}
|
|
53
|
+
export interface BuiltinWriteDecision {
|
|
54
|
+
allowed: boolean;
|
|
55
|
+
reason: string;
|
|
56
|
+
}
|
|
57
|
+
export declare function hasBuiltinWriteInvariant(dbId: string): boolean;
|
|
58
|
+
export declare function evaluateBuiltinWrite(input: BuiltinWriteInput): BuiltinWriteDecision;
|
|
59
|
+
/**
|
|
60
|
+
* `username_hash` from a decrypted `doc_create` payload. Create entries are
|
|
61
|
+
* usually a single Automerge change; some writers persist a full document
|
|
62
|
+
* binary instead. The server must accept both — otherwise every later change
|
|
63
|
+
* is denied as "not the owning person" because the hash looks missing.
|
|
64
|
+
*/
|
|
65
|
+
export declare function usernameHashFromCreateChangeBytes(changeBytes: Uint8Array): string | null;
|
|
66
|
+
export declare function entryTypeToBuiltinOp(entryType: string): BuiltinWriteOp | null;
|
|
67
|
+
/**
|
|
68
|
+
* Sync load-path filter: drop entries that are obviously illegal without
|
|
69
|
+
* decrypting. Username-hash matching for userdirectory creates/changes is
|
|
70
|
+
* enforced on the write path and the server; the load path rejects
|
|
71
|
+
* non-admin deletes and admin-signed changes that are not the owning person.
|
|
72
|
+
*/
|
|
73
|
+
export declare function shouldSkipLoadedEntry(input: {
|
|
74
|
+
dbId: string;
|
|
75
|
+
entryType: string;
|
|
76
|
+
signerKey: string;
|
|
77
|
+
adminPublicKey: string;
|
|
78
|
+
documentUsernameHash?: string | null;
|
|
79
|
+
signerUsernameHash?: string | null;
|
|
80
|
+
docId?: string;
|
|
81
|
+
creatorUsernameHash?: string | null;
|
|
82
|
+
}): boolean;
|
|
83
|
+
//# sourceMappingURL=builtinDbInvariants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtinDbInvariants.d.ts","sourceRoot":"","sources":["../../src/core/builtinDbInvariants.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,cAAc,CAAC;AAE1G;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,mBAAoB,CAAC;AAE1D,kEAAkE;AAClE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGtF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,cAAc,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,oBAAoB,CAqEnF;AA4ED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAgBxF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAc7E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,GAAG,OAAO,CAsCV"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PERSONAL_DOC_ID_PREFIXES = void 0;
|
|
4
|
+
exports.isPersonalUserdirectoryDocId = isPersonalUserdirectoryDocId;
|
|
5
|
+
exports.hasBuiltinWriteInvariant = hasBuiltinWriteInvariant;
|
|
6
|
+
exports.evaluateBuiltinWrite = evaluateBuiltinWrite;
|
|
7
|
+
exports.usernameHashFromCreateChangeBytes = usernameHashFromCreateChangeBytes;
|
|
8
|
+
exports.entryTypeToBuiltinOp = entryTypeToBuiltinOp;
|
|
9
|
+
exports.shouldSkipLoadedEntry = shouldSkipLoadedEntry;
|
|
10
|
+
const automerge_adapter_1 = require("./automerge-adapter");
|
|
11
|
+
const DirectoryStateNode_1 = require("./accesscontrol/DirectoryStateNode");
|
|
12
|
+
const types_1 = require("./types");
|
|
13
|
+
/**
|
|
14
|
+
* Document-id prefixes inside `userdirectory` that hold one person's private
|
|
15
|
+
* data instead of published key material. The prefix is the discriminator
|
|
16
|
+
* because it is plain metadata: a sealed document's payload is opaque to the
|
|
17
|
+
* server, so any rule reading the payload could not be enforced there.
|
|
18
|
+
*
|
|
19
|
+
* `wks_` — roamed workspace and application list (one document per save id).
|
|
20
|
+
*/
|
|
21
|
+
exports.PERSONAL_DOC_ID_PREFIXES = ["wks_"];
|
|
22
|
+
/** Is this a personal-data document id inside `userdirectory`? */
|
|
23
|
+
function isPersonalUserdirectoryDocId(docId) {
|
|
24
|
+
if (!docId)
|
|
25
|
+
return false;
|
|
26
|
+
return exports.PERSONAL_DOC_ID_PREFIXES.some((prefix) => docId.startsWith(prefix));
|
|
27
|
+
}
|
|
28
|
+
function hasBuiltinWriteInvariant(dbId) {
|
|
29
|
+
return dbId === types_1.DIRECTORY_DB_ID || dbId === types_1.USER_DIRECTORY_DB_ID;
|
|
30
|
+
}
|
|
31
|
+
function evaluateBuiltinWrite(input) {
|
|
32
|
+
if (input.dbId === types_1.DIRECTORY_DB_ID) {
|
|
33
|
+
if (!(0, DirectoryStateNode_1.signingKeysEqual)(input.signerKey, input.adminPublicKey)) {
|
|
34
|
+
return { allowed: false, reason: "Admin-only database: only the admin key can modify data" };
|
|
35
|
+
}
|
|
36
|
+
return { allowed: true, reason: "directory admin write" };
|
|
37
|
+
}
|
|
38
|
+
if (input.dbId === types_1.USER_DIRECTORY_DB_ID) {
|
|
39
|
+
const isAdmin = (0, DirectoryStateNode_1.signingKeysEqual)(input.signerKey, input.adminPublicKey);
|
|
40
|
+
if (isPersonalUserdirectoryDocId(input.docId)) {
|
|
41
|
+
return evaluatePersonalDocWrite(input, isAdmin);
|
|
42
|
+
}
|
|
43
|
+
if (input.op === "doc_delete") {
|
|
44
|
+
return isAdmin
|
|
45
|
+
? { allowed: true, reason: "userdirectory admin delete" }
|
|
46
|
+
: { allowed: false, reason: "userdirectory: only the admin can delete" };
|
|
47
|
+
}
|
|
48
|
+
if (input.op === "doc_undelete") {
|
|
49
|
+
if (isAdmin)
|
|
50
|
+
return { allowed: true, reason: "userdirectory admin undelete" };
|
|
51
|
+
if (input.documentUsernameHash &&
|
|
52
|
+
input.signerUsernameHash &&
|
|
53
|
+
input.documentUsernameHash === input.signerUsernameHash) {
|
|
54
|
+
return { allowed: true, reason: "userdirectory owner undelete" };
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
allowed: false,
|
|
58
|
+
reason: "userdirectory: undelete requires the admin or a matching username_hash",
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
if (input.op === "doc_create") {
|
|
62
|
+
if (isAdmin)
|
|
63
|
+
return { allowed: true, reason: "userdirectory admin create" };
|
|
64
|
+
if (input.documentUsernameHash &&
|
|
65
|
+
input.signerUsernameHash &&
|
|
66
|
+
input.documentUsernameHash === input.signerUsernameHash) {
|
|
67
|
+
return { allowed: true, reason: "userdirectory self create" };
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
allowed: false,
|
|
71
|
+
reason: "userdirectory: create requires the admin or a matching username_hash",
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// change / snapshot: owning person only. The tenant founder is both admin
|
|
75
|
+
// and owner; matching hashes allow that wrap. Admin edits of anyone else
|
|
76
|
+
// stay denied so a planted public key cannot be swapped after the fact.
|
|
77
|
+
if (input.documentUsernameHash &&
|
|
78
|
+
input.signerUsernameHash &&
|
|
79
|
+
input.documentUsernameHash === input.signerUsernameHash) {
|
|
80
|
+
return { allowed: true, reason: "userdirectory owner change" };
|
|
81
|
+
}
|
|
82
|
+
if (isAdmin) {
|
|
83
|
+
return { allowed: false, reason: "userdirectory: the admin cannot change userkey documents" };
|
|
84
|
+
}
|
|
85
|
+
if (!input.documentUsernameHash) {
|
|
86
|
+
return { allowed: false, reason: "userdirectory: document username_hash could not be resolved" };
|
|
87
|
+
}
|
|
88
|
+
if (!input.signerUsernameHash) {
|
|
89
|
+
return { allowed: false, reason: "userdirectory: signer is not a granted device" };
|
|
90
|
+
}
|
|
91
|
+
return { allowed: false, reason: "userdirectory: only the owning person can change" };
|
|
92
|
+
}
|
|
93
|
+
return { allowed: true, reason: "no builtin invariant" };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Personal `userdirectory` document: the creating person owns it. Creating
|
|
97
|
+
* needs nothing but a grant — a member may store their own data — while
|
|
98
|
+
* changing is the owner's alone, so nobody can overwrite someone else's
|
|
99
|
+
* workspace even though every member syncs the (unreadable) bytes.
|
|
100
|
+
*
|
|
101
|
+
* The admin may delete but not change, mirroring the userkey rule: cleaning up
|
|
102
|
+
* after a departed member has to be possible, editing a document one cannot
|
|
103
|
+
* even read has no legitimate use.
|
|
104
|
+
*/
|
|
105
|
+
function evaluatePersonalDocWrite(input, isAdmin) {
|
|
106
|
+
const isOwner = Boolean(input.creatorUsernameHash &&
|
|
107
|
+
input.signerUsernameHash &&
|
|
108
|
+
input.creatorUsernameHash === input.signerUsernameHash);
|
|
109
|
+
if (input.op === "doc_create") {
|
|
110
|
+
// The creator becomes the owner, so there is nothing to compare against
|
|
111
|
+
// yet. A grant is still required: `signerUsernameHash` is null for a
|
|
112
|
+
// signing key the directory does not know.
|
|
113
|
+
if (isAdmin || input.signerUsernameHash) {
|
|
114
|
+
return { allowed: true, reason: "userdirectory personal create" };
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
allowed: false,
|
|
118
|
+
reason: "userdirectory: personal documents require a granted device",
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (input.op === "doc_delete" || input.op === "doc_undelete") {
|
|
122
|
+
if (isOwner) {
|
|
123
|
+
return { allowed: true, reason: `userdirectory personal owner ${input.op}` };
|
|
124
|
+
}
|
|
125
|
+
if (isAdmin) {
|
|
126
|
+
return { allowed: true, reason: `userdirectory personal admin ${input.op}` };
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
allowed: false,
|
|
130
|
+
reason: `userdirectory: only the owning person or the admin can ${input.op === "doc_delete" ? "delete" : "undelete"} a personal document`,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
if (isOwner) {
|
|
134
|
+
return { allowed: true, reason: "userdirectory personal owner change" };
|
|
135
|
+
}
|
|
136
|
+
if (isAdmin) {
|
|
137
|
+
return {
|
|
138
|
+
allowed: false,
|
|
139
|
+
reason: "userdirectory: the admin cannot change a personal document",
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (!input.creatorUsernameHash) {
|
|
143
|
+
return {
|
|
144
|
+
allowed: false,
|
|
145
|
+
reason: "userdirectory: personal document owner could not be resolved",
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (!input.signerUsernameHash) {
|
|
149
|
+
return { allowed: false, reason: "userdirectory: signer is not a granted device" };
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
allowed: false,
|
|
153
|
+
reason: "userdirectory: only the owning person can change a personal document",
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function usernameHashFromRecord(doc) {
|
|
157
|
+
const value = doc.username_hash;
|
|
158
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* `username_hash` from a decrypted `doc_create` payload. Create entries are
|
|
162
|
+
* usually a single Automerge change; some writers persist a full document
|
|
163
|
+
* binary instead. The server must accept both — otherwise every later change
|
|
164
|
+
* is denied as "not the owning person" because the hash looks missing.
|
|
165
|
+
*/
|
|
166
|
+
function usernameHashFromCreateChangeBytes(changeBytes) {
|
|
167
|
+
try {
|
|
168
|
+
const [doc] = automerge_adapter_1.Automerge.applyChanges(automerge_adapter_1.Automerge.init(), [changeBytes]);
|
|
169
|
+
const fromChange = usernameHashFromRecord(doc);
|
|
170
|
+
if (fromChange)
|
|
171
|
+
return fromChange;
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Payload may be a full Automerge document rather than a change.
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
return usernameHashFromRecord(automerge_adapter_1.Automerge.load(changeBytes));
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function entryTypeToBuiltinOp(entryType) {
|
|
184
|
+
switch (entryType) {
|
|
185
|
+
case "doc_create":
|
|
186
|
+
return "doc_create";
|
|
187
|
+
case "doc_change":
|
|
188
|
+
case "doc_snapshot":
|
|
189
|
+
return "doc_change";
|
|
190
|
+
case "doc_delete":
|
|
191
|
+
return "doc_delete";
|
|
192
|
+
case "doc_undelete":
|
|
193
|
+
return "doc_undelete";
|
|
194
|
+
default:
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Sync load-path filter: drop entries that are obviously illegal without
|
|
200
|
+
* decrypting. Username-hash matching for userdirectory creates/changes is
|
|
201
|
+
* enforced on the write path and the server; the load path rejects
|
|
202
|
+
* non-admin deletes and admin-signed changes that are not the owning person.
|
|
203
|
+
*/
|
|
204
|
+
function shouldSkipLoadedEntry(input) {
|
|
205
|
+
if (input.dbId === types_1.DIRECTORY_DB_ID) {
|
|
206
|
+
return !(0, DirectoryStateNode_1.signingKeysEqual)(input.signerKey, input.adminPublicKey);
|
|
207
|
+
}
|
|
208
|
+
if (input.dbId === types_1.USER_DIRECTORY_DB_ID) {
|
|
209
|
+
const isAdmin = (0, DirectoryStateNode_1.signingKeysEqual)(input.signerKey, input.adminPublicKey);
|
|
210
|
+
if (isPersonalUserdirectoryDocId(input.docId)) {
|
|
211
|
+
// Ownership of a personal document comes from its creator, so a create
|
|
212
|
+
// can never be illegal here, and a delete by its owner must survive the
|
|
213
|
+
// load path (the userkey rule below would drop it). Everything else is
|
|
214
|
+
// dropped only when both hashes resolved and disagree: the write path
|
|
215
|
+
// and the server already rejected illegal entries, and failing open on
|
|
216
|
+
// an unresolvable hash beats silently discarding an owner's own change.
|
|
217
|
+
if (input.entryType === "doc_create")
|
|
218
|
+
return false;
|
|
219
|
+
const isLifecycle = input.entryType === "doc_delete" || input.entryType === "doc_undelete";
|
|
220
|
+
if (isAdmin)
|
|
221
|
+
return !isLifecycle;
|
|
222
|
+
if (!input.creatorUsernameHash || !input.signerUsernameHash)
|
|
223
|
+
return false;
|
|
224
|
+
return input.creatorUsernameHash !== input.signerUsernameHash;
|
|
225
|
+
}
|
|
226
|
+
if (input.entryType === "doc_delete") {
|
|
227
|
+
return !isAdmin;
|
|
228
|
+
}
|
|
229
|
+
// Owner undelete is allowed on the write path; skipping it here would
|
|
230
|
+
// leave a tombstone after a person restores their own userkey document.
|
|
231
|
+
if (input.entryType === "doc_change" || input.entryType === "doc_snapshot") {
|
|
232
|
+
if (!isAdmin)
|
|
233
|
+
return false;
|
|
234
|
+
if (input.documentUsernameHash &&
|
|
235
|
+
input.signerUsernameHash &&
|
|
236
|
+
input.documentUsernameHash === input.signerUsernameHash) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=builtinDbInvariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtinDbInvariants.js","sourceRoot":"","sources":["../../src/core/builtinDbInvariants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feasibility.d.ts","sourceRoot":"","sources":["../../../src/core/copy/feasibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAIhB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"feasibility.d.ts","sourceRoot":"","sources":["../../../src/core/copy/feasibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAIhB,MAAM,SAAS,CAAC;AAGjB,6EAA6E;AAC7E,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,qBAAqB,EAAE,MAAM,EAC7B,UAAU,EAAE,OAAO,GAClB,MAAM,CAIR;AAUD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,mBAAwB,GAChC,eAAe,CAgJjB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,eAAe,GAAG,KAAK,CAKxE"}
|
|
@@ -14,6 +14,7 @@ exports.DIRECTORY_DB_ID = void 0;
|
|
|
14
14
|
exports.resolveTargetDecryptionKeyId = resolveTargetDecryptionKeyId;
|
|
15
15
|
exports.resolveCopyFeasibility = resolveCopyFeasibility;
|
|
16
16
|
exports.copyFeasibilityError = copyFeasibilityError;
|
|
17
|
+
const sealedTypes_1 = require("../userkeys/sealedTypes");
|
|
17
18
|
/** The tenant directory database id. Never a valid copy source or target. */
|
|
18
19
|
exports.DIRECTORY_DB_ID = "directory";
|
|
19
20
|
/**
|
|
@@ -28,6 +29,8 @@ exports.DIRECTORY_DB_ID = "directory";
|
|
|
28
29
|
function resolveTargetDecryptionKeyId(requested, sourceDecryptionKeyId, sameTenant) {
|
|
29
30
|
if (requested)
|
|
30
31
|
return requested;
|
|
32
|
+
if ((0, sealedTypes_1.isSealedKeyId)(sourceDecryptionKeyId))
|
|
33
|
+
return "default";
|
|
31
34
|
return sameTenant ? sourceDecryptionKeyId : "default";
|
|
32
35
|
}
|
|
33
36
|
/** Build a reason record with a stable code and a human-readable message. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feasibility.js","sourceRoot":"","sources":["../../../src/core/copy/feasibility.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;
|
|
1
|
+
{"version":3,"file":"feasibility.js","sourceRoot":"","sources":["../../../src/core/copy/feasibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../src/core/copy/flatten.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../../src/core/copy/flatten.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGvE;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC1C,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAqBD,qDAAqD;AACrD,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA6I7B"}
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.flattenDocument = flattenDocument;
|
|
27
27
|
const types_1 = require("../types");
|
|
28
|
+
const sealedTypes_1 = require("../userkeys/sealedTypes");
|
|
28
29
|
/** Payload key holding {@link FlattenedDocumentProvenance}. */
|
|
29
30
|
const PROVENANCE_FIELD = "_provenance";
|
|
30
31
|
/**
|
|
@@ -98,12 +99,16 @@ async function flattenDocument(source, target, context, options, reporter) {
|
|
|
98
99
|
const seedPayloadIntoCreate = usesGeneratedId || assumeUniqueId;
|
|
99
100
|
const idsBefore = new Set((await target.store.findNewEntriesForDoc([], targetDocId)).map((entry) => entry.id));
|
|
100
101
|
reporter.emit("transferring", `Writing flattened copy as ${targetDocId}`);
|
|
102
|
+
const sealedCopy = options.recipients !== undefined
|
|
103
|
+
|| ((0, sealedTypes_1.isSealedKeyId)(context.sourceDecryptionKeyId) && options.decryptionKeyId === undefined);
|
|
101
104
|
const targetDoc = await target.db.createDocument({
|
|
102
105
|
...(usesGeneratedId
|
|
103
106
|
? { idPrefix: options.idPrefix }
|
|
104
107
|
: { id: targetDocId, assumeUniqueId }),
|
|
105
108
|
...(seedPayloadIntoCreate ? { initialValues: payload } : {}),
|
|
106
|
-
|
|
109
|
+
...(sealedCopy
|
|
110
|
+
? { recipients: options.recipients ?? [], recipientOptions: options.recipientOptions }
|
|
111
|
+
: { decryptionKeyId: context.targetDecryptionKeyId }),
|
|
107
112
|
signingKeyPair: options.signingKeyPair,
|
|
108
113
|
signingKeyPassword: options.signingKeyPassword,
|
|
109
114
|
bypassAccessControlPrecheck: options.bypassAccessControlPrecheck,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../../src/core/copy/flatten.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;
|
|
1
|
+
{"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../../src/core/copy/flatten.ts"],"names":[],"mappings":"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"}
|
package/dist/core/copy/host.d.ts
CHANGED
|
@@ -69,6 +69,11 @@ export interface CopyEngineHost {
|
|
|
69
69
|
* see `preflight.ts` for why that matters most when grafting.
|
|
70
70
|
*/
|
|
71
71
|
evaluateWriteAccess(op: RuleType, signerKey: string, isAuthor: boolean): Promise<AccessDecision | null>;
|
|
72
|
+
/**
|
|
73
|
+
* Grant-level `$author` resolver used by the copy preflight. Creator is
|
|
74
|
+
* resolved at `creatorTrustedTime`, signer at `signerTrustedTime`.
|
|
75
|
+
*/
|
|
76
|
+
isSamePerson(creatorSigningKey: string, signerSigningKey: string, creatorTrustedTime: number, signerTrustedTime: number): Promise<boolean>;
|
|
72
77
|
/**
|
|
73
78
|
* Whether a Tier 2 (content) rule governs `op` on this database. A copy
|
|
74
79
|
* cannot evaluate one — grafting never decrypts anything — so the preflight
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/core/copy/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,kCAAkC;IAClC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAEhD;;;;;OAKG;IACH,6BAA6B,CAC3B,IAAI,EAAE,IAAI,CACR,kBAAkB,EAChB,WAAW,GACX,IAAI,GACJ,OAAO,GACP,iBAAiB,GACjB,WAAW,GACX,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,gBAAgB,CACnB,GAAG;QAAE,UAAU,CAAC,EAAE,eAAe,CAAA;KAAE,EACpC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,cAAc,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;IAExE;;;;;;;OAOG;IACH,wBAAwB,CACtB,gBAAgB,EAAE,UAAU,EAC5B,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,4FAA4F;IAC5F,wBAAwB,CACtB,OAAO,EAAE,UAAU,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,iFAAiF;IACjF,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;;;;;;OAQG;IACH,mBAAmB,CACjB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAElC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;;;;OAQG;IACH,uBAAuB,CACrB,KAAK,EAAE,MAAM,EACb,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9C,OAAO,CAAC,EAAE;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB"}
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/core/copy/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,kCAAkC;IAClC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAEhD;;;;;OAKG;IACH,6BAA6B,CAC3B,IAAI,EAAE,IAAI,CACR,kBAAkB,EAChB,WAAW,GACX,IAAI,GACJ,OAAO,GACP,iBAAiB,GACjB,WAAW,GACX,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,gBAAgB,CACnB,GAAG;QAAE,UAAU,CAAC,EAAE,eAAe,CAAA;KAAE,EACpC,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,cAAc,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,uBAAuB,EAAE,CAAC;IAExE;;;;;;;OAOG;IACH,wBAAwB,CACtB,gBAAgB,EAAE,UAAU,EAC5B,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,4FAA4F;IAC5F,wBAAwB,CACtB,OAAO,EAAE,UAAU,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,iFAAiF;IACjF,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;;;;;;OAQG;IACH,mBAAmB,CACjB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAElC;;;OAGG;IACH,YAAY,CACV,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;;;;OAQG;IACH,uBAAuB,CACrB,KAAK,EAAE,MAAM,EACb,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9C,OAAO,CAAC,EAAE;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/core/copy/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,eAAe,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,EAAE,EAAE,QAAQ,CAAC;IACb,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC;AAED,mDAAmD;AACnD,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B;;;;OAIG;IACH,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,oDAAoD;IACpD,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAWD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,MAAM,EAChD,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC,OAAO,CAAC,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/core/copy/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,eAAe,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,EAAE,EAAE,QAAQ,CAAC;IACb,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC;AAED,mDAAmD;AACnD,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B;;;;OAIG;IACH,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,oDAAoD;IACpD,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAWD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,MAAM,EAChD,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAuDjC;AAED,2DAA2D;AAC3D,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,sBAAsB,EACjC,UAAU,EAAE,MAAM,GACjB,MAAM,CAgBR"}
|
|
@@ -55,11 +55,17 @@ async function preflightCopyAdmission(target, entries, signerFor, documentCreato
|
|
|
55
55
|
pairs.set(key, { signerPublicKey, op, entryCount: 1 });
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
+
const createEntry = entries.find((e) => e.entryType === "doc_create");
|
|
59
|
+
const creatorTrustedTime = createEntry
|
|
60
|
+
? (createEntry.receivedAt ?? createEntry.createdAt)
|
|
61
|
+
: Number.MAX_SAFE_INTEGER;
|
|
58
62
|
const checked = [];
|
|
59
63
|
const denied = [];
|
|
60
64
|
const undecidableOps = new Set();
|
|
61
65
|
for (const pair of pairs.values()) {
|
|
62
|
-
const
|
|
66
|
+
const isAuthor = documentCreatorKey !== null &&
|
|
67
|
+
(await target.isSamePerson(documentCreatorKey, pair.signerPublicKey, creatorTrustedTime, Number.MAX_SAFE_INTEGER));
|
|
68
|
+
const decision = await target.evaluateWriteAccess(pair.op, pair.signerPublicKey, isAuthor);
|
|
63
69
|
const check = { ...pair, decision };
|
|
64
70
|
checked.push(check);
|
|
65
71
|
if (decision && !decision.allowed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/core/copy/preflight.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAqDH,
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/core/copy/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -249,6 +249,13 @@ export interface CopyDocumentOptions {
|
|
|
249
249
|
* therefore rules out {@link authorship} `"preserve"`.
|
|
250
250
|
*/
|
|
251
251
|
decryptionKeyId?: string;
|
|
252
|
+
/**
|
|
253
|
+
* Readers of the copy. Mutually exclusive with {@link decryptionKeyId}.
|
|
254
|
+
* A sealed source is never copied under `$sealed:<sourceDocId>`; pass
|
|
255
|
+
* `recipients` (or omit both to seal the copy to the copier only).
|
|
256
|
+
*/
|
|
257
|
+
recipients?: import("../userkeys/sealedTypes").RecipientSpec[];
|
|
258
|
+
recipientOptions?: import("../userkeys/sealedTypes").RecipientOptions;
|
|
252
259
|
/**
|
|
253
260
|
* Record a verifiable {@link EntryProvenance} on each copied entry (history
|
|
254
261
|
* modes), or a document-level `_provenance` object in the payload (flatten
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/copy/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/copy/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,8 @@ import type { StoreEntryAttachmentRef, StoreEntryMetadata } from "../types";
|
|
|
31
31
|
* optional block whose absence produces ZERO bytes (so the layout is
|
|
32
32
|
* byte-identical to the prior version for entries that do not carry the new
|
|
33
33
|
* data) does NOT bump this value. The `attachmentRefs` block and the
|
|
34
|
-
* `provenance` block (see {@link buildEntrySigningBytes})
|
|
34
|
+
* `provenance` block and the `recipients` block (see {@link buildEntrySigningBytes})
|
|
35
|
+
* are such extensions:
|
|
35
36
|
* entries without attachments and without provenance — including every entry
|
|
36
37
|
* signed before those fields existed — are unaffected and keep verifying.
|
|
37
38
|
*/
|
|
@@ -43,6 +44,7 @@ export declare const ENTRY_SIGNATURE_LAYOUT_VERSION = 1;
|
|
|
43
44
|
* between "an attachmentRefs count" and "a provenance block" impossible.
|
|
44
45
|
*/
|
|
45
46
|
export declare const ENTRY_PROVENANCE_BLOCK_TAG = 2;
|
|
47
|
+
export declare const ENTRY_RECIPIENTS_BLOCK_TAG = 3;
|
|
46
48
|
/**
|
|
47
49
|
* The exact set of metadata fields bound by an author's `metadataSignature`, in
|
|
48
50
|
* the order they appear in the byte layout.
|
|
@@ -78,6 +80,7 @@ export interface EntrySignatureFields {
|
|
|
78
80
|
* rewrite it after the fact.
|
|
79
81
|
*/
|
|
80
82
|
provenance?: EntryProvenance;
|
|
83
|
+
recipients?: import("../userkeys/sealedTypes").EntryRecipients;
|
|
81
84
|
}
|
|
82
85
|
/**
|
|
83
86
|
* A verifiable record of where a copied entry came from.
|
|
@@ -170,6 +173,9 @@ export declare function bytesToBase64(bytes: Uint8Array): string;
|
|
|
170
173
|
* || len(sourceSigningBytes) || sourceSigningBytes (recursive layout)
|
|
171
174
|
* || len(sourceMetadataSignature) || sourceMetadataSignature (raw bytes,
|
|
172
175
|
* zero-length when absent)
|
|
176
|
+
* -- trailing recipients block, PRESENT ONLY IF recipients.wraps.length > 0 --
|
|
177
|
+
* || 0x03 (ENTRY_RECIPIENTS_BLOCK_TAG)
|
|
178
|
+
* || len(JSON.stringify(recipients)) || JSON.stringify(recipients)
|
|
173
179
|
* ```
|
|
174
180
|
*
|
|
175
181
|
* Both trailing blocks are deliberately backward-compatible extensions: each is
|
|
@@ -190,7 +196,7 @@ export declare function bytesToBase64(bytes: Uint8Array): string;
|
|
|
190
196
|
*/
|
|
191
197
|
export declare function buildEntrySigningBytes(fields: EntrySignatureFields, version?: number): Uint8Array;
|
|
192
198
|
/** Project the signed fields out of an entry's metadata. */
|
|
193
|
-
export declare function entrySignatureFieldsFromEntry(entry: Pick<StoreEntryMetadata, "entryType" | "id" | "docId" | "decryptionKeyId" | "createdAt" | "dependencyIds" | "contentHash" | "createdByPublicKey" | "attachmentRefs"> & {
|
|
199
|
+
export declare function entrySignatureFieldsFromEntry(entry: Pick<StoreEntryMetadata, "entryType" | "id" | "docId" | "decryptionKeyId" | "createdAt" | "dependencyIds" | "contentHash" | "createdByPublicKey" | "attachmentRefs" | "recipients"> & {
|
|
194
200
|
provenance?: EntryProvenance;
|
|
195
201
|
}): EntrySignatureFields;
|
|
196
202
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntrySignature.d.ts","sourceRoot":"","sources":["../../../src/core/crypto/EntrySignature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH
|
|
1
|
+
{"version":3,"file":"EntrySignature.d.ts","sourceRoot":"","sources":["../../../src/core/crypto/EntrySignature.ts"],"names":[],"mappings":"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"}
|