@verdant-web/store 3.3.2 → 3.4.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.d.ts +2 -24
- 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.d.ts +2 -2
- package/dist/esm/entities/EntityMetadata.js.map +1 -1
- package/dist/esm/entities/EntityStore.d.ts +1 -0
- 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.d.ts +1 -0
- 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/BaselinesStore.d.ts +4 -4
- package/dist/esm/metadata/LocalReplicaStore.js.map +1 -1
- package/dist/esm/metadata/MessageCreator.js.map +1 -1
- package/dist/esm/metadata/Metadata.d.ts +1 -1
- 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.d.ts +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/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 -135
- package/dist/cjs/metadata/Metadata.js +0 -408
- 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/tsconfig-cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { EventSubscriber, Migration } from '@verdant-web/common';
|
|
2
|
-
import { Context } from '../context.js';
|
|
3
|
-
import { DocumentManager } from '../DocumentManager.js';
|
|
4
|
-
import { FileManagerConfig } from '../files/FileManager.js';
|
|
5
|
-
import { ExportData, Metadata } from '../metadata/Metadata.js';
|
|
6
|
-
import { EntityStore } from '../entities/EntityStore.js';
|
|
7
|
-
import { ServerSyncOptions, Sync } from '../sync/Sync.js';
|
|
8
|
-
import { CollectionQueries } from '../queries/CollectionQueries.js';
|
|
9
|
-
import { ReturnedFileData } from '../files/FileStorage.js';
|
|
10
|
-
interface ClientConfig<Presence = any> {
|
|
11
|
-
syncConfig?: ServerSyncOptions<Presence>;
|
|
12
|
-
migrations: Migration[];
|
|
13
|
-
files?: FileManagerConfig;
|
|
14
|
-
}
|
|
15
|
-
export type ClientWithCollections = Client & {
|
|
16
|
-
[key: string]: CollectionQueries<any, any, any>;
|
|
17
|
-
};
|
|
18
|
-
export declare class Client<Presence = any, Profile = any> extends EventSubscriber<{
|
|
19
|
-
/**
|
|
20
|
-
* Called when a change from a future version of the application has
|
|
21
|
-
* been witnessed. These changes are not applied but it indicates
|
|
22
|
-
* the app has been updated and a peer is using a newer version.
|
|
23
|
-
* You should listen to this event and prompt the user to reload
|
|
24
|
-
* their client, or reload it for them.
|
|
25
|
-
*
|
|
26
|
-
* This event may be called multiple times.
|
|
27
|
-
*/
|
|
28
|
-
futureSeen: () => void;
|
|
29
|
-
}> {
|
|
30
|
-
private config;
|
|
31
|
-
private context;
|
|
32
|
-
readonly meta: Metadata;
|
|
33
|
-
private _entities;
|
|
34
|
-
private _queryCache;
|
|
35
|
-
private _documentManager;
|
|
36
|
-
private _fileManager;
|
|
37
|
-
private _closed;
|
|
38
|
-
readonly collectionNames: string[];
|
|
39
|
-
private _sync;
|
|
40
|
-
get sync(): Sync<Presence, Profile>;
|
|
41
|
-
get entities(): EntityStore;
|
|
42
|
-
get documentManager(): DocumentManager<any>;
|
|
43
|
-
constructor(config: ClientConfig, context: Context, components: {
|
|
44
|
-
meta: Metadata;
|
|
45
|
-
});
|
|
46
|
-
private addData;
|
|
47
|
-
get documentDb(): IDBDatabase;
|
|
48
|
-
get metaDb(): IDBDatabase;
|
|
49
|
-
get schema(): import("@verdant-web/common").StorageSchema<{
|
|
50
|
-
[k: string]: import("@verdant-web/common").StorageCollectionSchema<import("@verdant-web/common").StorageFieldsSchema, import("@verdant-web/common").StorageSyntheticIndices<import("@verdant-web/common").StorageFieldsSchema>, import("@verdant-web/common").CollectionCompoundIndices<import("@verdant-web/common").StorageFieldsSchema, import("@verdant-web/common").StorageSyntheticIndices<import("@verdant-web/common").StorageFieldsSchema>>>;
|
|
51
|
-
}>;
|
|
52
|
-
get namespace(): string;
|
|
53
|
-
get undoHistory(): import("../UndoHistory.js").UndoHistory;
|
|
54
|
-
/**
|
|
55
|
-
* Batch multiple operations together to be executed in a single transaction.
|
|
56
|
-
* The changes made will not be included in the same undo history step as
|
|
57
|
-
* any other changes made outside of the batch. You can also disable undo
|
|
58
|
-
* for your batch to omit changes from undo history.
|
|
59
|
-
*
|
|
60
|
-
* Provide a batch name to apply multiple changes to the same batch
|
|
61
|
-
* across different invocations. Batches will automatically flush after
|
|
62
|
-
* a short delay or if they reach a maximum size.
|
|
63
|
-
*/
|
|
64
|
-
get batch(): ({ undoable, batchName, max, timeout, }?: {
|
|
65
|
-
undoable?: boolean | undefined;
|
|
66
|
-
batchName?: string | undefined;
|
|
67
|
-
max?: number | null | undefined;
|
|
68
|
-
timeout?: number | null | undefined;
|
|
69
|
-
}) => import("../entities/OperationBatcher.js").OperationBatch;
|
|
70
|
-
stats: () => Promise<{
|
|
71
|
-
collections: Record<string, {
|
|
72
|
-
count: number;
|
|
73
|
-
size: number;
|
|
74
|
-
}>;
|
|
75
|
-
meta: {
|
|
76
|
-
operationsSize: {
|
|
77
|
-
count: number;
|
|
78
|
-
size: number;
|
|
79
|
-
};
|
|
80
|
-
baselinesSize: {
|
|
81
|
-
count: number;
|
|
82
|
-
size: number;
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
storage: StorageEstimate | undefined;
|
|
86
|
-
totalMetaSize: number;
|
|
87
|
-
totalCollectionsSize: number;
|
|
88
|
-
metaToDataRatio: number;
|
|
89
|
-
quotaUsage: number | undefined;
|
|
90
|
-
}>;
|
|
91
|
-
close: () => Promise<void>;
|
|
92
|
-
__dangerous__resetLocal: () => Promise<void>;
|
|
93
|
-
export: ({ downloadRemoteFiles }?: {
|
|
94
|
-
downloadRemoteFiles?: boolean | undefined;
|
|
95
|
-
}) => Promise<{
|
|
96
|
-
data: ExportData;
|
|
97
|
-
fileData: Omit<ReturnedFileData, "file">[];
|
|
98
|
-
files: File[];
|
|
99
|
-
}>;
|
|
100
|
-
private getFileExportName;
|
|
101
|
-
private parseFileExportname;
|
|
102
|
-
import: ({ data, fileData, files, }: {
|
|
103
|
-
data: ExportData;
|
|
104
|
-
fileData: Array<Omit<ReturnedFileData, 'file'>>;
|
|
105
|
-
files: File[];
|
|
106
|
-
}) => Promise<void>;
|
|
107
|
-
/**
|
|
108
|
-
* Export all data, then re-import it. This might resolve
|
|
109
|
-
* some issues with the local database, but it should
|
|
110
|
-
* only be done as a second-to-last resort. The last resort
|
|
111
|
-
* would be __dangerous__resetLocal on ClientDescriptor, which
|
|
112
|
-
* clears all local data.
|
|
113
|
-
*
|
|
114
|
-
* Unlike __dangerous__resetLocal, this method allows local-only
|
|
115
|
-
* clients to recover data, whereas __dangerous__resetLocal only
|
|
116
|
-
* lets networked clients recover from the server.
|
|
117
|
-
*/
|
|
118
|
-
__dangerous__hardReset: () => Promise<void>;
|
|
119
|
-
}
|
|
120
|
-
export {};
|
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Client = void 0;
|
|
4
|
-
const common_1 = require("@verdant-web/common");
|
|
5
|
-
const DocumentManager_js_1 = require("../DocumentManager.js");
|
|
6
|
-
const FileManager_js_1 = require("../files/FileManager.js");
|
|
7
|
-
const idb_js_1 = require("../idb.js");
|
|
8
|
-
const openDatabase_js_1 = require("../migration/openDatabase.js");
|
|
9
|
-
const EntityStore_js_1 = require("../entities/EntityStore.js");
|
|
10
|
-
const Sync_js_1 = require("../sync/Sync.js");
|
|
11
|
-
const CollectionQueries_js_1 = require("../queries/CollectionQueries.js");
|
|
12
|
-
const QueryCache_js_1 = require("../queries/QueryCache.js");
|
|
13
|
-
class Client extends common_1.EventSubscriber {
|
|
14
|
-
get sync() {
|
|
15
|
-
return this._sync;
|
|
16
|
-
}
|
|
17
|
-
get entities() {
|
|
18
|
-
return this._entities;
|
|
19
|
-
}
|
|
20
|
-
get documentManager() {
|
|
21
|
-
return this._documentManager;
|
|
22
|
-
}
|
|
23
|
-
constructor(config, context, components) {
|
|
24
|
-
super();
|
|
25
|
-
this.config = config;
|
|
26
|
-
this.context = context;
|
|
27
|
-
this._closed = false;
|
|
28
|
-
this.addData = (data) => {
|
|
29
|
-
return this._entities.addData(data);
|
|
30
|
-
};
|
|
31
|
-
this.stats = async () => {
|
|
32
|
-
var _a, _b;
|
|
33
|
-
const collectionNames = Object.keys(this.schema.collections);
|
|
34
|
-
let collections = {};
|
|
35
|
-
for (const collectionName of collectionNames) {
|
|
36
|
-
try {
|
|
37
|
-
collections[collectionName] = await (0, idb_js_1.getSizeOfObjectStore)(this.documentDb, collectionName);
|
|
38
|
-
}
|
|
39
|
-
catch (err) {
|
|
40
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'error', err);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const meta = await this.meta.stats();
|
|
44
|
-
const storage = typeof navigator !== 'undefined' &&
|
|
45
|
-
typeof navigator.storage !== 'undefined' &&
|
|
46
|
-
'estimate' in navigator.storage
|
|
47
|
-
? await navigator.storage.estimate()
|
|
48
|
-
: undefined;
|
|
49
|
-
// determine data:metadata ratio for total size of all collections vs metadata
|
|
50
|
-
const totalCollectionsSize = Object.values(collections).reduce((acc, { size }) => acc + size, 0);
|
|
51
|
-
const totalMetaSize = meta.baselinesSize.size + meta.operationsSize.size;
|
|
52
|
-
const metaToDataRatio = totalMetaSize / totalCollectionsSize;
|
|
53
|
-
return {
|
|
54
|
-
collections,
|
|
55
|
-
meta,
|
|
56
|
-
storage,
|
|
57
|
-
totalMetaSize,
|
|
58
|
-
totalCollectionsSize,
|
|
59
|
-
metaToDataRatio,
|
|
60
|
-
quotaUsage: (storage === null || storage === void 0 ? void 0 : storage.usage) && (storage === null || storage === void 0 ? void 0 : storage.quota)
|
|
61
|
-
? storage.usage / storage.quota
|
|
62
|
-
: undefined,
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
this.close = async () => {
|
|
66
|
-
var _a, _b;
|
|
67
|
-
this._closed = true;
|
|
68
|
-
this.sync.ignoreIncoming();
|
|
69
|
-
await this._entities.flushAllBatches();
|
|
70
|
-
this.sync.stop();
|
|
71
|
-
this.sync.destroy();
|
|
72
|
-
// this step does have the potential to flush
|
|
73
|
-
// changes to storage, so don't close metadata db yet
|
|
74
|
-
await this._entities.destroy();
|
|
75
|
-
this.meta.close();
|
|
76
|
-
// the idea here is to flush the microtask queue -
|
|
77
|
-
// we may have queued tasks related to queries that
|
|
78
|
-
// we want to settle before closing the databases
|
|
79
|
-
// to avoid invalid state errors
|
|
80
|
-
await new Promise(async (resolve) => {
|
|
81
|
-
await (0, idb_js_1.closeDatabase)(this.documentDb);
|
|
82
|
-
await (0, idb_js_1.closeDatabase)(this.metaDb);
|
|
83
|
-
resolve();
|
|
84
|
-
});
|
|
85
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'Client closed');
|
|
86
|
-
};
|
|
87
|
-
this.__dangerous__resetLocal = async () => {
|
|
88
|
-
this.sync.stop();
|
|
89
|
-
await (0, idb_js_1.deleteAllDatabases)(this.namespace, indexedDB);
|
|
90
|
-
};
|
|
91
|
-
this.export = async ({ downloadRemoteFiles } = {
|
|
92
|
-
downloadRemoteFiles: true,
|
|
93
|
-
}) => {
|
|
94
|
-
this.context.log('info', 'Exporting data...');
|
|
95
|
-
const metaExport = await this.meta.export();
|
|
96
|
-
const filesExport = await this._fileManager.exportAll(downloadRemoteFiles);
|
|
97
|
-
// split files into data and files
|
|
98
|
-
const fileData = [];
|
|
99
|
-
const files = [];
|
|
100
|
-
for (const fileExport of filesExport) {
|
|
101
|
-
const file = fileExport.file;
|
|
102
|
-
delete fileExport.file;
|
|
103
|
-
fileData.push(fileExport);
|
|
104
|
-
if (file) {
|
|
105
|
-
// rename with ID
|
|
106
|
-
const asFile = new File([file], this.getFileExportName(fileExport.name, fileExport.id), {
|
|
107
|
-
type: fileExport.type,
|
|
108
|
-
});
|
|
109
|
-
files.push(asFile);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
this.context.log('warn', `File ${fileExport.id} was could not be loaded locally or from the server. It will be missing in the export.`);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
data: metaExport,
|
|
117
|
-
fileData,
|
|
118
|
-
files,
|
|
119
|
-
};
|
|
120
|
-
};
|
|
121
|
-
this.getFileExportName = (originalFileName, id) => {
|
|
122
|
-
return `${id}___${originalFileName}`;
|
|
123
|
-
};
|
|
124
|
-
this.parseFileExportname = (name) => {
|
|
125
|
-
const [id, originalFileName] = name.split('___');
|
|
126
|
-
return { id, originalFileName };
|
|
127
|
-
};
|
|
128
|
-
this.import = async ({ data, fileData, files, }) => {
|
|
129
|
-
this.context.log('info', 'Importing data...');
|
|
130
|
-
// close the document DB
|
|
131
|
-
await (0, idb_js_1.closeDatabase)(this.context.documentDb);
|
|
132
|
-
await this.meta.resetFrom(data);
|
|
133
|
-
// re-attach files to their file data and import
|
|
134
|
-
const fileToIdMap = new Map(files.map((file) => {
|
|
135
|
-
const { id } = this.parseFileExportname(file.name);
|
|
136
|
-
return [id, file];
|
|
137
|
-
}));
|
|
138
|
-
const importedFiles = fileData.map((fileData) => {
|
|
139
|
-
const file = fileToIdMap.get(fileData.id);
|
|
140
|
-
return Object.assign(Object.assign({}, fileData), { file });
|
|
141
|
-
});
|
|
142
|
-
await this._fileManager.importAll(importedFiles);
|
|
143
|
-
// now delete the document DB, open it to the specified version
|
|
144
|
-
// and run migrations to get it to the latest version
|
|
145
|
-
const version = data.schema.version;
|
|
146
|
-
const deleteReq = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
|
|
147
|
-
await new Promise((resolve, reject) => {
|
|
148
|
-
deleteReq.onsuccess = resolve;
|
|
149
|
-
deleteReq.onerror = reject;
|
|
150
|
-
});
|
|
151
|
-
// reset our context to the imported schema for now
|
|
152
|
-
const currentSchema = this.context.schema;
|
|
153
|
-
if (currentSchema.version !== version) {
|
|
154
|
-
// TODO: support importing older schema data - this will
|
|
155
|
-
// require being able to migrate that data, which requires
|
|
156
|
-
// a "live" schema for that version. the client does not currently
|
|
157
|
-
// receive historical schemas, although they should be available
|
|
158
|
-
// if the CLI was used.
|
|
159
|
-
// importing from older versions is also tricky because
|
|
160
|
-
// migration shortcuts mean that versions could get marooned.
|
|
161
|
-
throw new Error(`Only exports from the current schema version can be imported`);
|
|
162
|
-
}
|
|
163
|
-
// now open the document DB empty at the specified version
|
|
164
|
-
// and initialize it from the meta DB
|
|
165
|
-
this.context.documentDb = await (0, openDatabase_js_1.openDocumentDatabase)({
|
|
166
|
-
meta: this.meta,
|
|
167
|
-
migrations: this.config.migrations,
|
|
168
|
-
context: this.context,
|
|
169
|
-
version,
|
|
170
|
-
});
|
|
171
|
-
this.context.internalEvents.emit('documentDbChanged', this.documentDb);
|
|
172
|
-
// re-initialize data
|
|
173
|
-
this.context.log('Re-initializing data from imported data...');
|
|
174
|
-
await this._entities.addData({
|
|
175
|
-
operations: data.operations,
|
|
176
|
-
baselines: data.baselines,
|
|
177
|
-
reset: true,
|
|
178
|
-
});
|
|
179
|
-
// close the database and reopen to latest version, applying
|
|
180
|
-
// migrations
|
|
181
|
-
await (0, idb_js_1.closeDatabase)(this.context.documentDb);
|
|
182
|
-
this.context.log('Migrating up to latest schema...');
|
|
183
|
-
// put the schema back
|
|
184
|
-
this.context.schema = currentSchema;
|
|
185
|
-
this.context.documentDb = await (0, openDatabase_js_1.openDocumentDatabase)({
|
|
186
|
-
meta: this.meta,
|
|
187
|
-
migrations: this.config.migrations,
|
|
188
|
-
context: this.context,
|
|
189
|
-
version: currentSchema.version,
|
|
190
|
-
});
|
|
191
|
-
this.context.internalEvents.emit('documentDbChanged', this.documentDb);
|
|
192
|
-
};
|
|
193
|
-
/**
|
|
194
|
-
* Export all data, then re-import it. This might resolve
|
|
195
|
-
* some issues with the local database, but it should
|
|
196
|
-
* only be done as a second-to-last resort. The last resort
|
|
197
|
-
* would be __dangerous__resetLocal on ClientDescriptor, which
|
|
198
|
-
* clears all local data.
|
|
199
|
-
*
|
|
200
|
-
* Unlike __dangerous__resetLocal, this method allows local-only
|
|
201
|
-
* clients to recover data, whereas __dangerous__resetLocal only
|
|
202
|
-
* lets networked clients recover from the server.
|
|
203
|
-
*/
|
|
204
|
-
this.__dangerous__hardReset = async () => {
|
|
205
|
-
const exportData = await this.export();
|
|
206
|
-
await this.import(exportData);
|
|
207
|
-
};
|
|
208
|
-
this.meta = components.meta;
|
|
209
|
-
this.collectionNames = Object.keys(context.schema.collections);
|
|
210
|
-
this._sync =
|
|
211
|
-
this.config.syncConfig && !context.schema.wip
|
|
212
|
-
? new Sync_js_1.ServerSync(this.config.syncConfig, {
|
|
213
|
-
meta: this.meta,
|
|
214
|
-
onData: this.addData,
|
|
215
|
-
log: this.context.log,
|
|
216
|
-
})
|
|
217
|
-
: new Sync_js_1.NoSync({ meta: this.meta });
|
|
218
|
-
if (context.schema.wip && this.config.syncConfig) {
|
|
219
|
-
context.log('warn', '⚠️⚠️ Sync is disabled for WIP schemas. Commit your schema changes to start syncing again. ⚠️⚠️');
|
|
220
|
-
}
|
|
221
|
-
this._fileManager = new FileManager_js_1.FileManager({
|
|
222
|
-
db: this.metaDb,
|
|
223
|
-
sync: this.sync,
|
|
224
|
-
context: this.context,
|
|
225
|
-
config: this.config.files,
|
|
226
|
-
meta: this.meta,
|
|
227
|
-
});
|
|
228
|
-
this._entities = new EntityStore_js_1.EntityStore({
|
|
229
|
-
ctx: this.context,
|
|
230
|
-
meta: this.meta,
|
|
231
|
-
files: this._fileManager,
|
|
232
|
-
});
|
|
233
|
-
this._queryCache = new QueryCache_js_1.QueryCache({
|
|
234
|
-
context,
|
|
235
|
-
});
|
|
236
|
-
this._documentManager = new DocumentManager_js_1.DocumentManager(this.meta, this.schema, this._entities);
|
|
237
|
-
const notifyFutureSeen = (0, common_1.debounce)(() => {
|
|
238
|
-
this.emit('futureSeen');
|
|
239
|
-
}, 300);
|
|
240
|
-
this.context.globalEvents.subscribe('futureSeen', notifyFutureSeen);
|
|
241
|
-
this.documentDb.addEventListener('versionchange', () => {
|
|
242
|
-
var _a, _b;
|
|
243
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
|
|
244
|
-
this.documentDb.close();
|
|
245
|
-
if (typeof window !== 'undefined') {
|
|
246
|
-
window.location.reload();
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
this.metaDb.addEventListener('versionchange', () => {
|
|
250
|
-
var _a, _b;
|
|
251
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
|
|
252
|
-
this.metaDb.close();
|
|
253
|
-
if (typeof window !== 'undefined') {
|
|
254
|
-
window.location.reload();
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
// self-assign collection shortcuts. these are not typed
|
|
258
|
-
// here but are typed in the generated code...
|
|
259
|
-
for (const [name, _collection] of Object.entries(context.schema.collections)) {
|
|
260
|
-
const collectionName = name;
|
|
261
|
-
this[collectionName] = new CollectionQueries_js_1.CollectionQueries({
|
|
262
|
-
collection: collectionName,
|
|
263
|
-
cache: this._queryCache,
|
|
264
|
-
context: this.context,
|
|
265
|
-
entities: this.entities,
|
|
266
|
-
documentManager: this.documentManager,
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
get documentDb() {
|
|
271
|
-
return this.context.documentDb;
|
|
272
|
-
}
|
|
273
|
-
get metaDb() {
|
|
274
|
-
return this.context.metaDb;
|
|
275
|
-
}
|
|
276
|
-
get schema() {
|
|
277
|
-
return this.context.schema;
|
|
278
|
-
}
|
|
279
|
-
get namespace() {
|
|
280
|
-
return this.context.namespace;
|
|
281
|
-
}
|
|
282
|
-
get undoHistory() {
|
|
283
|
-
return this.context.undoHistory;
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Batch multiple operations together to be executed in a single transaction.
|
|
287
|
-
* The changes made will not be included in the same undo history step as
|
|
288
|
-
* any other changes made outside of the batch. You can also disable undo
|
|
289
|
-
* for your batch to omit changes from undo history.
|
|
290
|
-
*
|
|
291
|
-
* Provide a batch name to apply multiple changes to the same batch
|
|
292
|
-
* across different invocations. Batches will automatically flush after
|
|
293
|
-
* a short delay or if they reach a maximum size.
|
|
294
|
-
*/
|
|
295
|
-
get batch() {
|
|
296
|
-
return this.entities.batch;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
exports.Client = Client;
|
|
300
|
-
//# sourceMappingURL=Client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/client/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { Migration, StorageSchema } from '@verdant-web/common';
|
|
2
|
-
import { FileManagerConfig } from '../files/FileManager.js';
|
|
3
|
-
import { ServerSyncOptions } from '../sync/Sync.js';
|
|
4
|
-
import { UndoHistory } from '../UndoHistory.js';
|
|
5
|
-
import { Client } from './Client.js';
|
|
6
|
-
import { METADATA_VERSION_KEY } from './constants.js';
|
|
7
|
-
export interface ClientDescriptorOptions<Presence = any, Profile = any> {
|
|
8
|
-
/** The schema used to create this client */
|
|
9
|
-
schema: StorageSchema<any>;
|
|
10
|
-
/** Migrations, in order, to upgrade to each successive version of the schema */
|
|
11
|
-
migrations: Migration<any>[];
|
|
12
|
-
/** Provide a sync config to turn on synchronization with a server */
|
|
13
|
-
sync?: ServerSyncOptions<Profile, Presence>;
|
|
14
|
-
/** Optionally override the IndexedDB implementation */
|
|
15
|
-
indexedDb?: IDBFactory;
|
|
16
|
-
/**
|
|
17
|
-
* Namespaces are used to separate data from different clients in IndexedDB.
|
|
18
|
-
*/
|
|
19
|
-
namespace: string;
|
|
20
|
-
/**
|
|
21
|
-
* Provide your own UndoHistory to have a unified undo system across multiple
|
|
22
|
-
* clients if you so desire.
|
|
23
|
-
*/
|
|
24
|
-
undoHistory?: UndoHistory;
|
|
25
|
-
/**
|
|
26
|
-
* Provide a log function to log internal debug messages
|
|
27
|
-
*/
|
|
28
|
-
log?: (...args: any[]) => void;
|
|
29
|
-
disableRebasing?: boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Provide a specific schema number to override the schema version
|
|
32
|
-
* in the database. This is useful for testing migrations or recovering
|
|
33
|
-
* from a mistakenly deployed incorrect schema. A specific version is required
|
|
34
|
-
* so that you don't leave this on accidentally for all new schemas.
|
|
35
|
-
*/
|
|
36
|
-
overrideSchemaConflict?: number;
|
|
37
|
-
/**
|
|
38
|
-
* Configuration for file management
|
|
39
|
-
*/
|
|
40
|
-
files?: FileManagerConfig;
|
|
41
|
-
/**
|
|
42
|
-
* Enables experimental WeakRef usage to cull documents
|
|
43
|
-
* from cache that aren't being used. This is a performance
|
|
44
|
-
* optimization which has been tested under all Verdant's test
|
|
45
|
-
* suites but I still want to keep testing it in the real world
|
|
46
|
-
* before turning it on.
|
|
47
|
-
*/
|
|
48
|
-
EXPERIMENTAL_weakRefs?: boolean;
|
|
49
|
-
[METADATA_VERSION_KEY]?: number;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Since storage initialization is async, this class wraps the core
|
|
53
|
-
* Storage creation promise and exposes some metadata which can
|
|
54
|
-
* be useful immediately.
|
|
55
|
-
*/
|
|
56
|
-
export declare class ClientDescriptor<Presence = any, Profile = any, ClientImpl extends Client = Client> {
|
|
57
|
-
private readonly init;
|
|
58
|
-
private readonly _readyPromise;
|
|
59
|
-
private resolveReady;
|
|
60
|
-
private rejectReady;
|
|
61
|
-
private _resolvedValue;
|
|
62
|
-
private _initializing;
|
|
63
|
-
private _namespace;
|
|
64
|
-
get namespace(): string;
|
|
65
|
-
constructor(init: ClientDescriptorOptions<Presence, Profile>);
|
|
66
|
-
private initialize;
|
|
67
|
-
private initializeDatabases;
|
|
68
|
-
private initializeWIPDatabases;
|
|
69
|
-
private cleanupWIPDatabases;
|
|
70
|
-
get current(): ClientImpl | undefined;
|
|
71
|
-
get readyPromise(): Promise<ClientImpl>;
|
|
72
|
-
get schema(): StorageSchema<any>;
|
|
73
|
-
open: () => Promise<ClientImpl>;
|
|
74
|
-
close: () => Promise<void>;
|
|
75
|
-
__dangerous__resetLocal: () => Promise<void>;
|
|
76
|
-
}
|