@vrtmrz/livesync-commonlib 0.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/API/DirectFileManipulator.d.ts +2 -0
- package/dist/API/DirectFileManipulator.js +4 -0
- package/dist/API/DirectFileManipulatorV2.d.ts +150 -0
- package/dist/API/DirectFileManipulatorV2.js +424 -0
- package/dist/API/processSetting.d.ts +41 -0
- package/dist/API/processSetting.js +140 -0
- package/dist/ContentSplitter/ContentSplitter.d.ts +28 -0
- package/dist/ContentSplitter/ContentSplitter.js +5 -0
- package/dist/ContentSplitter/ContentSplitterBase.d.ts +51 -0
- package/dist/ContentSplitter/ContentSplitterBase.js +83 -0
- package/dist/ContentSplitter/ContentSplitterRabinKarp.d.ts +9 -0
- package/dist/ContentSplitter/ContentSplitterRabinKarp.js +32 -0
- package/dist/ContentSplitter/ContentSplitterV1.d.ts +9 -0
- package/dist/ContentSplitter/ContentSplitterV1.js +34 -0
- package/dist/ContentSplitter/ContentSplitterV2.d.ts +9 -0
- package/dist/ContentSplitter/ContentSplitterV2.js +34 -0
- package/dist/ContentSplitter/ContentSplitters.d.ts +12 -0
- package/dist/ContentSplitter/ContentSplitters.js +29 -0
- package/dist/bureau/bureau.d.ts +7 -0
- package/dist/bureau/bureau.js +5 -0
- package/dist/common/ConnectionString.d.ts +30 -0
- package/dist/common/ConnectionString.js +179 -0
- package/dist/common/LSError.d.ts +48 -0
- package/dist/common/LSError.js +112 -0
- package/dist/common/configForDoc.d.ts +79 -0
- package/dist/common/configForDoc.js +312 -0
- package/dist/common/coreEnvFunctions.d.ts +21 -0
- package/dist/common/coreEnvFunctions.js +22 -0
- package/dist/common/coreEnvVars.d.ts +3 -0
- package/dist/common/coreEnvVars.js +6 -0
- package/dist/common/i18n.d.ts +18 -0
- package/dist/common/i18n.js +7193 -0
- package/dist/common/logger.d.ts +2 -0
- package/dist/common/logger.js +1 -0
- package/dist/common/messages/combinedMessages.dev.d.ts +7 -0
- package/dist/common/messages/combinedMessages.dev.js +44 -0
- package/dist/common/messages/combinedMessages.prod.d.ts +9264 -0
- package/dist/common/messages/combinedMessages.prod.js +9271 -0
- package/dist/common/messages/de.d.ts +297 -0
- package/dist/common/messages/de.js +7 -0
- package/dist/common/messages/def.d.ts +1119 -0
- package/dist/common/messages/def.js +7 -0
- package/dist/common/messages/es.d.ts +689 -0
- package/dist/common/messages/es.js +7 -0
- package/dist/common/messages/fr.d.ts +582 -0
- package/dist/common/messages/fr.js +7 -0
- package/dist/common/messages/he.d.ts +583 -0
- package/dist/common/messages/he.js +7 -0
- package/dist/common/messages/ja.d.ts +838 -0
- package/dist/common/messages/ja.js +7 -0
- package/dist/common/messages/ko.d.ts +800 -0
- package/dist/common/messages/ko.js +7 -0
- package/dist/common/messages/ru.d.ts +858 -0
- package/dist/common/messages/ru.js +7 -0
- package/dist/common/messages/zh-tw.d.ts +384 -0
- package/dist/common/messages/zh-tw.js +7 -0
- package/dist/common/messages/zh.d.ts +1093 -0
- package/dist/common/messages/zh.js +7 -0
- package/dist/common/messagesJson/de.json +295 -0
- package/dist/common/messagesJson/en.json +1117 -0
- package/dist/common/messagesJson/es.json +687 -0
- package/dist/common/messagesJson/fr.json +580 -0
- package/dist/common/messagesJson/he.json +581 -0
- package/dist/common/messagesJson/ja.json +836 -0
- package/dist/common/messagesJson/ko.json +798 -0
- package/dist/common/messagesJson/ru.json +856 -0
- package/dist/common/messagesJson/zh-tw.json +382 -0
- package/dist/common/messagesJson/zh.json +1091 -0
- package/dist/common/models/auth.type.d.ts +41 -0
- package/dist/common/models/auth.type.js +0 -0
- package/dist/common/models/db.const.d.ts +20 -0
- package/dist/common/models/db.const.js +28 -0
- package/dist/common/models/db.definition.d.ts +56 -0
- package/dist/common/models/db.definition.js +6 -0
- package/dist/common/models/db.type.d.ts +142 -0
- package/dist/common/models/db.type.js +0 -0
- package/dist/common/models/diff.definition.d.ts +16 -0
- package/dist/common/models/diff.definition.js +0 -0
- package/dist/common/models/fileaccess.const.d.ts +7 -0
- package/dist/common/models/fileaccess.const.js +16 -0
- package/dist/common/models/fileaccess.type.d.ts +72 -0
- package/dist/common/models/fileaccess.type.js +0 -0
- package/dist/common/models/redflag.const.d.ts +32 -0
- package/dist/common/models/redflag.const.js +27 -0
- package/dist/common/models/setting.const.d.ts +49 -0
- package/dist/common/models/setting.const.defaults.d.ts +3 -0
- package/dist/common/models/setting.const.defaults.js +185 -0
- package/dist/common/models/setting.const.js +68 -0
- package/dist/common/models/setting.const.preferred.d.ts +5 -0
- package/dist/common/models/setting.const.preferred.js +35 -0
- package/dist/common/models/setting.const.qr.d.ts +2 -0
- package/dist/common/models/setting.const.qr.js +174 -0
- package/dist/common/models/setting.type.d.ts +900 -0
- package/dist/common/models/setting.type.js +8 -0
- package/dist/common/models/shared.const.behabiour.d.ts +28 -0
- package/dist/common/models/shared.const.behabiour.js +36 -0
- package/dist/common/models/shared.const.d.ts +5 -0
- package/dist/common/models/shared.const.js +12 -0
- package/dist/common/models/shared.const.symbols.d.ts +9 -0
- package/dist/common/models/shared.const.symbols.js +20 -0
- package/dist/common/models/shared.definition.configNames.d.ts +36 -0
- package/dist/common/models/shared.definition.configNames.js +203 -0
- package/dist/common/models/shared.definition.d.ts +22 -0
- package/dist/common/models/shared.definition.js +24 -0
- package/dist/common/models/shared.type.util.d.ts +8 -0
- package/dist/common/models/shared.type.util.js +0 -0
- package/dist/common/models/sync.definition.d.ts +18 -0
- package/dist/common/models/sync.definition.js +20 -0
- package/dist/common/models/tweak.definition.d.ts +191 -0
- package/dist/common/models/tweak.definition.js +77 -0
- package/dist/common/rosetta.d.ts +42 -0
- package/dist/common/rosetta.js +57 -0
- package/dist/common/settingConstants.d.ts +216 -0
- package/dist/common/settingConstants.js +434 -0
- package/dist/common/typeUtils.d.ts +17 -0
- package/dist/common/typeUtils.js +51 -0
- package/dist/common/types.d.ts +107 -0
- package/dist/common/types.js +212 -0
- package/dist/common/utils.d.ts +129 -0
- package/dist/common/utils.doc.d.ts +11 -0
- package/dist/common/utils.doc.js +35 -0
- package/dist/common/utils.js +583 -0
- package/dist/common/utils.object.d.ts +2 -0
- package/dist/common/utils.object.js +14 -0
- package/dist/common/utils.patch.d.ts +8 -0
- package/dist/common/utils.patch.js +178 -0
- package/dist/common/utils.type.d.ts +1 -0
- package/dist/common/utils.type.js +0 -0
- package/dist/context.d.ts +8 -0
- package/dist/context.js +14 -0
- package/dist/databases/IndexedDBKeyValueDatabase.d.ts +26 -0
- package/dist/databases/IndexedDBKeyValueDatabase.js +130 -0
- package/dist/dataobject/StoredMap.d.ts +12 -0
- package/dist/dataobject/StoredMap.js +47 -0
- package/dist/dev/checks.d.ts +5 -0
- package/dist/dev/checks.js +38 -0
- package/dist/encryption/encryptHKDF.d.ts +3 -0
- package/dist/encryption/encryptHKDF.js +7 -0
- package/dist/encryption/stringEncryption.d.ts +27 -0
- package/dist/encryption/stringEncryption.js +59 -0
- package/dist/events/coreEvents.d.ts +54 -0
- package/dist/events/coreEvents.js +46 -0
- package/dist/hub/hub.d.ts +11 -0
- package/dist/hub/hub.js +7 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -0
- package/dist/interfaces/AsyncActivityRunner.d.ts +18 -0
- package/dist/interfaces/AsyncActivityRunner.js +7 -0
- package/dist/interfaces/Confirm.d.ts +17 -0
- package/dist/interfaces/Confirm.js +0 -0
- package/dist/interfaces/DatabaseFileAccess.d.ts +14 -0
- package/dist/interfaces/DatabaseFileAccess.js +0 -0
- package/dist/interfaces/DatabaseRebuilder.d.ts +13 -0
- package/dist/interfaces/DatabaseRebuilder.js +0 -0
- package/dist/interfaces/FileHandler.d.ts +13 -0
- package/dist/interfaces/FileHandler.js +0 -0
- package/dist/interfaces/KeyValueDatabase.d.ts +11 -0
- package/dist/interfaces/KeyValueDatabase.js +0 -0
- package/dist/interfaces/ServiceModule.d.ts +59 -0
- package/dist/interfaces/ServiceModule.js +19 -0
- package/dist/interfaces/StorageAccess.d.ts +44 -0
- package/dist/interfaces/StorageAccess.js +0 -0
- package/dist/interfaces/StorageEventManager.d.ts +16 -0
- package/dist/interfaces/StorageEventManager.js +5 -0
- package/dist/managers/ChangeManager.d.ts +61 -0
- package/dist/managers/ChangeManager.js +104 -0
- package/dist/managers/ChunkDeliveryCoordinator.d.ts +51 -0
- package/dist/managers/ChunkDeliveryCoordinator.js +136 -0
- package/dist/managers/ChunkFetcher.d.ts +44 -0
- package/dist/managers/ChunkFetcher.js +251 -0
- package/dist/managers/ChunkManager.d.ts +2 -0
- package/dist/managers/ChunkManager.js +4 -0
- package/dist/managers/ConflictManager.d.ts +37 -0
- package/dist/managers/ConflictManager.js +322 -0
- package/dist/managers/EntryManager/EntryManager.d.ts +37 -0
- package/dist/managers/EntryManager/EntryManager.js +73 -0
- package/dist/managers/EntryManager/EntryManagerImpls.d.ts +74 -0
- package/dist/managers/EntryManager/EntryManagerImpls.js +499 -0
- package/dist/managers/HashManager/HashManager.d.ts +60 -0
- package/dist/managers/HashManager/HashManager.js +97 -0
- package/dist/managers/HashManager/HashManagerCore.d.ts +114 -0
- package/dist/managers/HashManager/HashManagerCore.js +99 -0
- package/dist/managers/HashManager/PureJSHashManager.d.ts +77 -0
- package/dist/managers/HashManager/PureJSHashManager.js +84 -0
- package/dist/managers/HashManager/XXHashHashManager.d.ts +96 -0
- package/dist/managers/HashManager/XXHashHashManager.js +111 -0
- package/dist/managers/LayeredChunkManager/ArrivalWaitLayer.d.ts +30 -0
- package/dist/managers/LayeredChunkManager/ArrivalWaitLayer.js +115 -0
- package/dist/managers/LayeredChunkManager/CacheLayer.d.ts +59 -0
- package/dist/managers/LayeredChunkManager/CacheLayer.js +161 -0
- package/dist/managers/LayeredChunkManager/ChunkLayerInterfaces.d.ts +37 -0
- package/dist/managers/LayeredChunkManager/ChunkLayerInterfaces.js +0 -0
- package/dist/managers/LayeredChunkManager/DatabaseReadLayer.d.ts +14 -0
- package/dist/managers/LayeredChunkManager/DatabaseReadLayer.js +78 -0
- package/dist/managers/LayeredChunkManager/DatabaseWriteLayer.d.ts +11 -0
- package/dist/managers/LayeredChunkManager/DatabaseWriteLayer.js +43 -0
- package/dist/managers/LayeredChunkManager/HotPackLayer.d.ts +9 -0
- package/dist/managers/LayeredChunkManager/HotPackLayer.js +8 -0
- package/dist/managers/LayeredChunkManager/types.d.ts +39 -0
- package/dist/managers/LayeredChunkManager/types.js +0 -0
- package/dist/managers/LayeredChunkManager.d.ts +53 -0
- package/dist/managers/LayeredChunkManager.js +240 -0
- package/dist/managers/LiveSyncManagers.d.ts +48 -0
- package/dist/managers/LiveSyncManagers.js +136 -0
- package/dist/managers/StorageEventManager.d.ts +135 -0
- package/dist/managers/StorageEventManager.js +564 -0
- package/dist/managers/StorageProcessingManager.d.ts +14 -0
- package/dist/managers/StorageProcessingManager.js +48 -0
- package/dist/managers/adapters/IStorageEventConverterAdapter.d.ts +16 -0
- package/dist/managers/adapters/IStorageEventConverterAdapter.js +0 -0
- package/dist/managers/adapters/IStorageEventManagerAdapter.d.ts +18 -0
- package/dist/managers/adapters/IStorageEventManagerAdapter.js +0 -0
- package/dist/managers/adapters/IStorageEventPersistenceAdapter.d.ts +15 -0
- package/dist/managers/adapters/IStorageEventPersistenceAdapter.js +0 -0
- package/dist/managers/adapters/IStorageEventStatusAdapter.d.ts +13 -0
- package/dist/managers/adapters/IStorageEventStatusAdapter.js +0 -0
- package/dist/managers/adapters/IStorageEventTypeGuardAdapter.d.ts +16 -0
- package/dist/managers/adapters/IStorageEventTypeGuardAdapter.js +0 -0
- package/dist/managers/adapters/IStorageEventWatchAdapter.d.ts +21 -0
- package/dist/managers/adapters/IStorageEventWatchAdapter.js +0 -0
- package/dist/managers/adapters/index.d.ts +6 -0
- package/dist/managers/adapters/index.js +0 -0
- package/dist/mock_and_interop/stores.d.ts +21 -0
- package/dist/mock_and_interop/stores.js +15 -0
- package/dist/mock_and_interop/wrapper.d.ts +7 -0
- package/dist/mock_and_interop/wrapper.js +37 -0
- package/dist/mods.d.ts +1 -0
- package/dist/mods.js +18 -0
- package/dist/platform/browser/index.d.ts +1 -0
- package/dist/platform/browser/index.js +10 -0
- package/dist/platform/browser/storage.d.ts +35 -0
- package/dist/platform/browser/storage.js +139 -0
- package/dist/platform/node/index.d.ts +23 -0
- package/dist/platform/node/index.js +33 -0
- package/dist/platform/node/storage.d.ts +31 -0
- package/dist/platform/node/storage.js +104 -0
- package/dist/platform/storagePath.d.ts +7 -0
- package/dist/platform/storagePath.js +20 -0
- package/dist/pouchdb/LiveSyncDBFunctions.d.ts +14 -0
- package/dist/pouchdb/LiveSyncDBFunctions.js +129 -0
- package/dist/pouchdb/LiveSyncLocalDB.d.ts +196 -0
- package/dist/pouchdb/LiveSyncLocalDB.js +381 -0
- package/dist/pouchdb/PouchDBConstructor.d.ts +3 -0
- package/dist/pouchdb/PouchDBConstructor.js +0 -0
- package/dist/pouchdb/ReplicatorShim.d.ts +51 -0
- package/dist/pouchdb/ReplicatorShim.js +109 -0
- package/dist/pouchdb/StreamingFetch.d.ts +19 -0
- package/dist/pouchdb/StreamingFetch.js +263 -0
- package/dist/pouchdb/chunks.d.ts +38 -0
- package/dist/pouchdb/chunks.js +314 -0
- package/dist/pouchdb/compress.d.ts +11 -0
- package/dist/pouchdb/compress.js +99 -0
- package/dist/pouchdb/encryption.d.ts +20 -0
- package/dist/pouchdb/encryption.js +458 -0
- package/dist/pouchdb/negotiation.d.ts +9 -0
- package/dist/pouchdb/negotiation.js +109 -0
- package/dist/pouchdb/pouchdb-browser.d.ts +2 -0
- package/dist/pouchdb/pouchdb-browser.js +96 -0
- package/dist/pouchdb/pouchdb-http.d.ts +2 -0
- package/dist/pouchdb/pouchdb-http.js +94 -0
- package/dist/pouchdb/pouchdb-test.d.ts +2 -0
- package/dist/pouchdb/pouchdb-test.js +12 -0
- package/dist/pouchdb/utils_couchdb.d.ts +4 -0
- package/dist/pouchdb/utils_couchdb.js +38 -0
- package/dist/replication/LiveSyncAbstractReplicator.d.ts +69 -0
- package/dist/replication/LiveSyncAbstractReplicator.js +92 -0
- package/dist/replication/SyncParamsHandler.d.ts +35 -0
- package/dist/replication/SyncParamsHandler.js +118 -0
- package/dist/replication/couchdb/LiveSyncReplicator.d.ts +85 -0
- package/dist/replication/couchdb/LiveSyncReplicator.js +1132 -0
- package/dist/replication/httplib.d.ts +75 -0
- package/dist/replication/httplib.js +187 -0
- package/dist/replication/journal/JournalSyncCore.d.ts +70 -0
- package/dist/replication/journal/JournalSyncCore.js +737 -0
- package/dist/replication/journal/JournalSyncTypes.d.ts +9 -0
- package/dist/replication/journal/JournalSyncTypes.js +11 -0
- package/dist/replication/journal/LiveSyncJournalReplicator.d.ts +40 -0
- package/dist/replication/journal/LiveSyncJournalReplicator.js +294 -0
- package/dist/replication/journal/LiveSyncJournalReplicatorEnv.d.ts +3 -0
- package/dist/replication/journal/LiveSyncJournalReplicatorEnv.js +0 -0
- package/dist/replication/journal/objectstore/JournalStorageAdapter.d.ts +15 -0
- package/dist/replication/journal/objectstore/JournalStorageAdapter.js +0 -0
- package/dist/replication/journal/objectstore/MinioStorageAdapter.d.ts +21 -0
- package/dist/replication/journal/objectstore/MinioStorageAdapter.js +204 -0
- package/dist/replication/trystero/LiveSyncTrysteroReplicator.d.ts +90 -0
- package/dist/replication/trystero/LiveSyncTrysteroReplicator.js +380 -0
- package/dist/replication/trystero/P2PLogCollector.d.ts +8 -0
- package/dist/replication/trystero/P2PLogCollector.js +91 -0
- package/dist/replication/trystero/P2PReplicatorBase.d.ts +19 -0
- package/dist/replication/trystero/P2PReplicatorBase.js +0 -0
- package/dist/replication/trystero/P2PReplicatorCore.d.ts +12 -0
- package/dist/replication/trystero/P2PReplicatorCore.js +126 -0
- package/dist/replication/trystero/P2PReplicatorPaneCommon.d.ts +41 -0
- package/dist/replication/trystero/P2PReplicatorPaneCommon.js +20 -0
- package/dist/replication/trystero/ProxiedDB.d.ts +13 -0
- package/dist/replication/trystero/ProxiedDB.js +20 -0
- package/dist/replication/trystero/TrysteroReplicator.d.ts +152 -0
- package/dist/replication/trystero/TrysteroReplicator.js +683 -0
- package/dist/replication/trystero/TrysteroReplicatorP2PClient.d.ts +19 -0
- package/dist/replication/trystero/TrysteroReplicatorP2PClient.js +80 -0
- package/dist/replication/trystero/TrysteroReplicatorP2PConnection.d.ts +2 -0
- package/dist/replication/trystero/TrysteroReplicatorP2PConnection.js +4 -0
- package/dist/replication/trystero/TrysteroReplicatorP2PServer.d.ts +117 -0
- package/dist/replication/trystero/TrysteroReplicatorP2PServer.js +540 -0
- package/dist/replication/trystero/UseP2PReplicatorResult.d.ts +11 -0
- package/dist/replication/trystero/UseP2PReplicatorResult.js +0 -0
- package/dist/replication/trystero/addP2PEventHandlers.d.ts +35 -0
- package/dist/replication/trystero/addP2PEventHandlers.js +43 -0
- package/dist/replication/trystero/rpcCompat.d.ts +1 -0
- package/dist/replication/trystero/rpcCompat.js +9 -0
- package/dist/replication/trystero/types.d.ts +95 -0
- package/dist/replication/trystero/types.js +27 -0
- package/dist/replication/trystero/useP2PReplicatorCommands.d.ts +7 -0
- package/dist/replication/trystero/useP2PReplicatorCommands.js +25 -0
- package/dist/replication/trystero/useP2PReplicatorFeature.d.ts +17 -0
- package/dist/replication/trystero/useP2PReplicatorFeature.js +82 -0
- package/dist/rpc/RpcRoom.d.ts +24 -0
- package/dist/rpc/RpcRoom.js +300 -0
- package/dist/rpc/RpcSession.d.ts +9 -0
- package/dist/rpc/RpcSession.js +32 -0
- package/dist/rpc/chunking.d.ts +11 -0
- package/dist/rpc/chunking.js +58 -0
- package/dist/rpc/errors.d.ts +8 -0
- package/dist/rpc/errors.js +26 -0
- package/dist/rpc/index.d.ts +6 -0
- package/dist/rpc/index.js +12 -0
- package/dist/rpc/pouchdb/RpcPouchDBProxy.d.ts +75 -0
- package/dist/rpc/pouchdb/RpcPouchDBProxy.js +115 -0
- package/dist/rpc/pouchdb/RpcPouchDBServer.d.ts +16 -0
- package/dist/rpc/pouchdb/RpcPouchDBServer.js +55 -0
- package/dist/rpc/transports/DiagRTCPeerConnections.d.ts +24 -0
- package/dist/rpc/transports/DiagRTCPeerConnections.js +208 -0
- package/dist/rpc/transports/DiagRTCPeerConnections.types.d.ts +64 -0
- package/dist/rpc/transports/DiagRTCPeerConnections.types.js +12 -0
- package/dist/rpc/transports/DiagRTCPeerConnections.utils.d.ts +33 -0
- package/dist/rpc/transports/DiagRTCPeerConnections.utils.js +217 -0
- package/dist/rpc/transports/TrysteroTransport.d.ts +216 -0
- package/dist/rpc/transports/TrysteroTransport.js +134 -0
- package/dist/rpc/transports/trysteroUtils.d.ts +3 -0
- package/dist/rpc/transports/trysteroUtils.js +37 -0
- package/dist/rpc/types.d.ts +75 -0
- package/dist/rpc/types.js +6 -0
- package/dist/serviceFeatures/checkRemoteSize.d.ts +28 -0
- package/dist/serviceFeatures/checkRemoteSize.js +178 -0
- package/dist/serviceFeatures/offlineScanner.d.ts +128 -0
- package/dist/serviceFeatures/offlineScanner.js +553 -0
- package/dist/serviceFeatures/prepareDatabaseForUse.d.ts +20 -0
- package/dist/serviceFeatures/prepareDatabaseForUse.js +39 -0
- package/dist/serviceFeatures/remoteConfig.d.ts +46 -0
- package/dist/serviceFeatures/remoteConfig.js +247 -0
- package/dist/serviceFeatures/setupObsidian/qrCode.d.ts +4 -0
- package/dist/serviceFeatures/setupObsidian/qrCode.js +67 -0
- package/dist/serviceFeatures/setupObsidian/setupUri.d.ts +7 -0
- package/dist/serviceFeatures/setupObsidian/setupUri.js +70 -0
- package/dist/serviceFeatures/setupObsidian/types.d.ts +2 -0
- package/dist/serviceFeatures/setupObsidian/types.js +0 -0
- package/dist/serviceFeatures/targetFilter.d.ts +24 -0
- package/dist/serviceFeatures/targetFilter.js +178 -0
- package/dist/serviceModules/FileAccessBase.d.ts +93 -0
- package/dist/serviceModules/FileAccessBase.js +219 -0
- package/dist/serviceModules/Rebuilder.d.ts +92 -0
- package/dist/serviceModules/Rebuilder.js +449 -0
- package/dist/serviceModules/ServiceDatabaseFileAccessBase.d.ts +40 -0
- package/dist/serviceModules/ServiceDatabaseFileAccessBase.js +306 -0
- package/dist/serviceModules/ServiceFileAccessBase.d.ts +64 -0
- package/dist/serviceModules/ServiceFileAccessBase.js +312 -0
- package/dist/serviceModules/ServiceFileHandlerBase.d.ts +52 -0
- package/dist/serviceModules/ServiceFileHandlerBase.js +493 -0
- package/dist/serviceModules/ServiceModuleBase.d.ts +10 -0
- package/dist/serviceModules/ServiceModuleBase.js +13 -0
- package/dist/serviceModules/adapters/IConversionAdapter.d.ts +15 -0
- package/dist/serviceModules/adapters/IConversionAdapter.js +0 -0
- package/dist/serviceModules/adapters/IFileSystemAdapter.d.ts +47 -0
- package/dist/serviceModules/adapters/IFileSystemAdapter.js +0 -0
- package/dist/serviceModules/adapters/IPathAdapter.d.ts +15 -0
- package/dist/serviceModules/adapters/IPathAdapter.js +0 -0
- package/dist/serviceModules/adapters/IStorageAdapter.d.ts +56 -0
- package/dist/serviceModules/adapters/IStorageAdapter.js +0 -0
- package/dist/serviceModules/adapters/ITypeGuardAdapter.d.ts +14 -0
- package/dist/serviceModules/adapters/ITypeGuardAdapter.js +0 -0
- package/dist/serviceModules/adapters/IVaultAdapter.d.ts +51 -0
- package/dist/serviceModules/adapters/IVaultAdapter.js +0 -0
- package/dist/serviceModules/adapters/index.d.ts +6 -0
- package/dist/serviceModules/adapters/index.js +0 -0
- package/dist/services/BrowserServices.d.ts +36 -0
- package/dist/services/BrowserServices.js +123 -0
- package/dist/services/HeadlessServices.d.ts +14 -0
- package/dist/services/HeadlessServices.js +144 -0
- package/dist/services/InjectableServices.d.ts +1 -0
- package/dist/services/InjectableServices.js +4 -0
- package/dist/services/ServiceHub.d.ts +82 -0
- package/dist/services/ServiceHub.js +66 -0
- package/dist/services/base/APIService.d.ts +93 -0
- package/dist/services/base/APIService.js +44 -0
- package/dist/services/base/AppLifecycleService.d.ts +132 -0
- package/dist/services/base/AppLifecycleService.js +123 -0
- package/dist/services/base/ConfigService.d.ts +7 -0
- package/dist/services/base/ConfigService.js +6 -0
- package/dist/services/base/ConflictService.d.ts +54 -0
- package/dist/services/base/ConflictService.js +22 -0
- package/dist/services/base/ControlService.d.ts +54 -0
- package/dist/services/base/ControlService.js +103 -0
- package/dist/services/base/DatabaseEventService.d.ts +38 -0
- package/dist/services/base/DatabaseEventService.js +38 -0
- package/dist/services/base/DatabaseService.d.ts +40 -0
- package/dist/services/base/DatabaseService.js +79 -0
- package/dist/services/base/FileProcessingService.d.ts +25 -0
- package/dist/services/base/FileProcessingService.js +28 -0
- package/dist/services/base/IService.d.ts +284 -0
- package/dist/services/base/IService.js +1 -0
- package/dist/services/base/KeyValueDBService.d.ts +42 -0
- package/dist/services/base/KeyValueDBService.js +133 -0
- package/dist/services/base/MessageTranslator.d.ts +6 -0
- package/dist/services/base/MessageTranslator.js +4 -0
- package/dist/services/base/PathService.d.ts +38 -0
- package/dist/services/base/PathService.js +66 -0
- package/dist/services/base/RemoteService.d.ts +61 -0
- package/dist/services/base/RemoteService.js +212 -0
- package/dist/services/base/ReplicationService.d.ts +92 -0
- package/dist/services/base/ReplicationService.js +261 -0
- package/dist/services/base/ReplicatorService.d.ts +66 -0
- package/dist/services/base/ReplicatorService.js +164 -0
- package/dist/services/base/ServiceBase.d.ts +33 -0
- package/dist/services/base/ServiceBase.js +27 -0
- package/dist/services/base/SettingService.d.ts +112 -0
- package/dist/services/base/SettingService.js +543 -0
- package/dist/services/base/TestService.d.ts +28 -0
- package/dist/services/base/TestService.js +19 -0
- package/dist/services/base/TweakValueService.d.ts +40 -0
- package/dist/services/base/TweakValueService.js +6 -0
- package/dist/services/base/UnresolvedErrorManager.d.ts +15 -0
- package/dist/services/base/UnresolvedErrorManager.js +44 -0
- package/dist/services/base/VaultService.d.ts +69 -0
- package/dist/services/base/VaultService.js +70 -0
- package/dist/services/implements/base/SvelteDialog.d.ts +79 -0
- package/dist/services/implements/base/SvelteDialog.js +134 -0
- package/dist/services/implements/base/UIService.d.ts +24 -0
- package/dist/services/implements/base/UIService.js +37 -0
- package/dist/services/implements/browser/BrowserAPIService.d.ts +54 -0
- package/dist/services/implements/browser/BrowserAPIService.js +298 -0
- package/dist/services/implements/browser/BrowserDatabaseService.d.ts +7 -0
- package/dist/services/implements/browser/BrowserDatabaseService.js +10 -0
- package/dist/services/implements/browser/ConfigServiceBrowserCompat.d.ts +16 -0
- package/dist/services/implements/browser/ConfigServiceBrowserCompat.js +23 -0
- package/dist/services/implements/headless/HeadlessAPIService.d.ts +52 -0
- package/dist/services/implements/headless/HeadlessAPIService.js +127 -0
- package/dist/services/implements/headless/HeadlessDatabaseService.d.ts +7 -0
- package/dist/services/implements/headless/HeadlessDatabaseService.js +10 -0
- package/dist/services/implements/injectable/InjectableAPIService.d.ts +7 -0
- package/dist/services/implements/injectable/InjectableAPIService.js +18 -0
- package/dist/services/implements/injectable/InjectableAppLifecycleService.d.ts +11 -0
- package/dist/services/implements/injectable/InjectableAppLifecycleService.js +14 -0
- package/dist/services/implements/injectable/InjectableConflictService.d.ts +11 -0
- package/dist/services/implements/injectable/InjectableConflictService.js +14 -0
- package/dist/services/implements/injectable/InjectableDatabaseEventService.d.ts +4 -0
- package/dist/services/implements/injectable/InjectableDatabaseEventService.js +7 -0
- package/dist/services/implements/injectable/InjectableFileProcessingService.d.ts +4 -0
- package/dist/services/implements/injectable/InjectableFileProcessingService.js +6 -0
- package/dist/services/implements/injectable/InjectablePathService.d.ts +12 -0
- package/dist/services/implements/injectable/InjectablePathService.js +36 -0
- package/dist/services/implements/injectable/InjectableRemoteService.d.ts +4 -0
- package/dist/services/implements/injectable/InjectableRemoteService.js +7 -0
- package/dist/services/implements/injectable/InjectableReplicationService.d.ts +4 -0
- package/dist/services/implements/injectable/InjectableReplicationService.js +6 -0
- package/dist/services/implements/injectable/InjectableReplicatorService.d.ts +4 -0
- package/dist/services/implements/injectable/InjectableReplicatorService.js +7 -0
- package/dist/services/implements/injectable/InjectableServiceHub.d.ts +72 -0
- package/dist/services/implements/injectable/InjectableServiceHub.js +125 -0
- package/dist/services/implements/injectable/InjectableServices.d.ts +36 -0
- package/dist/services/implements/injectable/InjectableServices.js +1 -0
- package/dist/services/implements/injectable/InjectableSettingService.d.ts +11 -0
- package/dist/services/implements/injectable/InjectableSettingService.js +33 -0
- package/dist/services/implements/injectable/InjectableTestService.d.ts +5 -0
- package/dist/services/implements/injectable/InjectableTestService.js +8 -0
- package/dist/services/implements/injectable/InjectableTweakValueService.d.ts +15 -0
- package/dist/services/implements/injectable/InjectableTweakValueService.js +12 -0
- package/dist/services/implements/injectable/InjectableVaultService.d.ts +9 -0
- package/dist/services/implements/injectable/InjectableVaultService.js +20 -0
- package/dist/services/lib/HandlerUtils.d.ts +374 -0
- package/dist/services/lib/HandlerUtils.js +412 -0
- package/dist/services/lib/logUtils.d.ts +13 -0
- package/dist/services/lib/logUtils.js +28 -0
- package/dist/services/lib/remoteActivity.d.ts +13 -0
- package/dist/services/lib/remoteActivity.js +11 -0
- package/dist/string_and_binary/chunks.d.ts +10 -0
- package/dist/string_and_binary/chunks.js +561 -0
- package/dist/string_and_binary/convert.d.ts +8 -0
- package/dist/string_and_binary/convert.js +46 -0
- package/dist/string_and_binary/hash.d.ts +2 -0
- package/dist/string_and_binary/hash.js +1 -0
- package/dist/string_and_binary/path.d.ts +35 -0
- package/dist/string_and_binary/path.js +240 -0
- package/dist/worker/bg.common.d.ts +2 -0
- package/dist/worker/bg.common.js +6 -0
- package/dist/worker/bg.worker.d.ts +1 -0
- package/dist/worker/bg.worker.encryption.d.ts +7 -0
- package/dist/worker/bg.worker.encryption.js +30 -0
- package/dist/worker/bg.worker.js +14 -0
- package/dist/worker/bg.worker.splitting.d.ts +6 -0
- package/dist/worker/bg.worker.splitting.js +36 -0
- package/dist/worker/bgWorker.d.ts +25 -0
- package/dist/worker/bgWorker.direct.d.ts +40 -0
- package/dist/worker/bgWorker.direct.js +65 -0
- package/dist/worker/bgWorker.encryption.d.ts +22 -0
- package/dist/worker/bgWorker.encryption.js +40 -0
- package/dist/worker/bgWorker.js +348 -0
- package/dist/worker/bgWorker.splitting.d.ts +27 -0
- package/dist/worker/bgWorker.splitting.js +123 -0
- package/dist/worker/universalTypes.d.ts +63 -0
- package/dist/worker/universalTypes.js +4 -0
- package/docs/development.md +51 -0
- package/docs/platform-storage.md +60 -0
- package/docs/releasing.md +69 -0
- package/package.json +693 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { EntryDoc } from "../../common/models/db.definition.js";
|
|
2
|
+
import type { DocumentID, EntryLeaf } from "../../common/models/db.type.js";
|
|
3
|
+
import type { ISettingService } from "../../services/base/IService.js";
|
|
4
|
+
import type { ChangeManager } from "../ChangeManager.js";
|
|
5
|
+
import type { EVENT_CHUNK_FETCHED, EVENT_MISSING_CHUNK_REMOTE, EVENT_MISSING_CHUNKS } from "../ChunkFetcher.js";
|
|
6
|
+
import type { ActivityCountSource } from "../ChunkDeliveryCoordinator.js";
|
|
7
|
+
export type ChunkManagerOptions = {
|
|
8
|
+
database: PouchDB.Database<EntryDoc>;
|
|
9
|
+
changeManager: ChangeManager<EntryDoc>;
|
|
10
|
+
settingService: ISettingService;
|
|
11
|
+
/** Finite replication which may still deliver a requested chunk. */
|
|
12
|
+
finiteReplicationActivity?: ActivityCountSource;
|
|
13
|
+
};
|
|
14
|
+
export type ChunkReadOptions = {
|
|
15
|
+
skipCache?: boolean;
|
|
16
|
+
/** Wait for an already-observable finite delivery lifecycle. */
|
|
17
|
+
waitForDelivery?: boolean;
|
|
18
|
+
/** @deprecated Use `waitForDelivery`. Positive values no longer represent an arrival duration. */
|
|
19
|
+
timeout?: number;
|
|
20
|
+
preventRemoteRequest?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type ChunkWriteOptions = {
|
|
23
|
+
skipCache?: boolean;
|
|
24
|
+
force?: boolean;
|
|
25
|
+
};
|
|
26
|
+
export type WriteResult = {
|
|
27
|
+
result: boolean;
|
|
28
|
+
processed: {
|
|
29
|
+
cached: number;
|
|
30
|
+
hotPack: number;
|
|
31
|
+
written: number;
|
|
32
|
+
duplicated: number;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export type ChunkManagerEventMap = {
|
|
36
|
+
[EVENT_MISSING_CHUNK_REMOTE]: DocumentID;
|
|
37
|
+
[EVENT_MISSING_CHUNKS]: DocumentID[];
|
|
38
|
+
[EVENT_CHUNK_FETCHED]: EntryLeaf;
|
|
39
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DocumentID, EntryDoc, EntryLeaf } from "../common/types.js";
|
|
2
|
+
import type { ChangeManager } from "./ChangeManager.js";
|
|
3
|
+
import type { ChunkManagerEventMap, ChunkManagerOptions, ChunkReadOptions, ChunkWriteOptions, WriteResult } from "./LayeredChunkManager/types.js";
|
|
4
|
+
import { ChunkDeliveryCoordinator } from "./ChunkDeliveryCoordinator.js";
|
|
5
|
+
/**
|
|
6
|
+
* ChunkManager class that manages chunk operations such as reading, writing, and caching.
|
|
7
|
+
* Now uses a middleware layer architecture for read and write operations.
|
|
8
|
+
*/
|
|
9
|
+
export declare class LayeredChunkManager {
|
|
10
|
+
protected options: ChunkManagerOptions;
|
|
11
|
+
protected eventTarget: EventTarget;
|
|
12
|
+
private cacheLayer;
|
|
13
|
+
private databaseReadLayer;
|
|
14
|
+
private readLayers;
|
|
15
|
+
private writeLayers;
|
|
16
|
+
private arrivalWaitLayer;
|
|
17
|
+
readonly deliveryCoordinator: ChunkDeliveryCoordinator;
|
|
18
|
+
get changeManager(): ChangeManager<EntryDoc>;
|
|
19
|
+
get database(): PouchDB.Database<EntryDoc>;
|
|
20
|
+
get cacheStatistics(): {
|
|
21
|
+
size: number;
|
|
22
|
+
allocCount: number;
|
|
23
|
+
derefCount: number;
|
|
24
|
+
};
|
|
25
|
+
addListener<K extends keyof ChunkManagerEventMap>(type: K, listener: (this: LayeredChunkManager, ev: ChunkManagerEventMap[K]) => void, options?: boolean | AddEventListenerOptions): () => void;
|
|
26
|
+
emitEvent<K extends keyof ChunkManagerEventMap>(type: K, detail: ChunkManagerEventMap[K]): void;
|
|
27
|
+
protected abort: AbortController;
|
|
28
|
+
protected offChangeHandler: ReturnType<typeof this.changeManager.addCallback>;
|
|
29
|
+
protected initialised: Promise<void>;
|
|
30
|
+
_initialise(): Promise<void>;
|
|
31
|
+
constructor(options: ChunkManagerOptions);
|
|
32
|
+
destroy(): void;
|
|
33
|
+
getCachedChunk(id: DocumentID): EntryLeaf | false;
|
|
34
|
+
getChunkIDFromCache(data: string): DocumentID | false;
|
|
35
|
+
cacheChunk(chunk: EntryLeaf): void;
|
|
36
|
+
clearCaches(): void;
|
|
37
|
+
read(ids: DocumentID[], options: ChunkReadOptions, preloadedChunks?: Record<DocumentID, EntryLeaf>): Promise<(EntryLeaf | false)[]>;
|
|
38
|
+
private executeReadPipeline;
|
|
39
|
+
write(chunks: EntryLeaf[], options: ChunkWriteOptions, origin: DocumentID): Promise<WriteResult>;
|
|
40
|
+
private executeWritePipeline;
|
|
41
|
+
private isChunkDoc;
|
|
42
|
+
private onChunkArrived;
|
|
43
|
+
protected onChunkArrivedHandler: (doc: EntryLeaf, deleted?: boolean) => void;
|
|
44
|
+
private onChange;
|
|
45
|
+
protected onChangeHandler: (change: PouchDB.Core.ChangesResponseChange<EntryDoc>) => void;
|
|
46
|
+
onMissingChunkRemote(id: DocumentID): void;
|
|
47
|
+
protected onMissingChunkRemoteHandler: (id: DocumentID) => void;
|
|
48
|
+
protected concurrentTransactions: number;
|
|
49
|
+
protected stabilised: Promise<void>;
|
|
50
|
+
transaction<T>(callback: () => Promise<T>): Promise<T>;
|
|
51
|
+
_stabilise(): Promise<void>;
|
|
52
|
+
__stabilise(): Promise<void>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { LOG_LEVEL_VERBOSE, Logger } from "../common/logger.js";
|
|
2
|
+
import { promiseWithResolvers } from "octagonal-wheels/promises";
|
|
3
|
+
import { EVENT_MISSING_CHUNK_REMOTE, EVENT_MISSING_CHUNKS, EVENT_CHUNK_FETCHED } from "./ChunkFetcher.js";
|
|
4
|
+
import { DatabaseReadLayer } from "./LayeredChunkManager/DatabaseReadLayer.js";
|
|
5
|
+
import { CacheLayer } from "./LayeredChunkManager/CacheLayer.js";
|
|
6
|
+
import { ArrivalWaitLayer } from "./LayeredChunkManager/ArrivalWaitLayer.js";
|
|
7
|
+
import { DatabaseWriteLayer } from "./LayeredChunkManager/DatabaseWriteLayer.js";
|
|
8
|
+
import { unique } from "octagonal-wheels/collection";
|
|
9
|
+
import { ChunkDeliveryCoordinator } from "./ChunkDeliveryCoordinator.js";
|
|
10
|
+
class LayeredChunkManager {
|
|
11
|
+
options;
|
|
12
|
+
eventTarget = new EventTarget();
|
|
13
|
+
// Middleware layers
|
|
14
|
+
cacheLayer;
|
|
15
|
+
databaseReadLayer;
|
|
16
|
+
readLayers;
|
|
17
|
+
writeLayers;
|
|
18
|
+
arrivalWaitLayer;
|
|
19
|
+
deliveryCoordinator;
|
|
20
|
+
get changeManager() {
|
|
21
|
+
return this.options.changeManager;
|
|
22
|
+
}
|
|
23
|
+
get database() {
|
|
24
|
+
return this.options.database;
|
|
25
|
+
}
|
|
26
|
+
// Expose cache statistics
|
|
27
|
+
get cacheStatistics() {
|
|
28
|
+
return this.cacheLayer.getStatistics();
|
|
29
|
+
}
|
|
30
|
+
addListener(type, listener, options) {
|
|
31
|
+
const callback = (ev) => {
|
|
32
|
+
listener.call(this, ev.detail);
|
|
33
|
+
};
|
|
34
|
+
this.eventTarget.addEventListener(type, callback, options);
|
|
35
|
+
return () => {
|
|
36
|
+
this.eventTarget.removeEventListener(type, callback, options);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
emitEvent(type, detail) {
|
|
40
|
+
const event = new CustomEvent(type, { detail });
|
|
41
|
+
this.eventTarget.dispatchEvent(event);
|
|
42
|
+
}
|
|
43
|
+
abort = new AbortController();
|
|
44
|
+
// Change listener cleanup
|
|
45
|
+
offChangeHandler;
|
|
46
|
+
// initialisation promise to ensure the manager is ready before processing transactions
|
|
47
|
+
initialised = Promise.resolve();
|
|
48
|
+
async _initialise() {
|
|
49
|
+
Logger("ChunkManager initialised", LOG_LEVEL_VERBOSE);
|
|
50
|
+
return await Promise.resolve();
|
|
51
|
+
}
|
|
52
|
+
constructor(options) {
|
|
53
|
+
this.options = options;
|
|
54
|
+
const settings = options.settingService.currentSettings();
|
|
55
|
+
const maxCacheSize = settings.hashCacheMaxCount * 10;
|
|
56
|
+
this.cacheLayer = new CacheLayer(maxCacheSize);
|
|
57
|
+
this.databaseReadLayer = new DatabaseReadLayer(this.database);
|
|
58
|
+
this.deliveryCoordinator = new ChunkDeliveryCoordinator(options.finiteReplicationActivity);
|
|
59
|
+
this.arrivalWaitLayer = new ArrivalWaitLayer(
|
|
60
|
+
(eventName, data) => {
|
|
61
|
+
if (eventName === "missingChunks") {
|
|
62
|
+
this.emitEvent(EVENT_MISSING_CHUNKS, data);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
this.deliveryCoordinator,
|
|
66
|
+
(ids) => this.databaseReadLayer.read(
|
|
67
|
+
[...ids],
|
|
68
|
+
{ preventRemoteRequest: true, skipCache: true, waitForDelivery: false },
|
|
69
|
+
(remaining) => Promise.resolve(remaining.map(() => false))
|
|
70
|
+
)
|
|
71
|
+
);
|
|
72
|
+
this.readLayers = [this.cacheLayer, this.databaseReadLayer, this.arrivalWaitLayer];
|
|
73
|
+
this.writeLayers = [
|
|
74
|
+
// new HotPackLayer(),
|
|
75
|
+
new DatabaseWriteLayer(this.database),
|
|
76
|
+
this.cacheLayer
|
|
77
|
+
];
|
|
78
|
+
this.offChangeHandler = this.changeManager.addCallback(this.onChangeHandler);
|
|
79
|
+
this.addListener(EVENT_CHUNK_FETCHED, this.onChunkArrivedHandler, { signal: this.abort.signal });
|
|
80
|
+
this.addListener(EVENT_MISSING_CHUNK_REMOTE, this.onMissingChunkRemoteHandler, { signal: this.abort.signal });
|
|
81
|
+
this.initialised = this._initialise();
|
|
82
|
+
}
|
|
83
|
+
destroy() {
|
|
84
|
+
const layers = unique([...this.readLayers, ...this.writeLayers]);
|
|
85
|
+
this.abort.abort();
|
|
86
|
+
this.offChangeHandler();
|
|
87
|
+
for (const layer of layers) {
|
|
88
|
+
if (layer.tearDown) {
|
|
89
|
+
layer.tearDown();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
this.deliveryCoordinator.dispose();
|
|
93
|
+
}
|
|
94
|
+
// Cache management methods (delegated to cacheLayer)
|
|
95
|
+
getCachedChunk(id) {
|
|
96
|
+
return this.cacheLayer.getCachedChunk(id);
|
|
97
|
+
}
|
|
98
|
+
getChunkIDFromCache(data) {
|
|
99
|
+
return this.cacheLayer.getChunkIDFromCache(data);
|
|
100
|
+
}
|
|
101
|
+
cacheChunk(chunk) {
|
|
102
|
+
this.cacheLayer.cacheChunk(chunk);
|
|
103
|
+
}
|
|
104
|
+
// reorderChunk(id: DocumentID): void {
|
|
105
|
+
// this.cacheLayer.reorderChunk(id);
|
|
106
|
+
// }
|
|
107
|
+
// deleteCachedChunk(id: DocumentID): void {
|
|
108
|
+
// this.cacheLayer.deleteCachedChunk(id);
|
|
109
|
+
// }
|
|
110
|
+
clearCaches() {
|
|
111
|
+
this.cacheLayer.clearCaches();
|
|
112
|
+
}
|
|
113
|
+
// Read pipeline execution
|
|
114
|
+
async read(ids, options, preloadedChunks) {
|
|
115
|
+
const order = [...ids];
|
|
116
|
+
const resultMap = new Map(ids.map((id) => [id, false]));
|
|
117
|
+
const readIds = /* @__PURE__ */ new Set([...resultMap.keys()]);
|
|
118
|
+
if (preloadedChunks) {
|
|
119
|
+
for (const [id, chunk] of Object.entries(preloadedChunks)) {
|
|
120
|
+
if (this.isChunkDoc(chunk)) {
|
|
121
|
+
this.cacheLayer.cacheChunk(chunk);
|
|
122
|
+
resultMap.set(id, chunk);
|
|
123
|
+
readIds.delete(id);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const results = await this.executeReadPipeline([...readIds], options);
|
|
128
|
+
for (let i = 0; i < results.length; i++) {
|
|
129
|
+
if (results[i]) {
|
|
130
|
+
const chunk = results[i];
|
|
131
|
+
resultMap.set(chunk._id, chunk);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return order.map((id) => resultMap.get(id) || false);
|
|
135
|
+
}
|
|
136
|
+
executeReadPipeline(ids, options) {
|
|
137
|
+
let layerIndex = 0;
|
|
138
|
+
const layers = this.readLayers;
|
|
139
|
+
const executeNextLayer = (remaining) => {
|
|
140
|
+
if (layerIndex >= layers.length) {
|
|
141
|
+
return Promise.resolve(remaining.map(() => false));
|
|
142
|
+
}
|
|
143
|
+
const layer = layers[layerIndex];
|
|
144
|
+
layerIndex++;
|
|
145
|
+
return layer.read(remaining, options, executeNextLayer);
|
|
146
|
+
};
|
|
147
|
+
return executeNextLayer(ids);
|
|
148
|
+
}
|
|
149
|
+
// Write pipeline execution
|
|
150
|
+
async write(chunks, options, origin) {
|
|
151
|
+
const result = await this.executeWritePipeline(chunks, options, origin);
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
executeWritePipeline(chunks, options, origin) {
|
|
155
|
+
let layerIndex = 0;
|
|
156
|
+
const layers = this.writeLayers;
|
|
157
|
+
const executeNextLayer = (remaining) => {
|
|
158
|
+
if (layerIndex >= layers.length) {
|
|
159
|
+
return Promise.resolve({
|
|
160
|
+
result: true,
|
|
161
|
+
processed: {
|
|
162
|
+
cached: 0,
|
|
163
|
+
hotPack: 0,
|
|
164
|
+
written: 0,
|
|
165
|
+
duplicated: 0
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
const layer = layers[layerIndex];
|
|
170
|
+
layerIndex++;
|
|
171
|
+
return layer.write(remaining, options, origin, executeNextLayer);
|
|
172
|
+
};
|
|
173
|
+
return executeNextLayer(chunks);
|
|
174
|
+
}
|
|
175
|
+
// Helper methods
|
|
176
|
+
isChunkDoc(doc) {
|
|
177
|
+
if (typeof doc !== "object" || doc === null) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
if ("_id" in doc && "type" in doc) {
|
|
181
|
+
return doc && typeof doc._id === "string" && doc.type === "leaf";
|
|
182
|
+
}
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
// Event handlers
|
|
186
|
+
onChunkArrived(doc, deleted = false) {
|
|
187
|
+
this.arrivalWaitLayer.onChunkArrived(doc, deleted);
|
|
188
|
+
}
|
|
189
|
+
onChunkArrivedHandler = this.onChunkArrived.bind(this);
|
|
190
|
+
onChange(change) {
|
|
191
|
+
const doc = change.doc;
|
|
192
|
+
if (!doc || !doc._id) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (doc.type !== "leaf") {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
this.onChunkArrived(doc, change.deleted);
|
|
199
|
+
}
|
|
200
|
+
onChangeHandler = this.onChange.bind(this);
|
|
201
|
+
onMissingChunkRemote(id) {
|
|
202
|
+
this.arrivalWaitLayer.onMissingChunk(id);
|
|
203
|
+
}
|
|
204
|
+
onMissingChunkRemoteHandler = this.onMissingChunkRemote.bind(this);
|
|
205
|
+
// Transaction management
|
|
206
|
+
concurrentTransactions = 0;
|
|
207
|
+
stabilised = Promise.resolve();
|
|
208
|
+
async transaction(callback) {
|
|
209
|
+
await this.initialised;
|
|
210
|
+
await this.stabilised;
|
|
211
|
+
this.concurrentTransactions++;
|
|
212
|
+
try {
|
|
213
|
+
const result = await callback();
|
|
214
|
+
return result;
|
|
215
|
+
} finally {
|
|
216
|
+
this.concurrentTransactions--;
|
|
217
|
+
if (this.concurrentTransactions === 0) {
|
|
218
|
+
Logger(`All transactions completed. Performing stabilisation.`, LOG_LEVEL_VERBOSE);
|
|
219
|
+
await this._stabilise();
|
|
220
|
+
} else {
|
|
221
|
+
Logger(`Transaction completed. Remaining: ${this.concurrentTransactions}`, LOG_LEVEL_VERBOSE);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
async _stabilise() {
|
|
226
|
+
const pr = promiseWithResolvers();
|
|
227
|
+
this.stabilised = pr.promise;
|
|
228
|
+
try {
|
|
229
|
+
await this.__stabilise();
|
|
230
|
+
} finally {
|
|
231
|
+
pr.resolve();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
__stabilise() {
|
|
235
|
+
return Promise.resolve();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
export {
|
|
239
|
+
LayeredChunkManager
|
|
240
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type EntryDoc } from "../common/types.js";
|
|
2
|
+
import { ContentSplitter } from "../ContentSplitter/ContentSplitters.js";
|
|
3
|
+
import { ChangeManager } from "./ChangeManager.js";
|
|
4
|
+
import { ChunkFetcher } from "./ChunkFetcher.js";
|
|
5
|
+
import { ChunkManager } from "./ChunkManager.js";
|
|
6
|
+
import { ConflictManager } from "./ConflictManager.js";
|
|
7
|
+
import { EntryManager } from "./EntryManager/EntryManager.js";
|
|
8
|
+
import { HashManager } from "./HashManager/HashManager.js";
|
|
9
|
+
import type { IAPIService, IDatabaseService, IPathService, IReplicatorService, ISettingService } from "../services/base/IService.js";
|
|
10
|
+
import { type LogFunction } from "../services/lib/logUtils.js";
|
|
11
|
+
export interface LiveSyncManagersOptions<TSettingService extends ISettingService = ISettingService> {
|
|
12
|
+
database: PouchDB.Database<EntryDoc>;
|
|
13
|
+
databaseService: IDatabaseService;
|
|
14
|
+
settingService: TSettingService;
|
|
15
|
+
pathService: IPathService;
|
|
16
|
+
replicatorService: IReplicatorService;
|
|
17
|
+
APIService: IAPIService;
|
|
18
|
+
}
|
|
19
|
+
export declare class LiveSyncManagers {
|
|
20
|
+
protected _pathService: IPathService;
|
|
21
|
+
protected _replicatorService: IReplicatorService;
|
|
22
|
+
protected _settingService: ISettingService;
|
|
23
|
+
protected _APIService: IAPIService;
|
|
24
|
+
hashManager: HashManager;
|
|
25
|
+
chunkFetcher: ChunkFetcher;
|
|
26
|
+
changeManager: ChangeManager<EntryDoc>;
|
|
27
|
+
chunkManager: ChunkManager;
|
|
28
|
+
splitter: ContentSplitter;
|
|
29
|
+
entryManager: EntryManager;
|
|
30
|
+
conflictManager: ConflictManager;
|
|
31
|
+
protected options: LiveSyncManagersOptions;
|
|
32
|
+
protected log: LogFunction;
|
|
33
|
+
constructor(options: LiveSyncManagersOptions);
|
|
34
|
+
teardownManagers(): Promise<void>;
|
|
35
|
+
protected getManagerMembers(): {
|
|
36
|
+
changeManager: ChangeManager<EntryDoc>;
|
|
37
|
+
hashManager: HashManager;
|
|
38
|
+
splitter: ContentSplitter;
|
|
39
|
+
chunkManager: ChunkManager;
|
|
40
|
+
chunkFetcher: ChunkFetcher;
|
|
41
|
+
entryManager: EntryManager;
|
|
42
|
+
conflictManager: ConflictManager;
|
|
43
|
+
};
|
|
44
|
+
initialise(): Promise<void>;
|
|
45
|
+
reinitialise(): Promise<void>;
|
|
46
|
+
clearCaches(): void;
|
|
47
|
+
prepareHashFunction(): Promise<void>;
|
|
48
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { LOG_LEVEL_VERBOSE } from "../common/types.js";
|
|
2
|
+
import { ContentSplitter } from "../ContentSplitter/ContentSplitters.js";
|
|
3
|
+
import { ChangeManager } from "./ChangeManager.js";
|
|
4
|
+
import { ChunkFetcher } from "./ChunkFetcher.js";
|
|
5
|
+
import { ChunkManager } from "./ChunkManager.js";
|
|
6
|
+
import { ConflictManager } from "./ConflictManager.js";
|
|
7
|
+
import { EntryManager } from "./EntryManager/EntryManager.js";
|
|
8
|
+
import { HashManager } from "./HashManager/HashManager.js";
|
|
9
|
+
import { createInstanceLogFunction } from "../services/lib/logUtils.js";
|
|
10
|
+
class LiveSyncManagers {
|
|
11
|
+
_pathService;
|
|
12
|
+
_replicatorService;
|
|
13
|
+
_settingService;
|
|
14
|
+
_APIService;
|
|
15
|
+
hashManager;
|
|
16
|
+
chunkFetcher;
|
|
17
|
+
changeManager;
|
|
18
|
+
chunkManager;
|
|
19
|
+
splitter;
|
|
20
|
+
entryManager;
|
|
21
|
+
conflictManager;
|
|
22
|
+
options;
|
|
23
|
+
log;
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.options = options;
|
|
26
|
+
this._APIService = options.APIService;
|
|
27
|
+
this._pathService = options.pathService;
|
|
28
|
+
this._replicatorService = options.replicatorService;
|
|
29
|
+
this._settingService = options.settingService;
|
|
30
|
+
this.log = createInstanceLogFunction("LiveSyncManagers", this._APIService);
|
|
31
|
+
const { changeManager, hashManager, splitter, chunkManager, chunkFetcher, entryManager, conflictManager } = this.getManagerMembers();
|
|
32
|
+
this.changeManager = changeManager;
|
|
33
|
+
this.hashManager = hashManager;
|
|
34
|
+
this.splitter = splitter;
|
|
35
|
+
this.chunkManager = chunkManager;
|
|
36
|
+
this.chunkFetcher = chunkFetcher;
|
|
37
|
+
this.entryManager = entryManager;
|
|
38
|
+
this.conflictManager = conflictManager;
|
|
39
|
+
}
|
|
40
|
+
async teardownManagers() {
|
|
41
|
+
this.log("Teardown LiveSync Managers...", LOG_LEVEL_VERBOSE);
|
|
42
|
+
if (this.changeManager) {
|
|
43
|
+
this.changeManager.teardown();
|
|
44
|
+
this.changeManager = void 0;
|
|
45
|
+
}
|
|
46
|
+
if (this.chunkFetcher) {
|
|
47
|
+
this.chunkFetcher.destroy();
|
|
48
|
+
this.chunkFetcher = void 0;
|
|
49
|
+
}
|
|
50
|
+
if (this.chunkManager) {
|
|
51
|
+
this.chunkManager.destroy();
|
|
52
|
+
this.chunkManager = void 0;
|
|
53
|
+
}
|
|
54
|
+
this.log("Teardown LiveSync Managers... Done");
|
|
55
|
+
return await Promise.resolve();
|
|
56
|
+
}
|
|
57
|
+
getManagerMembers() {
|
|
58
|
+
this.log("Creating LiveSync Managers...");
|
|
59
|
+
const database = this.options.databaseService.localDatabase.localDatabase;
|
|
60
|
+
const changeManager = new ChangeManager({
|
|
61
|
+
database
|
|
62
|
+
});
|
|
63
|
+
const hashManager = new HashManager({
|
|
64
|
+
settingService: this.options.settingService
|
|
65
|
+
});
|
|
66
|
+
const splitter = new ContentSplitter({
|
|
67
|
+
settingService: this.options.settingService
|
|
68
|
+
});
|
|
69
|
+
const chunkManager = new ChunkManager({
|
|
70
|
+
changeManager,
|
|
71
|
+
database,
|
|
72
|
+
settingService: this.options.settingService,
|
|
73
|
+
finiteReplicationActivity: this.options.replicatorService.finiteReplicationActivityCount
|
|
74
|
+
});
|
|
75
|
+
const chunkFetcher = new ChunkFetcher({
|
|
76
|
+
chunkManager,
|
|
77
|
+
replicatorService: this.options.replicatorService,
|
|
78
|
+
settingService: this.options.settingService
|
|
79
|
+
});
|
|
80
|
+
const entryManager = new EntryManager({
|
|
81
|
+
database,
|
|
82
|
+
hashManager,
|
|
83
|
+
chunkManager,
|
|
84
|
+
splitter,
|
|
85
|
+
pathService: this._pathService,
|
|
86
|
+
settingService: this.options.settingService
|
|
87
|
+
});
|
|
88
|
+
const conflictManager = new ConflictManager({
|
|
89
|
+
entryManager,
|
|
90
|
+
database,
|
|
91
|
+
pathService: this._pathService
|
|
92
|
+
});
|
|
93
|
+
this.log("LiveSync Managers have been created");
|
|
94
|
+
return {
|
|
95
|
+
changeManager,
|
|
96
|
+
hashManager,
|
|
97
|
+
splitter,
|
|
98
|
+
chunkManager,
|
|
99
|
+
chunkFetcher,
|
|
100
|
+
entryManager,
|
|
101
|
+
conflictManager
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async initialise() {
|
|
105
|
+
this.log("Initialising LiveSync Managers...", LOG_LEVEL_VERBOSE);
|
|
106
|
+
await this.splitter.initialise({
|
|
107
|
+
settingService: this.options.settingService
|
|
108
|
+
});
|
|
109
|
+
await this.hashManager.initialise();
|
|
110
|
+
this.log("LiveSync Manager has been initialised");
|
|
111
|
+
}
|
|
112
|
+
async reinitialise() {
|
|
113
|
+
await this.teardownManagers();
|
|
114
|
+
const { changeManager, hashManager, splitter, chunkManager, chunkFetcher, entryManager, conflictManager } = this.getManagerMembers();
|
|
115
|
+
this.changeManager = changeManager;
|
|
116
|
+
this.hashManager = hashManager;
|
|
117
|
+
this.splitter = splitter;
|
|
118
|
+
this.chunkManager = chunkManager;
|
|
119
|
+
this.chunkFetcher = chunkFetcher;
|
|
120
|
+
this.entryManager = entryManager;
|
|
121
|
+
this.conflictManager = conflictManager;
|
|
122
|
+
await this.initialise();
|
|
123
|
+
}
|
|
124
|
+
clearCaches() {
|
|
125
|
+
this.chunkManager?.clearCaches();
|
|
126
|
+
}
|
|
127
|
+
async prepareHashFunction() {
|
|
128
|
+
this.hashManager = new HashManager({
|
|
129
|
+
settingService: this.options.settingService
|
|
130
|
+
});
|
|
131
|
+
await this.hashManager.initialise();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
export {
|
|
135
|
+
LiveSyncManagers
|
|
136
|
+
};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { type FileEventType, type FilePath, type UXFileInfoStub, type UXFolderInfo, type UXInternalFileInfoStub } from "../common/types.js";
|
|
2
|
+
import { type FileEventItem } from "../common/types.js";
|
|
3
|
+
import type { IStorageAccessManager } from "../interfaces/StorageAccess.js";
|
|
4
|
+
import { type PromiseWithResolvers } from "octagonal-wheels/promises";
|
|
5
|
+
import { StorageEventManager, type FileEvent } from "../interfaces/StorageEventManager.js";
|
|
6
|
+
import type { IAPIService, IVaultService } from "../services/base/IService.js";
|
|
7
|
+
import type { SettingService } from "../services/base/SettingService.js";
|
|
8
|
+
import type { FileProcessingService } from "../services/base/FileProcessingService.js";
|
|
9
|
+
import { createInstanceLogFunction } from "../services/lib/logUtils.js";
|
|
10
|
+
import type { IStorageEventManagerAdapter } from "./adapters/index.js";
|
|
11
|
+
import { type CompatTimeoutHandle } from "../common/coreEnvFunctions.js";
|
|
12
|
+
type WaitInfo = {
|
|
13
|
+
since: number;
|
|
14
|
+
type: FileEventType;
|
|
15
|
+
canProceed: PromiseWithResolvers<boolean>;
|
|
16
|
+
timerHandler: CompatTimeoutHandle;
|
|
17
|
+
event: FileEventItem;
|
|
18
|
+
};
|
|
19
|
+
declare const TYPE_SENTINEL_FLUSH = "SENTINEL_FLUSH";
|
|
20
|
+
type FileEventItemSentinelFlush = {
|
|
21
|
+
type: typeof TYPE_SENTINEL_FLUSH;
|
|
22
|
+
};
|
|
23
|
+
export type FileEventItemSentinel = FileEventItemSentinelFlush;
|
|
24
|
+
export interface StorageEventManagerBaseDependencies {
|
|
25
|
+
setting: SettingService;
|
|
26
|
+
vaultService: IVaultService;
|
|
27
|
+
fileProcessing: FileProcessingService;
|
|
28
|
+
storageAccessManager: IStorageAccessManager;
|
|
29
|
+
APIService: IAPIService;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Type helper to extract the file type from a storage event manager adapter
|
|
33
|
+
*/
|
|
34
|
+
export type ExtractFile<T> = T extends IStorageEventManagerAdapter<infer F, any> ? F : never;
|
|
35
|
+
/**
|
|
36
|
+
* Type helper to extract the folder type from a storage event manager adapter
|
|
37
|
+
*/
|
|
38
|
+
export type ExtractFolder<T> = T extends IStorageEventManagerAdapter<any, infer D> ? D : never;
|
|
39
|
+
/**
|
|
40
|
+
* Base class for storage event management
|
|
41
|
+
* Uses adapter pattern for platform-specific implementations
|
|
42
|
+
*
|
|
43
|
+
* @template TAdapter - The storage event manager adapter type
|
|
44
|
+
*/
|
|
45
|
+
export declare abstract class StorageEventManagerBase<TAdapter extends IStorageEventManagerAdapter<any, any>> extends StorageEventManager {
|
|
46
|
+
_log: ReturnType<typeof createInstanceLogFunction>;
|
|
47
|
+
protected setting: SettingService;
|
|
48
|
+
protected vaultService: IVaultService;
|
|
49
|
+
protected fileProcessing: FileProcessingService;
|
|
50
|
+
protected storageAccess: IStorageAccessManager;
|
|
51
|
+
protected adapter: TAdapter;
|
|
52
|
+
protected get shouldBatchSave(): boolean;
|
|
53
|
+
protected get batchSaveMinimumDelay(): number;
|
|
54
|
+
protected get batchSaveMaximumDelay(): number;
|
|
55
|
+
get settings(): import("../common/types.js").ObsidianLiveSyncSettings;
|
|
56
|
+
constructor(adapter: TAdapter, dependencies: StorageEventManagerBaseDependencies);
|
|
57
|
+
_saveSnapshot(snapshot: (FileEventItem | FileEventItemSentinel)[]): Promise<void>;
|
|
58
|
+
_loadSnapshot(): Promise<(FileEventItem | FileEventItemSentinel)[] | null>;
|
|
59
|
+
isFolder(file: UXFileInfoStub | UXInternalFileInfoStub | UXFolderInfo | ExtractFolder<TAdapter> | ExtractFile<TAdapter>): boolean;
|
|
60
|
+
isFile(file: UXFileInfoStub | UXInternalFileInfoStub | UXFolderInfo | ExtractFolder<TAdapter> | ExtractFile<TAdapter>): boolean;
|
|
61
|
+
protected updateStatus(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Snapshot restoration promise.
|
|
64
|
+
* Snapshot will be restored before starting to watch vault changes.
|
|
65
|
+
* In designed time, this has been called from Initialisation process, which has been implemented on `ModuleInitializerFile.ts`.
|
|
66
|
+
*/
|
|
67
|
+
snapShotRestored: Promise<void> | null;
|
|
68
|
+
/**
|
|
69
|
+
* Restore the previous snapshot if exists.
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
restoreState(): Promise<void>;
|
|
73
|
+
appendQueue(params: FileEvent[], ctx?: unknown): Promise<void>;
|
|
74
|
+
protected bufferedQueuedItems: (FileEventItem | FileEventItemSentinel)[];
|
|
75
|
+
enqueue(newItem: FileEventItem): void;
|
|
76
|
+
/**
|
|
77
|
+
* Immediately take snapshot.
|
|
78
|
+
*/
|
|
79
|
+
private _triggerTakeSnapshot;
|
|
80
|
+
/**
|
|
81
|
+
* Trigger taking snapshot after throttled period.
|
|
82
|
+
*/
|
|
83
|
+
triggerTakeSnapshot: import("octagonal-wheels/function").ThrottledFunction<() => void>;
|
|
84
|
+
protected concurrentProcessing: import("octagonal-wheels/concurrency/semaphore_v2").SemaphoreObject;
|
|
85
|
+
protected _waitingMap: Map<string, WaitInfo>;
|
|
86
|
+
private _waitForIdle;
|
|
87
|
+
/**
|
|
88
|
+
* Wait until all queued events are processed.
|
|
89
|
+
* Subsequent new events will not be waited, but new events will not be added.
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
waitForIdle(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Proceed waiting for the given key immediately.
|
|
95
|
+
*/
|
|
96
|
+
private _proceedWaiting;
|
|
97
|
+
/**
|
|
98
|
+
* Cancel waiting for the given key.
|
|
99
|
+
*/
|
|
100
|
+
private _cancelWaiting;
|
|
101
|
+
/**
|
|
102
|
+
* Add waiting for the given key.
|
|
103
|
+
* @param key
|
|
104
|
+
* @param event
|
|
105
|
+
* @param waitedSince Optional waited since timestamp to calculate the remaining delay.
|
|
106
|
+
*/
|
|
107
|
+
private _addWaiting;
|
|
108
|
+
/**
|
|
109
|
+
* Process the given file event.
|
|
110
|
+
*/
|
|
111
|
+
processFileEvent(fei: FileEventItem): Promise<void>;
|
|
112
|
+
_takeSnapshot(): Promise<void>;
|
|
113
|
+
_restoreFromSnapshot(): Promise<void>;
|
|
114
|
+
protected runQueuedEvents(): Promise<void>;
|
|
115
|
+
protected processingCount: number;
|
|
116
|
+
protected requestProcessQueue(fei: FileEventItem): Promise<void>;
|
|
117
|
+
isWaiting(filename: FilePath): boolean;
|
|
118
|
+
protected handleFileEvent(queue: FileEventItem): Promise<void>;
|
|
119
|
+
protected cancelRelativeEvent(item: FileEventItem): void;
|
|
120
|
+
/**
|
|
121
|
+
* Begin watching for storage events
|
|
122
|
+
*/
|
|
123
|
+
beginWatch(): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Platform-agnostic event handlers
|
|
126
|
+
*/
|
|
127
|
+
protected watchEditorChange<TEditor = unknown, TInfo = unknown>(editor: TEditor, info: TInfo): void;
|
|
128
|
+
protected watchVaultCreate<TFile = unknown, TCtx = unknown>(file: TFile, ctx?: TCtx): void;
|
|
129
|
+
protected watchVaultChange<TFile = unknown, TCtx = unknown>(file: TFile, ctx?: TCtx): void;
|
|
130
|
+
protected watchVaultDelete<TFile = unknown, TCtx = unknown>(file: TFile, ctx?: TCtx): void;
|
|
131
|
+
protected watchVaultRename<TFile = unknown, TCtx = unknown>(file: TFile, oldPath: string, ctx?: TCtx): void;
|
|
132
|
+
protected watchVaultRawEvents(path: FilePath): void;
|
|
133
|
+
protected _watchVaultRawEvents(path: FilePath): Promise<void>;
|
|
134
|
+
}
|
|
135
|
+
export {};
|