@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,103 +0,0 @@
|
|
|
1
|
-
import { ObjectIdentifier } from '@verdant-web/common';
|
|
2
|
-
import type { Entity } from './Entity.js';
|
|
3
|
-
export type AccessibleEntityProperty<T> = T extends Array<any> ? number : T extends object ? keyof T : never;
|
|
4
|
-
export type DataFromInit<Init> = Init extends {
|
|
5
|
-
[key: string]: any;
|
|
6
|
-
} ? {
|
|
7
|
-
[Key in keyof Init]: Init[Key];
|
|
8
|
-
} : Init extends Array<any> ? Init : any;
|
|
9
|
-
export type DeletableKeys<T> = keyof {
|
|
10
|
-
[Key in keyof T as IfNullableThen<T[Key], Key>]: Key;
|
|
11
|
-
};
|
|
12
|
-
type IfNullableThen<T, Out> = undefined extends T ? Out : null extends T ? Out : never;
|
|
13
|
-
export type EntityShape<E extends Entity<any, any>> = E extends Entity<infer Value, any> ? Value : never;
|
|
14
|
-
export type BaseEntityValue = {
|
|
15
|
-
[Key: string]: any;
|
|
16
|
-
} | any[];
|
|
17
|
-
export interface EntityChange {
|
|
18
|
-
oid: ObjectIdentifier;
|
|
19
|
-
isLocal: boolean;
|
|
20
|
-
}
|
|
21
|
-
export interface EntityChangeInfo {
|
|
22
|
-
isLocal?: boolean;
|
|
23
|
-
}
|
|
24
|
-
export type EntityEvents = {
|
|
25
|
-
change: (info: EntityChangeInfo) => void;
|
|
26
|
-
changeDeep: (target: BaseEntity<any, any, any>, info: EntityChangeInfo) => void;
|
|
27
|
-
delete: (info: EntityChangeInfo) => void;
|
|
28
|
-
restore: (info: EntityChangeInfo) => void;
|
|
29
|
-
};
|
|
30
|
-
export interface BaseEntity<Init, Value extends BaseEntityValue, Snapshot = DataFromInit<Init>> {
|
|
31
|
-
dispose: () => void;
|
|
32
|
-
subscribe<EventName extends keyof EntityEvents>(event: EventName, callback: EntityEvents[EventName]): () => void;
|
|
33
|
-
get<Key extends keyof Value>(key: Key): Value[Key];
|
|
34
|
-
getAll(): Value;
|
|
35
|
-
getSnapshot(): Snapshot;
|
|
36
|
-
readonly deleted: boolean;
|
|
37
|
-
readonly updatedAt: number;
|
|
38
|
-
readonly uid: string;
|
|
39
|
-
}
|
|
40
|
-
export type DeepPartial<T> = T extends object ? {
|
|
41
|
-
[P in keyof T]?: DeepPartial<T[P]>;
|
|
42
|
-
} : T;
|
|
43
|
-
export interface ObjectEntity<Init, Value extends BaseEntityValue, Snapshot = DataFromInit<Init>> extends BaseEntity<Init, Value, Snapshot> {
|
|
44
|
-
keys(): string[];
|
|
45
|
-
entries(): [string, Exclude<Value[keyof Value], undefined>][];
|
|
46
|
-
values(): Exclude<Value[keyof Value], undefined>[];
|
|
47
|
-
set<Key extends keyof Init>(key: Key, value: Init[Key]): void;
|
|
48
|
-
delete(key: DeletableKeys<Value>): void;
|
|
49
|
-
update(value: DeepPartial<Init>, options?: {
|
|
50
|
-
/**
|
|
51
|
-
* Forces the replacement of sub-objects in the update payload - rather than
|
|
52
|
-
* Verdant keeping their identities intact and merging changes, your update
|
|
53
|
-
* will replace these objects entirely, overwriting any other changes from other
|
|
54
|
-
* sources.
|
|
55
|
-
*
|
|
56
|
-
* Useful when the update you're making is logically replacing sub-objects, rather
|
|
57
|
-
* than simply modifying them.
|
|
58
|
-
*
|
|
59
|
-
* Default: false
|
|
60
|
-
*/
|
|
61
|
-
replaceSubObjects?: boolean;
|
|
62
|
-
/**
|
|
63
|
-
* If set to false, this will drop any keys in the object which were
|
|
64
|
-
* not provided in your update payload, while also merging the ones that
|
|
65
|
-
* were. This option only works for `map` and `any` type fields; you cannot
|
|
66
|
-
* use it with defined `object` type fields.
|
|
67
|
-
*
|
|
68
|
-
* Default: true
|
|
69
|
-
*/
|
|
70
|
-
merge?: boolean;
|
|
71
|
-
}): void;
|
|
72
|
-
readonly isList: false;
|
|
73
|
-
}
|
|
74
|
-
export interface ListEntity<Init, Value extends BaseEntityValue, Snapshot = DataFromInit<Init>> extends Iterable<ListItemValue<Value>>, BaseEntity<Init, Value, Snapshot> {
|
|
75
|
-
readonly isList: true;
|
|
76
|
-
readonly length: number;
|
|
77
|
-
push(value: ListItemInit<Init>): void;
|
|
78
|
-
insert(index: number, value: ListItemInit<Init>): void;
|
|
79
|
-
move(from: number, to: number): void;
|
|
80
|
-
moveItem(item: ListItemValue<Value>, to: number): void;
|
|
81
|
-
/**
|
|
82
|
-
* A Set operation which adds a value if an equivalent value is not already present.
|
|
83
|
-
* Object values are never the same.
|
|
84
|
-
*/
|
|
85
|
-
add(value: ListItemValue<Value>): void;
|
|
86
|
-
removeAll(item: ListItemValue<Value>): void;
|
|
87
|
-
removeFirst(item: ListItemValue<Value>): void;
|
|
88
|
-
removeLast(item: ListItemValue<Value>): void;
|
|
89
|
-
map<U>(callback: (value: ListItemValue<Value>, index: number) => U): U[];
|
|
90
|
-
filter(callback: (value: ListItemValue<Value>, index: number) => boolean): ListItemValue<Value>[];
|
|
91
|
-
delete(index: number): void;
|
|
92
|
-
has(value: ListItemValue<Value>): boolean;
|
|
93
|
-
forEach(callback: (value: ListItemValue<Value>, index: number) => void): void;
|
|
94
|
-
some(predicate: (value: ListItemValue<Value>) => boolean): boolean;
|
|
95
|
-
every(predicate: (value: ListItemValue<Value>) => boolean): boolean;
|
|
96
|
-
find(predicate: (value: ListItemValue<Value>) => boolean): ListItemValue<Value> | undefined;
|
|
97
|
-
includes(value: ListItemValue<Value>): boolean;
|
|
98
|
-
}
|
|
99
|
-
export type AnyEntity<Init, KeyValue extends BaseEntityValue, Snapshot extends any> = ListEntity<Init, KeyValue, Snapshot> | ObjectEntity<Init, KeyValue, Snapshot>;
|
|
100
|
-
export type ListItemValue<KeyValue> = KeyValue extends Array<infer T> ? T : never;
|
|
101
|
-
export type ListItemInit<Init> = Init extends Array<infer T> ? T : never;
|
|
102
|
-
export type EntityDestructured<T extends AnyEntity<any, any, any> | null> = (T extends ListEntity<any, infer KeyValue, any> ? KeyValue : T extends ObjectEntity<any, infer KeyValue, any> ? KeyValue : never) | (T extends null ? null : never);
|
|
103
|
-
export {};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { EventSubscriber, FileData } from '@verdant-web/common';
|
|
2
|
-
export type EntityFileEvents = {
|
|
3
|
-
change: () => void;
|
|
4
|
-
};
|
|
5
|
-
export declare const UPDATE: unique symbol;
|
|
6
|
-
export declare const MARK_FAILED: unique symbol;
|
|
7
|
-
export type EntityFileSnapshot = {
|
|
8
|
-
id: string;
|
|
9
|
-
url?: string | null;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Provides a consistent interface for files used in an app via
|
|
13
|
-
* Entity access.
|
|
14
|
-
*/
|
|
15
|
-
export declare class EntityFile extends EventSubscriber<EntityFileEvents> {
|
|
16
|
-
readonly id: string;
|
|
17
|
-
private _objectUrl;
|
|
18
|
-
private _fileData;
|
|
19
|
-
private _loading;
|
|
20
|
-
private _failed;
|
|
21
|
-
private _downloadRemote;
|
|
22
|
-
constructor(id: string, { downloadRemote, }?: {
|
|
23
|
-
downloadRemote?: boolean;
|
|
24
|
-
});
|
|
25
|
-
get downloadRemote(): boolean;
|
|
26
|
-
[UPDATE]: (fileData: FileData) => void;
|
|
27
|
-
[MARK_FAILED]: () => void;
|
|
28
|
-
get url(): string | null;
|
|
29
|
-
get name(): string | null;
|
|
30
|
-
get type(): string | null;
|
|
31
|
-
get loading(): boolean;
|
|
32
|
-
get failed(): boolean;
|
|
33
|
-
destroy: () => void;
|
|
34
|
-
getSnapshot(): EntityFileSnapshot;
|
|
35
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { FileData } from '@verdant-web/common';
|
|
2
|
-
import { Context } from '../context.js';
|
|
3
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
4
|
-
import { Sync } from '../sync/Sync.js';
|
|
5
|
-
import { EntityFile } from './EntityFile.js';
|
|
6
|
-
import { ReturnedFileData } from './FileStorage.js';
|
|
7
|
-
export interface FileManagerConfig {
|
|
8
|
-
/**
|
|
9
|
-
* Override the heuristic for deciding when a deleted file can be cleaned up.
|
|
10
|
-
* By default this waits 3 days since deletion, then deletes the file data.
|
|
11
|
-
* If the file has been synchronized to a server, it could still be restored
|
|
12
|
-
* if the server has not yet deleted it.
|
|
13
|
-
*/
|
|
14
|
-
canCleanupDeletedFile?: (file: ReturnedFileData) => boolean;
|
|
15
|
-
}
|
|
16
|
-
export declare class FileManager {
|
|
17
|
-
private storage;
|
|
18
|
-
private sync;
|
|
19
|
-
private context;
|
|
20
|
-
private files;
|
|
21
|
-
private config;
|
|
22
|
-
private meta;
|
|
23
|
-
constructor({ db, sync, context, meta, config, }: {
|
|
24
|
-
db: IDBDatabase;
|
|
25
|
-
sync: Sync;
|
|
26
|
-
context: Context;
|
|
27
|
-
config?: FileManagerConfig;
|
|
28
|
-
meta: Metadata;
|
|
29
|
-
});
|
|
30
|
-
add: (fileInput: Omit<FileData, 'remote'>) => Promise<void>;
|
|
31
|
-
private uploadFile;
|
|
32
|
-
/**
|
|
33
|
-
* Immediately returns an EntityFile to use, then either loads
|
|
34
|
-
* the file from cache, local database, or the server.
|
|
35
|
-
*/
|
|
36
|
-
get: (id: string, options?: {
|
|
37
|
-
downloadRemote?: boolean;
|
|
38
|
-
}) => EntityFile;
|
|
39
|
-
private load;
|
|
40
|
-
listUnsynced: () => Promise<ReturnedFileData[]>;
|
|
41
|
-
exportAll: (downloadRemote?: boolean) => Promise<ReturnedFileData[]>;
|
|
42
|
-
importAll: (files: ReturnedFileData[]) => Promise<void>;
|
|
43
|
-
private onOnlineChange;
|
|
44
|
-
private tryCleanupDeletedFiles;
|
|
45
|
-
private handleFileRefsDeleted;
|
|
46
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { FileData } from '@verdant-web/common';
|
|
2
|
-
import { IDBService } from '../IDBService.js';
|
|
3
|
-
/**
|
|
4
|
-
* When stored in IDB, replace the file blob with an array buffer
|
|
5
|
-
* since it's more compatible, and replace remote boolean with
|
|
6
|
-
* a string since IDB doesn't support boolean indexes.
|
|
7
|
-
*/
|
|
8
|
-
export interface StoredFileData extends Omit<FileData, 'remote' | 'file'> {
|
|
9
|
-
remote: 'true' | 'false';
|
|
10
|
-
buffer?: ArrayBuffer;
|
|
11
|
-
deletedAt: number | null;
|
|
12
|
-
}
|
|
13
|
-
export interface ReturnedFileData extends FileData {
|
|
14
|
-
deletedAt: number | null;
|
|
15
|
-
}
|
|
16
|
-
export declare class FileStorage extends IDBService {
|
|
17
|
-
addFile: (file: FileData, { transaction, downloadRemote, }?: {
|
|
18
|
-
transaction?: IDBTransaction | undefined;
|
|
19
|
-
downloadRemote?: boolean | undefined;
|
|
20
|
-
}) => Promise<IDBValidKey>;
|
|
21
|
-
private hydrateFileData;
|
|
22
|
-
markUploaded: (id: string, { transaction }?: {
|
|
23
|
-
transaction?: IDBTransaction | undefined;
|
|
24
|
-
}) => Promise<IDBValidKey>;
|
|
25
|
-
private getFileRaw;
|
|
26
|
-
getFile: (id: string, { transaction }?: {
|
|
27
|
-
transaction?: IDBTransaction | undefined;
|
|
28
|
-
}) => Promise<ReturnedFileData | undefined>;
|
|
29
|
-
deleteFile(id: string, { transaction }?: {
|
|
30
|
-
transaction?: IDBTransaction;
|
|
31
|
-
}): Promise<undefined>;
|
|
32
|
-
markPendingDelete: (id: string, { transaction }?: {
|
|
33
|
-
transaction?: IDBTransaction | undefined;
|
|
34
|
-
}) => Promise<IDBValidKey>;
|
|
35
|
-
listUnsynced: () => Promise<ReturnedFileData[]>;
|
|
36
|
-
iterateOverPendingDelete: (iterator: (file: ReturnedFileData, store: IDBObjectStore) => void, transaction?: IDBTransaction) => Promise<void>;
|
|
37
|
-
getAll: () => Promise<ReturnedFileData[]>;
|
|
38
|
-
}
|
|
39
|
-
export declare function arrayBufferToBlob(buffer: ArrayBuffer, type: string): Blob;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { FileData } from '@verdant-web/common';
|
|
2
|
-
export declare function createFileData(file: File): FileData;
|
|
3
|
-
export declare function isFile(value: any): value is File;
|
|
4
|
-
/**
|
|
5
|
-
* MUTATES the value.
|
|
6
|
-
* Replaces File values with refs and returns the normalized value.
|
|
7
|
-
* The list of files passed to the second argument will be populated with the files found in the value.
|
|
8
|
-
*/
|
|
9
|
-
export declare function processValueFiles(value: any, onFileIdentified: (fileData: FileData) => void): any;
|
|
10
|
-
export declare function fileToArrayBuffer(file: File | Blob): Promise<ArrayBuffer>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/esm/idb.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare function isAbortError(err: unknown): boolean;
|
|
2
|
-
export declare function storeRequestPromise<T>(request: IDBRequest<T>): Promise<T>;
|
|
3
|
-
export declare function cursorIterator<T>(request: IDBRequest<IDBCursorWithValue | null>, callback: (value: T | null) => boolean): Promise<void>;
|
|
4
|
-
export declare function getSizeOfObjectStore(database: IDBDatabase, storeName: string): Promise<{
|
|
5
|
-
count: number;
|
|
6
|
-
size: number;
|
|
7
|
-
}>;
|
|
8
|
-
export declare function getAllFromObjectStores(db: IDBDatabase, stores: string[]): Promise<any[][]>;
|
|
9
|
-
export declare function closeDatabase(db: IDBDatabase): Promise<void>;
|
|
10
|
-
export declare function deleteAllDatabases(namespace: string, indexedDB?: IDBFactory): Promise<void>;
|
|
11
|
-
export declare function deleteDatabase(name: string, indexedDB?: IDBFactory): Promise<IDBDatabase>;
|
|
12
|
-
export declare function getAllDatabaseNamesAndVersions(indexedDB?: IDBFactory): Promise<IDBDatabaseInfo[]>;
|
|
13
|
-
export declare function createAbortableTransaction(db: IDBDatabase, storeNames: string[], mode: 'readonly' | 'readwrite', abortSignal?: AbortSignal, log?: (...args: any[]) => void): IDBTransaction;
|
package/dist/esm/index.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ClientDescriptor, ClientDescriptorOptions } from './client/ClientDescriptor.js';
|
|
2
|
-
import { Client } from './client/Client.js';
|
|
3
|
-
export type { ClientWithCollections } from './client/Client.js';
|
|
4
|
-
export { ClientDescriptor };
|
|
5
|
-
export { Client };
|
|
6
|
-
export { ClientDescriptor as StorageDescriptor };
|
|
7
|
-
export { Client as Storage };
|
|
8
|
-
export type { ClientDescriptorOptions };
|
|
9
|
-
export type { ClientDescriptorOptions as StorageInitOptions };
|
|
10
|
-
export { Entity } from './entities/Entity.js';
|
|
11
|
-
export type { ObjectEntity, ListEntity, EntityShape, AccessibleEntityProperty, AnyEntity, EntityDestructured, } from './entities/types.js';
|
|
12
|
-
export { ServerSync } from './sync/Sync.js';
|
|
13
|
-
export type { SyncTransportMode } from './sync/Sync.js';
|
|
14
|
-
export { EntityFile, type EntityFileSnapshot } from './files/EntityFile.js';
|
|
15
|
-
export {
|
|
16
|
-
/** @deprecated - use schema.collection */
|
|
17
|
-
collection, schema, createDefaultMigration, migrate, createMigration, } from '@verdant-web/common';
|
|
18
|
-
export type { StorageDocument, StorageSchema, StorageCollectionSchema, StorageAnyFieldSchema, StorageArrayFieldSchema, StorageObjectFieldSchema, StorageBooleanFieldSchema, StorageFieldSchema, StorageFileFieldSchema, StorageMapFieldSchema, StorageNumberFieldSchema, StorageStringFieldSchema, StorageFieldsSchema, IndexValueTag, Migration, } from '@verdant-web/common';
|
|
19
|
-
export type { UserInfo } from '@verdant-web/common';
|
|
20
|
-
export type { Query } from './queries/types.js';
|
|
21
|
-
export type { QueryStatus } from './queries/BaseQuery.js';
|
|
22
|
-
export type { CollectionQueries } from './queries/CollectionQueries.js';
|
|
23
|
-
export { MigrationPathError } from './migration/errors.js';
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { IDBService } from '../IDBService.js';
|
|
2
|
-
type AckInfo = {
|
|
3
|
-
type: 'ack';
|
|
4
|
-
globalAckTimestamp: string | null;
|
|
5
|
-
};
|
|
6
|
-
export declare class AckInfoStore extends IDBService {
|
|
7
|
-
getAckInfo: () => Promise<AckInfo>;
|
|
8
|
-
setGlobalAck: (ack: string) => Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
export {};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { DocumentBaseline, ObjectIdentifier } from '@verdant-web/common';
|
|
2
|
-
import { IDBService } from '../IDBService.js';
|
|
3
|
-
import { Context } from '../context.js';
|
|
4
|
-
export declare class BaselinesStore extends IDBService {
|
|
5
|
-
constructor(db: IDBDatabase, opts: {
|
|
6
|
-
log?: Context['log'];
|
|
7
|
-
});
|
|
8
|
-
getAllForDocument: (oid: ObjectIdentifier, { mode, transaction, }?: {
|
|
9
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
10
|
-
transaction?: IDBTransaction | undefined;
|
|
11
|
-
}) => Promise<DocumentBaseline<any>[]>;
|
|
12
|
-
iterateOverAllForDocument: (oid: ObjectIdentifier, iterator: (baseline: DocumentBaseline, store: IDBObjectStore) => void, { mode, transaction, }?: {
|
|
13
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
14
|
-
transaction?: IDBTransaction | undefined;
|
|
15
|
-
}) => Promise<void>;
|
|
16
|
-
iterateOverAllForCollection: (collection: string, iterator: (baseline: DocumentBaseline, store: IDBObjectStore) => void, { mode, transaction, }?: {
|
|
17
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
18
|
-
transaction?: IDBTransaction | undefined;
|
|
19
|
-
}) => Promise<void>;
|
|
20
|
-
getAllForMultipleDocuments: (docOids: string[], { mode }?: {
|
|
21
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
22
|
-
}) => Promise<DocumentBaseline<any>[]>;
|
|
23
|
-
getAllSince: (timestamp: string | null, { mode }?: {
|
|
24
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
25
|
-
}) => Promise<DocumentBaseline<any>[]>;
|
|
26
|
-
get: (oid: ObjectIdentifier, { transaction, mode, }?: {
|
|
27
|
-
transaction?: IDBTransaction | undefined;
|
|
28
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
29
|
-
}) => Promise<DocumentBaseline<any>>;
|
|
30
|
-
set: <T>(baseline: DocumentBaseline<T>, { transaction }?: {
|
|
31
|
-
transaction?: IDBTransaction | undefined;
|
|
32
|
-
}) => Promise<void>;
|
|
33
|
-
setAll: <T>(baselines: DocumentBaseline<T>[], { transaction }?: {
|
|
34
|
-
transaction?: IDBTransaction | undefined;
|
|
35
|
-
}) => Promise<void>;
|
|
36
|
-
reset: () => Promise<undefined>;
|
|
37
|
-
delete: (oid: ObjectIdentifier, { transaction }: {
|
|
38
|
-
transaction?: IDBTransaction | undefined;
|
|
39
|
-
}) => Promise<void>;
|
|
40
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { IDBService } from '../IDBService.js';
|
|
2
|
-
export type LocalReplicaInfo = {
|
|
3
|
-
type: 'localReplicaInfo';
|
|
4
|
-
id: string;
|
|
5
|
-
ackedLogicalTime: string | null;
|
|
6
|
-
lastSyncedLogicalTime: string | null;
|
|
7
|
-
};
|
|
8
|
-
export declare class LocalReplicaStore extends IDBService {
|
|
9
|
-
private _creating;
|
|
10
|
-
private cached;
|
|
11
|
-
get: ({ transaction, }?: {
|
|
12
|
-
transaction?: IDBTransaction | undefined;
|
|
13
|
-
}) => Promise<LocalReplicaInfo>;
|
|
14
|
-
update: (data: Partial<LocalReplicaInfo>, { transaction }?: {
|
|
15
|
-
transaction?: IDBTransaction | undefined;
|
|
16
|
-
}) => Promise<void>;
|
|
17
|
-
reset: () => Promise<void>;
|
|
18
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { AckMessage, HeartbeatMessage, OperationMessage, PresenceUpdateMessage, SyncMessage } from '@verdant-web/common';
|
|
2
|
-
import { Metadata } from './Metadata.js';
|
|
3
|
-
export declare class MessageCreator {
|
|
4
|
-
private meta;
|
|
5
|
-
constructor(meta: Metadata);
|
|
6
|
-
createOperation: (init: Pick<OperationMessage, 'operations'> & {
|
|
7
|
-
timestamp?: string;
|
|
8
|
-
}) => Promise<OperationMessage>;
|
|
9
|
-
createMigrationOperation: ({ targetVersion, ...init }: Pick<OperationMessage, "operations"> & {
|
|
10
|
-
targetVersion: number;
|
|
11
|
-
}) => Promise<OperationMessage>;
|
|
12
|
-
/**
|
|
13
|
-
* @param since - override local understanding of last sync time
|
|
14
|
-
*/
|
|
15
|
-
createSyncStep1: (since?: string | null) => Promise<SyncMessage>;
|
|
16
|
-
createPresenceUpdate: (presence: any) => Promise<PresenceUpdateMessage>;
|
|
17
|
-
createHeartbeat: () => Promise<HeartbeatMessage>;
|
|
18
|
-
createAck: (nonce: string) => Promise<AckMessage>;
|
|
19
|
-
}
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { ClientMessage, DocumentBaseline, EventSubscriber, FileRef, HybridLogicalClockTimestampProvider, ObjectIdentifier, Operation, PatchCreator, StorageSchema } from '@verdant-web/common';
|
|
2
|
-
import { AckInfoStore } from './AckInfoStore.js';
|
|
3
|
-
import { BaselinesStore } from './BaselinesStore.js';
|
|
4
|
-
import { LocalReplicaInfo, LocalReplicaStore } from './LocalReplicaStore.js';
|
|
5
|
-
import { MessageCreator } from './MessageCreator.js';
|
|
6
|
-
import { OperationsStore } from './OperationsStore.js';
|
|
7
|
-
import { SchemaStore } from './SchemaStore.js';
|
|
8
|
-
import { Context } from '../context.js';
|
|
9
|
-
export interface ExportData {
|
|
10
|
-
operations: Operation[];
|
|
11
|
-
baselines: DocumentBaseline[];
|
|
12
|
-
localReplica: LocalReplicaInfo;
|
|
13
|
-
schema: StorageSchema;
|
|
14
|
-
}
|
|
15
|
-
export declare class Metadata extends EventSubscriber<{
|
|
16
|
-
message: (message: ClientMessage) => void;
|
|
17
|
-
rebase: (baselines: DocumentBaseline[]) => void;
|
|
18
|
-
filesDeleted: (files: FileRef[]) => void;
|
|
19
|
-
}> {
|
|
20
|
-
readonly operations: OperationsStore;
|
|
21
|
-
readonly baselines: BaselinesStore;
|
|
22
|
-
readonly localReplica: LocalReplicaStore;
|
|
23
|
-
readonly ackInfo: AckInfoStore;
|
|
24
|
-
readonly messageCreator: MessageCreator;
|
|
25
|
-
readonly patchCreator: PatchCreator;
|
|
26
|
-
readonly schema: SchemaStore;
|
|
27
|
-
readonly time: HybridLogicalClockTimestampProvider;
|
|
28
|
-
private readonly disableRebasing;
|
|
29
|
-
/**
|
|
30
|
-
* indicates the client is shutting down and we should stop
|
|
31
|
-
* accessing the database.
|
|
32
|
-
*/
|
|
33
|
-
private _closing;
|
|
34
|
-
private context;
|
|
35
|
-
constructor({ disableRebasing, context, }: {
|
|
36
|
-
disableRebasing?: boolean;
|
|
37
|
-
context: Omit<Context, 'documentDb' | 'getNow'>;
|
|
38
|
-
});
|
|
39
|
-
private get db();
|
|
40
|
-
private get log();
|
|
41
|
-
setContext: (context: Context) => void;
|
|
42
|
-
get now(): string;
|
|
43
|
-
close: () => void;
|
|
44
|
-
/**
|
|
45
|
-
* Methods for accessing data
|
|
46
|
-
*/
|
|
47
|
-
createTransaction: (stores: ('operations' | 'baselines')[], opts?: {
|
|
48
|
-
abort?: AbortSignal;
|
|
49
|
-
}) => IDBTransaction;
|
|
50
|
-
/**
|
|
51
|
-
* Gets the OID and every sub-object OID for a given document.
|
|
52
|
-
* Includes any sub-objects that are not referenced by the root object
|
|
53
|
-
* but still happen to be in storage.
|
|
54
|
-
*/
|
|
55
|
-
getAllDocumentRelatedOids: (oid: ObjectIdentifier) => Promise<string[]>;
|
|
56
|
-
getAllCollectionRelatedOids: (oid: ObjectIdentifier) => Promise<string[]>;
|
|
57
|
-
getDocumentSnapshot: (oid: ObjectIdentifier, options?: {
|
|
58
|
-
to?: string;
|
|
59
|
-
}) => Promise<any>;
|
|
60
|
-
getDocumentData: (oid: ObjectIdentifier, opts?: {
|
|
61
|
-
abort?: AbortSignal;
|
|
62
|
-
}) => Promise<{
|
|
63
|
-
baselines: DocumentBaseline<any>[];
|
|
64
|
-
operations: Record<string, Operation[]>;
|
|
65
|
-
}>;
|
|
66
|
-
/**
|
|
67
|
-
* Methods for writing data
|
|
68
|
-
*/
|
|
69
|
-
/**
|
|
70
|
-
* Acks that we have seen a timestamp to the server
|
|
71
|
-
* and stores it as our local ackedLogicalTime if it's
|
|
72
|
-
* greater than our current ackedLogicalTime.
|
|
73
|
-
*/
|
|
74
|
-
ack: (timestamp: string) => Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Applies a patch to the document and stores it in the database.
|
|
77
|
-
* @returns the oldest local history timestamp
|
|
78
|
-
*/
|
|
79
|
-
insertLocalOperations: (operations: Operation[], opts?: {
|
|
80
|
-
transaction?: IDBTransaction;
|
|
81
|
-
}) => Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Inserts remote operations. This does not affect local history.
|
|
84
|
-
* @returns a list of affected document OIDs
|
|
85
|
-
*/
|
|
86
|
-
insertRemoteOperations: (operations: Operation[], opts?: {
|
|
87
|
-
transaction?: IDBTransaction;
|
|
88
|
-
}) => Promise<string[]>;
|
|
89
|
-
insertRemoteBaselines: (baselines: DocumentBaseline[], opts?: {
|
|
90
|
-
transaction?: IDBTransaction;
|
|
91
|
-
}) => Promise<string[]>;
|
|
92
|
-
insertData: (data: {
|
|
93
|
-
baselines?: DocumentBaseline[];
|
|
94
|
-
operations?: Operation[];
|
|
95
|
-
isLocal?: boolean;
|
|
96
|
-
}, opts?: {
|
|
97
|
-
abort: AbortSignal;
|
|
98
|
-
}) => Promise<void>;
|
|
99
|
-
updateLastSynced: (timestamp: string) => Promise<void>;
|
|
100
|
-
lastSyncedTimestamp: () => Promise<string | null>;
|
|
101
|
-
private tryAutonomousRebase;
|
|
102
|
-
/**
|
|
103
|
-
* Attempt to autonomously rebase local documents without server intervention.
|
|
104
|
-
* This can currently only happen for a client who has never synced before.
|
|
105
|
-
* The goal is to allow local-only clients to compress their history to exactly
|
|
106
|
-
* their undo stack.
|
|
107
|
-
*/
|
|
108
|
-
private runRebase;
|
|
109
|
-
rebase: (oid: ObjectIdentifier, upTo: string, providedTx?: IDBTransaction) => Promise<{
|
|
110
|
-
oid: string;
|
|
111
|
-
snapshot: any;
|
|
112
|
-
timestamp: string;
|
|
113
|
-
}>;
|
|
114
|
-
reset: () => Promise<void>;
|
|
115
|
-
updateSchema: (schema: StorageSchema, overrideConflict?: number) => Promise<void>;
|
|
116
|
-
setGlobalAck: (timestamp: string) => Promise<void>;
|
|
117
|
-
export: () => Promise<ExportData>;
|
|
118
|
-
/**
|
|
119
|
-
* Resets local metadata and clears operation/baseline stores.
|
|
120
|
-
* DOES NOT add operations/baselines - this should be done
|
|
121
|
-
* through the normal higher level systems.
|
|
122
|
-
*/
|
|
123
|
-
resetFrom: (data: ExportData) => Promise<void>;
|
|
124
|
-
stats: () => Promise<{
|
|
125
|
-
operationsSize: {
|
|
126
|
-
count: number;
|
|
127
|
-
size: number;
|
|
128
|
-
};
|
|
129
|
-
baselinesSize: {
|
|
130
|
-
count: number;
|
|
131
|
-
size: number;
|
|
132
|
-
};
|
|
133
|
-
}>;
|
|
134
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { ObjectIdentifier, Operation } from '@verdant-web/common';
|
|
2
|
-
import { IDBService } from '../IDBService.js';
|
|
3
|
-
export type ClientOperation = Operation & {
|
|
4
|
-
isLocal: boolean;
|
|
5
|
-
};
|
|
6
|
-
export type StoredClientOperation = ClientOperation & {
|
|
7
|
-
oid_timestamp: string;
|
|
8
|
-
l_t: string;
|
|
9
|
-
d_t: string;
|
|
10
|
-
};
|
|
11
|
-
export declare class OperationsStore extends IDBService {
|
|
12
|
-
constructor(db: IDBDatabase, opts: {
|
|
13
|
-
log?: (...args: any[]) => void;
|
|
14
|
-
});
|
|
15
|
-
/**
|
|
16
|
-
* Iterates over every patch for the root and every sub-object
|
|
17
|
-
* of a given document. Optionally limit by timestamp.
|
|
18
|
-
*/
|
|
19
|
-
iterateOverAllOperationsForDocument: (oid: ObjectIdentifier, iterator: (patch: StoredClientOperation, store: IDBObjectStore) => void, { to, from, after, mode, transaction: providedTx, }?: {
|
|
20
|
-
to?: string | undefined;
|
|
21
|
-
from?: string | undefined;
|
|
22
|
-
after?: string | undefined;
|
|
23
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
24
|
-
transaction?: IDBTransaction | undefined;
|
|
25
|
-
}) => Promise<void>;
|
|
26
|
-
iterateOverAllOperationsForEntity: (oid: ObjectIdentifier, iterator: (patch: StoredClientOperation, store: IDBObjectStore) => void, { after, to, mode, transaction: providedTx, }: {
|
|
27
|
-
after?: string | undefined;
|
|
28
|
-
to?: string | undefined;
|
|
29
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
30
|
-
transaction?: IDBTransaction | undefined;
|
|
31
|
-
}) => Promise<void>;
|
|
32
|
-
iterateOverAllOperationsForCollection: (collection: string, iterator: (patch: StoredClientOperation, store: IDBObjectStore) => void, { after, to, mode, transaction: providedTx, }: {
|
|
33
|
-
after?: string | undefined;
|
|
34
|
-
to?: string | undefined;
|
|
35
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
36
|
-
transaction?: IDBTransaction | undefined;
|
|
37
|
-
}) => Promise<void>;
|
|
38
|
-
iterateOverAllLocalOperations: (iterator: (patch: ClientOperation, store: IDBObjectStore) => void, { before, after, mode, transaction: providedTx, }: {
|
|
39
|
-
before?: string | null | undefined;
|
|
40
|
-
after?: string | null | undefined;
|
|
41
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
42
|
-
transaction?: IDBTransaction | undefined;
|
|
43
|
-
}) => Promise<void>;
|
|
44
|
-
iterateOverAllOperations: (iterator: (patch: ClientOperation, store: IDBObjectStore) => void, { before, transaction, mode, from, }: {
|
|
45
|
-
/** Ending timestamp, exclusive */
|
|
46
|
-
before?: string | null | undefined;
|
|
47
|
-
/** Starting timestamp, inclusive */
|
|
48
|
-
from?: string | null | undefined;
|
|
49
|
-
transaction?: IDBTransaction | undefined;
|
|
50
|
-
mode?: "readonly" | "readwrite" | undefined;
|
|
51
|
-
}) => Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Adds a set of patches to the database.
|
|
54
|
-
* @returns a list of affected root document OIDs.
|
|
55
|
-
*/
|
|
56
|
-
addOperations: (patches: ClientOperation[], { transaction }?: {
|
|
57
|
-
transaction?: IDBTransaction | undefined;
|
|
58
|
-
}) => Promise<ObjectIdentifier[]>;
|
|
59
|
-
private addCompoundIndexes;
|
|
60
|
-
private insert;
|
|
61
|
-
reset: () => Promise<undefined>;
|
|
62
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { StorageSchema } from '@verdant-web/common';
|
|
2
|
-
export declare class SchemaStore {
|
|
3
|
-
private readonly db;
|
|
4
|
-
readonly currentVersion: number;
|
|
5
|
-
private cached;
|
|
6
|
-
constructor(db: IDBDatabase, currentVersion: number);
|
|
7
|
-
get: () => Promise<StorageSchema<any> | null>;
|
|
8
|
-
set: (schema: StorageSchema<any>) => Promise<void>;
|
|
9
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare function openMetadataDatabase({ indexedDB, namespace, log, metadataVersion, }: {
|
|
2
|
-
indexedDB?: IDBFactory;
|
|
3
|
-
namespace: string;
|
|
4
|
-
log?: (...args: any[]) => void;
|
|
5
|
-
metadataVersion?: number;
|
|
6
|
-
}): Promise<{
|
|
7
|
-
wasInitialized: boolean;
|
|
8
|
-
db: IDBDatabase;
|
|
9
|
-
}>;
|
|
10
|
-
export declare function openWIPMetadataDatabase({ wipNamespace, namespace, indexedDB, log, metadataVersion, }: {
|
|
11
|
-
indexedDB?: IDBFactory;
|
|
12
|
-
namespace: string;
|
|
13
|
-
wipNamespace: string;
|
|
14
|
-
log?: (...args: any[]) => void;
|
|
15
|
-
metadataVersion?: number;
|
|
16
|
-
}): Promise<{
|
|
17
|
-
wasInitialized: boolean;
|
|
18
|
-
db: IDBDatabase;
|
|
19
|
-
}>;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare function getDatabaseVersion(indexedDB: IDBFactory, namespace: string, version: number, log?: (...args: any[]) => void): Promise<number>;
|
|
2
|
-
export declare function closeDatabase(db: IDBDatabase): Promise<void>;
|
|
3
|
-
/**
|
|
4
|
-
* Upgrades the database to the given version, using the given upgrader function.
|
|
5
|
-
*/
|
|
6
|
-
export declare function upgradeDatabase(indexedDb: IDBFactory, namespace: string, version: number, upgrader: (transaction: IDBTransaction, db: IDBDatabase, event: IDBVersionChangeEvent) => void, log?: (...args: any[]) => void): Promise<void>;
|
|
7
|
-
export declare function acquireLock(namespace: string, procedure: () => Promise<void>): Promise<void>;
|
|
8
|
-
export declare function openDatabase(indexedDb: IDBFactory, namespace: string, version: number, log?: (...args: any[]) => void): Promise<IDBDatabase>;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Migration } from '@verdant-web/common';
|
|
2
|
-
import { Context } from '../context.js';
|
|
3
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
4
|
-
type OpenDocumentDbContext = Omit<Context, 'documentDb'>;
|
|
5
|
-
export declare function openDocumentDatabase({ version, indexedDB, migrations, meta, context, }: {
|
|
6
|
-
version: number;
|
|
7
|
-
migrations: Migration<any>[];
|
|
8
|
-
indexedDB?: IDBFactory;
|
|
9
|
-
meta: Metadata;
|
|
10
|
-
context: OpenDocumentDbContext;
|
|
11
|
-
}): Promise<IDBDatabase>;
|
|
12
|
-
export declare function openWIPDocumentDatabase({ version, indexedDB, migrations, meta, context, wipNamespace, }: {
|
|
13
|
-
version: number;
|
|
14
|
-
migrations: Migration<any>[];
|
|
15
|
-
indexedDB?: IDBFactory;
|
|
16
|
-
meta: Metadata;
|
|
17
|
-
context: OpenDocumentDbContext;
|
|
18
|
-
wipNamespace: string;
|
|
19
|
-
}): Promise<IDBDatabase>;
|
|
20
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|