mindoodb 0.0.1
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 +263 -0
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts +5 -0
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts.map +1 -0
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js +17 -0
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js.map +1 -0
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +111 -0
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -0
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +237 -0
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -0
- package/dist/appendonlystores/network/HttpTransport.d.ts +78 -0
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -0
- package/dist/appendonlystores/network/HttpTransport.js +356 -0
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +131 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +248 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -0
- package/dist/appendonlystores/network/index.d.ts +8 -0
- package/dist/appendonlystores/network/index.d.ts.map +1 -0
- package/dist/appendonlystores/network/index.js +21 -0
- package/dist/appendonlystores/network/index.js.map +1 -0
- package/dist/browser/crypto/BrowserCryptoAdapter.d.ts +14 -0
- package/dist/browser/crypto/BrowserCryptoAdapter.d.ts.map +1 -0
- package/dist/browser/crypto/BrowserCryptoAdapter.js +30 -0
- package/dist/browser/crypto/BrowserCryptoAdapter.js.map +1 -0
- package/dist/browser/index.d.ts +3 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +26 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/core/BaseMindooDB.d.ts +182 -0
- package/dist/core/BaseMindooDB.d.ts.map +1 -0
- package/dist/core/BaseMindooDB.js +1701 -0
- package/dist/core/BaseMindooDB.js.map +1 -0
- package/dist/core/BaseMindooTenant.d.ts +155 -0
- package/dist/core/BaseMindooTenant.d.ts.map +1 -0
- package/dist/core/BaseMindooTenant.js +673 -0
- package/dist/core/BaseMindooTenant.js.map +1 -0
- package/dist/core/BaseMindooTenantDirectory.d.ts +99 -0
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -0
- package/dist/core/BaseMindooTenantDirectory.js +776 -0
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -0
- package/dist/core/BaseMindooTenantFactory.d.ts +91 -0
- package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -0
- package/dist/core/BaseMindooTenantFactory.js +297 -0
- package/dist/core/BaseMindooTenantFactory.js.map +1 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts +111 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +293 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -0
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts +78 -0
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -0
- package/dist/core/appendonlystores/network/AuthenticationService.js +297 -0
- package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -0
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts +174 -0
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -0
- package/dist/core/appendonlystores/network/NetworkTransport.js +3 -0
- package/dist/core/appendonlystores/network/NetworkTransport.js.map +1 -0
- package/dist/core/appendonlystores/network/types.d.ts +135 -0
- package/dist/core/appendonlystores/network/types.d.ts.map +1 -0
- package/dist/core/appendonlystores/network/types.js +35 -0
- package/dist/core/appendonlystores/network/types.js.map +1 -0
- package/dist/core/appendonlystores/types.d.ts +157 -0
- package/dist/core/appendonlystores/types.d.ts.map +1 -0
- package/dist/core/appendonlystores/types.js +3 -0
- package/dist/core/appendonlystores/types.js.map +1 -0
- package/dist/core/crypto/CryptoAdapter.d.ts +19 -0
- package/dist/core/crypto/CryptoAdapter.d.ts.map +1 -0
- package/dist/core/crypto/CryptoAdapter.js +3 -0
- package/dist/core/crypto/CryptoAdapter.js.map +1 -0
- package/dist/core/crypto/MindooDocSigner.d.ts +106 -0
- package/dist/core/crypto/MindooDocSigner.d.ts.map +1 -0
- package/dist/core/crypto/MindooDocSigner.js +192 -0
- package/dist/core/crypto/MindooDocSigner.js.map +1 -0
- package/dist/core/crypto/RSAEncryption.d.ts +62 -0
- package/dist/core/crypto/RSAEncryption.d.ts.map +1 -0
- package/dist/core/crypto/RSAEncryption.js +167 -0
- package/dist/core/crypto/RSAEncryption.js.map +1 -0
- package/dist/core/errors.d.ts +10 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +17 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +53 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/indexing/virtualviews/IViewEntryAccessCheck.d.ts +33 -0
- package/dist/core/indexing/virtualviews/IViewEntryAccessCheck.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/IViewEntryAccessCheck.js +27 -0
- package/dist/core/indexing/virtualviews/IViewEntryAccessCheck.js.map +1 -0
- package/dist/core/indexing/virtualviews/IVirtualViewDataProvider.d.ts +31 -0
- package/dist/core/indexing/virtualviews/IVirtualViewDataProvider.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/IVirtualViewDataProvider.js +3 -0
- package/dist/core/indexing/virtualviews/IVirtualViewDataProvider.js.map +1 -0
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +52 -0
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +106 -0
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKey.d.ts +44 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKey.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKey.js +107 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKey.js.map +1 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts +28 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js +133 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualView.d.ts +109 -0
- package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualView.js +504 -0
- package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewColumn.d.ts +59 -0
- package/dist/core/indexing/virtualviews/VirtualViewColumn.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewColumn.js +70 -0
- package/dist/core/indexing/virtualviews/VirtualViewColumn.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewDataChange.d.ts +49 -0
- package/dist/core/indexing/virtualviews/VirtualViewDataChange.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewDataChange.js +69 -0
- package/dist/core/indexing/virtualviews/VirtualViewDataChange.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +121 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +365 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts +131 -0
- package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewFactory.js +236 -0
- package/dist/core/indexing/virtualviews/VirtualViewFactory.js.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts +330 -0
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.js +1010 -0
- package/dist/core/indexing/virtualviews/VirtualViewNavigator.js.map +1 -0
- package/dist/core/indexing/virtualviews/index.d.ts +53 -0
- package/dist/core/indexing/virtualviews/index.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/index.js +89 -0
- package/dist/core/indexing/virtualviews/index.js.map +1 -0
- package/dist/core/indexing/virtualviews/types.d.ts +115 -0
- package/dist/core/indexing/virtualviews/types.d.ts.map +1 -0
- package/dist/core/indexing/virtualviews/types.js +175 -0
- package/dist/core/indexing/virtualviews/types.js.map +1 -0
- package/dist/core/keys/KeyBag.d.ts +122 -0
- package/dist/core/keys/KeyBag.d.ts.map +1 -0
- package/dist/core/keys/KeyBag.js +401 -0
- package/dist/core/keys/KeyBag.js.map +1 -0
- package/dist/core/types.d.ts +1004 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +10 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/userid/index.d.ts +53 -0
- package/dist/core/userid/index.d.ts.map +1 -0
- package/dist/core/userid/index.js +3 -0
- package/dist/core/userid/index.js.map +1 -0
- package/dist/core/utils/idGeneration.d.ts +109 -0
- package/dist/core/utils/idGeneration.d.ts.map +1 -0
- package/dist/core/utils/idGeneration.js +182 -0
- package/dist/core/utils/idGeneration.js.map +1 -0
- package/dist/core/utils/index.d.ts +5 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +19 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/node/crypto/NodeCryptoAdapter.d.ts +16 -0
- package/dist/node/crypto/NodeCryptoAdapter.d.ts.map +1 -0
- package/dist/node/crypto/NodeCryptoAdapter.js +53 -0
- package/dist/node/crypto/NodeCryptoAdapter.js.map +1 -0
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +26 -0
- package/dist/node/index.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMindooTenantDirectory.js","sourceRoot":"","sources":["../../src/core/BaseMindooTenantDirectory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { MindooTenantFactory, MindooTenant, EncryptedPrivateKey, ContentAddressedStoreFactory, SigningKeyPair, EncryptionKeyPair } from "./types";
|
|
2
|
+
import { PrivateUserId, PublicUserId } from "./userid";
|
|
3
|
+
import { CryptoAdapter } from "./crypto/CryptoAdapter";
|
|
4
|
+
import { KeyBag } from "./keys/KeyBag";
|
|
5
|
+
/**
|
|
6
|
+
* BaseTenantFactory is a platform-agnostic implementation of TenantFactory
|
|
7
|
+
* that creates and manages tenants and users.
|
|
8
|
+
*
|
|
9
|
+
* It uses CryptoAdapter to abstract platform-specific crypto operations,
|
|
10
|
+
* allowing the same implementation to work in browsers and Node.js.
|
|
11
|
+
*/
|
|
12
|
+
export declare class BaseMindooTenantFactory implements MindooTenantFactory {
|
|
13
|
+
private cryptoAdapter;
|
|
14
|
+
private storeFactory;
|
|
15
|
+
constructor(storeFactory: ContentAddressedStoreFactory, cryptoAdapter: CryptoAdapter);
|
|
16
|
+
getCryptoAdapter(): CryptoAdapter;
|
|
17
|
+
/**
|
|
18
|
+
* Create a new tenant from scratch with a new tenant encryption key.
|
|
19
|
+
*
|
|
20
|
+
* The administration public key must be created beforehand using createSigningKeyPair()
|
|
21
|
+
* and passed to this method.
|
|
22
|
+
*
|
|
23
|
+
* The administration encryption public key must be created using createEncryptionKeyPair()
|
|
24
|
+
* and is used to encrypt sensitive data in the directory that only admins can decrypt.
|
|
25
|
+
*
|
|
26
|
+
* @param tenantId The ID of the tenant
|
|
27
|
+
* @param administrationPublicKey The administration public key (Ed25519, PEM format) created using createSigningKeyPair()
|
|
28
|
+
* @param administrationEncryptionPublicKey The administration encryption public key (RSA-OAEP, PEM format) created using createEncryptionKeyPair()
|
|
29
|
+
* @param tenantEncryptionKeyPassword The password to decrypt the tenant encryption private key
|
|
30
|
+
* @param currentUser The current user's private user ID (required for tenant operations)
|
|
31
|
+
* @param currentUserPassword The password to decrypt the current user's private keys
|
|
32
|
+
* @param keyBag The KeyBag instance for storing and loading named encrypted keys
|
|
33
|
+
* @return The new tenant
|
|
34
|
+
*/
|
|
35
|
+
createTenant(tenantId: string, administrationPublicKey: string, administrationEncryptionPublicKey: string, tenantEncryptionKeyPassword: string, currentUser: PrivateUserId, currentUserPassword: string, keyBag: KeyBag): Promise<MindooTenant>;
|
|
36
|
+
/**
|
|
37
|
+
* Opens an existing tenant with previously created keys.
|
|
38
|
+
*/
|
|
39
|
+
openTenantWithKeys(tenantId: string, tenantEncryptionPrivateKey: EncryptedPrivateKey, tenantEncryptionKeyPassword: string, administrationPublicKey: string, administrationEncryptionPublicKey: string, currentUser: PrivateUserId, currentUserPassword: string, keyBag: KeyBag): Promise<MindooTenant>;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new user with separate signing and encryption key pairs.
|
|
42
|
+
*/
|
|
43
|
+
createUserId(username: string, password: string): Promise<PrivateUserId>;
|
|
44
|
+
/**
|
|
45
|
+
* Removes the private information from a private user ID and returns a public user ID.
|
|
46
|
+
*/
|
|
47
|
+
toPublicUserId(privateUserId: PrivateUserId): PublicUserId;
|
|
48
|
+
/**
|
|
49
|
+
* Creates a new signing key pair for the tenant.
|
|
50
|
+
* Returns both the public and encrypted private key, as the public key is needed
|
|
51
|
+
* for signature verification by other users.
|
|
52
|
+
*/
|
|
53
|
+
createSigningKeyPair(password: string): Promise<SigningKeyPair>;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a new encrypted symmetric key (AES-256) for document encryption.
|
|
56
|
+
* Symmetric keys are shared secrets - anyone with the key can both encrypt and decrypt.
|
|
57
|
+
* For user-to-user encryption where only the recipient can decrypt, use createEncryptionKeyPair() instead.
|
|
58
|
+
*/
|
|
59
|
+
createSymmetricEncryptedPrivateKey(password: string): Promise<EncryptedPrivateKey>;
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new asymmetric encryption key pair (RSA-OAEP) for user-to-user encryption.
|
|
62
|
+
* Returns both the public and encrypted private key.
|
|
63
|
+
*
|
|
64
|
+
* Use case: User A can fetch User B's public key from the directory DB, encrypt data with it,
|
|
65
|
+
* and only User B (with the private key) can decrypt it.
|
|
66
|
+
*/
|
|
67
|
+
createEncryptionKeyPair(password: string): Promise<EncryptionKeyPair>;
|
|
68
|
+
/**
|
|
69
|
+
* Internal method to encrypt a private key using password-based key derivation.
|
|
70
|
+
* This is the reverse of BaseMindooTenant.decryptPrivateKey().
|
|
71
|
+
*
|
|
72
|
+
* @param privateKeyBytes The private key bytes to encrypt
|
|
73
|
+
* @param password The password to encrypt the key with
|
|
74
|
+
* @param saltString The salt string for key derivation (e.g., "signing", "encryption", "administration", keyId)
|
|
75
|
+
* @returns The encrypted private key
|
|
76
|
+
*/
|
|
77
|
+
private encryptPrivateKey;
|
|
78
|
+
/**
|
|
79
|
+
* Convert ArrayBuffer to PEM format
|
|
80
|
+
*/
|
|
81
|
+
private arrayBufferToPEM;
|
|
82
|
+
/**
|
|
83
|
+
* Convert Uint8Array to PEM format
|
|
84
|
+
*/
|
|
85
|
+
private uint8ArrayToPEM;
|
|
86
|
+
/**
|
|
87
|
+
* Helper method to convert Uint8Array to base64 string
|
|
88
|
+
*/
|
|
89
|
+
private uint8ArrayToBase64;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=BaseMindooTenantFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMindooTenantFactory.d.ts","sourceRoot":"","sources":["../../src/core/BaseMindooTenantFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,YAAY,CAA+B;gBAEvC,YAAY,EAAE,4BAA4B,EAAE,aAAa,EAAE,aAAa;IAKpF,gBAAgB,IAAI,aAAa;IAIjC;;;;;;;;;;;;;;;;;OAiBG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,iCAAiC,EAAE,MAAM,EACzC,2BAA2B,EAAE,MAAM,EACnC,WAAW,EAAE,aAAa,EAC1B,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IAsCxB;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,0BAA0B,EAAE,mBAAmB,EAC/C,2BAA2B,EAAE,MAAM,EACnC,uBAAuB,EAAE,MAAM,EAC/B,iCAAiC,EAAE,MAAM,EACzC,WAAW,EAAE,aAAa,EAC1B,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IAuBxB;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA8E9E;;OAEG;IACH,cAAc,CAAC,aAAa,EAAE,aAAa,GAAG,YAAY;IAS1D;;;;OAIG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgCrE;;;;OAIG;IACG,kCAAkC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA2BxF;;;;;;OAMG;IACG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqC3E;;;;;;;;OAQG;YACW,iBAAiB;IAgF/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAO3B"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseMindooTenantFactory = void 0;
|
|
4
|
+
const BaseMindooTenant_1 = require("./BaseMindooTenant");
|
|
5
|
+
/**
|
|
6
|
+
* BaseTenantFactory is a platform-agnostic implementation of TenantFactory
|
|
7
|
+
* that creates and manages tenants and users.
|
|
8
|
+
*
|
|
9
|
+
* It uses CryptoAdapter to abstract platform-specific crypto operations,
|
|
10
|
+
* allowing the same implementation to work in browsers and Node.js.
|
|
11
|
+
*/
|
|
12
|
+
class BaseMindooTenantFactory {
|
|
13
|
+
constructor(storeFactory, cryptoAdapter) {
|
|
14
|
+
this.storeFactory = storeFactory;
|
|
15
|
+
this.cryptoAdapter = cryptoAdapter;
|
|
16
|
+
}
|
|
17
|
+
getCryptoAdapter() {
|
|
18
|
+
return this.cryptoAdapter;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a new tenant from scratch with a new tenant encryption key.
|
|
22
|
+
*
|
|
23
|
+
* The administration public key must be created beforehand using createSigningKeyPair()
|
|
24
|
+
* and passed to this method.
|
|
25
|
+
*
|
|
26
|
+
* The administration encryption public key must be created using createEncryptionKeyPair()
|
|
27
|
+
* and is used to encrypt sensitive data in the directory that only admins can decrypt.
|
|
28
|
+
*
|
|
29
|
+
* @param tenantId The ID of the tenant
|
|
30
|
+
* @param administrationPublicKey The administration public key (Ed25519, PEM format) created using createSigningKeyPair()
|
|
31
|
+
* @param administrationEncryptionPublicKey The administration encryption public key (RSA-OAEP, PEM format) created using createEncryptionKeyPair()
|
|
32
|
+
* @param tenantEncryptionKeyPassword The password to decrypt the tenant encryption private key
|
|
33
|
+
* @param currentUser The current user's private user ID (required for tenant operations)
|
|
34
|
+
* @param currentUserPassword The password to decrypt the current user's private keys
|
|
35
|
+
* @param keyBag The KeyBag instance for storing and loading named encrypted keys
|
|
36
|
+
* @return The new tenant
|
|
37
|
+
*/
|
|
38
|
+
async createTenant(tenantId, administrationPublicKey, administrationEncryptionPublicKey, tenantEncryptionKeyPassword, currentUser, currentUserPassword, keyBag) {
|
|
39
|
+
console.log(`[BaseTenantFactory] Creating tenant: ${tenantId}`);
|
|
40
|
+
const subtle = this.cryptoAdapter.getSubtle();
|
|
41
|
+
// Generate tenant encryption key (AES-256)
|
|
42
|
+
const tenantEncryptionKey = await subtle.generateKey({
|
|
43
|
+
name: "AES-GCM",
|
|
44
|
+
length: 256,
|
|
45
|
+
}, true, // extractable
|
|
46
|
+
["encrypt", "decrypt"]);
|
|
47
|
+
// Export the tenant encryption key material
|
|
48
|
+
const tenantKeyMaterial = await subtle.exportKey("raw", tenantEncryptionKey);
|
|
49
|
+
const tenantKeyBytes = new Uint8Array(tenantKeyMaterial);
|
|
50
|
+
// Encrypt the tenant encryption key with password
|
|
51
|
+
const encryptedTenantKey = await this.encryptPrivateKey(tenantKeyBytes, tenantEncryptionKeyPassword, "default");
|
|
52
|
+
return this.openTenantWithKeys(tenantId, encryptedTenantKey, tenantEncryptionKeyPassword, administrationPublicKey, administrationEncryptionPublicKey, currentUser, currentUserPassword, keyBag);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Opens an existing tenant with previously created keys.
|
|
56
|
+
*/
|
|
57
|
+
async openTenantWithKeys(tenantId, tenantEncryptionPrivateKey, tenantEncryptionKeyPassword, administrationPublicKey, administrationEncryptionPublicKey, currentUser, currentUserPassword, keyBag) {
|
|
58
|
+
console.log(`[BaseTenantFactory] Opening tenant: ${tenantId}`);
|
|
59
|
+
const tenant = new BaseMindooTenant_1.BaseMindooTenant(this, tenantId, tenantEncryptionPrivateKey, tenantEncryptionKeyPassword, administrationPublicKey, administrationEncryptionPublicKey, currentUser, currentUserPassword, keyBag, this.storeFactory, this.cryptoAdapter);
|
|
60
|
+
// Initialize the tenant
|
|
61
|
+
await tenant.initialize();
|
|
62
|
+
return tenant;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Creates a new user with separate signing and encryption key pairs.
|
|
66
|
+
*/
|
|
67
|
+
async createUserId(username, password) {
|
|
68
|
+
console.log(`[BaseTenantFactory] Creating user ID: ${username}`);
|
|
69
|
+
const subtle = this.cryptoAdapter.getSubtle();
|
|
70
|
+
// Generate signing key pair (Ed25519)
|
|
71
|
+
const signingKeyPair = await subtle.generateKey({
|
|
72
|
+
name: "Ed25519",
|
|
73
|
+
}, true, // extractable
|
|
74
|
+
["sign", "verify"]);
|
|
75
|
+
// Export signing public key (PEM format)
|
|
76
|
+
const signingPublicKeyBuffer = await subtle.exportKey("spki", signingKeyPair.publicKey);
|
|
77
|
+
const signingPublicKey = this.arrayBufferToPEM(signingPublicKeyBuffer, "PUBLIC KEY");
|
|
78
|
+
// Export signing private key
|
|
79
|
+
const signingPrivateKeyBuffer = await subtle.exportKey("pkcs8", signingKeyPair.privateKey);
|
|
80
|
+
const signingPrivateKeyBytes = new Uint8Array(signingPrivateKeyBuffer);
|
|
81
|
+
// Encrypt signing private key with password (salt: "signing")
|
|
82
|
+
const encryptedSigningKey = await this.encryptPrivateKey(signingPrivateKeyBytes, password, "signing");
|
|
83
|
+
// Generate encryption key pair (RSA-OAEP, 3072 bits for state-of-the-art security)
|
|
84
|
+
// NIST recommends 3072-bit RSA for new applications (security through 2030+)
|
|
85
|
+
const encryptionKeyPair = await subtle.generateKey({
|
|
86
|
+
name: "RSA-OAEP",
|
|
87
|
+
modulusLength: 3072,
|
|
88
|
+
publicExponent: new Uint8Array([1, 0, 1]), // 65537
|
|
89
|
+
hash: "SHA-256",
|
|
90
|
+
}, true, // extractable
|
|
91
|
+
["encrypt", "decrypt"]);
|
|
92
|
+
// Export encryption public key (PEM format)
|
|
93
|
+
const encryptionPublicKeyBuffer = await subtle.exportKey("spki", encryptionKeyPair.publicKey);
|
|
94
|
+
const encryptionPublicKey = this.arrayBufferToPEM(encryptionPublicKeyBuffer, "PUBLIC KEY");
|
|
95
|
+
// Export encryption private key
|
|
96
|
+
const encryptionPrivateKeyBuffer = await subtle.exportKey("pkcs8", encryptionKeyPair.privateKey);
|
|
97
|
+
const encryptionPrivateKeyBytes = new Uint8Array(encryptionPrivateKeyBuffer);
|
|
98
|
+
// Encrypt encryption private key with password (salt: "encryption")
|
|
99
|
+
const encryptedEncryptionKey = await this.encryptPrivateKey(encryptionPrivateKeyBytes, password, "encryption");
|
|
100
|
+
// Create PrivateUserId
|
|
101
|
+
const privateUserId = {
|
|
102
|
+
username,
|
|
103
|
+
administrationSignature: "", // Will be set when user is registered by an admin
|
|
104
|
+
userSigningKeyPair: {
|
|
105
|
+
publicKey: signingPublicKey,
|
|
106
|
+
privateKey: encryptedSigningKey,
|
|
107
|
+
},
|
|
108
|
+
userEncryptionKeyPair: {
|
|
109
|
+
publicKey: encryptionPublicKey,
|
|
110
|
+
privateKey: encryptedEncryptionKey,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
console.log(`[BaseTenantFactory] Created user ID: ${username}`);
|
|
114
|
+
return privateUserId;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Removes the private information from a private user ID and returns a public user ID.
|
|
118
|
+
*/
|
|
119
|
+
toPublicUserId(privateUserId) {
|
|
120
|
+
return {
|
|
121
|
+
username: privateUserId.username,
|
|
122
|
+
administrationSignature: privateUserId.administrationSignature,
|
|
123
|
+
userSigningPublicKey: privateUserId.userSigningKeyPair.publicKey,
|
|
124
|
+
userEncryptionPublicKey: privateUserId.userEncryptionKeyPair.publicKey,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Creates a new signing key pair for the tenant.
|
|
129
|
+
* Returns both the public and encrypted private key, as the public key is needed
|
|
130
|
+
* for signature verification by other users.
|
|
131
|
+
*/
|
|
132
|
+
async createSigningKeyPair(password) {
|
|
133
|
+
console.log(`[BaseTenantFactory] Creating signing key pair`);
|
|
134
|
+
const subtle = this.cryptoAdapter.getSubtle();
|
|
135
|
+
// Generate a new Ed25519 signing key pair
|
|
136
|
+
const keyPair = await subtle.generateKey({
|
|
137
|
+
name: "Ed25519",
|
|
138
|
+
}, true, // extractable
|
|
139
|
+
["sign", "verify"]);
|
|
140
|
+
// Export the public key (PEM format) - needed for signature verification
|
|
141
|
+
const publicKeyBuffer = await subtle.exportKey("spki", keyPair.publicKey);
|
|
142
|
+
const publicKey = this.arrayBufferToPEM(publicKeyBuffer, "PUBLIC KEY");
|
|
143
|
+
// Export the private key in PKCS8 format
|
|
144
|
+
const privateKeyBuffer = await subtle.exportKey("pkcs8", keyPair.privateKey);
|
|
145
|
+
const keyBytes = new Uint8Array(privateKeyBuffer);
|
|
146
|
+
// Encrypt the key material using the shared helper
|
|
147
|
+
const encryptedKey = await this.encryptPrivateKey(keyBytes, password, "signing");
|
|
148
|
+
console.log(`[BaseTenantFactory] Created signing key pair`);
|
|
149
|
+
return {
|
|
150
|
+
publicKey,
|
|
151
|
+
privateKey: encryptedKey,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Creates a new encrypted symmetric key (AES-256) for document encryption.
|
|
156
|
+
* Symmetric keys are shared secrets - anyone with the key can both encrypt and decrypt.
|
|
157
|
+
* For user-to-user encryption where only the recipient can decrypt, use createEncryptionKeyPair() instead.
|
|
158
|
+
*/
|
|
159
|
+
async createSymmetricEncryptedPrivateKey(password) {
|
|
160
|
+
console.log(`[BaseTenantFactory] Creating encrypted symmetric key`);
|
|
161
|
+
const subtle = this.cryptoAdapter.getSubtle();
|
|
162
|
+
// Generate a new AES-256 key
|
|
163
|
+
const key = await subtle.generateKey({
|
|
164
|
+
name: "AES-GCM",
|
|
165
|
+
length: 256,
|
|
166
|
+
}, true, // extractable
|
|
167
|
+
["encrypt", "decrypt"]);
|
|
168
|
+
// Export the key material
|
|
169
|
+
const keyMaterial = await subtle.exportKey("raw", key);
|
|
170
|
+
const keyBytes = new Uint8Array(keyMaterial);
|
|
171
|
+
// Encrypt the key material using the shared helper
|
|
172
|
+
// Use "default" as the salt string to match how tenant encryption keys are decrypted
|
|
173
|
+
const encryptedKey = await this.encryptPrivateKey(keyBytes, password, "default");
|
|
174
|
+
console.log(`[BaseTenantFactory] Created encrypted symmetric key`);
|
|
175
|
+
return encryptedKey;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Creates a new asymmetric encryption key pair (RSA-OAEP) for user-to-user encryption.
|
|
179
|
+
* Returns both the public and encrypted private key.
|
|
180
|
+
*
|
|
181
|
+
* Use case: User A can fetch User B's public key from the directory DB, encrypt data with it,
|
|
182
|
+
* and only User B (with the private key) can decrypt it.
|
|
183
|
+
*/
|
|
184
|
+
async createEncryptionKeyPair(password) {
|
|
185
|
+
console.log(`[BaseTenantFactory] Creating encryption key pair`);
|
|
186
|
+
const subtle = this.cryptoAdapter.getSubtle();
|
|
187
|
+
// Generate a new RSA-OAEP encryption key pair (3072 bits for state-of-the-art security)
|
|
188
|
+
// NIST recommends 3072-bit RSA for new applications (security through 2030+)
|
|
189
|
+
const encryptionKeyPair = await subtle.generateKey({
|
|
190
|
+
name: "RSA-OAEP",
|
|
191
|
+
modulusLength: 3072,
|
|
192
|
+
publicExponent: new Uint8Array([1, 0, 1]), // 65537
|
|
193
|
+
hash: "SHA-256",
|
|
194
|
+
}, true, // extractable
|
|
195
|
+
["encrypt", "decrypt"]);
|
|
196
|
+
// Export the public key (PEM format) - can be shared for encryption
|
|
197
|
+
const publicKeyBuffer = await subtle.exportKey("spki", encryptionKeyPair.publicKey);
|
|
198
|
+
const publicKey = this.arrayBufferToPEM(publicKeyBuffer, "PUBLIC KEY");
|
|
199
|
+
// Export the private key in PKCS8 format
|
|
200
|
+
const privateKeyBuffer = await subtle.exportKey("pkcs8", encryptionKeyPair.privateKey);
|
|
201
|
+
const privateKeyBytes = new Uint8Array(privateKeyBuffer);
|
|
202
|
+
// Encrypt the private key material using the shared helper
|
|
203
|
+
// Use "encryption" as the salt string (same as user encryption keys)
|
|
204
|
+
const encryptedKey = await this.encryptPrivateKey(privateKeyBytes, password, "encryption");
|
|
205
|
+
console.log(`[BaseTenantFactory] Created encryption key pair`);
|
|
206
|
+
return {
|
|
207
|
+
publicKey,
|
|
208
|
+
privateKey: encryptedKey,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Internal method to encrypt a private key using password-based key derivation.
|
|
213
|
+
* This is the reverse of BaseMindooTenant.decryptPrivateKey().
|
|
214
|
+
*
|
|
215
|
+
* @param privateKeyBytes The private key bytes to encrypt
|
|
216
|
+
* @param password The password to encrypt the key with
|
|
217
|
+
* @param saltString The salt string for key derivation (e.g., "signing", "encryption", "administration", keyId)
|
|
218
|
+
* @returns The encrypted private key
|
|
219
|
+
*/
|
|
220
|
+
async encryptPrivateKey(privateKeyBytes, password, saltString) {
|
|
221
|
+
const subtle = this.cryptoAdapter.getSubtle();
|
|
222
|
+
// Bind getRandomValues to maintain 'this' context
|
|
223
|
+
const randomValues = this.cryptoAdapter.getRandomValues.bind(this.cryptoAdapter);
|
|
224
|
+
// Generate random salt and IV
|
|
225
|
+
const saltArray = new Uint8Array(16); // 16 bytes salt
|
|
226
|
+
randomValues(saltArray);
|
|
227
|
+
const salt = new Uint8Array(saltArray);
|
|
228
|
+
const ivArray = new Uint8Array(12); // 12 bytes for AES-GCM
|
|
229
|
+
randomValues(ivArray);
|
|
230
|
+
const iv = new Uint8Array(ivArray);
|
|
231
|
+
// Combine salt with saltString for key derivation (same as decryption)
|
|
232
|
+
const saltStringBytes = new TextEncoder().encode(saltString);
|
|
233
|
+
const combinedSalt = new Uint8Array(salt.length + saltStringBytes.length);
|
|
234
|
+
combinedSalt.set(salt);
|
|
235
|
+
combinedSalt.set(saltStringBytes, salt.length);
|
|
236
|
+
// Derive encryption key from password using PBKDF2
|
|
237
|
+
const passwordKey = await subtle.importKey("raw", new TextEncoder().encode(password), "PBKDF2", false, ["deriveBits", "deriveKey"]);
|
|
238
|
+
const iterations = 310000; // OWASP-recommended PBKDF2 iterations for PBKDF2-SHA256
|
|
239
|
+
const derivedKey = await subtle.deriveKey({
|
|
240
|
+
name: "PBKDF2",
|
|
241
|
+
salt: combinedSalt,
|
|
242
|
+
iterations: iterations,
|
|
243
|
+
hash: "SHA-256",
|
|
244
|
+
}, passwordKey, {
|
|
245
|
+
name: "AES-GCM",
|
|
246
|
+
length: 256,
|
|
247
|
+
}, false, ["encrypt"]);
|
|
248
|
+
// Encrypt the private key
|
|
249
|
+
const encrypted = await subtle.encrypt({
|
|
250
|
+
name: "AES-GCM",
|
|
251
|
+
iv: iv,
|
|
252
|
+
tagLength: 128,
|
|
253
|
+
}, derivedKey, privateKeyBytes.buffer);
|
|
254
|
+
// Extract ciphertext and tag from encrypted data
|
|
255
|
+
// AES-GCM appends the tag at the end
|
|
256
|
+
const encryptedArray = new Uint8Array(encrypted);
|
|
257
|
+
const tagLength = 16; // 128 bits = 16 bytes
|
|
258
|
+
const ciphertext = encryptedArray.slice(0, encryptedArray.length - tagLength);
|
|
259
|
+
const tag = encryptedArray.slice(encryptedArray.length - tagLength);
|
|
260
|
+
// Create encrypted key structure
|
|
261
|
+
const encryptedKey = {
|
|
262
|
+
ciphertext: this.uint8ArrayToBase64(ciphertext),
|
|
263
|
+
iv: this.uint8ArrayToBase64(iv),
|
|
264
|
+
tag: this.uint8ArrayToBase64(tag),
|
|
265
|
+
salt: this.uint8ArrayToBase64(salt),
|
|
266
|
+
iterations: iterations,
|
|
267
|
+
};
|
|
268
|
+
return encryptedKey;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Convert ArrayBuffer to PEM format
|
|
272
|
+
*/
|
|
273
|
+
arrayBufferToPEM(buffer, type) {
|
|
274
|
+
const bytes = new Uint8Array(buffer);
|
|
275
|
+
return this.uint8ArrayToPEM(bytes, type);
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Convert Uint8Array to PEM format
|
|
279
|
+
*/
|
|
280
|
+
uint8ArrayToPEM(bytes, type) {
|
|
281
|
+
const base64 = this.uint8ArrayToBase64(bytes);
|
|
282
|
+
const chunks = base64.match(/.{1,64}/g) || [];
|
|
283
|
+
return `-----BEGIN ${type}-----\n${chunks.join("\n")}\n-----END ${type}-----`;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Helper method to convert Uint8Array to base64 string
|
|
287
|
+
*/
|
|
288
|
+
uint8ArrayToBase64(bytes) {
|
|
289
|
+
let binary = "";
|
|
290
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
291
|
+
binary += String.fromCharCode(bytes[i]);
|
|
292
|
+
}
|
|
293
|
+
return btoa(binary);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
exports.BaseMindooTenantFactory = BaseMindooTenantFactory;
|
|
297
|
+
//# sourceMappingURL=BaseMindooTenantFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMindooTenantFactory.js","sourceRoot":"","sources":["../../src/core/BaseMindooTenantFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { ContentAddressedStore, ContentAddressedStoreFactory, CreateStoreResult, OpenStoreOptions } from "./types";
|
|
2
|
+
import type { StoreEntry, StoreEntryMetadata } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* A simple in-memory implementation of ContentAddressedStore for testing purposes.
|
|
5
|
+
*
|
|
6
|
+
* Uses dual-index storage:
|
|
7
|
+
* - Metadata indexed by entry id (primary key)
|
|
8
|
+
* - Encrypted bytes indexed by contentHash (for deduplication)
|
|
9
|
+
*
|
|
10
|
+
* This allows multiple entries to share the same encrypted bytes if they have
|
|
11
|
+
* the same contentHash, enabling storage-level deduplication.
|
|
12
|
+
*/
|
|
13
|
+
export declare class InMemoryContentAddressedStore implements ContentAddressedStore {
|
|
14
|
+
private dbId;
|
|
15
|
+
/** Metadata indexed by entry id */
|
|
16
|
+
private entries;
|
|
17
|
+
/** Encrypted bytes indexed by contentHash (deduplicated) */
|
|
18
|
+
private contentStore;
|
|
19
|
+
/** Index for finding entries by docId (for efficient doc queries) */
|
|
20
|
+
private docIndex;
|
|
21
|
+
constructor(dbId: string);
|
|
22
|
+
getId(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Store one or more entries.
|
|
25
|
+
* - Metadata is stored by entry id (always unique)
|
|
26
|
+
* - Encrypted bytes are deduplicated by contentHash (same bytes stored once)
|
|
27
|
+
*
|
|
28
|
+
* @param entries The entries to store
|
|
29
|
+
* @return A promise that resolves when all entries are stored
|
|
30
|
+
*/
|
|
31
|
+
putEntries(entries: StoreEntry[]): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Get entries by their IDs.
|
|
34
|
+
* Returns only entries that exist in this store.
|
|
35
|
+
*
|
|
36
|
+
* @param ids The IDs of the entries to fetch
|
|
37
|
+
* @return A list of entries (may be shorter than input if some don't exist)
|
|
38
|
+
*/
|
|
39
|
+
getEntries(ids: string[]): Promise<StoreEntry[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Check which IDs from the provided list exist in this store.
|
|
42
|
+
*
|
|
43
|
+
* @param ids The IDs to check
|
|
44
|
+
* @return A list of IDs that exist in this store
|
|
45
|
+
*/
|
|
46
|
+
hasEntries(ids: string[]): Promise<string[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Find entries in the store that are not listed in the given list of IDs.
|
|
49
|
+
* Used for synchronization to identify which entries we have that the peer doesn't.
|
|
50
|
+
*
|
|
51
|
+
* @param knownIds The list of entry IDs we already have
|
|
52
|
+
* @return A list of entry metadata for entries we have that aren't in knownIds
|
|
53
|
+
*/
|
|
54
|
+
findNewEntries(knownIds: string[]): Promise<StoreEntryMetadata[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Find entries in the store for a specific document that are not listed in the given list of IDs.
|
|
57
|
+
*
|
|
58
|
+
* @param knownIds The list of entry IDs we already have
|
|
59
|
+
* @param docId The ID of the document
|
|
60
|
+
* @return A list of entry metadata for entries we have that aren't in knownIds
|
|
61
|
+
*/
|
|
62
|
+
findNewEntriesForDoc(knownIds: string[], docId: string): Promise<StoreEntryMetadata[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Get all entry IDs in the store.
|
|
65
|
+
* Used for synchronization to identify which entries we have.
|
|
66
|
+
*
|
|
67
|
+
* @return A list of all entry IDs in the store
|
|
68
|
+
*/
|
|
69
|
+
getAllIds(): Promise<string[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Resolve the dependency chain starting from an entry ID.
|
|
72
|
+
* Returns IDs in dependency order (oldest first), traversing backward through dependencyIds.
|
|
73
|
+
*
|
|
74
|
+
* @param startId The entry ID to start traversal from
|
|
75
|
+
* @param options Optional traversal options:
|
|
76
|
+
* - stopAtEntryType: Stop when encountering an entry of this type (e.g., "doc_snapshot")
|
|
77
|
+
* - maxDepth: Maximum number of hops to traverse
|
|
78
|
+
* - includeStart: Whether to include startId in the result (default: true)
|
|
79
|
+
* @return A list of entry IDs in dependency order (oldest first)
|
|
80
|
+
*/
|
|
81
|
+
resolveDependencies(startId: string, options?: Record<string, unknown>): Promise<string[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Purge all entries for a specific document from the store.
|
|
84
|
+
* This breaks append-only semantics but is required for GDPR compliance.
|
|
85
|
+
*
|
|
86
|
+
* After purging, all entries for the specified document will be removed
|
|
87
|
+
* from the store. Content bytes that are no longer referenced by any
|
|
88
|
+
* entry will also be cleaned up.
|
|
89
|
+
*
|
|
90
|
+
* @param docId The document ID whose entries should be purged
|
|
91
|
+
* @return A promise that resolves when the purge is complete
|
|
92
|
+
*/
|
|
93
|
+
purgeDocHistory(docId: string): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Get storage statistics for debugging/monitoring.
|
|
96
|
+
* @returns Object with entry count, content count, and doc count
|
|
97
|
+
*/
|
|
98
|
+
getStats(): {
|
|
99
|
+
entryCount: number;
|
|
100
|
+
contentCount: number;
|
|
101
|
+
docCount: number;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Factory for creating InMemoryContentAddressedStore instances.
|
|
106
|
+
* Each database gets its own isolated in-memory store.
|
|
107
|
+
*/
|
|
108
|
+
export declare class InMemoryContentAddressedStoreFactory implements ContentAddressedStoreFactory {
|
|
109
|
+
createStore(dbId: string, _options?: OpenStoreOptions): CreateStoreResult;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=InMemoryContentAddressedStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryContentAddressedStore.d.ts","sourceRoot":"","sources":["../../../src/core/appendonlystores/InMemoryContentAddressedStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;GASG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;IACzE,OAAO,CAAC,IAAI,CAAS;IAErB,mCAAmC;IACnC,OAAO,CAAC,OAAO,CAA8C;IAE7D,4DAA4D;IAC5D,OAAO,CAAC,YAAY,CAAsC;IAE1D,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAuC;gBAE3C,IAAI,EAAE,MAAM;IAIxB,KAAK,IAAI,MAAM;IAIf;;;;;;;OAOG;IACG,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCtD;;;;;;OAMG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqBtD;;;;;OAKG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWlD;;;;;;OAMG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgBvE;;;;;;OAMG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAsB5F;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMpC;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;IAyDpB;;;;;;;;;;OAUG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CnD;;;OAGG;IACH,QAAQ,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAO3E;AAED;;;GAGG;AACH,qBAAa,oCAAqC,YAAW,4BAA4B;IACvF,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,iBAAiB;CAQ1E"}
|