mindoodb 0.0.2 → 0.0.4
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 +1001 -0
- package/README.md +89 -28
- package/dist/__mocks__/expo-standard-web-crypto.d.ts +10 -0
- package/dist/__mocks__/expo-standard-web-crypto.d.ts.map +1 -0
- package/dist/__mocks__/expo-standard-web-crypto.js +22 -0
- package/dist/__mocks__/expo-standard-web-crypto.js.map +1 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts +8 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.d.ts.map +1 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js +16 -0
- package/dist/appendonlystores/BasicOnDiskContentAddressedStoreFactory.js.map +1 -0
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts +1 -1
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.d.ts.map +1 -1
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js +2 -2
- package/dist/appendonlystores/InMemoryContentAddressedStoreFactory.js.map +1 -1
- 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 +152 -5
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.d.ts +17 -2
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.js +129 -0
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +22 -2
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +110 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/index.d.ts +1 -1
- package/dist/appendonlystores/network/index.d.ts.map +1 -1
- package/dist/appendonlystores/network/index.js.map +1 -1
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts +65 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.d.ts.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js +741 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStore.js.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts +25 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.d.ts.map +1 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js +41 -0
- package/dist/browser/appendonlystores/IndexedDBContentAddressedStoreFactory.js.map +1 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts +21 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.d.ts.map +1 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.js +106 -0
- package/dist/browser/cache/IndexedDBLocalCacheStore.js.map +1 -0
- package/dist/browser/index.d.ts +8 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +21 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/core/BaseMindooDB.d.ts +115 -13
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +1232 -269
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +69 -6
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +302 -109
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +13 -10
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +144 -27
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/BaseMindooTenantFactory.d.ts +27 -29
- package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantFactory.js +185 -112
- package/dist/core/BaseMindooTenantFactory.js.map +1 -1
- package/dist/core/MindooDBServerAdmin.d.ts +238 -0
- package/dist/core/MindooDBServerAdmin.d.ts.map +1 -0
- package/dist/core/MindooDBServerAdmin.js +345 -0
- package/dist/core/MindooDBServerAdmin.js.map +1 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +68 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js +659 -0
- package/dist/core/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts +45 -3
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +184 -23
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
- package/dist/core/appendonlystores/MaterializationPlanner.d.ts +49 -0
- package/dist/core/appendonlystores/MaterializationPlanner.d.ts.map +1 -0
- package/dist/core/appendonlystores/MaterializationPlanner.js +325 -0
- package/dist/core/appendonlystores/MaterializationPlanner.js.map +1 -0
- package/dist/core/appendonlystores/bloom.d.ts +85 -0
- package/dist/core/appendonlystores/bloom.d.ts.map +1 -0
- package/dist/core/appendonlystores/bloom.js +228 -0
- package/dist/core/appendonlystores/bloom.js.map +1 -0
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts +37 -2
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.d.ts +12 -0
- package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.js.map +1 -1
- package/dist/core/appendonlystores/types.d.ts +206 -0
- package/dist/core/appendonlystores/types.d.ts.map +1 -1
- package/dist/core/automerge-adapter.d.ts +15 -0
- package/dist/core/automerge-adapter.d.ts.map +1 -0
- package/dist/core/automerge-adapter.js +73 -0
- package/dist/core/automerge-adapter.js.map +1 -0
- package/dist/core/cache/CacheManager.d.ts +75 -0
- package/dist/core/cache/CacheManager.d.ts.map +1 -0
- package/dist/core/cache/CacheManager.js +101 -0
- package/dist/core/cache/CacheManager.js.map +1 -0
- package/dist/core/cache/EncryptedLocalCacheStore.d.ts +41 -0
- package/dist/core/cache/EncryptedLocalCacheStore.d.ts.map +1 -0
- package/dist/core/cache/EncryptedLocalCacheStore.js +120 -0
- package/dist/core/cache/EncryptedLocalCacheStore.js.map +1 -0
- package/dist/core/cache/LocalCacheStore.d.ts +50 -0
- package/dist/core/cache/LocalCacheStore.d.ts.map +1 -0
- package/dist/core/cache/LocalCacheStore.js +39 -0
- package/dist/core/cache/LocalCacheStore.js.map +1 -0
- package/dist/core/crypto/pbkdf2Iterations.d.ts +12 -0
- package/dist/core/crypto/pbkdf2Iterations.d.ts.map +1 -0
- package/dist/core/crypto/pbkdf2Iterations.js +55 -0
- package/dist/core/crypto/pbkdf2Iterations.js.map +1 -0
- package/dist/core/crypto/privateKeyEncryption.d.ts +5 -0
- package/dist/core/crypto/privateKeyEncryption.d.ts.map +1 -0
- package/dist/core/crypto/privateKeyEncryption.js +87 -0
- package/dist/core/crypto/privateKeyEncryption.js.map +1 -0
- package/dist/core/index.d.ts +18 -6
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +42 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +4 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +39 -11
- package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts +1 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js +3 -0
- package/dist/core/indexing/virtualviews/ViewEntrySortKeyComparator.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.d.ts +43 -0
- package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualView.js +173 -0
- package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +7 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +28 -0
- package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
- package/dist/core/keys/KeyBag.d.ts +56 -12
- package/dist/core/keys/KeyBag.d.ts.map +1 -1
- package/dist/core/keys/KeyBag.js +156 -70
- package/dist/core/keys/KeyBag.js.map +1 -1
- package/dist/core/keys/KeyContext.d.ts +4 -0
- package/dist/core/keys/KeyContext.d.ts.map +1 -0
- package/dist/core/keys/KeyContext.js +17 -0
- package/dist/core/keys/KeyContext.js.map +1 -0
- package/dist/core/types.d.ts +512 -60
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +9 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/uri/MindooURI.d.ts +58 -0
- package/dist/core/uri/MindooURI.d.ts.map +1 -0
- package/dist/core/uri/MindooURI.js +169 -0
- package/dist/core/uri/MindooURI.js.map +1 -0
- package/dist/core/userid/index.d.ts +0 -10
- package/dist/core/userid/index.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.js +37 -3
- package/dist/core/utils/idGeneration.js.map +1 -1
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts +544 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +1358 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -0
- package/dist/node/attachments/writeAttachmentToFile.d.ts +15 -0
- package/dist/node/attachments/writeAttachmentToFile.d.ts.map +1 -0
- package/dist/node/attachments/writeAttachmentToFile.js +73 -0
- package/dist/node/attachments/writeAttachmentToFile.js.map +1 -0
- package/dist/node/cache/FileSystemLocalCacheStore.d.ts +17 -0
- package/dist/node/cache/FileSystemLocalCacheStore.d.ts.map +1 -0
- package/dist/node/cache/FileSystemLocalCacheStore.js +128 -0
- package/dist/node/cache/FileSystemLocalCacheStore.js.map +1 -0
- package/dist/node/cli/change-identity-password.d.ts +7 -0
- package/dist/node/cli/change-identity-password.d.ts.map +1 -0
- package/dist/node/cli/change-identity-password.js +67 -0
- package/dist/node/cli/change-identity-password.js.map +1 -0
- package/dist/node/cli/cli-utils.d.ts +16 -0
- package/dist/node/cli/cli-utils.d.ts.map +1 -0
- package/dist/node/cli/cli-utils.js +113 -0
- package/dist/node/cli/cli-utils.js.map +1 -0
- package/dist/node/cli/identity-export-public.d.ts +4 -0
- package/dist/node/cli/identity-export-public.d.ts.map +1 -0
- package/dist/node/cli/identity-export-public.js +55 -0
- package/dist/node/cli/identity-export-public.js.map +1 -0
- package/dist/node/cli/identity-info.d.ts +4 -0
- package/dist/node/cli/identity-info.d.ts.map +1 -0
- package/dist/node/cli/identity-info.js +57 -0
- package/dist/node/cli/identity-info.js.map +1 -0
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +8 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/server/CapabilityMatcher.d.ts +45 -0
- package/dist/node/server/CapabilityMatcher.d.ts.map +1 -0
- package/dist/node/server/CapabilityMatcher.js +117 -0
- package/dist/node/server/CapabilityMatcher.js.map +1 -0
- package/dist/node/server/MindooDBServer.d.ts +87 -0
- package/dist/node/server/MindooDBServer.d.ts.map +1 -0
- package/dist/node/server/MindooDBServer.js +1040 -0
- package/dist/node/server/MindooDBServer.js.map +1 -0
- package/dist/node/server/ServerSync.d.ts +41 -0
- package/dist/node/server/ServerSync.d.ts.map +1 -0
- package/dist/node/server/ServerSync.js +187 -0
- package/dist/node/server/ServerSync.js.map +1 -0
- package/dist/node/server/StoreFactory.d.ts +45 -0
- package/dist/node/server/StoreFactory.d.ts.map +1 -0
- package/dist/node/server/StoreFactory.js +89 -0
- package/dist/node/server/StoreFactory.js.map +1 -0
- package/dist/node/server/SystemAdminAuth.d.ts +65 -0
- package/dist/node/server/SystemAdminAuth.d.ts.map +1 -0
- package/dist/node/server/SystemAdminAuth.js +200 -0
- package/dist/node/server/SystemAdminAuth.js.map +1 -0
- package/dist/node/server/SystemIpAllowlist.d.ts +21 -0
- package/dist/node/server/SystemIpAllowlist.d.ts.map +1 -0
- package/dist/node/server/SystemIpAllowlist.js +210 -0
- package/dist/node/server/SystemIpAllowlist.js.map +1 -0
- package/dist/node/server/TenantManager.d.ts +85 -0
- package/dist/node/server/TenantManager.d.ts.map +1 -0
- package/dist/node/server/TenantManager.js +493 -0
- package/dist/node/server/TenantManager.js.map +1 -0
- package/dist/node/server/add-to-network.d.ts +20 -0
- package/dist/node/server/add-to-network.d.ts.map +1 -0
- package/dist/node/server/add-to-network.js +275 -0
- package/dist/node/server/add-to-network.js.map +1 -0
- package/dist/node/server/config.d.ts +51 -0
- package/dist/node/server/config.d.ts.map +1 -0
- package/dist/node/server/config.js +218 -0
- package/dist/node/server/config.js.map +1 -0
- package/dist/node/server/resolveServerPassword.d.ts +7 -0
- package/dist/node/server/resolveServerPassword.d.ts.map +1 -0
- package/dist/node/server/resolveServerPassword.js +25 -0
- package/dist/node/server/resolveServerPassword.js.map +1 -0
- package/dist/node/server/server.d.ts +22 -0
- package/dist/node/server/server.d.ts.map +1 -0
- package/dist/node/server/server.js +225 -0
- package/dist/node/server/server.js.map +1 -0
- package/dist/node/server/serverinit.d.ts +21 -0
- package/dist/node/server/serverinit.d.ts.map +1 -0
- package/dist/node/server/serverinit.js +317 -0
- package/dist/node/server/serverinit.js.map +1 -0
- package/dist/node/server/types.d.ts +162 -0
- package/dist/node/server/types.d.ts.map +1 -0
- package/dist/node/server/types.js +24 -0
- package/dist/node/server/types.js.map +1 -0
- package/dist/node/server/validation.d.ts +47 -0
- package/dist/node/server/validation.d.ts.map +1 -0
- package/dist/node/server/validation.js +114 -0
- package/dist/node/server/validation.js.map +1 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts +48 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.d.ts.map +1 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.js +113 -0
- package/dist/reactnative/cache/MMKVLocalCacheStore.js.map +1 -0
- package/dist/reactnative/crypto/AESAdapter.d.ts +18 -0
- package/dist/reactnative/crypto/AESAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/AESAdapter.js +112 -0
- package/dist/reactnative/crypto/AESAdapter.js.map +1 -0
- package/dist/reactnative/crypto/Ed25519Adapter.d.ts +34 -0
- package/dist/reactnative/crypto/Ed25519Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/Ed25519Adapter.js +386 -0
- package/dist/reactnative/crypto/Ed25519Adapter.js.map +1 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts +23 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js +51 -0
- package/dist/reactnative/crypto/ExpoGoCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/HMACAdapter.d.ts +13 -0
- package/dist/reactnative/crypto/HMACAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/HMACAdapter.js +50 -0
- package/dist/reactnative/crypto/HMACAdapter.js.map +1 -0
- package/dist/reactnative/crypto/KeyFormatConverter.d.ts +21 -0
- package/dist/reactnative/crypto/KeyFormatConverter.d.ts.map +1 -0
- package/dist/reactnative/crypto/KeyFormatConverter.js +72 -0
- package/dist/reactnative/crypto/KeyFormatConverter.js.map +1 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.d.ts +19 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.js +67 -0
- package/dist/reactnative/crypto/PBKDF2Adapter.js.map +1 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts +37 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.js +72 -0
- package/dist/reactnative/crypto/QuickCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/RSAAdapter.d.ts +38 -0
- package/dist/reactnative/crypto/RSAAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/RSAAdapter.js +184 -0
- package/dist/reactnative/crypto/RSAAdapter.js.map +1 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts +33 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js +61 -0
- package/dist/reactnative/crypto/ReactNativeCryptoAdapter.js.map +1 -0
- package/dist/reactnative/crypto/SHA256Adapter.d.ts +9 -0
- package/dist/reactnative/crypto/SHA256Adapter.d.ts.map +1 -0
- package/dist/reactnative/crypto/SHA256Adapter.js +29 -0
- package/dist/reactnative/crypto/SHA256Adapter.js.map +1 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts +63 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.d.ts.map +1 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.js +350 -0
- package/dist/reactnative/crypto/SubtleCryptoPolyfill.js.map +1 -0
- package/dist/reactnative/index.d.ts +9 -0
- package/dist/reactnative/index.d.ts.map +1 -0
- package/dist/reactnative/index.js +41 -0
- package/dist/reactnative/index.js.map +1 -0
- package/package.json +63 -7
- package/patches/PATCHES.md +111 -0
- package/patches/react-native+0.76.9.patch +34 -0
- package/patches/react-native-quick-crypto+1.0.7.patch +42 -0
- package/scripts/cli.js +21 -0
- package/scripts/setup-react-native.js +228 -0
- package/templates/reactnative/App.js +252 -0
- package/templates/reactnative/app.json +29 -0
- package/templates/reactnative/babel.config.js +6 -0
- package/templates/reactnative/index.js +26 -0
- package/templates/reactnative/metro.config.snippet.js +39 -0
- package/templates/reactnative/mindoodb-polyfills.js +116 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { StoreEntry, StoreEntryMetadata, StoreEntryType } from "../../types";
|
|
2
|
-
import type {
|
|
1
|
+
import type { StoreEntry, StoreEntryMetadata, StoreEntryType, StoreScanCursor, StoreScanFilters, StoreScanResult, StoreIdBloomSummary, StoreCompactionStatus } from "../../types";
|
|
2
|
+
import type { DocumentMaterializationBatchPlan, DocumentMaterializationPlan, MaterializationPlanOptions } from "../types";
|
|
3
|
+
import type { NetworkEncryptedEntry, AuthResult, NetworkSyncCapabilities } from "./types";
|
|
3
4
|
/**
|
|
4
5
|
* Abstract interface for network communication in MindooDB sync.
|
|
5
6
|
*
|
|
@@ -19,6 +20,12 @@ import type { NetworkEncryptedEntry, AuthResult } from "./types";
|
|
|
19
20
|
* - Entry payloads are RSA-encrypted with recipient's public key
|
|
20
21
|
*/
|
|
21
22
|
export interface NetworkTransport {
|
|
23
|
+
/**
|
|
24
|
+
* Optional stable identifier for this transport (e.g. the server URL).
|
|
25
|
+
* Used for local cache scoping so the same DB opened against different
|
|
26
|
+
* servers produces different cache entries.
|
|
27
|
+
*/
|
|
28
|
+
getIdentity?(): string;
|
|
22
29
|
/**
|
|
23
30
|
* Request a challenge string for authentication.
|
|
24
31
|
*
|
|
@@ -45,6 +52,11 @@ export interface NetworkTransport {
|
|
|
45
52
|
* @throws NetworkError with type USER_REVOKED if user has been revoked
|
|
46
53
|
*/
|
|
47
54
|
authenticate(challenge: string, signature: Uint8Array): Promise<AuthResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Get advertised sync capabilities from the remote endpoint.
|
|
57
|
+
* Optional for backward compatibility.
|
|
58
|
+
*/
|
|
59
|
+
getCapabilities?(token: string): Promise<NetworkSyncCapabilities>;
|
|
48
60
|
/**
|
|
49
61
|
* Find entries that the remote has which we don't have locally.
|
|
50
62
|
*
|
|
@@ -85,6 +97,29 @@ export interface NetworkTransport {
|
|
|
85
97
|
* @throws NetworkError with type USER_REVOKED if user has been revoked since token was issued
|
|
86
98
|
*/
|
|
87
99
|
findEntries(token: string, type: StoreEntryType, creationDateFrom: number | null, creationDateUntil: number | null): Promise<StoreEntryMetadata[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Cursor-based metadata scan from remote store.
|
|
102
|
+
*
|
|
103
|
+
* Optional transport capability. Implementations that do not support this
|
|
104
|
+
* can omit it; callers should fall back to findNewEntries/getAllIds paths.
|
|
105
|
+
*/
|
|
106
|
+
scanEntriesSince?(token: string, cursor: StoreScanCursor | null, limit?: number, filters?: StoreScanFilters): Promise<StoreScanResult>;
|
|
107
|
+
/**
|
|
108
|
+
* Optional probabilistic ID summary for sync optimization.
|
|
109
|
+
*/
|
|
110
|
+
getIdBloomSummary?(token: string): Promise<StoreIdBloomSummary>;
|
|
111
|
+
/**
|
|
112
|
+
* Optional compaction observability for remote store monitoring.
|
|
113
|
+
*/
|
|
114
|
+
getCompactionStatus?(token: string): Promise<StoreCompactionStatus>;
|
|
115
|
+
/**
|
|
116
|
+
* Compute a causal materialization plan for one document on the remote store.
|
|
117
|
+
*/
|
|
118
|
+
planDocumentMaterialization?(token: string, docId: string, options?: MaterializationPlanOptions): Promise<DocumentMaterializationPlan>;
|
|
119
|
+
/**
|
|
120
|
+
* Compute causal materialization plans for multiple documents on the remote store.
|
|
121
|
+
*/
|
|
122
|
+
planDocumentMaterializationBatch?(token: string, docIds: string[], options?: MaterializationPlanOptions): Promise<DocumentMaterializationBatchPlan>;
|
|
88
123
|
/**
|
|
89
124
|
* Get entries from the remote store.
|
|
90
125
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkTransport.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/NetworkTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"NetworkTransport.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/NetworkTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -106,6 +106,18 @@ export interface AuthResult {
|
|
|
106
106
|
*/
|
|
107
107
|
error?: string;
|
|
108
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Advertised sync capabilities for transport-level feature negotiation.
|
|
111
|
+
* Used by clients to choose fast paths while preserving compatibility.
|
|
112
|
+
*/
|
|
113
|
+
export interface NetworkSyncCapabilities {
|
|
114
|
+
protocolVersion: string;
|
|
115
|
+
supportsCursorScan: boolean;
|
|
116
|
+
supportsIdBloomSummary: boolean;
|
|
117
|
+
supportsCompactionStatus: boolean;
|
|
118
|
+
supportsMaterializationPlanning: boolean;
|
|
119
|
+
supportsBatchMaterializationPlanning: boolean;
|
|
120
|
+
}
|
|
109
121
|
/**
|
|
110
122
|
* Network transport error types for error handling.
|
|
111
123
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,UAAU,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,kCAAkC;IAClC,aAAa,kBAAkB;IAC/B,4BAA4B;IAC5B,YAAY,iBAAiB;IAC7B,oCAAoC;IACpC,iBAAiB,sBAAsB;IACvC,wCAAwC;IACxC,iBAAiB,sBAAsB;IACvC,kCAAkC;IAClC,aAAa,kBAAkB;IAC/B,wBAAwB;IACxB,YAAY,iBAAiB;IAC7B,kCAAkC;IAClC,cAAc,mBAAmB;CAClC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAEnB,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM;CAKlB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,UAAU,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,wBAAwB,EAAE,OAAO,CAAC;IAClC,+BAA+B,EAAE,OAAO,CAAC;IACzC,oCAAoC,EAAE,OAAO,CAAC;CAC/C;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,kCAAkC;IAClC,aAAa,kBAAkB;IAC/B,4BAA4B;IAC5B,YAAY,iBAAiB;IAC7B,oCAAoC;IACpC,iBAAiB,sBAAsB;IACvC,wCAAwC;IACxC,iBAAiB,sBAAsB;IACvC,kCAAkC;IAClC,aAAa,kBAAkB;IAC/B,wBAAwB;IACxB,YAAY,iBAAiB;IAC7B,kCAAkC;IAClC,cAAc,mBAAmB;CAClC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAEnB,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM;CAKlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/types.ts"],"names":[],"mappings":";;;AA0IA;;GAEG;AACH,IAAY,gBAeX;AAfD,WAAY,gBAAgB;IAC1B,kCAAkC;IAClC,mDAA+B,CAAA;IAC/B,4BAA4B;IAC5B,iDAA6B,CAAA;IAC7B,oCAAoC;IACpC,2DAAuC,CAAA;IACvC,wCAAwC;IACxC,2DAAuC,CAAA;IACvC,kCAAkC;IAClC,mDAA+B,CAAA;IAC/B,wBAAwB;IACxB,iDAA6B,CAAA;IAC7B,kCAAkC;IAClC,qDAAiC,CAAA;AACnC,CAAC,EAfW,gBAAgB,gCAAhB,gBAAgB,QAe3B;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YACkB,IAAsB,EACtC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAkB;QAItC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AARD,oCAQC"}
|
|
@@ -10,8 +10,160 @@ import type { StoreEntry, StoreEntryMetadata, StoreEntryType } from "../types";
|
|
|
10
10
|
* - syncMode: "eager" | "lazy" - Synchronization strategy
|
|
11
11
|
*/
|
|
12
12
|
export interface OpenStoreOptions {
|
|
13
|
+
/**
|
|
14
|
+
* If true, local persisted data is cleared during store initialization.
|
|
15
|
+
* Useful for deterministic test setups that need a clean slate.
|
|
16
|
+
*/
|
|
17
|
+
clearLocalDataOnStartup?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Optional base path for persistent store implementations.
|
|
20
|
+
* In-memory and remote stores can ignore this option.
|
|
21
|
+
*/
|
|
22
|
+
basePath?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Controls whether store-level indexing is enabled.
|
|
25
|
+
* Implementations may fall back to scan-based behavior when false.
|
|
26
|
+
*/
|
|
27
|
+
indexingEnabled?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Minimum number of metadata segment files before compaction runs.
|
|
30
|
+
* Applies to append-only on-disk stores. Use 0 or negative to disable.
|
|
31
|
+
*/
|
|
32
|
+
metadataSegmentCompactionMinFiles?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Maximum total bytes of metadata segment files before compaction runs.
|
|
35
|
+
* Applies to append-only on-disk stores. Use 0 or negative to disable.
|
|
36
|
+
*/
|
|
37
|
+
metadataSegmentCompactionMaxBytes?: number;
|
|
13
38
|
[key: string]: unknown;
|
|
14
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Represents index build state for stores that support indexing.
|
|
42
|
+
*/
|
|
43
|
+
export interface StoreIndexBuildStatus {
|
|
44
|
+
phase: "idle" | "building" | "ready";
|
|
45
|
+
indexingEnabled: boolean;
|
|
46
|
+
progress01: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Optional compaction status for stores using appendable index segments.
|
|
50
|
+
*/
|
|
51
|
+
export interface StoreCompactionStatus {
|
|
52
|
+
enabled: boolean;
|
|
53
|
+
compactionMinFiles: number;
|
|
54
|
+
compactionMaxBytes: number;
|
|
55
|
+
totalCompactions: number;
|
|
56
|
+
totalCompactedFiles: number;
|
|
57
|
+
totalCompactedBytes: number;
|
|
58
|
+
totalCompactionDurationMs: number;
|
|
59
|
+
lastCompactionAt: number | null;
|
|
60
|
+
lastCompactedFiles: number;
|
|
61
|
+
lastCompactedBytes: number;
|
|
62
|
+
lastCompactionDurationMs: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Options for waiting on index readiness.
|
|
66
|
+
*/
|
|
67
|
+
export interface AwaitIndexReadyOptions {
|
|
68
|
+
timeoutMs?: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Cursor used by cursor-based store scans.
|
|
72
|
+
* Entries are ordered by (createdAt, id) ascending.
|
|
73
|
+
*/
|
|
74
|
+
export interface StoreScanCursor {
|
|
75
|
+
createdAt: number;
|
|
76
|
+
id: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Optional filters for cursor-based metadata scans.
|
|
80
|
+
*/
|
|
81
|
+
export interface StoreScanFilters {
|
|
82
|
+
docId?: string;
|
|
83
|
+
entryTypes?: StoreEntryType[];
|
|
84
|
+
creationDateFrom?: number | null;
|
|
85
|
+
creationDateUntil?: number | null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Result payload for cursor-based metadata scans.
|
|
89
|
+
*/
|
|
90
|
+
export interface StoreScanResult {
|
|
91
|
+
entries: StoreEntryMetadata[];
|
|
92
|
+
nextCursor: StoreScanCursor | null;
|
|
93
|
+
hasMore: boolean;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Bloom filter summary over entry IDs for sync optimization.
|
|
97
|
+
* Can be exchanged between stores/transports to reduce hasEntries checks.
|
|
98
|
+
*/
|
|
99
|
+
export interface StoreIdBloomSummary {
|
|
100
|
+
version: "bloom-v1";
|
|
101
|
+
totalIds: number;
|
|
102
|
+
bitCount: number;
|
|
103
|
+
hashCount: number;
|
|
104
|
+
salt: string;
|
|
105
|
+
bitsetBase64: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Options for causal document materialization planning.
|
|
109
|
+
* The planner computes which snapshot (if any) should be used and which
|
|
110
|
+
* change entries still need to be applied to reconstruct the latest state.
|
|
111
|
+
*/
|
|
112
|
+
export interface MaterializationPlanOptions {
|
|
113
|
+
/**
|
|
114
|
+
* If true, include planner diagnostics to aid debugging and tuning.
|
|
115
|
+
*/
|
|
116
|
+
includeDiagnostics?: boolean;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Debug and observability details for materialization planning.
|
|
120
|
+
*/
|
|
121
|
+
export interface MaterializationPlanDiagnostics {
|
|
122
|
+
/**
|
|
123
|
+
* Current tip entries for the document (entries with no descendants in the
|
|
124
|
+
* doc graph among change/create/delete entries).
|
|
125
|
+
*/
|
|
126
|
+
headEntryIds: string[];
|
|
127
|
+
/**
|
|
128
|
+
* Number of latest-state entries causally covered by the selected snapshot.
|
|
129
|
+
*/
|
|
130
|
+
coveredLatestEntryCount: number;
|
|
131
|
+
/**
|
|
132
|
+
* Number of latest-state entries not covered by the selected snapshot.
|
|
133
|
+
*/
|
|
134
|
+
uncoveredLatestEntryCount: number;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Store-level causal replay plan for one document.
|
|
138
|
+
*/
|
|
139
|
+
export interface DocumentMaterializationPlan {
|
|
140
|
+
/**
|
|
141
|
+
* Document ID this plan is for.
|
|
142
|
+
*/
|
|
143
|
+
docId: string;
|
|
144
|
+
/**
|
|
145
|
+
* Snapshot entry to load first (if present).
|
|
146
|
+
*/
|
|
147
|
+
snapshotEntryId: string | null;
|
|
148
|
+
/**
|
|
149
|
+
* Change entry IDs to apply after the snapshot (or from empty doc if no snapshot).
|
|
150
|
+
* The order is dependency-first (oldest first).
|
|
151
|
+
*/
|
|
152
|
+
entryIdsToApply: string[];
|
|
153
|
+
/**
|
|
154
|
+
* Optional debug details.
|
|
155
|
+
*/
|
|
156
|
+
diagnostics?: MaterializationPlanDiagnostics;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Batched materialization planning result.
|
|
160
|
+
*/
|
|
161
|
+
export interface DocumentMaterializationBatchPlan {
|
|
162
|
+
/**
|
|
163
|
+
* Per-document plans.
|
|
164
|
+
*/
|
|
165
|
+
plans: DocumentMaterializationPlan[];
|
|
166
|
+
}
|
|
15
167
|
/**
|
|
16
168
|
* Result of creating stores for a database.
|
|
17
169
|
* Contains the document store and an optional separate attachment store.
|
|
@@ -135,6 +287,30 @@ export interface ContentAddressedStore {
|
|
|
135
287
|
* @return A list of all entry IDs in the store
|
|
136
288
|
*/
|
|
137
289
|
getAllIds(): Promise<string[]>;
|
|
290
|
+
/**
|
|
291
|
+
* Cursor-based metadata scan.
|
|
292
|
+
* Preferred for large stores to avoid known-id set exchange.
|
|
293
|
+
*
|
|
294
|
+
* Ordering is deterministic: (createdAt ASC, id ASC).
|
|
295
|
+
* Returned entries are strictly after `cursor`.
|
|
296
|
+
*/
|
|
297
|
+
scanEntriesSince?(cursor: StoreScanCursor | null, limit?: number, filters?: StoreScanFilters): Promise<StoreScanResult>;
|
|
298
|
+
/**
|
|
299
|
+
* Optional probabilistic summary over entry IDs for sync optimization.
|
|
300
|
+
* Callers must still perform exact reconciliation for correctness.
|
|
301
|
+
*/
|
|
302
|
+
getIdBloomSummary?(): Promise<StoreIdBloomSummary>;
|
|
303
|
+
/**
|
|
304
|
+
* Plan causal materialization for a single document.
|
|
305
|
+
* This allows callers to fetch only required entries instead of scanning/applying
|
|
306
|
+
* full history every time.
|
|
307
|
+
*/
|
|
308
|
+
planDocumentMaterialization(docId: string, options?: MaterializationPlanOptions): Promise<DocumentMaterializationPlan>;
|
|
309
|
+
/**
|
|
310
|
+
* Plan causal materialization for multiple documents in one call.
|
|
311
|
+
* Batch planning is important for high-latency network stores to reduce round trips.
|
|
312
|
+
*/
|
|
313
|
+
planDocumentMaterializationBatch(docIds: string[], options?: MaterializationPlanOptions): Promise<DocumentMaterializationBatchPlan>;
|
|
138
314
|
/**
|
|
139
315
|
* Resolve the dependency chain starting from an entry ID.
|
|
140
316
|
* Returns IDs in dependency order, traversing backward through dependencyIds.
|
|
@@ -166,5 +342,35 @@ export interface ContentAddressedStore {
|
|
|
166
342
|
* @throws Error if the store implementation does not support purging
|
|
167
343
|
*/
|
|
168
344
|
purgeDocHistory(docId: string): Promise<void>;
|
|
345
|
+
/**
|
|
346
|
+
* Optional lifecycle hook for stores that persist local data.
|
|
347
|
+
* Implementations should delete all local store data and reset in-memory state.
|
|
348
|
+
*/
|
|
349
|
+
clearAllLocalData?(): Promise<void>;
|
|
350
|
+
/**
|
|
351
|
+
* Optional readiness API for stores with background index creation.
|
|
352
|
+
* Stores without indexing should resolve immediately with ready status.
|
|
353
|
+
*/
|
|
354
|
+
awaitIndexReady?(options?: AwaitIndexReadyOptions): Promise<StoreIndexBuildStatus>;
|
|
355
|
+
/**
|
|
356
|
+
* Optional status API for index build progress.
|
|
357
|
+
*/
|
|
358
|
+
getIndexBuildStatus?(): StoreIndexBuildStatus;
|
|
359
|
+
/**
|
|
360
|
+
* Optional status API for metadata-segment compaction observability.
|
|
361
|
+
*/
|
|
362
|
+
getCompactionStatus?(): Promise<StoreCompactionStatus>;
|
|
363
|
+
/**
|
|
364
|
+
* Optional unique fingerprint for local cache scoping.
|
|
365
|
+
* Must be stable across restarts and unique per store backend/location.
|
|
366
|
+
*
|
|
367
|
+
* Examples:
|
|
368
|
+
* - On-disk store: "disk:/data/myapp/contacts"
|
|
369
|
+
* - IndexedDB store: "idb:default/contacts"
|
|
370
|
+
* - Network store: "net:https://sync.example.com/contacts"
|
|
371
|
+
*
|
|
372
|
+
* If not implemented, BaseMindooDB falls back to getId().
|
|
373
|
+
*/
|
|
374
|
+
getCacheIdentity?(): string;
|
|
169
375
|
}
|
|
170
376
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/appendonlystores/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/E;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,EAAE,qBAAqB,CAAC;IAEhC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;;;;OAOG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;CAC1E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,KAAK,IAAI,MAAM,CAAC;IAEhB;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7C;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAElE;;;;;;OAMG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEvF;;;;;;;;;;;OAWG;IACH,WAAW,CACT,IAAI,EAAE,cAAc,EACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE/B;;;;;;;;;;;;;;;OAeG;IACH,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAErB;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/appendonlystores/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-specific Automerge adapter for MindooDB
|
|
3
|
+
*
|
|
4
|
+
* - React Native: Uses react-native-automerge-generated (native Rust via UniFFI)
|
|
5
|
+
* - Browser/Node.js: Uses @automerge/automerge (WASM)
|
|
6
|
+
*
|
|
7
|
+
* Both implementations now provide the same WASM-compatible API.
|
|
8
|
+
*/
|
|
9
|
+
import * as AutomergeWasm from "@automerge/automerge";
|
|
10
|
+
type AutomergeAPI = typeof AutomergeWasm;
|
|
11
|
+
declare let Automerge: AutomergeAPI;
|
|
12
|
+
declare let isNative: boolean;
|
|
13
|
+
export { Automerge, isNative };
|
|
14
|
+
export default Automerge;
|
|
15
|
+
//# sourceMappingURL=automerge-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automerge-adapter.d.ts","sourceRoot":"","sources":["../../src/core/automerge-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAGtD,KAAK,YAAY,GAAG,OAAO,aAAa,CAAC;AAGzC,QAAA,IAAI,SAAS,EAAE,YAAY,CAAC;AAC5B,QAAA,IAAI,QAAQ,SAAQ,CAAC;AAyBrB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC/B,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Platform-specific Automerge adapter for MindooDB
|
|
4
|
+
*
|
|
5
|
+
* - React Native: Uses react-native-automerge-generated (native Rust via UniFFI)
|
|
6
|
+
* - Browser/Node.js: Uses @automerge/automerge (WASM)
|
|
7
|
+
*
|
|
8
|
+
* Both implementations now provide the same WASM-compatible API.
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.isNative = exports.Automerge = void 0;
|
|
45
|
+
const AutomergeWasm = __importStar(require("@automerge/automerge"));
|
|
46
|
+
// Runtime detection of available Automerge implementation
|
|
47
|
+
let Automerge;
|
|
48
|
+
let isNative = false;
|
|
49
|
+
exports.isNative = isNative;
|
|
50
|
+
try {
|
|
51
|
+
// Try to load native Automerge (React Native only)
|
|
52
|
+
// @ts-ignore - Module may not exist on Node.js/Browser
|
|
53
|
+
const nativeModule = require('react-native-automerge-generated');
|
|
54
|
+
if (nativeModule?.Automerge) {
|
|
55
|
+
// Use the WASM-compatible API from react-native-automerge-generated
|
|
56
|
+
exports.Automerge = Automerge = nativeModule.Automerge;
|
|
57
|
+
exports.isNative = isNative = true;
|
|
58
|
+
console.log('[MindooDB] ✓ Using native Rust Automerge (react-native-automerge-generated)');
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Module loaded but Automerge API not available
|
|
62
|
+
exports.Automerge = Automerge = AutomergeWasm;
|
|
63
|
+
console.log('[MindooDB] ⚠ Native module loaded but Automerge API unavailable, using WASM');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// Native module not available (Browser/Node.js)
|
|
68
|
+
exports.Automerge = Automerge = AutomergeWasm;
|
|
69
|
+
exports.isNative = isNative = false;
|
|
70
|
+
console.log('[MindooDB] ℹ Using WASM Automerge (Browser/Node.js mode)');
|
|
71
|
+
}
|
|
72
|
+
exports.default = Automerge;
|
|
73
|
+
//# sourceMappingURL=automerge-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automerge-adapter.js","sourceRoot":"","sources":["../../src/core/automerge-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oEAAsD;AAKtD,0DAA0D;AAC1D,IAAI,SAAuB,CAAC;AAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;AAyBD,4BAAQ;AAvB5B,IAAI,CAAC;IACH,mDAAmD;IACnD,uDAAuD;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;IAEjE,IAAI,YAAY,EAAE,SAAS,EAAE,CAAC;QAC5B,oEAAoE;QACpE,oBAAA,SAAS,GAAG,YAAY,CAAC,SAAyB,CAAC;QACnD,mBAAA,QAAQ,GAAG,IAAI,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,gDAAgD;QAChD,oBAAA,SAAS,GAAG,aAAa,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,gDAAgD;IAChD,oBAAA,SAAS,GAAG,aAAa,CAAC;IAC1B,mBAAA,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;AAC1E,CAAC;AAID,kBAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { LocalCacheStore } from "./LocalCacheStore";
|
|
2
|
+
import { Logger } from "../logging";
|
|
3
|
+
/**
|
|
4
|
+
* Interface that cacheable consumers (BaseMindooDB, VirtualView) implement
|
|
5
|
+
* so the CacheManager can flush their dirty state.
|
|
6
|
+
*/
|
|
7
|
+
export interface ICacheable {
|
|
8
|
+
/**
|
|
9
|
+
* A unique key identifying this cacheable in the cache store.
|
|
10
|
+
* For BaseMindooDB: tenantId + "/" + store.getCacheIdentity()
|
|
11
|
+
* For VirtualView: viewId + "/" + version
|
|
12
|
+
*/
|
|
13
|
+
getCachePrefix(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Export the current dirty state to the cache store.
|
|
16
|
+
* Called by CacheManager during flush.
|
|
17
|
+
*
|
|
18
|
+
* @param store The cache store to write to
|
|
19
|
+
* @returns The number of entries written
|
|
20
|
+
*/
|
|
21
|
+
flushToCache(store: LocalCacheStore): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Clear the dirty tracking state after a successful flush.
|
|
24
|
+
*/
|
|
25
|
+
clearDirty(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Whether this cacheable has any dirty state to flush.
|
|
28
|
+
*/
|
|
29
|
+
hasDirtyState(): boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface CacheManagerOptions {
|
|
32
|
+
/** Flush interval in milliseconds. Default: 5000 (5s) */
|
|
33
|
+
flushIntervalMs?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Coordinates periodic cache persistence for all registered cacheables
|
|
37
|
+
* (databases, virtual views) within a tenant.
|
|
38
|
+
*
|
|
39
|
+
* Tracks dirty state and flushes periodically or on demand.
|
|
40
|
+
*/
|
|
41
|
+
export declare class CacheManager {
|
|
42
|
+
private store;
|
|
43
|
+
private cacheables;
|
|
44
|
+
private flushIntervalMs;
|
|
45
|
+
private timer;
|
|
46
|
+
private flushInProgress;
|
|
47
|
+
private disposed;
|
|
48
|
+
private logger;
|
|
49
|
+
constructor(store: LocalCacheStore, options?: CacheManagerOptions, logger?: Logger);
|
|
50
|
+
getStore(): LocalCacheStore;
|
|
51
|
+
/**
|
|
52
|
+
* Register a cacheable consumer. It will be included in periodic flushes.
|
|
53
|
+
*/
|
|
54
|
+
register(cacheable: ICacheable): void;
|
|
55
|
+
/**
|
|
56
|
+
* Deregister a cacheable consumer (e.g. on db.close()).
|
|
57
|
+
* Triggers an immediate flush for this cacheable before removal.
|
|
58
|
+
*/
|
|
59
|
+
deregister(cacheable: ICacheable): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Notify the CacheManager that something changed.
|
|
62
|
+
* Schedules a flush if one is not already pending.
|
|
63
|
+
*/
|
|
64
|
+
markDirty(): void;
|
|
65
|
+
private scheduleFlush;
|
|
66
|
+
/**
|
|
67
|
+
* Immediately flush all dirty cacheables.
|
|
68
|
+
*/
|
|
69
|
+
flush(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Flush all pending state and stop the periodic timer.
|
|
72
|
+
*/
|
|
73
|
+
dispose(): Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=CacheManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/core/cache/CacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAoC,MAAM,YAAY,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,cAAc,IAAI,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtD;;OAEG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAS;gBAEX,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM;IAMlF,QAAQ,IAAI,eAAe;IAI3B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAIrC;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD;;;OAGG;IACH,SAAS,IAAI,IAAI;IAKjB,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CacheManager = void 0;
|
|
4
|
+
const logging_1 = require("../logging");
|
|
5
|
+
/**
|
|
6
|
+
* Coordinates periodic cache persistence for all registered cacheables
|
|
7
|
+
* (databases, virtual views) within a tenant.
|
|
8
|
+
*
|
|
9
|
+
* Tracks dirty state and flushes periodically or on demand.
|
|
10
|
+
*/
|
|
11
|
+
class CacheManager {
|
|
12
|
+
constructor(store, options, logger) {
|
|
13
|
+
this.cacheables = new Set();
|
|
14
|
+
this.timer = null;
|
|
15
|
+
this.flushInProgress = false;
|
|
16
|
+
this.disposed = false;
|
|
17
|
+
this.store = store;
|
|
18
|
+
this.flushIntervalMs = options?.flushIntervalMs ?? 5000;
|
|
19
|
+
this.logger = logger || new logging_1.MindooLogger((0, logging_1.getDefaultLogLevel)(), "CacheManager", true);
|
|
20
|
+
}
|
|
21
|
+
getStore() {
|
|
22
|
+
return this.store;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Register a cacheable consumer. It will be included in periodic flushes.
|
|
26
|
+
*/
|
|
27
|
+
register(cacheable) {
|
|
28
|
+
this.cacheables.add(cacheable);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Deregister a cacheable consumer (e.g. on db.close()).
|
|
32
|
+
* Triggers an immediate flush for this cacheable before removal.
|
|
33
|
+
*/
|
|
34
|
+
async deregister(cacheable) {
|
|
35
|
+
if (cacheable.hasDirtyState()) {
|
|
36
|
+
try {
|
|
37
|
+
await cacheable.flushToCache(this.store);
|
|
38
|
+
cacheable.clearDirty();
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
this.logger.warn(`Failed to flush cache for ${cacheable.getCachePrefix()} on deregister: ${e}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
this.cacheables.delete(cacheable);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Notify the CacheManager that something changed.
|
|
48
|
+
* Schedules a flush if one is not already pending.
|
|
49
|
+
*/
|
|
50
|
+
markDirty() {
|
|
51
|
+
if (this.disposed)
|
|
52
|
+
return;
|
|
53
|
+
this.scheduleFlush();
|
|
54
|
+
}
|
|
55
|
+
scheduleFlush() {
|
|
56
|
+
if (this.timer !== null)
|
|
57
|
+
return;
|
|
58
|
+
this.timer = setTimeout(async () => {
|
|
59
|
+
this.timer = null;
|
|
60
|
+
await this.flush();
|
|
61
|
+
}, this.flushIntervalMs);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Immediately flush all dirty cacheables.
|
|
65
|
+
*/
|
|
66
|
+
async flush() {
|
|
67
|
+
if (this.flushInProgress)
|
|
68
|
+
return;
|
|
69
|
+
this.flushInProgress = true;
|
|
70
|
+
try {
|
|
71
|
+
for (const cacheable of this.cacheables) {
|
|
72
|
+
if (!cacheable.hasDirtyState())
|
|
73
|
+
continue;
|
|
74
|
+
try {
|
|
75
|
+
const count = await cacheable.flushToCache(this.store);
|
|
76
|
+
cacheable.clearDirty();
|
|
77
|
+
this.logger.debug(`Flushed ${count} entries for ${cacheable.getCachePrefix()}`);
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
this.logger.warn(`Cache flush failed for ${cacheable.getCachePrefix()}: ${e}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
this.flushInProgress = false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Flush all pending state and stop the periodic timer.
|
|
90
|
+
*/
|
|
91
|
+
async dispose() {
|
|
92
|
+
this.disposed = true;
|
|
93
|
+
if (this.timer !== null) {
|
|
94
|
+
clearTimeout(this.timer);
|
|
95
|
+
this.timer = null;
|
|
96
|
+
}
|
|
97
|
+
await this.flush();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.CacheManager = CacheManager;
|
|
101
|
+
//# sourceMappingURL=CacheManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../../../src/core/cache/CacheManager.ts"],"names":[],"mappings":"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"}
|