@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,96 @@
|
|
|
1
|
+
import PouchDB from "pouchdb-core";
|
|
2
|
+
import IDBPouch from "pouchdb-adapter-idb";
|
|
3
|
+
import INDEXEDDBPouch from "pouchdb-adapter-indexeddb";
|
|
4
|
+
import HttpPouch from "pouchdb-adapter-http";
|
|
5
|
+
import mapreduce from "pouchdb-mapreduce";
|
|
6
|
+
import replication from "pouchdb-replication";
|
|
7
|
+
import find from "pouchdb-find";
|
|
8
|
+
import transform from "transform-pouch";
|
|
9
|
+
import { findPathToLeaf } from "pouchdb-merge";
|
|
10
|
+
import { adapterFun } from "pouchdb-utils";
|
|
11
|
+
import { createError, MISSING_DOC, UNKNOWN_ERROR } from "pouchdb-errors";
|
|
12
|
+
import { mapAllTasksWithConcurrencyLimit, unwrapTaskResult } from "octagonal-wheels/concurrency/task";
|
|
13
|
+
PouchDB.plugin(IDBPouch).plugin(INDEXEDDBPouch).plugin(HttpPouch).plugin(mapreduce).plugin(replication).plugin(find).plugin(transform);
|
|
14
|
+
function appendPurgeSeqs(db, docs) {
|
|
15
|
+
return db.get("_local/purges").then(function(doc) {
|
|
16
|
+
for (const [docId, rev$$1] of docs) {
|
|
17
|
+
const purgeSeq = doc.purgeSeq + 1;
|
|
18
|
+
doc.purges.push({
|
|
19
|
+
docId,
|
|
20
|
+
rev: rev$$1,
|
|
21
|
+
purgeSeq
|
|
22
|
+
});
|
|
23
|
+
if (doc.purges.length > db.purged_infos_limit) {
|
|
24
|
+
doc.purges.splice(0, doc.purges.length - db.purged_infos_limit);
|
|
25
|
+
}
|
|
26
|
+
doc.purgeSeq = purgeSeq;
|
|
27
|
+
}
|
|
28
|
+
return doc;
|
|
29
|
+
}).catch(function(err) {
|
|
30
|
+
if (err.status !== 404) {
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
_id: "_local/purges",
|
|
35
|
+
purges: docs.map(([docId, rev$$1], idx) => ({
|
|
36
|
+
docId,
|
|
37
|
+
rev: rev$$1,
|
|
38
|
+
purgeSeq: idx
|
|
39
|
+
})),
|
|
40
|
+
purgeSeq: docs.length
|
|
41
|
+
};
|
|
42
|
+
}).then(function(doc) {
|
|
43
|
+
return db.put(doc);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
PouchDB.prototype.purgeMulti = adapterFun(
|
|
47
|
+
"_purgeMulti",
|
|
48
|
+
function(docs, callback) {
|
|
49
|
+
if (typeof this._purge === "undefined") {
|
|
50
|
+
return callback(
|
|
51
|
+
//@ts-ignore: this ts-ignore might be hiding a `this` bug where we don't have "this" conext.
|
|
52
|
+
createError(UNKNOWN_ERROR, "Purge is not implemented in the " + this.adapter + " adapter.")
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
const self = this;
|
|
56
|
+
const tasks = docs.map(
|
|
57
|
+
(param) => () => new Promise((res, rej) => {
|
|
58
|
+
const [docId, rev$$1] = param;
|
|
59
|
+
self._getRevisionTree(docId, (error, revs) => {
|
|
60
|
+
if (error) {
|
|
61
|
+
return res([param, error]);
|
|
62
|
+
}
|
|
63
|
+
if (!revs) {
|
|
64
|
+
return res([param, createError(MISSING_DOC)]);
|
|
65
|
+
}
|
|
66
|
+
let path;
|
|
67
|
+
try {
|
|
68
|
+
path = findPathToLeaf(revs, rev$$1);
|
|
69
|
+
} catch (error2) {
|
|
70
|
+
return res([param, error2.message || error2]);
|
|
71
|
+
}
|
|
72
|
+
self._purge(docId, path, (error2, result) => {
|
|
73
|
+
if (error2) {
|
|
74
|
+
return res([param, error2]);
|
|
75
|
+
} else {
|
|
76
|
+
return res([param, result]);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
})
|
|
81
|
+
);
|
|
82
|
+
(async () => {
|
|
83
|
+
const ret = await mapAllTasksWithConcurrencyLimit(1, tasks);
|
|
84
|
+
const retAll = ret.map((e) => unwrapTaskResult(e));
|
|
85
|
+
await appendPurgeSeqs(
|
|
86
|
+
self,
|
|
87
|
+
retAll.filter((e) => "ok" in e[1]).map((e) => e[0])
|
|
88
|
+
);
|
|
89
|
+
const result = Object.fromEntries(retAll.map((e) => [e[0][0], e[1]]));
|
|
90
|
+
return result;
|
|
91
|
+
})().then((result) => callback(void 0, result)).catch((error) => callback(error));
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
export {
|
|
95
|
+
PouchDB
|
|
96
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import PouchDB from "pouchdb-core";
|
|
2
|
+
import HttpPouch from "pouchdb-adapter-http";
|
|
3
|
+
import mapreduce from "pouchdb-mapreduce";
|
|
4
|
+
import replication from "pouchdb-replication";
|
|
5
|
+
import find from "pouchdb-find";
|
|
6
|
+
import transform from "transform-pouch";
|
|
7
|
+
import { findPathToLeaf } from "pouchdb-merge";
|
|
8
|
+
import { adapterFun } from "pouchdb-utils";
|
|
9
|
+
import { createError, MISSING_DOC, UNKNOWN_ERROR } from "pouchdb-errors";
|
|
10
|
+
import { mapAllTasksWithConcurrencyLimit, unwrapTaskResult } from "octagonal-wheels/concurrency/task";
|
|
11
|
+
PouchDB.plugin(HttpPouch).plugin(mapreduce).plugin(replication).plugin(find).plugin(transform);
|
|
12
|
+
function appendPurgeSeqs(db, docs) {
|
|
13
|
+
return db.get("_local/purges").then(function(doc) {
|
|
14
|
+
for (const [docId, rev$$1] of docs) {
|
|
15
|
+
const purgeSeq = doc.purgeSeq + 1;
|
|
16
|
+
doc.purges.push({
|
|
17
|
+
docId,
|
|
18
|
+
rev: rev$$1,
|
|
19
|
+
purgeSeq
|
|
20
|
+
});
|
|
21
|
+
if (doc.purges.length > db.purged_infos_limit) {
|
|
22
|
+
doc.purges.splice(0, doc.purges.length - db.purged_infos_limit);
|
|
23
|
+
}
|
|
24
|
+
doc.purgeSeq = purgeSeq;
|
|
25
|
+
}
|
|
26
|
+
return doc;
|
|
27
|
+
}).catch(function(err) {
|
|
28
|
+
if (err.status !== 404) {
|
|
29
|
+
throw err;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
_id: "_local/purges",
|
|
33
|
+
purges: docs.map(([docId, rev$$1], idx) => ({
|
|
34
|
+
docId,
|
|
35
|
+
rev: rev$$1,
|
|
36
|
+
purgeSeq: idx
|
|
37
|
+
})),
|
|
38
|
+
purgeSeq: docs.length
|
|
39
|
+
};
|
|
40
|
+
}).then(function(doc) {
|
|
41
|
+
return db.put(doc);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
PouchDB.prototype.purgeMulti = adapterFun(
|
|
45
|
+
"_purgeMulti",
|
|
46
|
+
function(docs, callback) {
|
|
47
|
+
if (typeof this._purge === "undefined") {
|
|
48
|
+
return callback(
|
|
49
|
+
//@ts-ignore: this ts-ignore might be hiding a `this` bug where we don't have "this" conext.
|
|
50
|
+
createError(UNKNOWN_ERROR, "Purge is not implemented in the " + this.adapter + " adapter.")
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
const self = this;
|
|
54
|
+
const tasks = docs.map(
|
|
55
|
+
(param) => () => new Promise((res, rej) => {
|
|
56
|
+
const [docId, rev$$1] = param;
|
|
57
|
+
self._getRevisionTree(docId, (error, revs) => {
|
|
58
|
+
if (error) {
|
|
59
|
+
return res([param, error]);
|
|
60
|
+
}
|
|
61
|
+
if (!revs) {
|
|
62
|
+
return res([param, createError(MISSING_DOC)]);
|
|
63
|
+
}
|
|
64
|
+
let path;
|
|
65
|
+
try {
|
|
66
|
+
path = findPathToLeaf(revs, rev$$1);
|
|
67
|
+
} catch (error2) {
|
|
68
|
+
return res([param, error2.message || error2]);
|
|
69
|
+
}
|
|
70
|
+
self._purge(docId, path, (error2, result) => {
|
|
71
|
+
if (error2) {
|
|
72
|
+
return res([param, error2]);
|
|
73
|
+
} else {
|
|
74
|
+
return res([param, result]);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
})
|
|
79
|
+
);
|
|
80
|
+
(async () => {
|
|
81
|
+
const ret = await mapAllTasksWithConcurrencyLimit(1, tasks);
|
|
82
|
+
const retAll = ret.map((e) => unwrapTaskResult(e));
|
|
83
|
+
await appendPurgeSeqs(
|
|
84
|
+
self,
|
|
85
|
+
retAll.filter((e) => "ok" in e[1]).map((e) => e[0])
|
|
86
|
+
);
|
|
87
|
+
const result = Object.fromEntries(retAll.map((e) => [e[0][0], e[1]]));
|
|
88
|
+
return result;
|
|
89
|
+
})().then((result) => callback(void 0, result)).catch((error) => callback(error));
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
export {
|
|
93
|
+
PouchDB
|
|
94
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import PouchDB from "pouchdb-core";
|
|
2
|
+
import IDBPouch from "pouchdb-adapter-idb";
|
|
3
|
+
import HttpPouch from "pouchdb-adapter-http";
|
|
4
|
+
import mapreduce from "pouchdb-mapreduce";
|
|
5
|
+
import replication from "pouchdb-replication";
|
|
6
|
+
import find from "pouchdb-find";
|
|
7
|
+
import transform from "transform-pouch";
|
|
8
|
+
import adapterMemory from "pouchdb-adapter-memory";
|
|
9
|
+
PouchDB.plugin(IDBPouch).plugin(HttpPouch).plugin(mapreduce).plugin(replication).plugin(find).plugin(adapterMemory).plugin(transform);
|
|
10
|
+
export {
|
|
11
|
+
PouchDB
|
|
12
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const isValidRemoteCouchDBURI: (uri: string) => boolean;
|
|
2
|
+
export declare function isCloudantURI(uri: string): boolean;
|
|
3
|
+
export declare function isErrorOfMissingDoc(ex: unknown): boolean;
|
|
4
|
+
export declare const _requestToCouchDBFetch: (baseUri: string, username: string, password: string, path?: string, body?: unknown, method?: string) => Promise<Response>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { _fetch, compatGlobal } from "../common/coreEnvFunctions.js";
|
|
2
|
+
import { writeString } from "../string_and_binary/convert.js";
|
|
3
|
+
const isValidRemoteCouchDBURI = (uri) => {
|
|
4
|
+
if (uri.startsWith("https://")) return true;
|
|
5
|
+
if (uri.startsWith("http://")) return true;
|
|
6
|
+
return false;
|
|
7
|
+
};
|
|
8
|
+
function isCloudantURI(uri) {
|
|
9
|
+
if (uri.indexOf(".cloudantnosqldb.") !== -1 || uri.indexOf(".cloudant.com") !== -1) return true;
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
function isErrorOfMissingDoc(ex) {
|
|
13
|
+
return (ex && ex.status) == 404;
|
|
14
|
+
}
|
|
15
|
+
const _requestToCouchDBFetch = async (baseUri, username, password, path, body, method) => {
|
|
16
|
+
const utf8str = String.fromCharCode.apply(null, [...writeString(`${username}:${password}`)]);
|
|
17
|
+
const encoded = compatGlobal.btoa(utf8str);
|
|
18
|
+
const authHeader = "Basic " + encoded;
|
|
19
|
+
const transformedHeaders = {
|
|
20
|
+
authorization: authHeader,
|
|
21
|
+
"content-type": "application/json"
|
|
22
|
+
};
|
|
23
|
+
const uri = `${baseUri}/${path}`;
|
|
24
|
+
const requestParam = {
|
|
25
|
+
url: uri,
|
|
26
|
+
method: method || (body ? "PUT" : "GET"),
|
|
27
|
+
headers: new Headers(transformedHeaders),
|
|
28
|
+
contentType: "application/json",
|
|
29
|
+
body: JSON.stringify(body)
|
|
30
|
+
};
|
|
31
|
+
return await _fetch(uri, requestParam);
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
_requestToCouchDBFetch,
|
|
35
|
+
isCloudantURI,
|
|
36
|
+
isErrorOfMissingDoc,
|
|
37
|
+
isValidRemoteCouchDBURI
|
|
38
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type EntryDoc, type DatabaseConnectingStatus, type RemoteDBSettings, type EntryLeaf, type TweakValues, type NodeData } from "../common/types.js";
|
|
2
|
+
import type { RequiredServices } from "../interfaces/ServiceModule.js";
|
|
3
|
+
import type { TranslationParameters } from "../services/base/MessageTranslator.js";
|
|
4
|
+
export type ReplicationCallback = (e: PouchDB.Core.ExistingDocument<EntryDoc>[]) => Promise<boolean> | boolean;
|
|
5
|
+
export type ReplicationStat = {
|
|
6
|
+
sent: number;
|
|
7
|
+
arrived: number;
|
|
8
|
+
maxPullSeq: number;
|
|
9
|
+
maxPushSeq: number;
|
|
10
|
+
lastSyncPullSeq: number;
|
|
11
|
+
lastSyncPushSeq: number;
|
|
12
|
+
syncStatus: DatabaseConnectingStatus;
|
|
13
|
+
};
|
|
14
|
+
export interface LiveSyncReplicatorEnv {
|
|
15
|
+
services: RequiredServices<"API" | "appLifecycle" | "setting" | "vault" | "database" | "databaseEvents" | "keyValueDB" | "replication" | "config" | "UI" | "replicator" | "remote">;
|
|
16
|
+
}
|
|
17
|
+
export type RemoteDBStatus = {
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
estimatedSize?: number;
|
|
20
|
+
};
|
|
21
|
+
export declare abstract class LiveSyncAbstractReplicator {
|
|
22
|
+
syncStatus: DatabaseConnectingStatus;
|
|
23
|
+
docArrived: number;
|
|
24
|
+
docSent: number;
|
|
25
|
+
lastSyncPullSeq: number;
|
|
26
|
+
maxPullSeq: number;
|
|
27
|
+
lastSyncPushSeq: number;
|
|
28
|
+
maxPushSeq: number;
|
|
29
|
+
controller?: AbortController;
|
|
30
|
+
originalSetting: RemoteDBSettings;
|
|
31
|
+
nodeid: string;
|
|
32
|
+
remoteLocked: boolean;
|
|
33
|
+
remoteCleaned: boolean;
|
|
34
|
+
remoteLockedAndDeviceNotAccepted: boolean;
|
|
35
|
+
tweakSettingsMismatched: boolean;
|
|
36
|
+
preferredTweakValue?: TweakValues;
|
|
37
|
+
abstract get isChunkSendingSupported(): boolean;
|
|
38
|
+
get database(): import("../pouchdb/LiveSyncLocalDB.js").LiveSyncLocalDB;
|
|
39
|
+
get rawDatabase(): PouchDB.Database<EntryDoc>;
|
|
40
|
+
get currentSettings(): import("../common/types.js").ObsidianLiveSyncSettings;
|
|
41
|
+
protected translate<TKey extends string>(key: TKey, params?: TranslationParameters): string;
|
|
42
|
+
sendChunks(setting: RemoteDBSettings, remoteDB: PouchDB.Database<EntryDoc> | undefined, showResult: boolean, fromSeq?: number | string): Promise<boolean>;
|
|
43
|
+
abstract getReplicationPBKDF2Salt(setting: RemoteDBSettings, refresh?: boolean): Promise<Uint8Array<ArrayBuffer>>;
|
|
44
|
+
ensurePBKDF2Salt(setting: RemoteDBSettings, showMessage?: boolean, useCache?: boolean): Promise<boolean>;
|
|
45
|
+
env: LiveSyncReplicatorEnv;
|
|
46
|
+
initializeDatabaseForReplication(): Promise<boolean>;
|
|
47
|
+
constructor(env: LiveSyncReplicatorEnv);
|
|
48
|
+
abstract terminateSync(): void;
|
|
49
|
+
abstract openReplication(setting: RemoteDBSettings, keepAlive: boolean, showResult: boolean, ignoreCleanLock: boolean): Promise<void | boolean>;
|
|
50
|
+
updateInfo: () => void;
|
|
51
|
+
abstract tryConnectRemote(setting: RemoteDBSettings, showResult?: boolean): Promise<boolean>;
|
|
52
|
+
abstract replicateAllToServer(setting: RemoteDBSettings, showingNotice?: boolean, sendChunksInBulkDisabled?: boolean): Promise<boolean>;
|
|
53
|
+
abstract replicateAllFromServer(setting: RemoteDBSettings, showingNotice?: boolean): Promise<boolean>;
|
|
54
|
+
abstract closeReplication(): void;
|
|
55
|
+
abstract tryResetRemoteDatabase(setting: RemoteDBSettings): Promise<void>;
|
|
56
|
+
abstract tryCreateRemoteDatabase(setting: RemoteDBSettings): Promise<void>;
|
|
57
|
+
abstract markRemoteLocked(setting: RemoteDBSettings, locked: boolean, lockByClean: boolean): Promise<void>;
|
|
58
|
+
abstract markRemoteResolved(setting: RemoteDBSettings): Promise<void>;
|
|
59
|
+
abstract resetRemoteTweakSettings(setting: RemoteDBSettings): Promise<void>;
|
|
60
|
+
abstract setPreferredRemoteTweakSettings(setting: RemoteDBSettings): Promise<void>;
|
|
61
|
+
abstract fetchRemoteChunks(missingChunks: string[], showResult: boolean): Promise<false | EntryLeaf[]>;
|
|
62
|
+
abstract getRemoteStatus(setting: RemoteDBSettings): Promise<false | RemoteDBStatus>;
|
|
63
|
+
abstract getRemotePreferredTweakValues(setting: RemoteDBSettings): Promise<false | TweakValues>;
|
|
64
|
+
abstract countCompromisedChunks(setting?: RemoteDBSettings): Promise<number | boolean>;
|
|
65
|
+
abstract getConnectedDeviceList(setting?: RemoteDBSettings): Promise<false | {
|
|
66
|
+
node_info: Record<string, NodeData>;
|
|
67
|
+
accepted_nodes: string[];
|
|
68
|
+
}>;
|
|
69
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NODEINFO_DOCID
|
|
3
|
+
} from "../common/types.js";
|
|
4
|
+
import { LOG_LEVEL_INFO, LOG_LEVEL_NOTICE, LOG_LEVEL_VERBOSE, Logger } from "../common/logger.js";
|
|
5
|
+
import { resolveWithIgnoreKnownError } from "../common/utils.js";
|
|
6
|
+
import { arrayBufferToBase64Single } from "../string_and_binary/convert.js";
|
|
7
|
+
class LiveSyncAbstractReplicator {
|
|
8
|
+
syncStatus = "NOT_CONNECTED";
|
|
9
|
+
docArrived = 0;
|
|
10
|
+
docSent = 0;
|
|
11
|
+
lastSyncPullSeq = 0;
|
|
12
|
+
maxPullSeq = 0;
|
|
13
|
+
lastSyncPushSeq = 0;
|
|
14
|
+
maxPushSeq = 0;
|
|
15
|
+
controller;
|
|
16
|
+
// localDatabase: PouchDB.Database<EntryDoc>;
|
|
17
|
+
originalSetting;
|
|
18
|
+
nodeid = "";
|
|
19
|
+
remoteLocked = false;
|
|
20
|
+
remoteCleaned = false;
|
|
21
|
+
remoteLockedAndDeviceNotAccepted = false;
|
|
22
|
+
tweakSettingsMismatched = false;
|
|
23
|
+
preferredTweakValue;
|
|
24
|
+
get database() {
|
|
25
|
+
return this.env.services.database.localDatabase;
|
|
26
|
+
}
|
|
27
|
+
get rawDatabase() {
|
|
28
|
+
return this.env.services.database.localDatabase.localDatabase;
|
|
29
|
+
}
|
|
30
|
+
get currentSettings() {
|
|
31
|
+
return this.env.services.setting.currentSettings();
|
|
32
|
+
}
|
|
33
|
+
translate(key, params) {
|
|
34
|
+
return this.env.services.context.translate(key, params);
|
|
35
|
+
}
|
|
36
|
+
sendChunks(setting, remoteDB, showResult, fromSeq) {
|
|
37
|
+
return Promise.resolve(true);
|
|
38
|
+
}
|
|
39
|
+
async ensurePBKDF2Salt(setting, showMessage = false, useCache = true) {
|
|
40
|
+
try {
|
|
41
|
+
const hash = await this.getReplicationPBKDF2Salt(setting, !useCache);
|
|
42
|
+
if (hash.length == 0) {
|
|
43
|
+
throw new Error("PBKDF2 salt (Security Seed) is empty");
|
|
44
|
+
}
|
|
45
|
+
Logger(`PBKDF2 salt (Security Seed): ${await arrayBufferToBase64Single(hash)}`, LOG_LEVEL_VERBOSE);
|
|
46
|
+
return true;
|
|
47
|
+
} catch (ex) {
|
|
48
|
+
const level = showMessage ? LOG_LEVEL_NOTICE : LOG_LEVEL_INFO;
|
|
49
|
+
Logger(`Failed to obtain PBKDF2 salt (Security Seed) for replication`, level);
|
|
50
|
+
Logger(ex, LOG_LEVEL_VERBOSE);
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
env;
|
|
55
|
+
async initializeDatabaseForReplication() {
|
|
56
|
+
const db = this.rawDatabase;
|
|
57
|
+
try {
|
|
58
|
+
const nodeinfo = await resolveWithIgnoreKnownError(db.get(NODEINFO_DOCID), {
|
|
59
|
+
_id: NODEINFO_DOCID,
|
|
60
|
+
type: "nodeinfo",
|
|
61
|
+
nodeid: "",
|
|
62
|
+
v20220607: true
|
|
63
|
+
});
|
|
64
|
+
if (nodeinfo.nodeid == "") {
|
|
65
|
+
nodeinfo.nodeid = Math.random().toString(36).slice(-10);
|
|
66
|
+
await db.put(nodeinfo);
|
|
67
|
+
}
|
|
68
|
+
this.nodeid = nodeinfo.nodeid;
|
|
69
|
+
return true;
|
|
70
|
+
} catch (ex) {
|
|
71
|
+
Logger(ex);
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
constructor(env) {
|
|
76
|
+
this.env = env;
|
|
77
|
+
}
|
|
78
|
+
updateInfo = () => {
|
|
79
|
+
this.env.services.replicator.replicationStatics.value = {
|
|
80
|
+
sent: this.docSent,
|
|
81
|
+
arrived: this.docArrived,
|
|
82
|
+
maxPullSeq: this.maxPullSeq,
|
|
83
|
+
maxPushSeq: this.maxPushSeq,
|
|
84
|
+
lastSyncPullSeq: this.lastSyncPullSeq,
|
|
85
|
+
lastSyncPushSeq: this.lastSyncPushSeq,
|
|
86
|
+
syncStatus: this.syncStatus
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export {
|
|
91
|
+
LiveSyncAbstractReplicator
|
|
92
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { SyncParameters } from "../common/types.js";
|
|
2
|
+
import { LiveSyncError } from "../common/LSError.js";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a SyncParamsHandler for managing synchronisation parameters.
|
|
5
|
+
*/
|
|
6
|
+
type putFunc = (params: SyncParameters) => Promise<boolean>;
|
|
7
|
+
/**
|
|
8
|
+
* Fetches synchronisation parameters from the server.
|
|
9
|
+
*/
|
|
10
|
+
type getFunc = () => Promise<SyncParameters>;
|
|
11
|
+
/**
|
|
12
|
+
* The function to create new synchronisation parameters.
|
|
13
|
+
* Note that this function should not return `pbkdf2salt` in the result; it should be generated and stored in the handler.
|
|
14
|
+
*/
|
|
15
|
+
type createFunc = () => Promise<SyncParameters>;
|
|
16
|
+
type CreateSyncParamsHanderOptions = {
|
|
17
|
+
put: putFunc;
|
|
18
|
+
get: getFunc;
|
|
19
|
+
create: createFunc;
|
|
20
|
+
};
|
|
21
|
+
export type SyncParamsHandler = {
|
|
22
|
+
fetch: (refresh?: boolean) => Promise<SyncParameters | false>;
|
|
23
|
+
getPBKDF2Salt: (refresh?: boolean) => Promise<Uint8Array<ArrayBuffer>>;
|
|
24
|
+
};
|
|
25
|
+
export declare function createSyncParamsHanderForServer(key: string, options: CreateSyncParamsHanderOptions): SyncParamsHandler;
|
|
26
|
+
export declare function clearHandlers(): void;
|
|
27
|
+
export declare class SyncParamsHandlerError extends LiveSyncError {
|
|
28
|
+
}
|
|
29
|
+
export declare class SyncParamsFetchError extends SyncParamsHandlerError {
|
|
30
|
+
}
|
|
31
|
+
export declare class SyncParamsNotFoundError extends SyncParamsHandlerError {
|
|
32
|
+
}
|
|
33
|
+
export declare class SyncParamsUpdateError extends SyncParamsHandlerError {
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { createPBKDF2Salt } from "octagonal-wheels/encryption/hkdf";
|
|
2
|
+
import { LOG_LEVEL_INFO, LOG_LEVEL_VERBOSE, Logger } from "../common/logger.js";
|
|
3
|
+
import { arrayBufferToBase64Single, base64ToArrayBufferInternalBrowser } from "../string_and_binary/convert.js";
|
|
4
|
+
import { LiveSyncError } from "../common/LSError.js";
|
|
5
|
+
const _handlers = /* @__PURE__ */ new Map();
|
|
6
|
+
function createSyncParamsHanderForServer(key, options) {
|
|
7
|
+
if (_handlers.has(key)) {
|
|
8
|
+
return _handlers.get(key);
|
|
9
|
+
}
|
|
10
|
+
const handler = createSyncParamsHandler(options);
|
|
11
|
+
_handlers.set(key, handler);
|
|
12
|
+
return handler;
|
|
13
|
+
}
|
|
14
|
+
function clearHandlers() {
|
|
15
|
+
_handlers.clear();
|
|
16
|
+
}
|
|
17
|
+
class SyncParamsHandlerError extends LiveSyncError {
|
|
18
|
+
}
|
|
19
|
+
class SyncParamsFetchError extends SyncParamsHandlerError {
|
|
20
|
+
}
|
|
21
|
+
class SyncParamsNotFoundError extends SyncParamsHandlerError {
|
|
22
|
+
}
|
|
23
|
+
class SyncParamsUpdateError extends SyncParamsHandlerError {
|
|
24
|
+
}
|
|
25
|
+
function createSyncParamsHandler({ put, get, create }) {
|
|
26
|
+
let taskFetchParameters = void 0;
|
|
27
|
+
const _fetchSyncParameters = async () => {
|
|
28
|
+
let syncParams = void 0;
|
|
29
|
+
try {
|
|
30
|
+
let shouldRetry = false;
|
|
31
|
+
do {
|
|
32
|
+
shouldRetry = false;
|
|
33
|
+
try {
|
|
34
|
+
syncParams = await get();
|
|
35
|
+
Logger(`Fetched synchronisation parameters`, LOG_LEVEL_INFO);
|
|
36
|
+
} catch (ex) {
|
|
37
|
+
if (LiveSyncError.isCausedBy(ex, SyncParamsNotFoundError)) {
|
|
38
|
+
Logger(`Synchronisation parameters not found, creating new ones`, LOG_LEVEL_INFO);
|
|
39
|
+
const newSyncParams = await create();
|
|
40
|
+
const putResult = await put(newSyncParams);
|
|
41
|
+
if (!putResult) {
|
|
42
|
+
Logger(`Failed to store initial synchronisation parameters`, LOG_LEVEL_INFO);
|
|
43
|
+
throw new SyncParamsUpdateError(`Failed to store initial synchronisation parameters`);
|
|
44
|
+
}
|
|
45
|
+
Logger(
|
|
46
|
+
`Initial synchronisation parameters stored successfully, retrying fetch`,
|
|
47
|
+
LOG_LEVEL_INFO
|
|
48
|
+
);
|
|
49
|
+
shouldRetry = true;
|
|
50
|
+
} else {
|
|
51
|
+
throw ex;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
} while (shouldRetry);
|
|
55
|
+
if (!syncParams) {
|
|
56
|
+
throw new SyncParamsFetchError(`Unexpected empty synchronisation parameters`);
|
|
57
|
+
}
|
|
58
|
+
if (!syncParams.pbkdf2salt) {
|
|
59
|
+
Logger(`Synchronisation parameters do not have PBKDF2 salt, generating a new salt`, LOG_LEVEL_INFO);
|
|
60
|
+
const salt = await arrayBufferToBase64Single(createPBKDF2Salt());
|
|
61
|
+
if (!salt) {
|
|
62
|
+
Logger(`Failed to generate PBKDF2 salt`, LOG_LEVEL_INFO);
|
|
63
|
+
throw new SyncParamsFetchError(`Failed to generate PBKDF2 salt`);
|
|
64
|
+
}
|
|
65
|
+
syncParams.pbkdf2salt = salt;
|
|
66
|
+
const putResult = await put(syncParams);
|
|
67
|
+
if (!putResult) {
|
|
68
|
+
Logger(`Failed to store synchronisation parameters with new PBKDF2 salt`, LOG_LEVEL_INFO);
|
|
69
|
+
throw new SyncParamsUpdateError(`Failed to store synchronisation parameters with new PBKDF2 salt`);
|
|
70
|
+
}
|
|
71
|
+
syncParams = await get();
|
|
72
|
+
}
|
|
73
|
+
if (!syncParams) {
|
|
74
|
+
throw new Error(`Failed to prepare synchronisation key in synchronisation parameters`);
|
|
75
|
+
}
|
|
76
|
+
Logger(`Synchronisation parameters fetched successfully`, LOG_LEVEL_INFO);
|
|
77
|
+
if (!syncParams.pbkdf2saltDecoded) {
|
|
78
|
+
const decodedSalt = new Uint8Array(base64ToArrayBufferInternalBrowser(syncParams.pbkdf2salt));
|
|
79
|
+
if (!decodedSalt) {
|
|
80
|
+
throw new SyncParamsFetchError(`Failed to decode PBKDF2 salt`);
|
|
81
|
+
}
|
|
82
|
+
syncParams.pbkdf2saltDecoded = decodedSalt;
|
|
83
|
+
}
|
|
84
|
+
return syncParams;
|
|
85
|
+
} catch (ex) {
|
|
86
|
+
Logger(`Failed to fetch synchronisation parameters`, LOG_LEVEL_INFO);
|
|
87
|
+
Logger(ex, LOG_LEVEL_VERBOSE);
|
|
88
|
+
taskFetchParameters = void 0;
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const fetchSyncParameters = (refresh = false) => {
|
|
93
|
+
if (taskFetchParameters && !refresh) {
|
|
94
|
+
return taskFetchParameters;
|
|
95
|
+
}
|
|
96
|
+
taskFetchParameters = _fetchSyncParameters();
|
|
97
|
+
return taskFetchParameters;
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
fetch: fetchSyncParameters,
|
|
101
|
+
getPBKDF2Salt: async (refresh = false) => {
|
|
102
|
+
const syncParams = await fetchSyncParameters(refresh);
|
|
103
|
+
if (!syncParams) {
|
|
104
|
+
Logger(`Failed to fetch synchronisation parameters`, LOG_LEVEL_INFO);
|
|
105
|
+
throw new SyncParamsFetchError(`Failed to fetch synchronisation parameters`);
|
|
106
|
+
}
|
|
107
|
+
return syncParams.pbkdf2saltDecoded;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export {
|
|
112
|
+
SyncParamsFetchError,
|
|
113
|
+
SyncParamsHandlerError,
|
|
114
|
+
SyncParamsNotFoundError,
|
|
115
|
+
SyncParamsUpdateError,
|
|
116
|
+
clearHandlers,
|
|
117
|
+
createSyncParamsHanderForServer
|
|
118
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type EntryDoc, type RemoteDBSettings, type EntryLeaf, type TweakValues, type SyncParameters, type DatabaseEntry, type NodeData } from "../../common/types.js";
|
|
2
|
+
import { LiveSyncAbstractReplicator, type LiveSyncReplicatorEnv, type RemoteDBStatus } from "../LiveSyncAbstractReplicator.js";
|
|
3
|
+
import type { ServiceHub } from "../../services/ServiceHub.js";
|
|
4
|
+
export interface LiveSyncCouchDBReplicatorEnv extends LiveSyncReplicatorEnv {
|
|
5
|
+
services: ServiceHub;
|
|
6
|
+
}
|
|
7
|
+
export declare class LiveSyncCouchDBReplicator extends LiveSyncAbstractReplicator {
|
|
8
|
+
get isChunkSendingSupported(): boolean;
|
|
9
|
+
isMobile(): boolean;
|
|
10
|
+
constructor(env: LiveSyncCouchDBReplicatorEnv);
|
|
11
|
+
getInitialSyncParameters(setting: RemoteDBSettings): Promise<SyncParameters>;
|
|
12
|
+
getSyncParameters(setting: RemoteDBSettings): Promise<SyncParameters>;
|
|
13
|
+
putSyncParameters(setting: RemoteDBSettings, params: SyncParameters): Promise<boolean>;
|
|
14
|
+
getReplicationPBKDF2Salt(setting: RemoteDBSettings, refresh?: boolean): Promise<Uint8Array<ArrayBuffer>>;
|
|
15
|
+
migrate(from: number, to: number): Promise<boolean>;
|
|
16
|
+
terminateSync(): void;
|
|
17
|
+
openReplication(setting: RemoteDBSettings, keepAlive: boolean, showResult: boolean, ignoreCleanLock: boolean): Promise<boolean>;
|
|
18
|
+
replicationActivated(showResult: boolean): void;
|
|
19
|
+
replicationChangeDetected(e: PouchDB.Replication.SyncResult<EntryDoc>, showResult: boolean, docSentOnStart: number, docArrivedOnStart: number): Promise<void>;
|
|
20
|
+
replicationCompleted(showResult: boolean): void;
|
|
21
|
+
replicationDenied(e: unknown): void;
|
|
22
|
+
replicationErrored(e: unknown): void;
|
|
23
|
+
replicationPaused(): void;
|
|
24
|
+
processSync(syncHandler: PouchDB.Replication.Sync<EntryDoc> | PouchDB.Replication.Replication<EntryDoc>, showResult: boolean, docSentOnStart: number, docArrivedOnStart: number, syncMode: "sync" | "pullOnly" | "pushOnly", retrying: boolean, reportCancelledAsDone?: boolean): Promise<"DONE" | "NEED_RETRY" | "NEED_RESURRECT" | "FAILED" | "CANCELLED">;
|
|
25
|
+
getEmptyMaxEntry(remoteID: number): {
|
|
26
|
+
_id: string;
|
|
27
|
+
maxSeq: number | string;
|
|
28
|
+
remoteID: number;
|
|
29
|
+
seqStatusMap: Record<number, boolean>;
|
|
30
|
+
_rev: string | undefined;
|
|
31
|
+
};
|
|
32
|
+
getLastTransferredSeqOfChunks(localDB: PouchDB.Database, remoteID: number): Promise<ReturnType<typeof this.getEmptyMaxEntry>>;
|
|
33
|
+
updateMaxTransferredSeqOnChunks(localDB: PouchDB.Database, remoteID: number, seqStatusMap: Record<number, boolean>): Promise<ReturnType<typeof this.getEmptyMaxEntry>>;
|
|
34
|
+
sendChunks(setting: RemoteDBSettings, remoteDB: PouchDB.Database<EntryDoc> | undefined, showResult: boolean, fromSeq?: number | string): Promise<boolean>;
|
|
35
|
+
openOneShotReplication(setting: RemoteDBSettings, showResult: boolean, retrying: boolean, syncMode: "sync" | "pullOnly" | "pushOnly", ignoreCleanLock?: boolean): Promise<boolean>;
|
|
36
|
+
replicateAllToServer(setting: RemoteDBSettings, showingNotice?: boolean): Promise<boolean>;
|
|
37
|
+
replicateAllFromServer(setting: RemoteDBSettings, showingNotice?: boolean): Promise<boolean>;
|
|
38
|
+
checkReplicationConnectivity(setting: RemoteDBSettings, keepAlive: boolean, skipCheck: boolean, showResult: boolean, ignoreCleanLock?: boolean): Promise<false | {
|
|
39
|
+
db: PouchDB.Database<EntryDoc>;
|
|
40
|
+
info: PouchDB.Core.DatabaseInfo;
|
|
41
|
+
syncOptionBase: PouchDB.Replication.SyncOptions;
|
|
42
|
+
syncOption: PouchDB.Replication.SyncOptions;
|
|
43
|
+
}>;
|
|
44
|
+
openContinuousReplication(setting: RemoteDBSettings, showResult: boolean, retrying: boolean): Promise<boolean>;
|
|
45
|
+
closeReplication(): void;
|
|
46
|
+
tryResetRemoteDatabase(setting: RemoteDBSettings): Promise<void>;
|
|
47
|
+
tryCreateRemoteDatabase(setting: RemoteDBSettings): Promise<void>;
|
|
48
|
+
markRemoteLocked(setting: RemoteDBSettings, locked: boolean, lockByClean: boolean): Promise<void>;
|
|
49
|
+
markRemoteResolved(setting: RemoteDBSettings): Promise<void>;
|
|
50
|
+
connectRemoteCouchDBWithSetting(settings: RemoteDBSettings, isMobile: boolean, performSetup?: boolean, skipInfo?: boolean): Promise<string | {
|
|
51
|
+
db: PouchDB.Database<EntryDoc>;
|
|
52
|
+
info: PouchDB.Core.DatabaseInfo;
|
|
53
|
+
}> | "Empty passphrases cannot be used without explicit permission";
|
|
54
|
+
_ensureConnection<T extends DatabaseEntry>(settings: RemoteDBSettings, performSetup?: boolean): Promise<PouchDB.Database<T>>;
|
|
55
|
+
/**
|
|
56
|
+
* Fetch a document from the remote database directly.
|
|
57
|
+
* @param settings RemoteDBSettings for the connection.
|
|
58
|
+
* @param id Document ID to fetch.
|
|
59
|
+
* @param db Optional PouchDB instance to use. If provided, it will use this instance instead of creating a new connection (then settings will be ignored).
|
|
60
|
+
* @returns The fetched document or false if the document does not exist.
|
|
61
|
+
* @throws {Error} Other errors that may occur during the fetch operation.
|
|
62
|
+
*/
|
|
63
|
+
fetchRemoteDocument<T extends DatabaseEntry>(settings: RemoteDBSettings, id: string, db?: PouchDB.Database<T>): Promise<T | false>;
|
|
64
|
+
/**
|
|
65
|
+
* Puts a document to the remote database directly
|
|
66
|
+
* @param settings RemoteDBSettings for the connection.
|
|
67
|
+
* @param doc Document to put.
|
|
68
|
+
* @param db Optional PouchDB instance to use. If provided, it will use this instance instead of creating a new connection (then settings will be ignored).
|
|
69
|
+
* @returns Response from the remote database or false if an error occurred.
|
|
70
|
+
* @throws {Error} If the document could not be put.
|
|
71
|
+
*/
|
|
72
|
+
putRemoteDocument<T extends DatabaseEntry>(settings: RemoteDBSettings, doc: T, db?: PouchDB.Database<T>): Promise<PouchDB.Core.Response>;
|
|
73
|
+
fetchRemoteChunks(missingChunks: string[], showResult: boolean): Promise<false | EntryLeaf[]>;
|
|
74
|
+
tryConnectRemote(setting: RemoteDBSettings, showResult?: boolean): Promise<boolean>;
|
|
75
|
+
resetRemoteTweakSettings(setting: RemoteDBSettings): Promise<void>;
|
|
76
|
+
setPreferredRemoteTweakSettings(setting: RemoteDBSettings): Promise<void>;
|
|
77
|
+
getRemotePreferredTweakValues(setting: RemoteDBSettings): Promise<TweakValues | false>;
|
|
78
|
+
compactRemote(setting: RemoteDBSettings): Promise<boolean>;
|
|
79
|
+
getRemoteStatus(setting: RemoteDBSettings): Promise<RemoteDBStatus | false>;
|
|
80
|
+
countCompromisedChunks(setting?: RemoteDBSettings): Promise<number | boolean>;
|
|
81
|
+
getConnectedDeviceList(setting?: RemoteDBSettings): Promise<false | {
|
|
82
|
+
node_info: Record<string, NodeData>;
|
|
83
|
+
accepted_nodes: string[];
|
|
84
|
+
}>;
|
|
85
|
+
}
|