mindoodb 0.0.85 → 0.0.86
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 +1 -0
- package/README.md +6 -4
- package/dist/cloudflare/DurableObjectSql.d.ts +56 -0
- package/dist/cloudflare/DurableObjectSql.d.ts.map +1 -0
- package/dist/cloudflare/DurableObjectSql.js +180 -0
- package/dist/cloudflare/DurableObjectSql.js.map +1 -0
- package/dist/cloudflare/MindooDatabaseObject.d.ts +86 -0
- package/dist/cloudflare/MindooDatabaseObject.d.ts.map +1 -0
- package/dist/cloudflare/MindooDatabaseObject.js +614 -0
- package/dist/cloudflare/MindooDatabaseObject.js.map +1 -0
- package/dist/cloudflare/MindooServerObject.d.ts +63 -0
- package/dist/cloudflare/MindooServerObject.d.ts.map +1 -0
- package/dist/cloudflare/MindooServerObject.js +521 -0
- package/dist/cloudflare/MindooServerObject.js.map +1 -0
- package/dist/cloudflare/WorkersCryptoAdapter.d.ts +7 -0
- package/dist/cloudflare/WorkersCryptoAdapter.d.ts.map +1 -0
- package/dist/cloudflare/WorkersCryptoAdapter.js +14 -0
- package/dist/cloudflare/WorkersCryptoAdapter.js.map +1 -0
- package/dist/cloudflare/host.d.ts +49 -0
- package/dist/cloudflare/host.d.ts.map +1 -0
- package/dist/cloudflare/host.js +104 -0
- package/dist/cloudflare/host.js.map +1 -0
- package/dist/cloudflare/http.d.ts +91 -0
- package/dist/cloudflare/http.d.ts.map +1 -0
- package/dist/cloudflare/http.js +266 -0
- package/dist/cloudflare/http.js.map +1 -0
- package/dist/cloudflare/index.d.ts +12 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +20 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare/storeRpc.d.ts +22 -0
- package/dist/cloudflare/storeRpc.d.ts.map +1 -0
- package/dist/cloudflare/storeRpc.js +85 -0
- package/dist/cloudflare/storeRpc.js.map +1 -0
- package/dist/cloudflare/types.d.ts +101 -0
- package/dist/cloudflare/types.d.ts.map +1 -0
- package/dist/cloudflare/types.js +10 -0
- package/dist/cloudflare/types.js.map +1 -0
- package/dist/cloudflare/worker.d.ts +25 -0
- package/dist/cloudflare/worker.d.ts.map +1 -0
- package/dist/cloudflare/worker.js +170 -0
- package/dist/cloudflare/worker.js.map +1 -0
- package/dist/core/BaseMindooDB.d.ts +28 -1
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +180 -86
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +14 -0
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +46 -0
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +10 -0
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +79 -8
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/ChangeDocDraft.d.ts +133 -0
- package/dist/core/ChangeDocDraft.d.ts.map +1 -0
- package/dist/core/ChangeDocDraft.js +492 -0
- package/dist/core/ChangeDocDraft.js.map +1 -0
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts +8 -0
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/AuthenticationService.js +19 -0
- package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.js +3 -23
- package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -1
- package/dist/core/appendonlystores/rpc/storeRpcCodec.d.ts.map +1 -1
- package/dist/core/appendonlystores/rpc/storeRpcCodec.js +3 -23
- package/dist/core/appendonlystores/rpc/storeRpcCodec.js.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.d.ts.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js +21 -30
- package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts +37 -1
- package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteDriver.js +99 -40
- package/dist/core/appendonlystores/sqlite/SqliteDriver.js.map +1 -1
- package/dist/core/expressions/evaluateExpression.d.ts +8 -0
- package/dist/core/expressions/evaluateExpression.d.ts.map +1 -1
- package/dist/core/expressions/evaluateExpression.js +29 -4
- package/dist/core/expressions/evaluateExpression.js.map +1 -1
- package/dist/core/expressions/metadata.js +4 -4
- package/dist/core/expressions/metadata.js.map +1 -1
- package/dist/core/types.d.ts +61 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/uri/MindooURI.d.ts.map +1 -1
- package/dist/core/uri/MindooURI.js +3 -24
- package/dist/core/uri/MindooURI.js.map +1 -1
- package/dist/core/utils/base64.d.ts +17 -0
- package/dist/core/utils/base64.d.ts.map +1 -0
- package/dist/core/utils/base64.js +54 -0
- package/dist/core/utils/base64.js.map +1 -0
- package/dist/core/utils/idGeneration.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.js +14 -3
- package/dist/core/utils/idGeneration.js.map +1 -1
- package/dist/node/server/FsServerDataStore.d.ts +23 -0
- package/dist/node/server/FsServerDataStore.d.ts.map +1 -0
- package/dist/node/server/FsServerDataStore.js +59 -0
- package/dist/node/server/FsServerDataStore.js.map +1 -0
- package/dist/node/server/IrohServerEndpoint.d.ts +1 -1
- package/dist/node/server/IrohServerEndpoint.d.ts.map +1 -1
- package/dist/node/server/IrohServerRpc.d.ts +5 -5
- package/dist/node/server/IrohServerRpc.d.ts.map +1 -1
- package/dist/node/server/IrohServerRpc.js +1 -1
- package/dist/node/server/IrohServerRpc.js.map +1 -1
- package/dist/node/server/MindooDBServer.d.ts +29 -150
- package/dist/node/server/MindooDBServer.d.ts.map +1 -1
- package/dist/node/server/MindooDBServer.js +160 -1573
- package/dist/node/server/MindooDBServer.js.map +1 -1
- package/dist/node/server/PurgedDocRegistry.d.ts +4 -27
- package/dist/node/server/PurgedDocRegistry.d.ts.map +1 -1
- package/dist/node/server/PurgedDocRegistry.js +6 -83
- package/dist/node/server/PurgedDocRegistry.js.map +1 -1
- package/dist/node/server/StoreFactory.d.ts +1 -1
- package/dist/node/server/StoreFactory.d.ts.map +1 -1
- package/dist/node/server/TenantManager.d.ts +16 -284
- package/dist/node/server/TenantManager.d.ts.map +1 -1
- package/dist/node/server/TenantManager.js +35 -1168
- package/dist/node/server/TenantManager.js.map +1 -1
- package/dist/node/server/add-to-network.js +1 -1
- package/dist/node/server/add-to-network.js.map +1 -1
- package/dist/node/server/config.d.ts +11 -15
- package/dist/node/server/config.d.ts.map +1 -1
- package/dist/node/server/config.js +30 -245
- package/dist/node/server/config.js.map +1 -1
- package/dist/node/server/expressAdapter.d.ts +23 -0
- package/dist/node/server/expressAdapter.d.ts.map +1 -0
- package/dist/node/server/expressAdapter.js +108 -0
- package/dist/node/server/expressAdapter.js.map +1 -0
- package/dist/node/server/nativeIrohStreamIO.d.ts +1 -1
- package/dist/node/server/nativeIrohStreamIO.d.ts.map +1 -1
- package/dist/node/server/peer/FileClusterAuditStorage.d.ts +16 -0
- package/dist/node/server/peer/FileClusterAuditStorage.d.ts.map +1 -0
- package/dist/node/server/peer/FileClusterAuditStorage.js +39 -0
- package/dist/node/server/peer/FileClusterAuditStorage.js.map +1 -0
- package/dist/node/server/peer/IrohPeerLink.d.ts +1 -1
- package/dist/node/server/peer/IrohPeerLink.d.ts.map +1 -1
- package/dist/node/server/peer/routes.d.ts +10 -44
- package/dist/node/server/peer/routes.d.ts.map +1 -1
- package/dist/node/server/peer/routes.js +33 -275
- package/dist/node/server/peer/routes.js.map +1 -1
- package/dist/node/server/resolveServerPassword.js +1 -1
- package/dist/node/server/resolveServerPassword.js.map +1 -1
- package/dist/node/server/server.js +1 -1
- package/dist/node/server/server.js.map +1 -1
- package/dist/node/server/serverinit.js +1 -1
- package/dist/node/server/serverinit.js.map +1 -1
- package/dist/server/CapabilityMatcher.d.ts +60 -0
- package/dist/server/CapabilityMatcher.d.ts.map +1 -0
- package/dist/server/CapabilityMatcher.js +138 -0
- package/dist/server/CapabilityMatcher.js.map +1 -0
- package/dist/server/DeviceDiscoveryService.d.ts +36 -0
- package/dist/server/DeviceDiscoveryService.d.ts.map +1 -0
- package/dist/server/DeviceDiscoveryService.js +165 -0
- package/dist/server/DeviceDiscoveryService.js.map +1 -0
- package/dist/server/PurgedDocRegistry.d.ts +35 -0
- package/dist/server/PurgedDocRegistry.d.ts.map +1 -0
- package/dist/server/PurgedDocRegistry.js +90 -0
- package/dist/server/PurgedDocRegistry.js.map +1 -0
- package/dist/server/ServerDataStore.d.ts +67 -0
- package/dist/server/ServerDataStore.d.ts.map +1 -0
- package/dist/server/ServerDataStore.js +88 -0
- package/dist/server/ServerDataStore.js.map +1 -0
- package/dist/server/SyncEventBus.d.ts +39 -0
- package/dist/server/SyncEventBus.d.ts.map +1 -0
- package/dist/server/SyncEventBus.js +41 -0
- package/dist/server/SyncEventBus.js.map +1 -0
- package/dist/server/SystemAdminAuth.d.ts +82 -0
- package/dist/server/SystemAdminAuth.d.ts.map +1 -0
- package/dist/server/SystemAdminAuth.js +228 -0
- package/dist/server/SystemAdminAuth.js.map +1 -0
- package/dist/server/TenantManager.d.ts +330 -0
- package/dist/server/TenantManager.d.ts.map +1 -0
- package/dist/server/TenantManager.js +1186 -0
- package/dist/server/TenantManager.js.map +1 -0
- package/dist/server/http/MindooDBServerCore.d.ts +313 -0
- package/dist/server/http/MindooDBServerCore.d.ts.map +1 -0
- package/dist/server/http/MindooDBServerCore.js +1403 -0
- package/dist/server/http/MindooDBServerCore.js.map +1 -0
- package/dist/server/http/types.d.ts +89 -0
- package/dist/server/http/types.d.ts.map +1 -0
- package/dist/server/http/types.js +29 -0
- package/dist/server/http/types.js.map +1 -0
- package/dist/server/index.d.ts +32 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +76 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/peer/ClusterAuditLog.d.ts +71 -0
- package/dist/server/peer/ClusterAuditLog.d.ts.map +1 -0
- package/dist/server/peer/ClusterAuditLog.js +81 -0
- package/dist/server/peer/ClusterAuditLog.js.map +1 -0
- package/dist/server/peer/ClusterJobRunner.d.ts +43 -0
- package/dist/server/peer/ClusterJobRunner.d.ts.map +1 -0
- package/dist/server/peer/ClusterJobRunner.js +119 -0
- package/dist/server/peer/ClusterJobRunner.js.map +1 -0
- package/dist/server/peer/ClusterManager.d.ts +149 -0
- package/dist/server/peer/ClusterManager.d.ts.map +1 -0
- package/dist/server/peer/ClusterManager.js +292 -0
- package/dist/server/peer/ClusterManager.js.map +1 -0
- package/dist/server/peer/PeerAuthService.d.ts +69 -0
- package/dist/server/peer/PeerAuthService.d.ts.map +1 -0
- package/dist/server/peer/PeerAuthService.js +208 -0
- package/dist/server/peer/PeerAuthService.js.map +1 -0
- package/dist/server/peer/PeerReplicator.d.ts +303 -0
- package/dist/server/peer/PeerReplicator.d.ts.map +1 -0
- package/dist/server/peer/PeerReplicator.js +1071 -0
- package/dist/server/peer/PeerReplicator.js.map +1 -0
- package/dist/server/peer/clusterHttp.d.ts +113 -0
- package/dist/server/peer/clusterHttp.d.ts.map +1 -0
- package/dist/server/peer/clusterHttp.js +290 -0
- package/dist/server/peer/clusterHttp.js.map +1 -0
- package/dist/server/peer/types.d.ts +244 -0
- package/dist/server/peer/types.d.ts.map +1 -0
- package/dist/server/peer/types.js +189 -0
- package/dist/server/peer/types.js.map +1 -0
- package/dist/server/rateLimits.d.ts +119 -0
- package/dist/server/rateLimits.d.ts.map +1 -0
- package/dist/server/rateLimits.js +159 -0
- package/dist/server/rateLimits.js.map +1 -0
- package/dist/server/serverConfig.d.ts +37 -0
- package/dist/server/serverConfig.d.ts.map +1 -0
- package/dist/server/serverConfig.js +251 -0
- package/dist/server/serverConfig.js.map +1 -0
- package/dist/server/timestampProxy.d.ts +129 -0
- package/dist/server/timestampProxy.d.ts.map +1 -0
- package/dist/server/timestampProxy.js +361 -0
- package/dist/server/timestampProxy.js.map +1 -0
- package/dist/server/types.d.ts +267 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +56 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/validation.d.ts +43 -0
- package/dist/server/validation.d.ts.map +1 -0
- package/dist/server/validation.js +104 -0
- package/dist/server/validation.js.map +1 -0
- package/package.json +9 -1
|
@@ -1,294 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* authenticating with remote servers and opening tenant directories.
|
|
6
|
-
*
|
|
7
|
-
* When a tenant has a $publicinfos key (sent during publishToServer), the
|
|
8
|
-
* manager creates a real BaseMindooTenant for directory reading. User
|
|
9
|
-
* authentication is then validated against the admin-signed directory DB
|
|
10
|
-
* rather than a static JSON config.
|
|
11
|
-
*
|
|
12
|
-
* When no $publicinfos key is available, a SimpleMindooDirectory backed
|
|
13
|
-
* by config.json users[] is used as a fallback (useful for tests).
|
|
14
|
-
*
|
|
15
|
-
* A CompositeMindooDirectory wraps whichever directory source is used and
|
|
16
|
-
* also checks the global trusted-servers list, enabling server-to-server
|
|
17
|
-
* auth without servers being in each tenant's user directory.
|
|
2
|
+
* Node host of the {@link CoreTenantManager}: tenant state lives in files
|
|
3
|
+
* below the data directory and every tenant database is an on-disk store in
|
|
4
|
+
* `<dataDir>/<tenantId>/stores` (see {@link StoreFactory}).
|
|
18
5
|
*/
|
|
19
6
|
import { NodeCryptoAdapter } from "../crypto/NodeCryptoAdapter";
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import
|
|
23
|
-
import type { WitnessSigner } from "../../core/crypto/WitnessReceipt";
|
|
24
|
-
import type { TimestampProvider } from "../../core/accesscontrol/timestamp/TimestampProvider";
|
|
25
|
-
import type { MindooTenant, MindooTenantDirectory, ContentAddressedStore, DirectoryUserLookup } from "../../core/types";
|
|
26
|
-
import { StoreKind } from "../../core/types";
|
|
27
|
-
import type { PrivateUserId } from "../../core/userid";
|
|
7
|
+
import { TenantManager as CoreTenantManager } from "../../server/TenantManager";
|
|
8
|
+
import type { ServerStoreProvider } from "../../server/ServerDataStore";
|
|
9
|
+
import { FsServerDataStore } from "./FsServerDataStore";
|
|
28
10
|
import { StoreFactory } from "./StoreFactory";
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
interface RegisterTenantResult {
|
|
39
|
-
context: TenantContext;
|
|
40
|
-
created: boolean;
|
|
41
|
-
}
|
|
42
|
-
export declare class SimpleMindooDirectory implements Pick<MindooTenantDirectory, "getUserPublicKeys" | "isUserRevoked" | "validatePublicSigningKey" | "getUserBySigningPublicKey"> {
|
|
43
|
-
/** Canonical index: entries are identified by their signing public key. */
|
|
44
|
-
private usersByKey;
|
|
45
|
-
/**
|
|
46
|
-
* Backward-compat index by documentation-only username, populated only for
|
|
47
|
-
* config entries that carry a `username`. Lets legacy username-based
|
|
48
|
-
* challenges keep resolving; `username` is never required.
|
|
49
|
-
*/
|
|
50
|
-
private usersByUsername;
|
|
51
|
-
private revokedUsers;
|
|
52
|
-
private adminSigningPublicKey;
|
|
53
|
-
constructor(config: TenantConfig);
|
|
54
|
-
getUserPublicKeys(username: string): Promise<{
|
|
55
|
-
signingPublicKey: string;
|
|
56
|
-
encryptionPublicKey: string;
|
|
57
|
-
} | null>;
|
|
58
|
-
getUserBySigningPublicKey(publicKey: string): Promise<DirectoryUserLookup | null>;
|
|
59
|
-
private toLookup;
|
|
60
|
-
isUserRevoked(username: string): Promise<boolean>;
|
|
61
|
-
validatePublicSigningKey(publicKey: string, _opts?: {
|
|
62
|
-
forceRefresh?: boolean;
|
|
63
|
-
}): Promise<boolean>;
|
|
11
|
+
export { SimpleMindooDirectory, type LoadedTenant, type RegisterTenantResult, } from "../../server/TenantManager";
|
|
12
|
+
/** The on-disk stores of every tenant below `<dataDir>/<tenantId>/stores`. */
|
|
13
|
+
export declare class NodeServerStoreProvider implements ServerStoreProvider {
|
|
14
|
+
private readonly dataDir;
|
|
15
|
+
private readonly dataStore;
|
|
16
|
+
constructor(dataDir: string, dataStore: FsServerDataStore);
|
|
17
|
+
createTenantStores(tenantId: string, config: ConstructorParameters<typeof StoreFactory>[1]): StoreFactory;
|
|
18
|
+
listDatabases(tenantId: string): string[];
|
|
64
19
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
* - Loading the global server identity and trusted servers
|
|
68
|
-
* - Loading tenant configurations from disk
|
|
69
|
-
* - Caching loaded tenants
|
|
70
|
-
* - Registering new tenants
|
|
71
|
-
* - Managing tenant stores and authentication services
|
|
72
|
-
* - Creating a real MindooDB tenant for directory reading (when keys available)
|
|
73
|
-
* - Runtime management of trusted servers
|
|
74
|
-
*/
|
|
75
|
-
export declare class TenantManager {
|
|
76
|
-
private dataDir;
|
|
77
|
-
private serverPassword;
|
|
78
|
-
private cryptoAdapter;
|
|
79
|
-
private loadedTenants;
|
|
80
|
-
private serverIdentity;
|
|
81
|
-
private trustedServers;
|
|
82
|
-
/** Lazily-built, cached witness signer (server's Ed25519 signing identity). */
|
|
83
|
-
private witnessSigner;
|
|
84
|
-
/** Lazily-imported RSA private key for peer replication (see getServerEncryptionPrivateKey). */
|
|
85
|
-
private serverEncryptionPrivateKey;
|
|
86
|
-
/** Peer wiring handed down to every server store; see setPeerAccessControl. */
|
|
87
|
-
private peerAccessControl;
|
|
88
|
-
/** Per-tenant persistent registry of executed purges (docs/accesscontrol.md §13). */
|
|
89
|
-
private purgedDocRegistries;
|
|
90
|
-
/** In-flight purge executions, keyed by normalized tenant id (serializes runs). */
|
|
91
|
-
private purgeInFlight;
|
|
20
|
+
export declare class TenantManager extends CoreTenantManager {
|
|
21
|
+
private readonly dataDir;
|
|
92
22
|
constructor(dataDir: string, serverPassword?: string);
|
|
93
|
-
getServerIdentity(): PrivateUserId | null;
|
|
94
|
-
getServerPublicInfo(): TrustedServer | null;
|
|
95
23
|
getDataDir(): string;
|
|
96
|
-
/**
|
|
97
|
-
* Teach every server store how to recognise a trusted peer.
|
|
98
|
-
*
|
|
99
|
-
* `MindooDBServer` calls this once at startup. Two hooks, both required for
|
|
100
|
-
* peer replication to be correct:
|
|
101
|
-
*
|
|
102
|
-
* - `peerTokenResolver` lets a peer's cluster-level JWT through the tenant
|
|
103
|
-
* sync routes. A peer holds no per-tenant grant, so without it the mirror
|
|
104
|
-
* would need a second replication protocol; with it the peer reuses the
|
|
105
|
-
* client one and the store skips the per-user gates that do not apply to a
|
|
106
|
-
* full replica.
|
|
107
|
-
* - `trustedWitnessResolver` decides whose witness receipts may be preserved
|
|
108
|
-
* instead of re-stamped (convergence invariant 3). Without it a replicated
|
|
109
|
-
* entry would get a fresh `receivedAt` on every hop and "trusted time"
|
|
110
|
-
* would mean "time it reached the last server".
|
|
111
|
-
*
|
|
112
|
-
* Must be called before the first {@link getServerStore}, since stores are
|
|
113
|
-
* cached per tenant and database.
|
|
114
|
-
*/
|
|
115
|
-
setPeerAccessControl(options: {
|
|
116
|
-
peerTokenResolver?: ServerPeerTokenResolver;
|
|
117
|
-
trustedWitnessResolver?: ServerTrustedWitnessResolver;
|
|
118
|
-
}): void;
|
|
119
|
-
/**
|
|
120
|
-
* Database ids this server holds for a tenant, read from
|
|
121
|
-
* `{dataDir}/{tenantId}/stores`. Used by peer replication to mirror every
|
|
122
|
-
* database rather than a configured subset.
|
|
123
|
-
*/
|
|
124
|
-
listDatabases(tenantId: string): string[];
|
|
125
|
-
/**
|
|
126
|
-
* The server's own RSA private key, imported for decryption.
|
|
127
|
-
*
|
|
128
|
-
* Peer replication needs it because the remote wraps transported entries to
|
|
129
|
-
* this server's `encryptionPublicKey` (the one in its `trusted-servers.json`),
|
|
130
|
-
* exactly as it would wrap them for a client.
|
|
131
|
-
*/
|
|
132
|
-
getServerEncryptionPrivateKey(): Promise<CryptoKey | undefined>;
|
|
133
|
-
/**
|
|
134
|
-
* Build (and cache) the server's witness identity used to stamp receipts on
|
|
135
|
-
* accepted entries (docs/accesscontrol.md §5.3). Returns undefined when the
|
|
136
|
-
* server identity or its unlock password is unavailable, in which case the
|
|
137
|
-
* server runs in pre-access-control mode (no stamping, no Tier 1 advertised).
|
|
138
|
-
*/
|
|
139
|
-
getWitnessSigner(): Promise<WitnessSigner | undefined>;
|
|
140
|
-
/**
|
|
141
|
-
* Build the trusted-time provider that stamps receipts on accepted entries
|
|
142
|
-
* (docs/accesscontrol.md §5.3, §13). v1 wraps the server's Ed25519 witness
|
|
143
|
-
* identity; returns undefined when no witness signer is available, leaving the
|
|
144
|
-
* server in pre-access-control mode.
|
|
145
|
-
*/
|
|
146
|
-
getTimestampProvider(): Promise<TimestampProvider | undefined>;
|
|
147
|
-
listTrustedServers(): TrustedServer[];
|
|
148
|
-
addTrustedServer(server: TrustedServer): void;
|
|
149
|
-
/**
|
|
150
|
-
* Add or replace a trusted server by name.
|
|
151
|
-
*
|
|
152
|
-
* Peer CRUD needs an upsert: `addTrustedServer` throws on an existing name,
|
|
153
|
-
* which is right for `add-to-network` (a silent overwrite of a peer's keys
|
|
154
|
-
* would be a trust change disguised as a config edit) but wrong for the admin
|
|
155
|
-
* API, where changing a peer's url or role is the common case.
|
|
156
|
-
*/
|
|
157
|
-
saveTrustedServer(server: TrustedServer): void;
|
|
158
|
-
removeTrustedServer(name: string): boolean;
|
|
159
|
-
private persistTrustedServers;
|
|
160
|
-
private getServerKeyBagPath;
|
|
161
|
-
private loadServerKeyBag;
|
|
162
|
-
private createServerKeyBag;
|
|
163
|
-
private saveServerKeyBag;
|
|
164
|
-
private bytesToBase64;
|
|
165
|
-
private mergeUniqueKeys;
|
|
166
|
-
private computePublicInfosFingerprint;
|
|
167
|
-
private resolveTenantDir;
|
|
168
|
-
private resolveTenantConfigPath;
|
|
169
|
-
private decryptEncryptedPublicInfosKey;
|
|
170
|
-
private resolveIncomingPublicInfosKey;
|
|
171
|
-
private getStoredPublicInfosKeys;
|
|
172
|
-
private persistTenantPublicInfosKey;
|
|
173
|
-
/**
|
|
174
|
-
* All stored `$publicinfos` AES key versions for a tenant from `server.keybag`.
|
|
175
|
-
* Empty when the tenant was never published or the server keybag is locked.
|
|
176
|
-
*/
|
|
177
|
-
getPublicInfosKeysForTenant(tenantId: string): Promise<Uint8Array[]>;
|
|
178
|
-
listTenantPublicInfosFingerprints(tenantId: string): Promise<string[]>;
|
|
179
|
-
registerTenant(request: RegisterTenantRequest): Promise<RegisterTenantResult>;
|
|
180
|
-
getTenant(tenantId: string): Promise<LoadedTenant>;
|
|
181
|
-
tenantExists(tenantId: string): boolean;
|
|
182
|
-
/**
|
|
183
|
-
* Read the tenant's registered admin signing key without fully loading the
|
|
184
|
-
* tenant. Returns `null` if the tenant is missing or the config is unreadable.
|
|
185
|
-
*/
|
|
186
|
-
getTenantAdminSigningPublicKey(tenantId: string): string | null;
|
|
187
|
-
/**
|
|
188
|
-
* True when `publicsignkey` is the registered tenant-admin signing key for
|
|
189
|
-
* `tenantId` (PEM whitespace-insensitive).
|
|
190
|
-
*/
|
|
191
|
-
isTenantAdminSigningKeyFor(tenantId: string, publicsignkey: string): boolean;
|
|
192
|
-
/**
|
|
193
|
-
* True when `publicsignkey` is the registered admin signing key of any
|
|
194
|
-
* tenant on this server. Used to issue a system JWT so that admin can
|
|
195
|
-
* DELETE their own tenant; other `/system/*` routes stay capability-gated.
|
|
196
|
-
*/
|
|
197
|
-
isRegisteredTenantAdminSigningKey(publicsignkey: string): boolean;
|
|
198
|
-
listTenants(): string[];
|
|
199
|
-
/**
|
|
200
|
-
* Update operator-owned fields of an existing tenant configuration.
|
|
201
|
-
* Only the fields present in `updates` are overwritten.
|
|
202
|
-
*/
|
|
203
|
-
updateTenantConfig(tenantId: string, updates: Partial<Pick<TenantConfig, "defaultStoreType">>): void;
|
|
204
|
-
removeTenant(tenantId: string): Promise<void>;
|
|
205
|
-
getServerStore(tenantId: string, dbId: string, storeKind: StoreKind): Promise<ServerNetworkContentAddressedStore>;
|
|
206
|
-
/**
|
|
207
|
-
* Build a Tier 1 evaluator closure for a server store, or undefined when the
|
|
208
|
-
* directory cannot evaluate access (e.g. config-based directory without the
|
|
209
|
-
* access-control state chain). The closure resolves `$author` for non-create
|
|
210
|
-
* ops by reading the document's `doc_create` entry creator key from the local
|
|
211
|
-
* store (metadata only, no decryption) and comparing it to the change author.
|
|
212
|
-
*/
|
|
213
|
-
/**
|
|
214
|
-
* The witness's Tier 1 gate. The evaluation itself is shared with the peer
|
|
215
|
-
* listener, which has to run it for entries that never reach a witness at
|
|
216
|
-
* all — see `core/accesscontrol/tier1Evaluator.ts`.
|
|
217
|
-
*/
|
|
218
|
-
private buildTier1Evaluator;
|
|
219
|
-
/**
|
|
220
|
-
* Builtin `userdirectory` write invariant: admin may create/delete, only the
|
|
221
|
-
* owning person may change. `username_hash` is read from the decrypted
|
|
222
|
-
* `doc_create` payload (`$publicinfos`). Personal documents are sealed to
|
|
223
|
-
* their owner and therefore undecryptable here, so they are owned by whoever
|
|
224
|
-
* signed their `doc_create` — `resolveCreatorSigningKey` answers that from
|
|
225
|
-
* the entry chain alone.
|
|
226
|
-
*/
|
|
227
|
-
private buildUserdirectoryWriteContext;
|
|
228
|
-
private findCreateEntry;
|
|
229
|
-
/**
|
|
230
|
-
* Build a database-open evaluator closure for a server store, or undefined
|
|
231
|
-
* when the directory cannot evaluate the database-open policy (e.g. a
|
|
232
|
-
* config-based directory without the access-control state chain). When the
|
|
233
|
-
* tenant policy is `"directory-restricted"`, this rejects sync for any
|
|
234
|
-
* database id that is not in the allowlist; `"directory"` is always allowed
|
|
235
|
-
* and the tenant admin is exempt (resolved from the principal signing key).
|
|
236
|
-
*/
|
|
237
|
-
private buildDbAccessEvaluator;
|
|
238
|
-
/**
|
|
239
|
-
* Build a remote-wipe resolver closure for a server store, or undefined when
|
|
240
|
-
* the directory does not support wipe directives (docs/accesscontrol.md §6.5).
|
|
241
|
-
* Maps a wipe-targeted signing key to the admin-signed grant document id so
|
|
242
|
-
* the server can serve only that document to the targeted device.
|
|
243
|
-
*/
|
|
244
|
-
private buildWipeGrantDocIdResolver;
|
|
245
|
-
/**
|
|
246
|
-
* Build a per-user revoked-key blacklist resolver for a server store, or
|
|
247
|
-
* undefined when the directory cannot resolve revoked keys (e.g. a
|
|
248
|
-
* config-based directory). Maps the authenticated principal's signing key to
|
|
249
|
-
* the set of decryption key ids revoked for them at the directory head
|
|
250
|
-
* (docs/accesscontrol.md §13).
|
|
251
|
-
*/
|
|
252
|
-
private buildRevokedKeyResolver;
|
|
253
|
-
getStore(tenantId: string, dbId: string, storeKind: StoreKind): Promise<ContentAddressedStore>;
|
|
254
|
-
/**
|
|
255
|
-
* Documents purged from `dbId` on this server (the persistent purge
|
|
256
|
-
* registry). Peer pull replication refuses their entries.
|
|
257
|
-
*/
|
|
258
|
-
getPurgedDocIds(tenantId: string, dbId: string): ReadonlySet<string>;
|
|
259
|
-
/** The (lazily-loaded, cached) purge registry for a tenant. */
|
|
260
|
-
private getPurgedDocRegistry;
|
|
261
|
-
/**
|
|
262
|
-
* Execute any not-yet-processed document-history purge requests for a tenant
|
|
263
|
-
* (docs/accesscontrol.md §13). Reads the admin-signed purge requests from the
|
|
264
|
-
* tenant directory (server-readable `$publicinfos` envelope), physically
|
|
265
|
-
* purges each requested document's history from the tenant's `docs` and
|
|
266
|
-
* `attachments` stores, and records the purge in the persistent registry so
|
|
267
|
-
* (a) it is never executed twice and (b) re-pushes of the purged docs are
|
|
268
|
-
* rejected at sync time.
|
|
269
|
-
*
|
|
270
|
-
* No-op when the server cannot read the directory (config-based fallback, or
|
|
271
|
-
* the directory does not expose the purge reader). Runs are serialized per
|
|
272
|
-
* tenant; concurrent callers share the in-flight promise.
|
|
273
|
-
*/
|
|
274
|
-
executePendingPurges(tenantId: string): Promise<void>;
|
|
275
|
-
private executePendingPurgesInternal;
|
|
276
|
-
/**
|
|
277
|
-
* Purge one document from a database's docs and attachment stores. Attachment
|
|
278
|
-
* chunks still referenced by another document are kept (see
|
|
279
|
-
* `purgeDocumentHistory.ts`). Failures are logged, never thrown.
|
|
280
|
-
*/
|
|
281
|
-
private purgeDocumentFromDatabase;
|
|
282
|
-
getAuthService(tenantId: string): Promise<AuthenticationService>;
|
|
283
24
|
getCryptoAdapter(): NodeCryptoAdapter;
|
|
284
|
-
reloadTenant(tenantId: string): Promise<LoadedTenant>;
|
|
285
|
-
clearCache(): void;
|
|
286
|
-
private loadTenant;
|
|
287
|
-
/**
|
|
288
|
-
* Create a real BaseMindooTenant for directory reading using the global
|
|
289
|
-
* server identity.
|
|
290
|
-
*/
|
|
291
|
-
private createDirectoryTenant;
|
|
292
25
|
}
|
|
293
|
-
export {};
|
|
294
26
|
//# sourceMappingURL=TenantManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TenantManager.d.ts","sourceRoot":"","sources":["../../../src/node/server/TenantManager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"TenantManager.d.ts","sourceRoot":"","sources":["../../../src/node/server/TenantManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EACL,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,oBAAoB,GAC1B,MAAM,4BAA4B,CAAC;AAEpC,8EAA8E;AAC9E,qBAAa,uBAAwB,YAAW,mBAAmB;IAE/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,iBAAiB;IAG/C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;IAIzG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;CAiB1C;AAUD,qBAAa,aAAc,SAAQ,iBAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAWpD,UAAU,IAAI,MAAM;IAIX,gBAAgB,IAAI,iBAAiB;CAG/C"}
|