@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,53 +0,0 @@
|
|
|
1
|
-
import { Context } from '../context.js';
|
|
2
|
-
import { Disposable } from '../utils/Disposable.js';
|
|
3
|
-
export type BaseQueryEvents = {
|
|
4
|
-
change: (value: any) => void;
|
|
5
|
-
statusChange: (status: QueryStatus) => void;
|
|
6
|
-
};
|
|
7
|
-
export type BaseQueryOptions<T> = {
|
|
8
|
-
context: Context;
|
|
9
|
-
initial: T;
|
|
10
|
-
collection: string;
|
|
11
|
-
key: string;
|
|
12
|
-
shouldUpdate?: (updatedCollections: string[]) => boolean;
|
|
13
|
-
};
|
|
14
|
-
export type QueryStatus = 'initial' | 'initializing' | 'revalidating' | 'ready';
|
|
15
|
-
export declare const ON_ALL_UNSUBSCRIBED: unique symbol;
|
|
16
|
-
export declare const UPDATE: unique symbol;
|
|
17
|
-
export declare abstract class BaseQuery<T> extends Disposable {
|
|
18
|
-
private _rawValue;
|
|
19
|
-
private _value;
|
|
20
|
-
private _events;
|
|
21
|
-
private _internalUnsubscribes;
|
|
22
|
-
private _allUnsubscribedHandler?;
|
|
23
|
-
private _status;
|
|
24
|
-
private _executionPromise;
|
|
25
|
-
protected context: Context;
|
|
26
|
-
readonly collection: string;
|
|
27
|
-
readonly key: string;
|
|
28
|
-
constructor({ initial, context, collection, key, shouldUpdate, }: BaseQueryOptions<T>);
|
|
29
|
-
get current(): T;
|
|
30
|
-
get resolved(): Promise<T>;
|
|
31
|
-
get subscribed(): boolean;
|
|
32
|
-
get status(): QueryStatus;
|
|
33
|
-
/**
|
|
34
|
-
* Subscribe to changes in the query value.
|
|
35
|
-
*
|
|
36
|
-
* @deprecated use the two parameter form instead
|
|
37
|
-
*/
|
|
38
|
-
subscribe(callback: (value: T) => void): () => void;
|
|
39
|
-
/**
|
|
40
|
-
* Subscribe to changes in the query value.
|
|
41
|
-
*/
|
|
42
|
-
subscribe(event: 'change', callback: (value: T) => void): () => void;
|
|
43
|
-
/**
|
|
44
|
-
* Subscribe to changes in the query state.
|
|
45
|
-
*/
|
|
46
|
-
subscribe(event: 'statusChange', callback: (status: QueryStatus) => void): () => void;
|
|
47
|
-
protected setValue: (value: T) => void;
|
|
48
|
-
protected refreshValue: () => void;
|
|
49
|
-
private subscribeToDeleteAndRestore;
|
|
50
|
-
execute: () => Promise<T>;
|
|
51
|
-
protected abstract run(): Promise<void>;
|
|
52
|
-
[ON_ALL_UNSUBSCRIBED]: (handler: (query: BaseQuery<T>) => void) => void;
|
|
53
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { CollectionFilter } from '@verdant-web/common';
|
|
2
|
-
import { Context } from '../context.js';
|
|
3
|
-
import { EntityStore } from '../entities/EntityStore.js';
|
|
4
|
-
import { GetQuery } from './GetQuery.js';
|
|
5
|
-
import { QueryCache } from './QueryCache.js';
|
|
6
|
-
import { FindOneQuery } from './FindOneQuery.js';
|
|
7
|
-
import { FindPageQuery } from './FindPageQuery.js';
|
|
8
|
-
import { FindInfiniteQuery } from './FindInfiniteQuery.js';
|
|
9
|
-
import { FindAllQuery } from './FindAllQuery.js';
|
|
10
|
-
import { DocumentManager } from '../DocumentManager.js';
|
|
11
|
-
import { ObjectEntity } from '../index.js';
|
|
12
|
-
export declare class CollectionQueries<T extends ObjectEntity<any, any>, Init, Filter extends CollectionFilter> {
|
|
13
|
-
private cache;
|
|
14
|
-
private collection;
|
|
15
|
-
private hydrate;
|
|
16
|
-
private context;
|
|
17
|
-
private documentManager;
|
|
18
|
-
put: (init: Init, options?: {
|
|
19
|
-
undoable?: boolean;
|
|
20
|
-
}) => Promise<T>;
|
|
21
|
-
delete: (id: string, options?: {
|
|
22
|
-
undoable?: boolean;
|
|
23
|
-
}) => Promise<void>;
|
|
24
|
-
deleteAll: (ids: string[], options?: {
|
|
25
|
-
undoable?: boolean;
|
|
26
|
-
}) => Promise<void>;
|
|
27
|
-
constructor({ collection, cache, entities, context, documentManager, }: {
|
|
28
|
-
collection: string;
|
|
29
|
-
cache: QueryCache;
|
|
30
|
-
entities: EntityStore;
|
|
31
|
-
context: Context;
|
|
32
|
-
documentManager: DocumentManager<any>;
|
|
33
|
-
});
|
|
34
|
-
private serializeIndex;
|
|
35
|
-
get: (id: string) => GetQuery<T>;
|
|
36
|
-
findOne: ({ index, key: providedKey, }?: {
|
|
37
|
-
index?: Filter | undefined;
|
|
38
|
-
key?: string | undefined;
|
|
39
|
-
}) => FindOneQuery<T>;
|
|
40
|
-
findAll: ({ index, key: providedKey, }?: {
|
|
41
|
-
index?: Filter | undefined;
|
|
42
|
-
key?: string | undefined;
|
|
43
|
-
}) => FindAllQuery<T>;
|
|
44
|
-
findPage: ({ index, pageSize, page, key: providedKey, }: {
|
|
45
|
-
index?: Filter | undefined;
|
|
46
|
-
pageSize: number;
|
|
47
|
-
page: number;
|
|
48
|
-
key?: string | undefined;
|
|
49
|
-
}) => FindPageQuery<T>;
|
|
50
|
-
findAllInfinite: ({ index, pageSize, key: providedKey, }: {
|
|
51
|
-
index?: Filter | undefined;
|
|
52
|
-
pageSize: number;
|
|
53
|
-
key?: string | undefined;
|
|
54
|
-
}) => FindInfiniteQuery<T>;
|
|
55
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { CollectionFilter } from '@verdant-web/common';
|
|
2
|
-
import { BaseQuery, BaseQueryOptions, UPDATE } from './BaseQuery.js';
|
|
3
|
-
export declare class FindAllQuery<T> extends BaseQuery<T[]> {
|
|
4
|
-
private index;
|
|
5
|
-
private hydrate;
|
|
6
|
-
constructor({ index, hydrate, ...rest }: {
|
|
7
|
-
index?: CollectionFilter;
|
|
8
|
-
hydrate: (oid: string) => Promise<T>;
|
|
9
|
-
} & Omit<BaseQueryOptions<T[]>, 'initial'>);
|
|
10
|
-
protected run: () => Promise<void>;
|
|
11
|
-
[UPDATE]: (index: CollectionFilter | undefined) => void;
|
|
12
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { CollectionFilter } from '@verdant-web/common';
|
|
2
|
-
import { BaseQuery, BaseQueryOptions, UPDATE } from './BaseQuery.js';
|
|
3
|
-
export declare class FindInfiniteQuery<T> extends BaseQuery<T[]> {
|
|
4
|
-
private index;
|
|
5
|
-
private hydrate;
|
|
6
|
-
private _upToPage;
|
|
7
|
-
private _pageSize;
|
|
8
|
-
private _hasNextPage;
|
|
9
|
-
get pageSize(): number;
|
|
10
|
-
get hasMore(): boolean;
|
|
11
|
-
constructor({ hydrate, pageSize, index, ...rest }: {
|
|
12
|
-
hydrate: (oid: string) => Promise<T>;
|
|
13
|
-
pageSize: number;
|
|
14
|
-
index?: CollectionFilter;
|
|
15
|
-
} & Omit<BaseQueryOptions<T[]>, 'initial'>);
|
|
16
|
-
protected run: () => Promise<void>;
|
|
17
|
-
loadMore: () => Promise<void>;
|
|
18
|
-
[UPDATE]: (index: CollectionFilter | undefined) => void;
|
|
19
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { CollectionFilter } from '@verdant-web/common';
|
|
2
|
-
import { BaseQuery, BaseQueryOptions, UPDATE } from './BaseQuery.js';
|
|
3
|
-
export declare class FindOneQuery<T> extends BaseQuery<T | null> {
|
|
4
|
-
private index;
|
|
5
|
-
private hydrate;
|
|
6
|
-
constructor({ index, hydrate, ...rest }: {
|
|
7
|
-
index?: CollectionFilter;
|
|
8
|
-
hydrate: (oid: string) => Promise<T>;
|
|
9
|
-
} & Omit<BaseQueryOptions<T | null>, 'initial'>);
|
|
10
|
-
protected run: () => Promise<void>;
|
|
11
|
-
[UPDATE]: (index: CollectionFilter | undefined) => void;
|
|
12
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { CollectionFilter } from '@verdant-web/common';
|
|
2
|
-
import { BaseQuery, BaseQueryOptions, UPDATE } from './BaseQuery.js';
|
|
3
|
-
export declare class FindPageQuery<T> extends BaseQuery<T[]> {
|
|
4
|
-
private index;
|
|
5
|
-
private hydrate;
|
|
6
|
-
private _pageSize;
|
|
7
|
-
private _page;
|
|
8
|
-
private _hasNextPage;
|
|
9
|
-
get pageSize(): number;
|
|
10
|
-
get page(): number;
|
|
11
|
-
get hasNextPage(): boolean;
|
|
12
|
-
get hasPreviousPage(): boolean;
|
|
13
|
-
constructor({ index, hydrate, pageSize, page, ...rest }: {
|
|
14
|
-
index?: CollectionFilter;
|
|
15
|
-
hydrate: (oid: string) => Promise<T>;
|
|
16
|
-
pageSize: number;
|
|
17
|
-
page: number;
|
|
18
|
-
} & Omit<BaseQueryOptions<T[]>, 'initial'>);
|
|
19
|
-
protected run: () => Promise<void>;
|
|
20
|
-
nextPage: () => Promise<void>;
|
|
21
|
-
previousPage: () => Promise<void>;
|
|
22
|
-
setPage: (page: number) => Promise<void>;
|
|
23
|
-
[UPDATE]: (index: CollectionFilter | undefined) => void;
|
|
24
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { BaseQuery, BaseQueryOptions } from './BaseQuery.js';
|
|
2
|
-
export declare class GetQuery<T> extends BaseQuery<T | null> {
|
|
3
|
-
private hydrate;
|
|
4
|
-
private oid;
|
|
5
|
-
constructor({ id, hydrate, ...rest }: {
|
|
6
|
-
id: string;
|
|
7
|
-
hydrate: (oid: string) => Promise<T>;
|
|
8
|
-
} & Omit<BaseQueryOptions<T | null>, 'initial'>);
|
|
9
|
-
protected run: () => Promise<void>;
|
|
10
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Context } from '../context.js';
|
|
2
|
-
import { Disposable } from '../utils/Disposable.js';
|
|
3
|
-
import { BaseQuery } from './BaseQuery.js';
|
|
4
|
-
export declare class QueryCache extends Disposable {
|
|
5
|
-
private _cache;
|
|
6
|
-
private _evictionTime;
|
|
7
|
-
private context;
|
|
8
|
-
constructor({ evictionTime, context, }: {
|
|
9
|
-
evictionTime?: number;
|
|
10
|
-
context: Context;
|
|
11
|
-
});
|
|
12
|
-
get<T extends BaseQuery<any>>(key: string): T | null;
|
|
13
|
-
set<V extends BaseQuery<any>>(value: V): V;
|
|
14
|
-
getOrSet<V extends BaseQuery<any>>(key: string, create: () => V, update?: (query: V) => void): V;
|
|
15
|
-
private onQueryUnsubscribed;
|
|
16
|
-
dropAll: () => void;
|
|
17
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ObjectIdentifier } from '@verdant-web/common';
|
|
2
|
-
import { IDBService } from '../IDBService.js';
|
|
3
|
-
import { Context } from '../context.js';
|
|
4
|
-
export declare class QueryableStorage extends IDBService {
|
|
5
|
-
private ctx;
|
|
6
|
-
constructor({ ctx }: {
|
|
7
|
-
ctx: Context;
|
|
8
|
-
});
|
|
9
|
-
/**
|
|
10
|
-
* DELETES EVERYTHING IN THE QUERYABLE DATABASE
|
|
11
|
-
*/
|
|
12
|
-
reset: () => Promise<void>;
|
|
13
|
-
saveEntities: (entities: {
|
|
14
|
-
oid: ObjectIdentifier;
|
|
15
|
-
getSnapshot: () => any;
|
|
16
|
-
}[], opts?: {
|
|
17
|
-
abort?: AbortSignal;
|
|
18
|
-
}) => Promise<void>;
|
|
19
|
-
private saveDocument;
|
|
20
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { CollectionFilter } from '@verdant-web/common';
|
|
2
|
-
import { Context } from '../context.js';
|
|
3
|
-
export declare function findOneOid({ collection, index, context, }: {
|
|
4
|
-
collection: string;
|
|
5
|
-
index?: CollectionFilter;
|
|
6
|
-
context: Context;
|
|
7
|
-
}): Promise<string | null>;
|
|
8
|
-
export declare function findAllOids({ collection, index, context, }: {
|
|
9
|
-
collection: string;
|
|
10
|
-
index?: CollectionFilter;
|
|
11
|
-
context: Context;
|
|
12
|
-
}): Promise<string[]>;
|
|
13
|
-
export declare function findPageOfOids({ collection, index, context, limit, offset, }: {
|
|
14
|
-
collection: string;
|
|
15
|
-
index?: CollectionFilter;
|
|
16
|
-
context: Context;
|
|
17
|
-
limit?: number;
|
|
18
|
-
offset?: number;
|
|
19
|
-
}): Promise<{
|
|
20
|
-
result: string[];
|
|
21
|
-
hasNextPage: boolean;
|
|
22
|
-
}>;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface QueryParams {
|
|
2
|
-
collection: string;
|
|
3
|
-
range: IDBKeyRange | IDBValidKey | undefined;
|
|
4
|
-
index?: string;
|
|
5
|
-
direction?: IDBCursorDirection;
|
|
6
|
-
limit?: number;
|
|
7
|
-
single?: boolean;
|
|
8
|
-
write?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare function getQueryKey({ range, ...rest }: QueryParams): string;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { FindAllQuery } from './FindAllQuery.js';
|
|
2
|
-
import type { FindPageQuery } from './FindPageQuery.js';
|
|
3
|
-
import type { FindOneQuery } from './FindOneQuery.js';
|
|
4
|
-
import type { FindInfiniteQuery } from './FindInfiniteQuery.js';
|
|
5
|
-
import type { GetQuery } from './GetQuery.js';
|
|
6
|
-
export type Query<T> = FindAllQuery<T> | FindPageQuery<T> | FindOneQuery<T> | FindInfiniteQuery<T> | GetQuery<T>;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { FileData } from '@verdant-web/common';
|
|
2
|
-
import { ServerSyncEndpointProvider } from './ServerSyncEndpointProvider.js';
|
|
3
|
-
export interface FileUploadResult {
|
|
4
|
-
success: boolean;
|
|
5
|
-
retry: boolean;
|
|
6
|
-
}
|
|
7
|
-
export type FilePullResult = {
|
|
8
|
-
success: true;
|
|
9
|
-
data: FileData;
|
|
10
|
-
} | {
|
|
11
|
-
success: false;
|
|
12
|
-
retry: boolean;
|
|
13
|
-
error?: any;
|
|
14
|
-
};
|
|
15
|
-
export declare class FileSync {
|
|
16
|
-
private endpointProvider;
|
|
17
|
-
private log;
|
|
18
|
-
constructor({ endpointProvider, log, }: {
|
|
19
|
-
endpointProvider: ServerSyncEndpointProvider;
|
|
20
|
-
log: (...args: any[]) => any;
|
|
21
|
-
});
|
|
22
|
-
uploadFile: (data: FileData) => Promise<FileUploadResult>;
|
|
23
|
-
getFile: (id: string) => Promise<FilePullResult>;
|
|
24
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { EventSubscriber } from '@verdant-web/common';
|
|
2
|
-
export declare class Heartbeat extends EventSubscriber<{
|
|
3
|
-
missed: () => void;
|
|
4
|
-
beat: () => void;
|
|
5
|
-
}> {
|
|
6
|
-
private _interval;
|
|
7
|
-
private deadlineLength;
|
|
8
|
-
private nextBeat;
|
|
9
|
-
private deadline;
|
|
10
|
-
get interval(): number;
|
|
11
|
-
constructor({ interval, deadlineLength, restartOnTabFocus, }?: {
|
|
12
|
-
interval?: number;
|
|
13
|
-
deadlineLength?: number;
|
|
14
|
-
restartOnTabFocus?: boolean;
|
|
15
|
-
});
|
|
16
|
-
keepAlive: () => void;
|
|
17
|
-
start: (immediate?: boolean) => void;
|
|
18
|
-
stop: () => void;
|
|
19
|
-
private beat;
|
|
20
|
-
private onDeadline;
|
|
21
|
-
/**
|
|
22
|
-
* Only takes affect after the next beat
|
|
23
|
-
*/
|
|
24
|
-
setInterval: (interval: number) => void;
|
|
25
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { ServerMessage, EventSubscriber } from '@verdant-web/common';
|
|
2
|
-
import type { UserInfo } from '../index.js';
|
|
3
|
-
import { LocalReplicaInfo, LocalReplicaStore } from '../metadata/LocalReplicaStore.js';
|
|
4
|
-
export declare const HANDLE_MESSAGE: unique symbol;
|
|
5
|
-
export declare class PresenceManager<Profile = any, Presence = any> extends EventSubscriber<{
|
|
6
|
-
/**
|
|
7
|
-
* Fired when a particular peer's presence changes
|
|
8
|
-
*/
|
|
9
|
-
peerChanged: (userId: string, presence: UserInfo<Profile, Presence>) => void;
|
|
10
|
-
/**
|
|
11
|
-
* Fired immediately when a change to local presence is made. This change may not
|
|
12
|
-
* yet have been sent to the server (see: "update" event)
|
|
13
|
-
*/
|
|
14
|
-
selfChanged: (presence: UserInfo<Profile, Presence>) => void;
|
|
15
|
-
/** Fired when any number of peer presences have changed */
|
|
16
|
-
peersChanged: (peers: Record<string, UserInfo<Profile, Presence>>) => void;
|
|
17
|
-
/** Fired when a peer presence goes offline */
|
|
18
|
-
peerLeft: (userId: string, lastPresence: UserInfo<Profile, Presence>) => void;
|
|
19
|
-
/** Fired after local presence changes are flushed to the server. */
|
|
20
|
-
update: (presence: Partial<Presence>) => void;
|
|
21
|
-
load: () => void;
|
|
22
|
-
}> {
|
|
23
|
-
private _peers;
|
|
24
|
-
private _self;
|
|
25
|
-
private _selfReplicaIds;
|
|
26
|
-
private _peerIds;
|
|
27
|
-
private _updateBatcher;
|
|
28
|
-
private _updateBatch;
|
|
29
|
-
get self(): UserInfo<Profile, Presence>;
|
|
30
|
-
get peers(): Record<string, UserInfo<Profile, Presence>>;
|
|
31
|
-
get peerIds(): string[];
|
|
32
|
-
get everyone(): {
|
|
33
|
-
[x: string]: UserInfo<Profile, Presence>;
|
|
34
|
-
};
|
|
35
|
-
get selfReplicaIds(): Set<string>;
|
|
36
|
-
constructor({ initialPresence, updateBatchTimeout, defaultProfile, replicaStore, }: {
|
|
37
|
-
initialPresence: Presence;
|
|
38
|
-
defaultProfile: Profile;
|
|
39
|
-
updateBatchTimeout?: number;
|
|
40
|
-
replicaStore: LocalReplicaStore;
|
|
41
|
-
});
|
|
42
|
-
/**
|
|
43
|
-
* Decides if an update is for the local user or not. Even if it's a different replica
|
|
44
|
-
* than the local one.
|
|
45
|
-
*
|
|
46
|
-
* If the replicaId matches, we use that first - we may not know the local replica's User ID yet,
|
|
47
|
-
* e.g. on the first presence update.
|
|
48
|
-
*
|
|
49
|
-
* Otherwise, match the user ID to our local copy.
|
|
50
|
-
*/
|
|
51
|
-
private isSelf;
|
|
52
|
-
[HANDLE_MESSAGE]: (localReplicaInfo: LocalReplicaInfo, message: ServerMessage) => Promise<void>;
|
|
53
|
-
update: (presence: Partial<Presence>) => Promise<void>;
|
|
54
|
-
flushPresenceUpdates: (presenceUpdates: Partial<Presence>[]) => void;
|
|
55
|
-
}
|
|
@@ -1,39 +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 PushPullSync extends EventSubscriber<SyncTransportEvents> implements SyncTransport {
|
|
7
|
-
readonly meta: Metadata;
|
|
8
|
-
readonly presence: PresenceManager;
|
|
9
|
-
private endpointProvider;
|
|
10
|
-
private heartbeat;
|
|
11
|
-
private fetch;
|
|
12
|
-
readonly mode = "pull";
|
|
13
|
-
private log;
|
|
14
|
-
private _isConnected;
|
|
15
|
-
private _status;
|
|
16
|
-
private _hasSynced;
|
|
17
|
-
constructor({ endpointProvider, meta, presence, interval, log, fetch, }: {
|
|
18
|
-
endpointProvider: ServerSyncEndpointProvider;
|
|
19
|
-
meta: Metadata;
|
|
20
|
-
presence: PresenceManager;
|
|
21
|
-
interval?: number;
|
|
22
|
-
log?: (...args: any[]) => any;
|
|
23
|
-
fetch?: typeof window.fetch;
|
|
24
|
-
});
|
|
25
|
-
setInterval: (interval: number) => void;
|
|
26
|
-
get interval(): number;
|
|
27
|
-
private sendRequest;
|
|
28
|
-
private handleServerMessage;
|
|
29
|
-
send: (message: ClientMessage) => Promise<void> | undefined;
|
|
30
|
-
start(): void;
|
|
31
|
-
stop(): void;
|
|
32
|
-
destroy: () => void;
|
|
33
|
-
reconnect(): void;
|
|
34
|
-
ignoreIncoming(): void;
|
|
35
|
-
private onHeartbeat;
|
|
36
|
-
private onHeartbeatMissed;
|
|
37
|
-
get isConnected(): boolean;
|
|
38
|
-
get status(): "active" | "paused";
|
|
39
|
-
}
|
|
@@ -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
|
-
}
|
package/dist/esm/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 {};
|
|
@@ -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
|
-
}
|