@verdant-web/store 3.3.1 → 3.4.0-next.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/dist/bundle/index.js +8 -8
- package/dist/bundle/index.js.map +4 -4
- package/dist/esm/BackoffScheduler.js.map +1 -1
- package/dist/esm/IDBService.js.map +1 -1
- package/dist/esm/UndoHistory.js.map +1 -1
- package/dist/esm/__tests__/documents.test.js.map +1 -1
- package/dist/esm/__tests__/queries.test.js.map +1 -1
- package/dist/esm/backup.js.map +1 -1
- package/dist/esm/client/Client.js +7 -0
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/client/ClientDescriptor.js.map +1 -1
- package/dist/esm/entities/Entity.js.map +1 -1
- package/dist/esm/entities/EntityCache.js.map +1 -1
- package/dist/esm/entities/EntityMetadata.js.map +1 -1
- package/dist/esm/entities/EntityStore.js.map +1 -1
- package/dist/esm/entities/OperationBatcher.js.map +1 -1
- package/dist/esm/files/EntityFile.js.map +1 -1
- package/dist/esm/files/FileManager.js +3 -0
- package/dist/esm/files/FileManager.js.map +1 -1
- package/dist/esm/files/FileStorage.js.map +1 -1
- package/dist/esm/files/utils.js.map +1 -1
- package/dist/esm/idb.js.map +1 -1
- package/dist/esm/metadata/AckInfoStore.js.map +1 -1
- package/dist/esm/metadata/LocalReplicaStore.js.map +1 -1
- package/dist/esm/metadata/MessageCreator.js.map +1 -1
- package/dist/esm/metadata/Metadata.js +7 -4
- package/dist/esm/metadata/Metadata.js.map +1 -1
- package/dist/esm/metadata/OperationsStore.js.map +1 -1
- package/dist/esm/metadata/SchemaStore.js.map +1 -1
- package/dist/esm/metadata/openMetadataDatabase.js.map +1 -1
- package/dist/esm/migration/db.js.map +1 -1
- package/dist/esm/migration/openDatabase.js.map +1 -1
- package/dist/esm/migration/paths.js.map +1 -1
- package/dist/esm/queries/BaseQuery.js.map +1 -1
- package/dist/esm/queries/QueryCache.js.map +1 -1
- package/dist/esm/queries/QueryableStorage.js.map +1 -1
- package/dist/esm/queries/dbQueries.js.map +1 -1
- package/dist/esm/queries/keys.js.map +1 -1
- package/dist/esm/queries/ranges.js.map +1 -1
- package/dist/esm/queries/utils.js.map +1 -1
- package/dist/esm/sync/FileSync.js.map +1 -1
- package/dist/esm/sync/Heartbeat.js.map +1 -1
- package/dist/esm/sync/PresenceManager.js.map +1 -1
- package/dist/esm/sync/PushPullSync.js.map +1 -1
- package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
- package/dist/esm/sync/Sync.js.map +1 -1
- package/dist/esm/sync/WebSocketSync.js.map +1 -1
- package/package.json +9 -10
- package/src/client/Client.ts +8 -1
- package/src/files/FileManager.ts +4 -0
- package/src/metadata/Metadata.ts +11 -7
- package/src/sync/Sync.ts +2 -2
- package/dist/cjs/BackoffScheduler.d.ts +0 -19
- package/dist/cjs/BackoffScheduler.js +0 -45
- package/dist/cjs/BackoffScheduler.js.map +0 -1
- package/dist/cjs/DocumentManager.d.ts +0 -28
- package/dist/cjs/DocumentManager.js +0 -45
- package/dist/cjs/DocumentManager.js.map +0 -1
- package/dist/cjs/FakeWeakRef.d.ts +0 -11
- package/dist/cjs/FakeWeakRef.js +0 -19
- package/dist/cjs/FakeWeakRef.js.map +0 -1
- package/dist/cjs/IDBService.d.ts +0 -30
- package/dist/cjs/IDBService.js +0 -101
- package/dist/cjs/IDBService.js.map +0 -1
- package/dist/cjs/UndoHistory.d.ts +0 -16
- package/dist/cjs/UndoHistory.js +0 -55
- package/dist/cjs/UndoHistory.js.map +0 -1
- package/dist/cjs/__tests__/batching.test.d.ts +0 -1
- package/dist/cjs/__tests__/batching.test.js +0 -47
- package/dist/cjs/__tests__/batching.test.js.map +0 -1
- package/dist/cjs/__tests__/documents.test.d.ts +0 -1
- package/dist/cjs/__tests__/documents.test.js +0 -468
- package/dist/cjs/__tests__/documents.test.js.map +0 -1
- package/dist/cjs/__tests__/fixtures/testStorage.d.ts +0 -76
- package/dist/cjs/__tests__/fixtures/testStorage.js +0 -96
- package/dist/cjs/__tests__/fixtures/testStorage.js.map +0 -1
- package/dist/cjs/__tests__/legacyOids.test.d.ts +0 -1
- package/dist/cjs/__tests__/legacyOids.test.js +0 -354
- package/dist/cjs/__tests__/legacyOids.test.js.map +0 -1
- package/dist/cjs/__tests__/mutations.test.d.ts +0 -1
- package/dist/cjs/__tests__/mutations.test.js +0 -48
- package/dist/cjs/__tests__/mutations.test.js.map +0 -1
- package/dist/cjs/__tests__/queries.test.d.ts +0 -1
- package/dist/cjs/__tests__/queries.test.js +0 -323
- package/dist/cjs/__tests__/queries.test.js.map +0 -1
- package/dist/cjs/__tests__/setup/indexedDB.d.ts +0 -1
- package/dist/cjs/__tests__/setup/indexedDB.js +0 -16
- package/dist/cjs/__tests__/setup/indexedDB.js.map +0 -1
- package/dist/cjs/__tests__/undo.test.d.ts +0 -1
- package/dist/cjs/__tests__/undo.test.js +0 -94
- package/dist/cjs/__tests__/undo.test.js.map +0 -1
- package/dist/cjs/backup.d.ts +0 -10
- package/dist/cjs/backup.js +0 -58
- package/dist/cjs/backup.js.map +0 -1
- package/dist/cjs/client/Client.d.ts +0 -120
- package/dist/cjs/client/Client.js +0 -300
- package/dist/cjs/client/Client.js.map +0 -1
- package/dist/cjs/client/ClientDescriptor.d.ts +0 -76
- package/dist/cjs/client/ClientDescriptor.js +0 -213
- package/dist/cjs/client/ClientDescriptor.js.map +0 -1
- package/dist/cjs/client/constants.d.ts +0 -1
- package/dist/cjs/client/constants.js +0 -5
- package/dist/cjs/client/constants.js.map +0 -1
- package/dist/cjs/constants.d.ts +0 -1
- package/dist/cjs/constants.js +0 -5
- package/dist/cjs/constants.js.map +0 -1
- package/dist/cjs/context.d.ts +0 -38
- package/dist/cjs/context.js +0 -3
- package/dist/cjs/context.js.map +0 -1
- package/dist/cjs/entities/Entity.d.ts +0 -148
- package/dist/cjs/entities/Entity.js +0 -711
- package/dist/cjs/entities/Entity.js.map +0 -1
- package/dist/cjs/entities/Entity.test.d.ts +0 -1
- package/dist/cjs/entities/Entity.test.js +0 -194
- package/dist/cjs/entities/Entity.test.js.map +0 -1
- package/dist/cjs/entities/EntityCache.d.ts +0 -15
- package/dist/cjs/entities/EntityCache.js +0 -39
- package/dist/cjs/entities/EntityCache.js.map +0 -1
- package/dist/cjs/entities/EntityMetadata.d.ts +0 -68
- package/dist/cjs/entities/EntityMetadata.js +0 -261
- package/dist/cjs/entities/EntityMetadata.js.map +0 -1
- package/dist/cjs/entities/EntityStore.d.ts +0 -80
- package/dist/cjs/entities/EntityStore.js +0 -352
- package/dist/cjs/entities/EntityStore.js.map +0 -1
- package/dist/cjs/entities/OperationBatcher.d.ts +0 -52
- package/dist/cjs/entities/OperationBatcher.js +0 -165
- package/dist/cjs/entities/OperationBatcher.js.map +0 -1
- package/dist/cjs/entities/types.d.ts +0 -103
- package/dist/cjs/entities/types.js +0 -3
- package/dist/cjs/entities/types.js.map +0 -1
- package/dist/cjs/files/EntityFile.d.ts +0 -35
- package/dist/cjs/files/EntityFile.js +0 -81
- package/dist/cjs/files/EntityFile.js.map +0 -1
- package/dist/cjs/files/FileManager.d.ts +0 -46
- package/dist/cjs/files/FileManager.js +0 -174
- package/dist/cjs/files/FileManager.js.map +0 -1
- package/dist/cjs/files/FileStorage.d.ts +0 -39
- package/dist/cjs/files/FileStorage.js +0 -110
- package/dist/cjs/files/FileStorage.js.map +0 -1
- package/dist/cjs/files/utils.d.ts +0 -10
- package/dist/cjs/files/utils.js +0 -62
- package/dist/cjs/files/utils.js.map +0 -1
- package/dist/cjs/files/utils.test.d.ts +0 -1
- package/dist/cjs/files/utils.test.js +0 -81
- package/dist/cjs/files/utils.test.js.map +0 -1
- package/dist/cjs/idb.d.ts +0 -13
- package/dist/cjs/idb.js +0 -158
- package/dist/cjs/idb.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -23
- package/dist/cjs/index.js +0 -25
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/metadata/AckInfoStore.d.ts +0 -10
- package/dist/cjs/metadata/AckInfoStore.js +0 -26
- package/dist/cjs/metadata/AckInfoStore.js.map +0 -1
- package/dist/cjs/metadata/BaselinesStore.d.ts +0 -40
- package/dist/cjs/metadata/BaselinesStore.js +0 -106
- package/dist/cjs/metadata/BaselinesStore.js.map +0 -1
- package/dist/cjs/metadata/LocalReplicaStore.d.ts +0 -18
- package/dist/cjs/metadata/LocalReplicaStore.js +0 -62
- package/dist/cjs/metadata/LocalReplicaStore.js.map +0 -1
- package/dist/cjs/metadata/MessageCreator.d.ts +0 -19
- package/dist/cjs/metadata/MessageCreator.js +0 -128
- package/dist/cjs/metadata/MessageCreator.js.map +0 -1
- package/dist/cjs/metadata/Metadata.d.ts +0 -134
- package/dist/cjs/metadata/Metadata.js +0 -405
- package/dist/cjs/metadata/Metadata.js.map +0 -1
- package/dist/cjs/metadata/OperationsStore.d.ts +0 -62
- package/dist/cjs/metadata/OperationsStore.js +0 -179
- package/dist/cjs/metadata/OperationsStore.js.map +0 -1
- package/dist/cjs/metadata/SchemaStore.d.ts +0 -9
- package/dist/cjs/metadata/SchemaStore.js +0 -39
- package/dist/cjs/metadata/SchemaStore.js.map +0 -1
- package/dist/cjs/metadata/openMetadataDatabase.d.ts +0 -19
- package/dist/cjs/metadata/openMetadataDatabase.js +0 -220
- package/dist/cjs/metadata/openMetadataDatabase.js.map +0 -1
- package/dist/cjs/migration/db.d.ts +0 -8
- package/dist/cjs/migration/db.js +0 -112
- package/dist/cjs/migration/db.js.map +0 -1
- package/dist/cjs/migration/errors.d.ts +0 -5
- package/dist/cjs/migration/errors.js +0 -12
- package/dist/cjs/migration/errors.js.map +0 -1
- package/dist/cjs/migration/openDatabase.d.ts +0 -20
- package/dist/cjs/migration/openDatabase.js +0 -468
- package/dist/cjs/migration/openDatabase.js.map +0 -1
- package/dist/cjs/migration/paths.d.ts +0 -6
- package/dist/cjs/migration/paths.js +0 -53
- package/dist/cjs/migration/paths.js.map +0 -1
- package/dist/cjs/migration/paths.test.d.ts +0 -1
- package/dist/cjs/migration/paths.test.js +0 -91
- package/dist/cjs/migration/paths.test.js.map +0 -1
- package/dist/cjs/queries/BaseQuery.d.ts +0 -53
- package/dist/cjs/queries/BaseQuery.js +0 -148
- package/dist/cjs/queries/BaseQuery.js.map +0 -1
- package/dist/cjs/queries/CollectionQueries.d.ts +0 -55
- package/dist/cjs/queries/CollectionQueries.js +0 -92
- package/dist/cjs/queries/CollectionQueries.js.map +0 -1
- package/dist/cjs/queries/FindAllQuery.d.ts +0 -12
- package/dist/cjs/queries/FindAllQuery.js +0 -44
- package/dist/cjs/queries/FindAllQuery.js.map +0 -1
- package/dist/cjs/queries/FindInfiniteQuery.d.ts +0 -19
- package/dist/cjs/queries/FindInfiniteQuery.js +0 -70
- package/dist/cjs/queries/FindInfiniteQuery.js.map +0 -1
- package/dist/cjs/queries/FindOneQuery.d.ts +0 -12
- package/dist/cjs/queries/FindOneQuery.js +0 -43
- package/dist/cjs/queries/FindOneQuery.js.map +0 -1
- package/dist/cjs/queries/FindPageQuery.d.ts +0 -24
- package/dist/cjs/queries/FindPageQuery.js +0 -77
- package/dist/cjs/queries/FindPageQuery.js.map +0 -1
- package/dist/cjs/queries/GetQuery.d.ts +0 -10
- package/dist/cjs/queries/GetQuery.js +0 -30
- package/dist/cjs/queries/GetQuery.js.map +0 -1
- package/dist/cjs/queries/QueryCache.d.ts +0 -17
- package/dist/cjs/queries/QueryCache.js +0 -46
- package/dist/cjs/queries/QueryCache.js.map +0 -1
- package/dist/cjs/queries/QueryableStorage.d.ts +0 -20
- package/dist/cjs/queries/QueryableStorage.js +0 -94
- package/dist/cjs/queries/QueryableStorage.js.map +0 -1
- package/dist/cjs/queries/dbQueries.d.ts +0 -22
- package/dist/cjs/queries/dbQueries.js +0 -136
- package/dist/cjs/queries/dbQueries.js.map +0 -1
- package/dist/cjs/queries/keys.d.ts +0 -10
- package/dist/cjs/queries/keys.js +0 -34
- package/dist/cjs/queries/keys.js.map +0 -1
- package/dist/cjs/queries/ranges.d.ts +0 -2
- package/dist/cjs/queries/ranges.js +0 -70
- package/dist/cjs/queries/ranges.js.map +0 -1
- package/dist/cjs/queries/types.d.ts +0 -6
- package/dist/cjs/queries/types.js +0 -3
- package/dist/cjs/queries/types.js.map +0 -1
- package/dist/cjs/queries/utils.d.ts +0 -3
- package/dist/cjs/queries/utils.js +0 -25
- package/dist/cjs/queries/utils.js.map +0 -1
- package/dist/cjs/sync/FileSync.d.ts +0 -24
- package/dist/cjs/sync/FileSync.js +0 -87
- package/dist/cjs/sync/FileSync.js.map +0 -1
- package/dist/cjs/sync/Heartbeat.d.ts +0 -25
- package/dist/cjs/sync/Heartbeat.js +0 -64
- package/dist/cjs/sync/Heartbeat.js.map +0 -1
- package/dist/cjs/sync/PresenceManager.d.ts +0 -55
- package/dist/cjs/sync/PresenceManager.js +0 -126
- package/dist/cjs/sync/PresenceManager.js.map +0 -1
- package/dist/cjs/sync/PushPullSync.d.ts +0 -39
- package/dist/cjs/sync/PushPullSync.js +0 -159
- package/dist/cjs/sync/PushPullSync.js.map +0 -1
- package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +0 -34
- package/dist/cjs/sync/ServerSyncEndpointProvider.js +0 -69
- package/dist/cjs/sync/ServerSyncEndpointProvider.js.map +0 -1
- package/dist/cjs/sync/Sync.d.ts +0 -160
- package/dist/cjs/sync/Sync.js +0 -293
- package/dist/cjs/sync/Sync.js.map +0 -1
- package/dist/cjs/sync/WebSocketSync.d.ts +0 -44
- package/dist/cjs/sync/WebSocketSync.js +0 -221
- package/dist/cjs/sync/WebSocketSync.js.map +0 -1
- package/dist/cjs/types.d.ts +0 -12
- package/dist/cjs/types.js +0 -3
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/utils/Disposable.d.ts +0 -6
- package/dist/cjs/utils/Disposable.js +0 -19
- package/dist/cjs/utils/Disposable.js.map +0 -1
- package/dist/cjs/utils/Resolvable.d.ts +0 -8
- package/dist/cjs/utils/Resolvable.js +0 -23
- package/dist/cjs/utils/Resolvable.js.map +0 -1
- package/dist/cjs/vanilla.d.ts +0 -1
- package/dist/cjs/vanilla.js +0 -28
- package/dist/cjs/vanilla.js.map +0 -1
- package/dist/esm/BackoffScheduler.d.ts +0 -19
- package/dist/esm/DocumentManager.d.ts +0 -28
- package/dist/esm/FakeWeakRef.d.ts +0 -11
- package/dist/esm/IDBService.d.ts +0 -30
- package/dist/esm/UndoHistory.d.ts +0 -16
- package/dist/esm/__tests__/batching.test.d.ts +0 -1
- package/dist/esm/__tests__/documents.test.d.ts +0 -1
- package/dist/esm/__tests__/fixtures/testStorage.d.ts +0 -76
- package/dist/esm/__tests__/legacyOids.test.d.ts +0 -1
- package/dist/esm/__tests__/mutations.test.d.ts +0 -1
- package/dist/esm/__tests__/queries.test.d.ts +0 -1
- package/dist/esm/__tests__/setup/indexedDB.d.ts +0 -1
- package/dist/esm/__tests__/undo.test.d.ts +0 -1
- package/dist/esm/backup.d.ts +0 -10
- package/dist/esm/client/Client.d.ts +0 -120
- package/dist/esm/client/ClientDescriptor.d.ts +0 -76
- package/dist/esm/client/constants.d.ts +0 -1
- package/dist/esm/constants.d.ts +0 -1
- package/dist/esm/context.d.ts +0 -38
- package/dist/esm/entities/Entity.d.ts +0 -148
- package/dist/esm/entities/Entity.test.d.ts +0 -1
- package/dist/esm/entities/EntityCache.d.ts +0 -15
- package/dist/esm/entities/EntityMetadata.d.ts +0 -68
- package/dist/esm/entities/EntityStore.d.ts +0 -80
- package/dist/esm/entities/OperationBatcher.d.ts +0 -52
- package/dist/esm/entities/types.d.ts +0 -103
- package/dist/esm/files/EntityFile.d.ts +0 -35
- package/dist/esm/files/FileManager.d.ts +0 -46
- package/dist/esm/files/FileStorage.d.ts +0 -39
- package/dist/esm/files/utils.d.ts +0 -10
- package/dist/esm/files/utils.test.d.ts +0 -1
- package/dist/esm/idb.d.ts +0 -13
- package/dist/esm/index.d.ts +0 -23
- package/dist/esm/metadata/AckInfoStore.d.ts +0 -10
- package/dist/esm/metadata/BaselinesStore.d.ts +0 -40
- package/dist/esm/metadata/LocalReplicaStore.d.ts +0 -18
- package/dist/esm/metadata/MessageCreator.d.ts +0 -19
- package/dist/esm/metadata/Metadata.d.ts +0 -134
- package/dist/esm/metadata/OperationsStore.d.ts +0 -62
- package/dist/esm/metadata/SchemaStore.d.ts +0 -9
- package/dist/esm/metadata/openMetadataDatabase.d.ts +0 -19
- package/dist/esm/migration/db.d.ts +0 -8
- package/dist/esm/migration/errors.d.ts +0 -5
- package/dist/esm/migration/openDatabase.d.ts +0 -20
- package/dist/esm/migration/paths.d.ts +0 -6
- package/dist/esm/migration/paths.test.d.ts +0 -1
- package/dist/esm/queries/BaseQuery.d.ts +0 -53
- package/dist/esm/queries/CollectionQueries.d.ts +0 -55
- package/dist/esm/queries/FindAllQuery.d.ts +0 -12
- package/dist/esm/queries/FindInfiniteQuery.d.ts +0 -19
- package/dist/esm/queries/FindOneQuery.d.ts +0 -12
- package/dist/esm/queries/FindPageQuery.d.ts +0 -24
- package/dist/esm/queries/GetQuery.d.ts +0 -10
- package/dist/esm/queries/QueryCache.d.ts +0 -17
- package/dist/esm/queries/QueryableStorage.d.ts +0 -20
- package/dist/esm/queries/dbQueries.d.ts +0 -22
- package/dist/esm/queries/keys.d.ts +0 -10
- package/dist/esm/queries/ranges.d.ts +0 -2
- package/dist/esm/queries/types.d.ts +0 -6
- package/dist/esm/queries/utils.d.ts +0 -3
- package/dist/esm/sync/FileSync.d.ts +0 -24
- package/dist/esm/sync/Heartbeat.d.ts +0 -25
- package/dist/esm/sync/PresenceManager.d.ts +0 -55
- package/dist/esm/sync/PushPullSync.d.ts +0 -39
- package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +0 -34
- package/dist/esm/sync/Sync.d.ts +0 -160
- package/dist/esm/sync/WebSocketSync.d.ts +0 -44
- package/dist/esm/types.d.ts +0 -12
- package/dist/esm/utils/Disposable.d.ts +0 -6
- package/dist/esm/utils/Resolvable.d.ts +0 -8
- package/dist/esm/vanilla.d.ts +0 -1
- package/dist/tsconfig-cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ReplicaType } from '@verdant-web/common';
|
|
2
|
-
export interface ServerSyncEndpointProviderConfig {
|
|
3
|
-
/**
|
|
4
|
-
* The location of the endpoint used to retrieve an
|
|
5
|
-
* authorization token for the client.
|
|
6
|
-
*/
|
|
7
|
-
authEndpoint?: string;
|
|
8
|
-
/**
|
|
9
|
-
* A custom function to retrieve authorization
|
|
10
|
-
* data. Use whatever fetching mechanism you want.
|
|
11
|
-
*/
|
|
12
|
-
fetchAuth?: () => Promise<{
|
|
13
|
-
accessToken: string;
|
|
14
|
-
}>;
|
|
15
|
-
/**
|
|
16
|
-
* A spec-compliant fetch implementation. If not provided,
|
|
17
|
-
* the global fetch will be used. authEndpoint will
|
|
18
|
-
* be used to fetch the token.
|
|
19
|
-
*/
|
|
20
|
-
fetch?: typeof fetch;
|
|
21
|
-
}
|
|
22
|
-
export declare class ServerSyncEndpointProvider {
|
|
23
|
-
private config;
|
|
24
|
-
private cached;
|
|
25
|
-
type: ReplicaType;
|
|
26
|
-
constructor(config: ServerSyncEndpointProviderConfig);
|
|
27
|
-
getEndpoints: () => Promise<{
|
|
28
|
-
http: string;
|
|
29
|
-
websocket: string;
|
|
30
|
-
files: string;
|
|
31
|
-
token: string;
|
|
32
|
-
}>;
|
|
33
|
-
clearCache: () => void;
|
|
34
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ServerSyncEndpointProvider = void 0;
|
|
7
|
-
const common_1 = require("@verdant-web/common");
|
|
8
|
-
const jwt_decode_1 = __importDefault(require("jwt-decode"));
|
|
9
|
-
class ServerSyncEndpointProvider {
|
|
10
|
-
constructor(config) {
|
|
11
|
-
this.config = config;
|
|
12
|
-
this.cached = null;
|
|
13
|
-
this.type = common_1.ReplicaType.Realtime;
|
|
14
|
-
this.getEndpoints = async () => {
|
|
15
|
-
if (this.cached) {
|
|
16
|
-
return this.cached;
|
|
17
|
-
}
|
|
18
|
-
let result;
|
|
19
|
-
if (this.config.fetchAuth) {
|
|
20
|
-
result = await this.config.fetchAuth();
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const fetchImpl = this.config.fetch || fetch.bind(window);
|
|
24
|
-
result = await fetchImpl(this.config.authEndpoint, {
|
|
25
|
-
credentials: 'include',
|
|
26
|
-
}).then((res) => {
|
|
27
|
-
if (!res.ok) {
|
|
28
|
-
throw new Error(`Auth endpoint returned non-200 response: ${res.status}`);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
return res.json();
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
(0, common_1.assert)(result.accessToken, 'No access token provided from auth endpoint');
|
|
36
|
-
const decoded = jwt_decode_1.default(result.accessToken);
|
|
37
|
-
(0, common_1.assert)(decoded.url, 'No sync endpoint provided from auth endpoint');
|
|
38
|
-
(0, common_1.assert)(decoded.type !== undefined, 'No replica type provided from auth endpoint');
|
|
39
|
-
this.type = parseInt(decoded.type + '');
|
|
40
|
-
const url = new URL(decoded.url);
|
|
41
|
-
url.protocol = url.protocol.replace('ws', 'http');
|
|
42
|
-
const httpEndpoint = url.toString();
|
|
43
|
-
url.protocol = url.protocol.replace('http', 'ws');
|
|
44
|
-
const websocketEndpoint = url.toString();
|
|
45
|
-
let fileEndpoint = decoded.file;
|
|
46
|
-
if (!fileEndpoint) {
|
|
47
|
-
// default to http endpoint + '/files';
|
|
48
|
-
const fileUrl = new URL(httpEndpoint);
|
|
49
|
-
fileUrl.pathname = fileUrl.pathname + '/files';
|
|
50
|
-
fileEndpoint = fileUrl.toString();
|
|
51
|
-
}
|
|
52
|
-
this.cached = {
|
|
53
|
-
http: httpEndpoint,
|
|
54
|
-
websocket: websocketEndpoint,
|
|
55
|
-
files: fileEndpoint,
|
|
56
|
-
token: result.accessToken,
|
|
57
|
-
};
|
|
58
|
-
return this.cached;
|
|
59
|
-
};
|
|
60
|
-
this.clearCache = () => {
|
|
61
|
-
this.cached = null;
|
|
62
|
-
};
|
|
63
|
-
if (!config.authEndpoint && !config.fetchAuth) {
|
|
64
|
-
throw new Error('Either authEndpoint or fetchAuth must be provided to ServerSyncEndpointProvider');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
exports.ServerSyncEndpointProvider = ServerSyncEndpointProvider;
|
|
69
|
-
//# sourceMappingURL=ServerSyncEndpointProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerSyncEndpointProvider.js","sourceRoot":"","sources":["../../../src/sync/ServerSyncEndpointProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/sync/Sync.d.ts
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { ClientMessage, DocumentBaseline, EventSubscriber, FileData, Operation, ServerMessage } from '@verdant-web/common';
|
|
2
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
3
|
-
import { PresenceManager } from './PresenceManager.js';
|
|
4
|
-
import { FilePullResult, FileUploadResult } from './FileSync.js';
|
|
5
|
-
import { ServerSyncEndpointProviderConfig } from './ServerSyncEndpointProvider.js';
|
|
6
|
-
type SyncEvents = {
|
|
7
|
-
onlineChange: (isOnline: boolean) => void;
|
|
8
|
-
syncingChange: (syncing: boolean) => void;
|
|
9
|
-
};
|
|
10
|
-
export type SyncTransportEvents = SyncEvents & {
|
|
11
|
-
message: (message: ServerMessage) => void;
|
|
12
|
-
};
|
|
13
|
-
export interface SyncTransport extends EventSubscriber<SyncTransportEvents> {
|
|
14
|
-
readonly presence: PresenceManager;
|
|
15
|
-
readonly mode: SyncTransportMode;
|
|
16
|
-
send(message: ClientMessage): void;
|
|
17
|
-
start(): void;
|
|
18
|
-
ignoreIncoming(): void;
|
|
19
|
-
stop(): void;
|
|
20
|
-
destroy(): void;
|
|
21
|
-
reconnect(): void;
|
|
22
|
-
readonly isConnected: boolean;
|
|
23
|
-
readonly status: 'active' | 'paused';
|
|
24
|
-
}
|
|
25
|
-
export interface Sync<Presence = any, Profile = any> extends EventSubscriber<SyncEvents> {
|
|
26
|
-
setMode(mode: SyncTransportMode): void;
|
|
27
|
-
setPullInterval(interval: number): void;
|
|
28
|
-
readonly pullInterval: number;
|
|
29
|
-
uploadFile(data: FileData): Promise<FileUploadResult>;
|
|
30
|
-
getFile(fileId: string): Promise<FilePullResult>;
|
|
31
|
-
readonly presence: PresenceManager<Profile, Presence>;
|
|
32
|
-
send(message: ClientMessage): void;
|
|
33
|
-
start(): void;
|
|
34
|
-
stop(): void;
|
|
35
|
-
ignoreIncoming(): void;
|
|
36
|
-
destroy(): void;
|
|
37
|
-
reconnect(): void;
|
|
38
|
-
readonly isConnected: boolean;
|
|
39
|
-
readonly status: 'active' | 'paused';
|
|
40
|
-
readonly mode: SyncTransportMode;
|
|
41
|
-
}
|
|
42
|
-
export declare class NoSync<Presence = any, Profile = any> extends EventSubscriber<SyncEvents> implements Sync<Presence, Profile> {
|
|
43
|
-
readonly mode = "pull";
|
|
44
|
-
send(): void;
|
|
45
|
-
start(): void;
|
|
46
|
-
stop(): void;
|
|
47
|
-
ignoreIncoming(): void;
|
|
48
|
-
destroy: () => void;
|
|
49
|
-
reconnect(): void;
|
|
50
|
-
setMode(): void;
|
|
51
|
-
setPullInterval(): void;
|
|
52
|
-
readonly isConnected = false;
|
|
53
|
-
readonly status = "paused";
|
|
54
|
-
readonly pullInterval = 0;
|
|
55
|
-
readonly presence: PresenceManager<any, any>;
|
|
56
|
-
constructor({ meta }: {
|
|
57
|
-
meta: Metadata;
|
|
58
|
-
});
|
|
59
|
-
uploadFile: () => Promise<{
|
|
60
|
-
success: boolean;
|
|
61
|
-
retry: boolean;
|
|
62
|
-
}>;
|
|
63
|
-
getFile: () => Promise<FilePullResult>;
|
|
64
|
-
}
|
|
65
|
-
export type SyncTransportMode = 'realtime' | 'pull';
|
|
66
|
-
export interface ServerSyncOptions<Profile = any, Presence = any> extends ServerSyncEndpointProviderConfig {
|
|
67
|
-
/**
|
|
68
|
-
* When a client first connects, it will use this presence value.
|
|
69
|
-
*/
|
|
70
|
-
initialPresence: Presence;
|
|
71
|
-
/**
|
|
72
|
-
* Before connecting to the server, the local client will have
|
|
73
|
-
* this value for their profile data. You can either cache and store
|
|
74
|
-
* profile data from a previous connection or provide defaults like
|
|
75
|
-
* empty strings.
|
|
76
|
-
*/
|
|
77
|
-
defaultProfile: Profile;
|
|
78
|
-
/**
|
|
79
|
-
* Provide `false` to disable transport selection. Transport selection
|
|
80
|
-
* automatically switches between HTTP and WebSocket based sync depending
|
|
81
|
-
* on the number of peers connected. If a user is alone, they will use
|
|
82
|
-
* HTTP push/pull to sync changes. If another user joins, both users will
|
|
83
|
-
* be upgraded to websockets.
|
|
84
|
-
*
|
|
85
|
-
* Provide `peers-only` to only automatically use websockets if other
|
|
86
|
-
* users connect, but not if another device for the current user connects.
|
|
87
|
-
* By default, automatic transport selection will upgrade to websockets if
|
|
88
|
-
* another device from the current user connects, but if realtime sync is
|
|
89
|
-
* not necessary for such cases, you can save bandwidth by disabling this.
|
|
90
|
-
*
|
|
91
|
-
* Turning off this feature allows you more control over the transport
|
|
92
|
-
* which can be useful for low-power devices or to save server traffic.
|
|
93
|
-
* To modify transport modes manually, utilize `client.sync.setMode`.
|
|
94
|
-
* The built-in behavior is essentially switching modes based on
|
|
95
|
-
* the number of peers detected by client.sync.presence.
|
|
96
|
-
*/
|
|
97
|
-
automaticTransportSelection?: boolean | 'peers-only';
|
|
98
|
-
initialTransport?: SyncTransportMode;
|
|
99
|
-
autoStart?: boolean;
|
|
100
|
-
/**
|
|
101
|
-
* Optionally specify an interval, in milliseconds, to poll the server
|
|
102
|
-
* when in pull mode.
|
|
103
|
-
*/
|
|
104
|
-
pullInterval?: number;
|
|
105
|
-
/**
|
|
106
|
-
* Presence updates are batched to reduce number of requests / messages
|
|
107
|
-
* sent to the server. You can specify the batching time slice, in milliseconds,
|
|
108
|
-
*/
|
|
109
|
-
presenceUpdateBatchTimeout?: number;
|
|
110
|
-
/**
|
|
111
|
-
* Experimental: sync messages over a broadcast channel between tabs.
|
|
112
|
-
* Fixes tabs not reactively updating to changes when other tabs are open,
|
|
113
|
-
* but is not yet thoroughly vetted.
|
|
114
|
-
*/
|
|
115
|
-
useBroadcastChannel?: boolean;
|
|
116
|
-
}
|
|
117
|
-
export declare class ServerSync<Presence = any, Profile = any> extends EventSubscriber<SyncEvents> implements Sync<Presence, Profile> {
|
|
118
|
-
private webSocketSync;
|
|
119
|
-
private pushPullSync;
|
|
120
|
-
private fileSync;
|
|
121
|
-
private activeSync;
|
|
122
|
-
private endpointProvider;
|
|
123
|
-
private onData;
|
|
124
|
-
private broadcastChannel;
|
|
125
|
-
private _activelySyncing;
|
|
126
|
-
private meta;
|
|
127
|
-
readonly presence: PresenceManager<Profile, Presence>;
|
|
128
|
-
private log;
|
|
129
|
-
constructor({ authEndpoint, fetchAuth, fetch, initialPresence, automaticTransportSelection, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, useBroadcastChannel, }: ServerSyncOptions<Profile, Presence>, { meta, log, onData, }: {
|
|
130
|
-
meta: Metadata;
|
|
131
|
-
log?: (...args: any[]) => void;
|
|
132
|
-
onData: (data: {
|
|
133
|
-
operations: Operation[];
|
|
134
|
-
baselines: DocumentBaseline[];
|
|
135
|
-
reset?: boolean;
|
|
136
|
-
}) => Promise<void>;
|
|
137
|
-
});
|
|
138
|
-
get canDoRealtime(): boolean;
|
|
139
|
-
get syncing(): boolean;
|
|
140
|
-
private handleBroadcastChannelMessage;
|
|
141
|
-
private onTokenExpired;
|
|
142
|
-
private handleMessage;
|
|
143
|
-
private handleOnlineChange;
|
|
144
|
-
private handlePresenceUpdate;
|
|
145
|
-
setMode: (transport: SyncTransportMode) => void;
|
|
146
|
-
setPullInterval: (interval: number) => void;
|
|
147
|
-
get pullInterval(): number;
|
|
148
|
-
send: (message: ClientMessage) => void;
|
|
149
|
-
uploadFile: (info: FileData) => Promise<FileUploadResult>;
|
|
150
|
-
getFile: (id: string) => Promise<FilePullResult>;
|
|
151
|
-
start: () => void;
|
|
152
|
-
stop: () => void;
|
|
153
|
-
ignoreIncoming(): void;
|
|
154
|
-
destroy: () => void;
|
|
155
|
-
reconnect: () => void;
|
|
156
|
-
get isConnected(): boolean;
|
|
157
|
-
get status(): "active" | "paused";
|
|
158
|
-
get mode(): SyncTransportMode;
|
|
159
|
-
}
|
|
160
|
-
export {};
|
package/dist/cjs/sync/Sync.js
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ServerSync = exports.NoSync = void 0;
|
|
4
|
-
const common_1 = require("@verdant-web/common");
|
|
5
|
-
const PresenceManager_js_1 = require("./PresenceManager.js");
|
|
6
|
-
const FileSync_js_1 = require("./FileSync.js");
|
|
7
|
-
const PushPullSync_js_1 = require("./PushPullSync.js");
|
|
8
|
-
const ServerSyncEndpointProvider_js_1 = require("./ServerSyncEndpointProvider.js");
|
|
9
|
-
const WebSocketSync_js_1 = require("./WebSocketSync.js");
|
|
10
|
-
class NoSync extends common_1.EventSubscriber {
|
|
11
|
-
send() { }
|
|
12
|
-
start() { }
|
|
13
|
-
stop() { }
|
|
14
|
-
ignoreIncoming() { }
|
|
15
|
-
reconnect() { }
|
|
16
|
-
setMode() { }
|
|
17
|
-
setPullInterval() { }
|
|
18
|
-
constructor({ meta }) {
|
|
19
|
-
super();
|
|
20
|
-
this.mode = 'pull';
|
|
21
|
-
this.destroy = () => { };
|
|
22
|
-
this.isConnected = false;
|
|
23
|
-
this.status = 'paused';
|
|
24
|
-
this.pullInterval = 0;
|
|
25
|
-
this.uploadFile = async () => {
|
|
26
|
-
return {
|
|
27
|
-
success: false,
|
|
28
|
-
retry: false,
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
this.getFile = async () => {
|
|
32
|
-
return {
|
|
33
|
-
success: false,
|
|
34
|
-
retry: false,
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
this.presence = new PresenceManager_js_1.PresenceManager({
|
|
38
|
-
initialPresence: null,
|
|
39
|
-
defaultProfile: null,
|
|
40
|
-
replicaStore: meta.localReplica,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.NoSync = NoSync;
|
|
45
|
-
class ServerSync extends common_1.EventSubscriber {
|
|
46
|
-
constructor({ authEndpoint, fetchAuth, fetch, initialPresence, automaticTransportSelection = true, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, useBroadcastChannel, }, { meta, log, onData, }) {
|
|
47
|
-
super();
|
|
48
|
-
this.broadcastChannel = null;
|
|
49
|
-
this._activelySyncing = false;
|
|
50
|
-
this.handleBroadcastChannelMessage = (event) => {
|
|
51
|
-
if (event.data.type === 'sync') {
|
|
52
|
-
this.handleMessage(event.data.message, { source: 'broadcastChannel' });
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
this.onTokenExpired = () => {
|
|
56
|
-
this.endpointProvider.clearCache();
|
|
57
|
-
};
|
|
58
|
-
this.handleMessage = async (message, { source } = {
|
|
59
|
-
source: 'network',
|
|
60
|
-
}) => {
|
|
61
|
-
var _a;
|
|
62
|
-
// TODO: move this into metadata
|
|
63
|
-
if (message.type === 'op-re' || message.type === 'sync-resp') {
|
|
64
|
-
for (const op of message.operations) {
|
|
65
|
-
this.meta.time.update(op.timestamp);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
this.log('sync message', JSON.stringify(message, null, 2));
|
|
69
|
-
switch (message.type) {
|
|
70
|
-
case 'op-re':
|
|
71
|
-
await this.onData({
|
|
72
|
-
operations: message.operations,
|
|
73
|
-
baselines: message.baselines,
|
|
74
|
-
});
|
|
75
|
-
if (message.globalAckTimestamp) {
|
|
76
|
-
await this.meta.setGlobalAck(message.globalAckTimestamp);
|
|
77
|
-
}
|
|
78
|
-
break;
|
|
79
|
-
case 'global-ack':
|
|
80
|
-
await this.meta.setGlobalAck(message.timestamp);
|
|
81
|
-
break;
|
|
82
|
-
case 'sync-resp':
|
|
83
|
-
this._activelySyncing = true;
|
|
84
|
-
this.emit('syncingChange', true);
|
|
85
|
-
await this.onData({
|
|
86
|
-
operations: message.operations,
|
|
87
|
-
baselines: message.baselines,
|
|
88
|
-
reset: message.overwriteLocalData,
|
|
89
|
-
});
|
|
90
|
-
if (message.globalAckTimestamp) {
|
|
91
|
-
await this.meta.setGlobalAck(message.globalAckTimestamp);
|
|
92
|
-
}
|
|
93
|
-
await this.meta.updateLastSynced(message.ackedTimestamp);
|
|
94
|
-
this._activelySyncing = false;
|
|
95
|
-
this.emit('syncingChange', false);
|
|
96
|
-
break;
|
|
97
|
-
case 'need-since':
|
|
98
|
-
this.activeSync.send(await this.meta.messageCreator.createSyncStep1(message.since));
|
|
99
|
-
break;
|
|
100
|
-
case 'server-ack':
|
|
101
|
-
await this.meta.updateLastSynced(message.timestamp);
|
|
102
|
-
}
|
|
103
|
-
// avoid rebroadcasting messages
|
|
104
|
-
if (source === 'network') {
|
|
105
|
-
(_a = this.broadcastChannel) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
106
|
-
type: 'sync',
|
|
107
|
-
message,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
// update presence if necessary
|
|
111
|
-
this.presence[PresenceManager_js_1.HANDLE_MESSAGE](await this.meta.localReplica.get(), message);
|
|
112
|
-
};
|
|
113
|
-
this.handleOnlineChange = (online) => {
|
|
114
|
-
this.emit('onlineChange', online);
|
|
115
|
-
};
|
|
116
|
-
this.handlePresenceUpdate = async (presence) => {
|
|
117
|
-
this.send(await this.meta.messageCreator.createPresenceUpdate(presence));
|
|
118
|
-
};
|
|
119
|
-
this.setMode = (transport) => {
|
|
120
|
-
if (transport === 'realtime' && !this.canDoRealtime) {
|
|
121
|
-
throw new Error(`Cannot switch to realtime mode, because the current auth token does not allow it`);
|
|
122
|
-
}
|
|
123
|
-
let newSync;
|
|
124
|
-
if (transport === 'realtime') {
|
|
125
|
-
newSync = this.webSocketSync;
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
newSync = this.pushPullSync;
|
|
129
|
-
}
|
|
130
|
-
if (newSync === this.activeSync)
|
|
131
|
-
return;
|
|
132
|
-
this.log('debug', 'switching to', transport, 'mode');
|
|
133
|
-
// transfer state to new sync
|
|
134
|
-
if (this.activeSync.status === 'active') {
|
|
135
|
-
newSync.start();
|
|
136
|
-
}
|
|
137
|
-
this.activeSync.stop();
|
|
138
|
-
this.activeSync = newSync;
|
|
139
|
-
};
|
|
140
|
-
this.setPullInterval = (interval) => {
|
|
141
|
-
this.pushPullSync.setInterval(interval);
|
|
142
|
-
};
|
|
143
|
-
this.send = (message) => {
|
|
144
|
-
if (this.activeSync.status === 'active') {
|
|
145
|
-
return this.activeSync.send(message);
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
this.uploadFile = async (info) => {
|
|
149
|
-
this.log('info', 'Uploading file', {
|
|
150
|
-
name: info.name,
|
|
151
|
-
type: info.type,
|
|
152
|
-
id: info.id,
|
|
153
|
-
});
|
|
154
|
-
if (this.activeSync.status === 'active') {
|
|
155
|
-
return this.fileSync.uploadFile(info);
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
return {
|
|
159
|
-
success: false,
|
|
160
|
-
retry: false,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
this.getFile = async (id) => {
|
|
165
|
-
// TODO: should this error? or just try anyway?
|
|
166
|
-
if (this.activeSync.status === 'active') {
|
|
167
|
-
return this.fileSync.getFile(id);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
throw new Error('Offline, cannot retrieve remote file details');
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
this.start = () => {
|
|
174
|
-
return this.activeSync.start();
|
|
175
|
-
};
|
|
176
|
-
this.stop = () => {
|
|
177
|
-
return this.activeSync.stop();
|
|
178
|
-
};
|
|
179
|
-
this.destroy = () => {
|
|
180
|
-
this.dispose();
|
|
181
|
-
this.webSocketSync.destroy();
|
|
182
|
-
this.pushPullSync.destroy();
|
|
183
|
-
};
|
|
184
|
-
this.reconnect = () => {
|
|
185
|
-
return this.activeSync.reconnect();
|
|
186
|
-
};
|
|
187
|
-
this.meta = meta;
|
|
188
|
-
this.onData = onData;
|
|
189
|
-
this.log = log || (() => { });
|
|
190
|
-
this.presence = new PresenceManager_js_1.PresenceManager({
|
|
191
|
-
initialPresence,
|
|
192
|
-
defaultProfile,
|
|
193
|
-
updateBatchTimeout: presenceUpdateBatchTimeout,
|
|
194
|
-
replicaStore: meta.localReplica,
|
|
195
|
-
});
|
|
196
|
-
this.endpointProvider = new ServerSyncEndpointProvider_js_1.ServerSyncEndpointProvider({
|
|
197
|
-
authEndpoint,
|
|
198
|
-
fetchAuth,
|
|
199
|
-
fetch,
|
|
200
|
-
});
|
|
201
|
-
this.webSocketSync = new WebSocketSync_js_1.WebSocketSync({
|
|
202
|
-
endpointProvider: this.endpointProvider,
|
|
203
|
-
meta,
|
|
204
|
-
presence: this.presence,
|
|
205
|
-
log: this.log,
|
|
206
|
-
});
|
|
207
|
-
this.pushPullSync = new PushPullSync_js_1.PushPullSync({
|
|
208
|
-
endpointProvider: this.endpointProvider,
|
|
209
|
-
meta,
|
|
210
|
-
presence: this.presence,
|
|
211
|
-
log: this.log,
|
|
212
|
-
interval: pullInterval,
|
|
213
|
-
fetch,
|
|
214
|
-
});
|
|
215
|
-
this.fileSync = new FileSync_js_1.FileSync({
|
|
216
|
-
endpointProvider: this.endpointProvider,
|
|
217
|
-
log: this.log,
|
|
218
|
-
});
|
|
219
|
-
if (useBroadcastChannel && 'BroadcastChannel' in window) {
|
|
220
|
-
this.broadcastChannel = new BroadcastChannel('verdant');
|
|
221
|
-
this.broadcastChannel.addEventListener('message', this.handleBroadcastChannelMessage);
|
|
222
|
-
}
|
|
223
|
-
if (initialTransport === 'realtime') {
|
|
224
|
-
this.activeSync = this.webSocketSync;
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
this.activeSync = this.pushPullSync;
|
|
228
|
-
}
|
|
229
|
-
this.presence.subscribe('update', this.handlePresenceUpdate);
|
|
230
|
-
this.meta.subscribe('message', this.send);
|
|
231
|
-
this.webSocketSync.subscribe('message', this.handleMessage);
|
|
232
|
-
this.webSocketSync.subscribe('onlineChange', this.handleOnlineChange);
|
|
233
|
-
this.pushPullSync.subscribe('message', this.handleMessage);
|
|
234
|
-
this.pushPullSync.subscribe('onlineChange', this.handleOnlineChange);
|
|
235
|
-
if (automaticTransportSelection && this.canDoRealtime) {
|
|
236
|
-
// automatically shift between transport modes depending
|
|
237
|
-
// on whether any peers are present
|
|
238
|
-
const decideIfUpgrade = () => {
|
|
239
|
-
if (switchoverTimeout) {
|
|
240
|
-
clearTimeout(switchoverTimeout);
|
|
241
|
-
}
|
|
242
|
-
const hasPeers = Object.keys(this.presence.peers).length > 0;
|
|
243
|
-
const shouldUpgrade = hasPeers ||
|
|
244
|
-
(automaticTransportSelection !== 'peers-only' &&
|
|
245
|
-
this.presence.selfReplicaIds.size > 1);
|
|
246
|
-
if (shouldUpgrade && this.mode === 'pull') {
|
|
247
|
-
this.setMode('realtime');
|
|
248
|
-
}
|
|
249
|
-
else if (!shouldUpgrade && this.mode === 'realtime') {
|
|
250
|
-
// wait 1 second then switch to pull mode if still empty
|
|
251
|
-
switchoverTimeout = setTimeout(() => {
|
|
252
|
-
if (Object.keys(this.presence.peers).length === 0) {
|
|
253
|
-
this.setMode('pull');
|
|
254
|
-
}
|
|
255
|
-
}, 1000);
|
|
256
|
-
}
|
|
257
|
-
};
|
|
258
|
-
let switchoverTimeout;
|
|
259
|
-
this.presence.subscribe('peersChanged', decideIfUpgrade);
|
|
260
|
-
if (automaticTransportSelection !== 'peers-only') {
|
|
261
|
-
this.presence.subscribe('selfChanged', decideIfUpgrade);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
if (autoStart) {
|
|
265
|
-
this.start();
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
get canDoRealtime() {
|
|
269
|
-
return (this.endpointProvider.type === common_1.ReplicaType.Realtime ||
|
|
270
|
-
this.endpointProvider.type === common_1.ReplicaType.PassiveRealtime ||
|
|
271
|
-
this.endpointProvider.type === common_1.ReplicaType.ReadOnlyRealtime);
|
|
272
|
-
}
|
|
273
|
-
get syncing() {
|
|
274
|
-
return this._activelySyncing;
|
|
275
|
-
}
|
|
276
|
-
get pullInterval() {
|
|
277
|
-
return this.pushPullSync.interval;
|
|
278
|
-
}
|
|
279
|
-
ignoreIncoming() {
|
|
280
|
-
this.activeSync.ignoreIncoming();
|
|
281
|
-
}
|
|
282
|
-
get isConnected() {
|
|
283
|
-
return this.activeSync.isConnected;
|
|
284
|
-
}
|
|
285
|
-
get status() {
|
|
286
|
-
return this.activeSync.status;
|
|
287
|
-
}
|
|
288
|
-
get mode() {
|
|
289
|
-
return this.activeSync.mode;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
exports.ServerSync = ServerSync;
|
|
293
|
-
//# sourceMappingURL=Sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../src/sync/Sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { ClientMessage, EventSubscriber } from '@verdant-web/common';
|
|
2
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
3
|
-
import { PresenceManager } from './PresenceManager.js';
|
|
4
|
-
import { ServerSyncEndpointProvider } from './ServerSyncEndpointProvider.js';
|
|
5
|
-
import { SyncTransport, SyncTransportEvents } from './Sync.js';
|
|
6
|
-
export declare class WebSocketSync extends EventSubscriber<SyncTransportEvents> implements SyncTransport {
|
|
7
|
-
private meta;
|
|
8
|
-
readonly presence: PresenceManager;
|
|
9
|
-
private socket;
|
|
10
|
-
private connectQueue;
|
|
11
|
-
private syncQueue;
|
|
12
|
-
private incomingQueue;
|
|
13
|
-
private endpointProvider;
|
|
14
|
-
private _status;
|
|
15
|
-
private synced;
|
|
16
|
-
private hasStartedSync;
|
|
17
|
-
private _ignoreIncoming;
|
|
18
|
-
readonly mode = "realtime";
|
|
19
|
-
private log;
|
|
20
|
-
private heartbeat;
|
|
21
|
-
private reconnectScheduler;
|
|
22
|
-
constructor({ endpointProvider, meta, presence, log, }: {
|
|
23
|
-
endpointProvider: ServerSyncEndpointProvider;
|
|
24
|
-
meta: Metadata;
|
|
25
|
-
presence: PresenceManager;
|
|
26
|
-
log?: (...args: any[]) => any;
|
|
27
|
-
});
|
|
28
|
-
private onOpen;
|
|
29
|
-
private onOnlineChange;
|
|
30
|
-
private onMessage;
|
|
31
|
-
private onError;
|
|
32
|
-
private onClose;
|
|
33
|
-
private initializeSocket;
|
|
34
|
-
private sendHeartbeat;
|
|
35
|
-
reconnect: () => void;
|
|
36
|
-
private canSkipSyncWait;
|
|
37
|
-
send: (message: ClientMessage) => void;
|
|
38
|
-
destroy: () => void;
|
|
39
|
-
start: () => void;
|
|
40
|
-
stop: () => void;
|
|
41
|
-
ignoreIncoming(): void;
|
|
42
|
-
get isConnected(): boolean;
|
|
43
|
-
get status(): "active" | "paused";
|
|
44
|
-
}
|