@verdant-web/store 3.12.1 → 4.0.0-next.1
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 +11 -13
- package/dist/bundle/index.js.map +4 -4
- package/dist/esm/__tests__/batching.test.js +5 -5
- package/dist/esm/__tests__/batching.test.js.map +1 -1
- package/dist/esm/__tests__/entities.test.js +1 -1
- package/dist/esm/__tests__/entities.test.js.map +1 -1
- package/dist/esm/__tests__/fixtures/testStorage.d.ts +1 -3
- package/dist/esm/__tests__/fixtures/testStorage.js +3 -3
- package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
- package/dist/esm/__tests__/queries.test.js.map +1 -1
- package/dist/esm/backup.d.ts +3 -4
- package/dist/esm/backup.js.map +1 -1
- package/dist/esm/client/Client.d.ts +28 -33
- package/dist/esm/client/Client.js +50 -161
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/client/ClientDescriptor.d.ts +8 -11
- package/dist/esm/client/ClientDescriptor.js +39 -141
- package/dist/esm/client/ClientDescriptor.js.map +1 -1
- package/dist/esm/context/Time.d.ts +13 -0
- package/dist/esm/context/Time.js +27 -0
- package/dist/esm/context/Time.js.map +1 -0
- package/dist/esm/context/context.d.ts +170 -0
- package/dist/esm/{context.js.map → context/context.js.map} +1 -1
- package/dist/esm/entities/DocumentManager.js.map +1 -1
- package/dist/esm/entities/Entity.d.ts +4 -5
- package/dist/esm/entities/Entity.js +5 -3
- package/dist/esm/entities/Entity.js.map +1 -1
- package/dist/esm/entities/Entity.test.js +4 -3
- package/dist/esm/entities/Entity.test.js.map +1 -1
- package/dist/esm/entities/EntityCache.d.ts +0 -3
- package/dist/esm/entities/EntityCache.js +0 -9
- package/dist/esm/entities/EntityCache.js.map +1 -1
- package/dist/esm/entities/EntityMetadata.d.ts +1 -1
- package/dist/esm/entities/EntityMetadata.js +6 -5
- package/dist/esm/entities/EntityMetadata.js.map +1 -1
- package/dist/esm/entities/EntityStore.d.ts +2 -6
- package/dist/esm/entities/EntityStore.js +22 -16
- package/dist/esm/entities/EntityStore.js.map +1 -1
- package/dist/esm/entities/OperationBatcher.d.ts +2 -5
- package/dist/esm/entities/OperationBatcher.js +9 -7
- package/dist/esm/entities/OperationBatcher.js.map +1 -1
- package/dist/esm/errors.d.ts +8 -0
- package/dist/esm/errors.js +12 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/files/EntityFile.d.ts +6 -3
- package/dist/esm/files/EntityFile.js +22 -19
- package/dist/esm/files/EntityFile.js.map +1 -1
- package/dist/esm/files/FileManager.d.ts +8 -39
- package/dist/esm/files/FileManager.js +26 -170
- package/dist/esm/files/FileManager.js.map +1 -1
- package/dist/esm/files/utils.d.ts +0 -1
- package/dist/esm/files/utils.js +0 -14
- package/dist/esm/files/utils.js.map +1 -1
- package/dist/esm/index.d.ts +1 -2
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{metadata → persistence}/MessageCreator.d.ts +5 -6
- package/dist/esm/{metadata → persistence}/MessageCreator.js +31 -38
- package/dist/esm/persistence/MessageCreator.js.map +1 -0
- package/dist/esm/persistence/PersistenceFiles.d.ts +48 -0
- package/dist/esm/persistence/PersistenceFiles.js +160 -0
- package/dist/esm/persistence/PersistenceFiles.js.map +1 -0
- package/dist/esm/persistence/PersistenceMetadata.d.ts +69 -0
- package/dist/esm/persistence/PersistenceMetadata.js +302 -0
- package/dist/esm/persistence/PersistenceMetadata.js.map +1 -0
- package/dist/esm/persistence/PersistenceQueries.d.ts +34 -0
- package/dist/esm/persistence/PersistenceQueries.js +15 -0
- package/dist/esm/persistence/PersistenceQueries.js.map +1 -0
- package/dist/esm/persistence/PersistenceRebaser.d.ts +32 -0
- package/dist/esm/persistence/PersistenceRebaser.js +120 -0
- package/dist/esm/persistence/PersistenceRebaser.js.map +1 -0
- package/dist/esm/{IDBService.d.ts → persistence/idb/IdbService.d.ts} +9 -7
- package/dist/esm/{IDBService.js → persistence/idb/IdbService.js} +29 -8
- package/dist/esm/persistence/idb/IdbService.js.map +1 -0
- package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.d.ts +58 -0
- package/dist/esm/{files/FileStorage.js → persistence/idb/files/IdbPersistenceFileDb.js} +85 -50
- package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js.map +1 -0
- package/dist/esm/persistence/idb/idbPersistence.d.ts +19 -0
- package/dist/esm/persistence/idb/idbPersistence.js +80 -0
- package/dist/esm/persistence/idb/idbPersistence.js.map +1 -0
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.d.ts +72 -0
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js +235 -0
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js.map +1 -0
- package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.d.ts +3 -1
- package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.js +12 -3
- package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js.map +1 -0
- package/dist/esm/persistence/idb/queries/IdbQueryDb.d.ts +41 -0
- package/dist/esm/persistence/idb/queries/IdbQueryDb.js +174 -0
- package/dist/esm/persistence/idb/queries/IdbQueryDb.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/db.d.ts +1 -1
- package/dist/esm/{migration → persistence/idb/queries/migration}/db.js +10 -48
- package/dist/esm/persistence/idb/queries/migration/db.js.map +1 -0
- package/dist/esm/persistence/idb/queries/migration/engine.d.ts +12 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/engine.js +29 -46
- package/dist/esm/persistence/idb/queries/migration/engine.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.d.ts +1 -3
- package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.js +11 -10
- package/dist/esm/persistence/idb/queries/migration/migrations.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.d.ts +1 -3
- package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.js +4 -7
- package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/paths.js +2 -2
- package/dist/esm/persistence/idb/queries/migration/paths.js.map +1 -0
- package/dist/esm/persistence/idb/queries/migration/paths.test.js.map +1 -0
- package/dist/esm/persistence/idb/queries/migration/types.d.ts +6 -0
- package/dist/esm/persistence/idb/queries/migration/types.js.map +1 -0
- package/dist/esm/persistence/idb/queries/ranges.d.ts +2 -0
- package/dist/esm/persistence/idb/queries/ranges.js +66 -0
- package/dist/esm/persistence/idb/queries/ranges.js.map +1 -0
- package/dist/esm/{idb.d.ts → persistence/idb/util.d.ts} +11 -0
- package/dist/esm/{idb.js → persistence/idb/util.js} +58 -1
- package/dist/esm/persistence/idb/util.js.map +1 -0
- package/dist/esm/persistence/interfaces.d.ts +181 -0
- package/dist/esm/persistence/interfaces.js +2 -0
- package/dist/esm/persistence/interfaces.js.map +1 -0
- package/dist/esm/persistence/persistence.d.ts +4 -0
- package/dist/esm/persistence/persistence.js +126 -0
- package/dist/esm/persistence/persistence.js.map +1 -0
- package/dist/esm/queries/BaseQuery.d.ts +2 -1
- package/dist/esm/queries/BaseQuery.js +3 -0
- package/dist/esm/queries/BaseQuery.js.map +1 -1
- package/dist/esm/queries/CollectionQueries.d.ts +1 -1
- package/dist/esm/queries/FindAllQuery.js +1 -3
- package/dist/esm/queries/FindAllQuery.js.map +1 -1
- package/dist/esm/queries/FindInfiniteQuery.js +2 -5
- package/dist/esm/queries/FindInfiniteQuery.js.map +1 -1
- package/dist/esm/queries/FindOneQuery.js +1 -3
- package/dist/esm/queries/FindOneQuery.js.map +1 -1
- package/dist/esm/queries/FindPageQuery.js +1 -3
- package/dist/esm/queries/FindPageQuery.js.map +1 -1
- package/dist/esm/queries/QueryCache.d.ts +1 -1
- package/dist/esm/queries/QueryCache.js +4 -0
- package/dist/esm/queries/QueryCache.js.map +1 -1
- package/dist/esm/sync/FileSync.d.ts +23 -8
- package/dist/esm/sync/FileSync.js +76 -28
- package/dist/esm/sync/FileSync.js.map +1 -1
- package/dist/esm/sync/PresenceManager.d.ts +4 -3
- package/dist/esm/sync/PresenceManager.js +2 -2
- package/dist/esm/sync/PresenceManager.js.map +1 -1
- package/dist/esm/sync/PushPullSync.d.ts +4 -6
- package/dist/esm/sync/PushPullSync.js +13 -12
- package/dist/esm/sync/PushPullSync.js.map +1 -1
- package/dist/esm/sync/Sync.d.ts +10 -11
- package/dist/esm/sync/Sync.js +55 -30
- package/dist/esm/sync/Sync.js.map +1 -1
- package/dist/esm/sync/WebSocketSync.d.ts +4 -6
- package/dist/esm/sync/WebSocketSync.js +20 -22
- package/dist/esm/sync/WebSocketSync.js.map +1 -1
- package/dist/esm/utils/Disposable.d.ts +5 -2
- package/dist/esm/utils/Disposable.js +3 -2
- package/dist/esm/utils/Disposable.js.map +1 -1
- package/dist/esm/utils/wip.d.ts +2 -0
- package/dist/esm/utils/wip.js +5 -0
- package/dist/esm/utils/wip.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/batching.test.ts +6 -6
- package/src/__tests__/entities.test.ts +1 -1
- package/src/__tests__/fixtures/testStorage.ts +2 -10
- package/src/__tests__/queries.test.ts +1 -1
- package/src/backup.ts +3 -4
- package/src/client/Client.ts +69 -226
- package/src/client/ClientDescriptor.ts +53 -184
- package/src/context/Time.ts +35 -0
- package/src/context/context.ts +200 -0
- package/src/entities/DocumentManager.ts +0 -3
- package/src/entities/Entity.test.ts +9 -9
- package/src/entities/Entity.ts +6 -12
- package/src/entities/EntityCache.ts +0 -9
- package/src/entities/EntityMetadata.ts +4 -4
- package/src/entities/EntityStore.ts +26 -29
- package/src/entities/OperationBatcher.ts +9 -11
- package/src/errors.ts +13 -0
- package/src/files/EntityFile.ts +16 -5
- package/src/files/FileManager.ts +35 -245
- package/src/files/utils.ts +0 -15
- package/src/index.ts +2 -1
- package/src/{metadata → persistence}/MessageCreator.ts +46 -36
- package/src/persistence/PersistenceFiles.ts +227 -0
- package/src/persistence/PersistenceMetadata.ts +425 -0
- package/src/persistence/PersistenceQueries.ts +22 -0
- package/src/persistence/PersistenceRebaser.ts +171 -0
- package/src/{IDBService.ts → persistence/idb/IdbService.ts} +45 -12
- package/src/{files/FileStorage.ts → persistence/idb/files/IdbPersistenceFileDb.ts} +128 -86
- package/src/persistence/idb/idbPersistence.ts +116 -0
- package/src/persistence/idb/metadata/IdbMetadataDb.ts +460 -0
- package/src/{metadata → persistence/idb/metadata}/openMetadataDatabase.ts +21 -4
- package/src/persistence/idb/queries/IdbQueryDb.ts +251 -0
- package/src/{migration → persistence/idb/queries/migration}/db.ts +18 -72
- package/src/{migration → persistence/idb/queries/migration}/engine.ts +39 -62
- package/src/{migration → persistence/idb/queries/migration}/migrations.ts +13 -18
- package/src/{migration → persistence/idb/queries/migration}/openQueryDatabase.ts +5 -14
- package/src/{migration → persistence/idb/queries/migration}/paths.ts +4 -3
- package/src/persistence/idb/queries/migration/types.ts +8 -0
- package/src/persistence/idb/queries/ranges.ts +107 -0
- package/src/{idb.ts → persistence/idb/util.ts} +75 -0
- package/src/persistence/interfaces.ts +240 -0
- package/src/persistence/persistence.ts +223 -0
- package/src/queries/BaseQuery.ts +5 -1
- package/src/queries/CollectionQueries.ts +2 -2
- package/src/queries/FindAllQuery.ts +1 -3
- package/src/queries/FindInfiniteQuery.ts +2 -5
- package/src/queries/FindOneQuery.ts +1 -3
- package/src/queries/FindPageQuery.ts +1 -3
- package/src/queries/QueryCache.ts +20 -1
- package/src/sync/FileSync.ts +93 -30
- package/src/sync/PresenceManager.ts +5 -7
- package/src/sync/PushPullSync.ts +23 -19
- package/src/sync/Sync.ts +71 -37
- package/src/sync/WebSocketSync.ts +41 -27
- package/src/utils/Disposable.ts +7 -4
- package/src/utils/wip.ts +5 -0
- package/dist/esm/IDBService.js.map +0 -1
- package/dist/esm/__tests__/legacyOids.test.d.ts +0 -1
- package/dist/esm/__tests__/legacyOids.test.js +0 -352
- package/dist/esm/__tests__/legacyOids.test.js.map +0 -1
- package/dist/esm/context.d.ts +0 -45
- package/dist/esm/files/FileStorage.d.ts +0 -47
- package/dist/esm/files/FileStorage.js.map +0 -1
- package/dist/esm/idb.js.map +0 -1
- package/dist/esm/metadata/AckInfoStore.d.ts +0 -10
- package/dist/esm/metadata/AckInfoStore.js +0 -22
- package/dist/esm/metadata/AckInfoStore.js.map +0 -1
- package/dist/esm/metadata/BaselinesStore.d.ts +0 -40
- package/dist/esm/metadata/BaselinesStore.js +0 -102
- package/dist/esm/metadata/BaselinesStore.js.map +0 -1
- package/dist/esm/metadata/LocalReplicaStore.d.ts +0 -19
- package/dist/esm/metadata/LocalReplicaStore.js +0 -56
- package/dist/esm/metadata/LocalReplicaStore.js.map +0 -1
- package/dist/esm/metadata/MessageCreator.js.map +0 -1
- package/dist/esm/metadata/Metadata.d.ts +0 -146
- package/dist/esm/metadata/Metadata.js +0 -452
- package/dist/esm/metadata/Metadata.js.map +0 -1
- package/dist/esm/metadata/OperationsStore.d.ts +0 -62
- package/dist/esm/metadata/OperationsStore.js +0 -175
- package/dist/esm/metadata/OperationsStore.js.map +0 -1
- package/dist/esm/metadata/SchemaStore.d.ts +0 -9
- package/dist/esm/metadata/SchemaStore.js +0 -35
- package/dist/esm/metadata/SchemaStore.js.map +0 -1
- package/dist/esm/metadata/openMetadataDatabase.js.map +0 -1
- package/dist/esm/migration/db.js.map +0 -1
- package/dist/esm/migration/engine.d.ts +0 -15
- package/dist/esm/migration/engine.js.map +0 -1
- package/dist/esm/migration/errors.d.ts +0 -5
- package/dist/esm/migration/errors.js +0 -8
- package/dist/esm/migration/errors.js.map +0 -1
- package/dist/esm/migration/migrations.js.map +0 -1
- package/dist/esm/migration/openQueryDatabase.js.map +0 -1
- package/dist/esm/migration/openWIPDatabase.d.ts +0 -11
- package/dist/esm/migration/openWIPDatabase.js +0 -65
- package/dist/esm/migration/openWIPDatabase.js.map +0 -1
- package/dist/esm/migration/paths.js.map +0 -1
- package/dist/esm/migration/paths.test.js.map +0 -1
- package/dist/esm/migration/types.d.ts +0 -3
- package/dist/esm/migration/types.js.map +0 -1
- package/dist/esm/queries/QueryableStorage.d.ts +0 -20
- package/dist/esm/queries/QueryableStorage.js +0 -90
- package/dist/esm/queries/QueryableStorage.js.map +0 -1
- package/dist/esm/queries/dbQueries.d.ts +0 -22
- package/dist/esm/queries/dbQueries.js +0 -130
- package/dist/esm/queries/dbQueries.js.map +0 -1
- package/src/__tests__/legacyOids.test.ts +0 -375
- package/src/context.ts +0 -55
- package/src/metadata/AckInfoStore.ts +0 -30
- package/src/metadata/BaselinesStore.ts +0 -188
- package/src/metadata/LocalReplicaStore.ts +0 -79
- package/src/metadata/Metadata.ts +0 -685
- package/src/metadata/OperationsStore.ts +0 -332
- package/src/metadata/SchemaStore.ts +0 -47
- package/src/migration/errors.ts +0 -7
- package/src/migration/openWIPDatabase.ts +0 -97
- package/src/migration/types.ts +0 -4
- package/src/queries/QueryableStorage.ts +0 -122
- package/src/queries/dbQueries.ts +0 -161
- /package/dist/esm/{context.js → context/context.js} +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.d.ts +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.d.ts +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.js +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/types.js +0 -0
- /package/src/{migration → persistence/idb/queries/migration}/paths.test.ts +0 -0
|
@@ -2,13 +2,12 @@ import { debounce, EventSubscriber, } from '@verdant-web/common';
|
|
|
2
2
|
import { DocumentManager } from '../entities/DocumentManager.js';
|
|
3
3
|
import { EntityStore } from '../entities/EntityStore.js';
|
|
4
4
|
import { FileManager } from '../files/FileManager.js';
|
|
5
|
-
import {
|
|
6
|
-
import { supportLegacyExport, } from '../metadata/Metadata.js';
|
|
7
|
-
import { openQueryDatabase } from '../migration/openQueryDatabase.js';
|
|
5
|
+
import { deleteAllDatabases } from '../persistence/idb/util.js';
|
|
8
6
|
import { CollectionQueries } from '../queries/CollectionQueries.js';
|
|
9
7
|
import { QueryCache } from '../queries/QueryCache.js';
|
|
10
8
|
import { NoSync, ServerSync } from '../sync/Sync.js';
|
|
11
9
|
import { getLatestVersion } from '../utils/versions.js';
|
|
10
|
+
import { importPersistence } from '../persistence/persistence.js';
|
|
12
11
|
export class Client extends EventSubscriber {
|
|
13
12
|
get sync() {
|
|
14
13
|
return this._sync;
|
|
@@ -19,21 +18,9 @@ export class Client extends EventSubscriber {
|
|
|
19
18
|
get documentManager() {
|
|
20
19
|
return this._documentManager;
|
|
21
20
|
}
|
|
22
|
-
constructor(
|
|
21
|
+
constructor(context) {
|
|
23
22
|
super();
|
|
24
|
-
this.config = config;
|
|
25
23
|
this.context = context;
|
|
26
|
-
this._closed = false;
|
|
27
|
-
this.watchForVersionChange = () => {
|
|
28
|
-
this.documentDb.addEventListener('versionchange', () => {
|
|
29
|
-
var _a, _b;
|
|
30
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'warn', `Another tab has requested a version change for ${this.namespace}`);
|
|
31
|
-
this.documentDb.close();
|
|
32
|
-
if (typeof window !== 'undefined') {
|
|
33
|
-
window.location.reload();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
24
|
this.importingPromise = Promise.resolve();
|
|
38
25
|
this.addData = async (data) => {
|
|
39
26
|
var _a;
|
|
@@ -87,30 +74,17 @@ export class Client extends EventSubscriber {
|
|
|
87
74
|
}
|
|
88
75
|
};
|
|
89
76
|
this.stats = async () => {
|
|
90
|
-
var _a, _b;
|
|
91
|
-
const collectionNames = Object.keys(this.schema.collections);
|
|
92
|
-
let collections = {};
|
|
93
77
|
if (this.disposed) {
|
|
94
78
|
return {};
|
|
95
79
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
collections[collectionName] = await getSizeOfObjectStore(this.documentDb, collectionName);
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'error', err);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (this.disposed) {
|
|
105
|
-
return { collections };
|
|
106
|
-
}
|
|
107
|
-
const meta = await this.meta.stats();
|
|
80
|
+
const collections = await this.context.queries.stats();
|
|
81
|
+
const meta = await this.context.meta.stats();
|
|
108
82
|
const storage = typeof navigator !== 'undefined' &&
|
|
109
83
|
typeof navigator.storage !== 'undefined' &&
|
|
110
84
|
'estimate' in navigator.storage
|
|
111
85
|
? await navigator.storage.estimate()
|
|
112
86
|
: undefined;
|
|
113
|
-
const files = await this.
|
|
87
|
+
const files = await this.context.files.stats();
|
|
114
88
|
// determine data:metadata ratio for total size of all collections vs metadata
|
|
115
89
|
const totalCollectionsSize = Object.values(collections).reduce((acc, { size }) => acc + size, 0);
|
|
116
90
|
const totalMetaSize = meta.baselinesSize.size + meta.operationsSize.size;
|
|
@@ -130,23 +104,24 @@ export class Client extends EventSubscriber {
|
|
|
130
104
|
};
|
|
131
105
|
this.close = async () => {
|
|
132
106
|
var _a, _b;
|
|
133
|
-
this._closed = true;
|
|
134
107
|
this.sync.ignoreIncoming();
|
|
135
108
|
await this._entities.flushAllBatches();
|
|
136
|
-
this
|
|
109
|
+
// NOTE: this happens after flushing or else flushed data
|
|
110
|
+
// won't be written to storage or synced.
|
|
111
|
+
this.context.closing = true;
|
|
112
|
+
this.context.files.dispose();
|
|
137
113
|
this.sync.stop();
|
|
138
114
|
this.sync.destroy();
|
|
139
115
|
// this step does have the potential to flush
|
|
140
116
|
// changes to storage, so don't close metadata db yet
|
|
141
117
|
await this._entities.destroy();
|
|
142
|
-
this.
|
|
118
|
+
this.context.queries.dispose();
|
|
119
|
+
this.context.meta.dispose();
|
|
143
120
|
// the idea here is to flush the microtask queue -
|
|
144
121
|
// we may have queued tasks related to queries that
|
|
145
122
|
// we want to settle before closing the databases
|
|
146
123
|
// to avoid invalid state errors
|
|
147
|
-
await new Promise(
|
|
148
|
-
await closeDatabase(this.documentDb);
|
|
149
|
-
await closeDatabase(this.metaDb);
|
|
124
|
+
await new Promise((resolve) => {
|
|
150
125
|
resolve();
|
|
151
126
|
});
|
|
152
127
|
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'info', 'Client closed');
|
|
@@ -159,40 +134,15 @@ export class Client extends EventSubscriber {
|
|
|
159
134
|
downloadRemoteFiles: true,
|
|
160
135
|
}) => {
|
|
161
136
|
this.context.log('info', 'Exporting data...');
|
|
162
|
-
const metaExport = await this.meta.export();
|
|
163
|
-
const
|
|
164
|
-
// split files into data and files
|
|
165
|
-
const fileData = [];
|
|
166
|
-
const files = [];
|
|
167
|
-
for (const fileExport of filesExport) {
|
|
168
|
-
const file = fileExport.file;
|
|
169
|
-
delete fileExport.file;
|
|
170
|
-
fileData.push(fileExport);
|
|
171
|
-
if (file) {
|
|
172
|
-
// rename with ID
|
|
173
|
-
const asFile = new File([file], this.getFileExportName(fileExport.name, fileExport.id), {
|
|
174
|
-
type: fileExport.type,
|
|
175
|
-
});
|
|
176
|
-
files.push(asFile);
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
this.context.log('warn', `File ${fileExport.id} was could not be loaded locally or from the server. It will be missing in the export.`);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
137
|
+
const metaExport = await this.context.meta.export();
|
|
138
|
+
const { fileData, files } = await this.context.files.export(downloadRemoteFiles);
|
|
182
139
|
return {
|
|
183
140
|
data: metaExport,
|
|
184
141
|
fileData,
|
|
185
142
|
files,
|
|
186
143
|
};
|
|
187
144
|
};
|
|
188
|
-
this.
|
|
189
|
-
return `${id}___${originalFileName}`;
|
|
190
|
-
};
|
|
191
|
-
this.parseFileExportname = (name) => {
|
|
192
|
-
const [id, originalFileName] = name.split('___');
|
|
193
|
-
return { id, originalFileName };
|
|
194
|
-
};
|
|
195
|
-
this.import = async ({ data: rawData, fileData, files, }) => {
|
|
145
|
+
this.import = async ({ data, fileData, files }) => {
|
|
196
146
|
/**
|
|
197
147
|
* Importing is a pretty involved procedure because of the possibility of
|
|
198
148
|
* importing an export from an older version of the schema. We can't add
|
|
@@ -206,80 +156,18 @@ export class Client extends EventSubscriber {
|
|
|
206
156
|
* to the latest (current) version. These migrations are added to the imported
|
|
207
157
|
* data to produce the final state.
|
|
208
158
|
*/
|
|
209
|
-
var _a;
|
|
210
159
|
// register importing promise to halt other data handling
|
|
211
160
|
let resolve = () => { };
|
|
212
161
|
this.importingPromise = new Promise((res) => {
|
|
213
162
|
resolve = res;
|
|
214
163
|
});
|
|
215
|
-
const data = supportLegacyExport(rawData);
|
|
216
164
|
this.context.log('info', 'Importing data...');
|
|
217
|
-
|
|
218
|
-
await closeDatabase(this.context.documentDb);
|
|
219
|
-
await this.meta.resetFrom(data);
|
|
220
|
-
// re-attach files to their file data and import
|
|
221
|
-
const fileToIdMap = new Map(files.map((file) => {
|
|
222
|
-
const { id } = this.parseFileExportname(file.name);
|
|
223
|
-
return [id, file];
|
|
224
|
-
}));
|
|
225
|
-
const importedFiles = fileData.map((fileData) => {
|
|
226
|
-
const file = fileToIdMap.get(fileData.id);
|
|
227
|
-
return Object.assign(Object.assign({}, fileData), { file });
|
|
228
|
-
});
|
|
229
|
-
await this._fileManager.importAll(importedFiles);
|
|
230
|
-
// now delete the document DB, open it to the specified version
|
|
231
|
-
// and run migrations to get it to the latest version
|
|
232
|
-
const version = data.schemaVersion;
|
|
233
|
-
const deleteReq = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
|
|
234
|
-
await new Promise((resolve, reject) => {
|
|
235
|
-
deleteReq.onsuccess = resolve;
|
|
236
|
-
deleteReq.onerror = reject;
|
|
237
|
-
});
|
|
238
|
-
// reset our context to the imported schema for now
|
|
239
|
-
const currentSchema = this.context.schema;
|
|
240
|
-
if (currentSchema.version !== version) {
|
|
241
|
-
const oldSchema = (_a = this.context.oldSchemas) === null || _a === void 0 ? void 0 : _a.find((s) => s.version === version);
|
|
242
|
-
if (!oldSchema) {
|
|
243
|
-
this.emit('developerError', new Error(`Could not find schema for version ${version}`));
|
|
244
|
-
throw new Error(`Could not find schema for version ${version}`);
|
|
245
|
-
}
|
|
246
|
-
this.context.schema = oldSchema;
|
|
247
|
-
}
|
|
248
|
-
// now open the document DB empty at the specified version
|
|
249
|
-
// and initialize it from the meta DB
|
|
250
|
-
this.context.documentDb = await openQueryDatabase({
|
|
251
|
-
meta: this.meta,
|
|
252
|
-
migrations: this.config.migrations,
|
|
253
|
-
context: this.context,
|
|
254
|
-
version,
|
|
255
|
-
});
|
|
256
|
-
this.context.internalEvents.emit('documentDbChanged', this.documentDb);
|
|
257
|
-
// re-initialize data
|
|
258
|
-
this.context.log('info', 'Re-initializing data from imported data...');
|
|
259
|
-
await this._entities.addData({
|
|
260
|
-
operations: data.operations,
|
|
261
|
-
baselines: data.baselines,
|
|
262
|
-
reset: true,
|
|
263
|
-
});
|
|
264
|
-
// close the database and reopen to latest version, applying
|
|
265
|
-
// migrations
|
|
266
|
-
await closeDatabase(this.context.documentDb);
|
|
267
|
-
this.context.log('info', 'Migrating up to latest schema...');
|
|
268
|
-
// put the schema back
|
|
269
|
-
this.context.schema = currentSchema;
|
|
270
|
-
this.context.documentDb = await openQueryDatabase({
|
|
271
|
-
meta: this.meta,
|
|
272
|
-
migrations: this.config.migrations,
|
|
273
|
-
context: this.context,
|
|
274
|
-
version: currentSchema.version,
|
|
275
|
-
});
|
|
276
|
-
this.context.internalEvents.emit('documentDbChanged', this.documentDb);
|
|
277
|
-
// re-establish watcher on database
|
|
278
|
-
this.watchForVersionChange();
|
|
165
|
+
await importPersistence(this.context, { data, files, fileData });
|
|
279
166
|
// finally... clear out memory cache of entities and
|
|
280
167
|
// re-run all active queries.
|
|
281
|
-
this.entities.clearCache();
|
|
282
|
-
this._queryCache.forceRefreshAll();
|
|
168
|
+
// this.entities.clearCache();
|
|
169
|
+
// this._queryCache.forceRefreshAll();
|
|
170
|
+
// ^ this is now done via the persistenceReset internal event.
|
|
283
171
|
resolve();
|
|
284
172
|
};
|
|
285
173
|
/**
|
|
@@ -307,42 +195,40 @@ export class Client extends EventSubscriber {
|
|
|
307
195
|
* invoking this manually will not skip that 3 day waiting period.
|
|
308
196
|
*/
|
|
309
197
|
this.__cleanupFilesImmediately = () => {
|
|
310
|
-
return this.
|
|
198
|
+
return this.context.files.cleanupDeletedFiles();
|
|
311
199
|
};
|
|
312
200
|
/**
|
|
313
201
|
* Manually triggers storage rebasing. Follows normal
|
|
314
202
|
* rebasing rules. Rebases already happen automatically
|
|
315
203
|
* during normal operation, so you probably don't need this.
|
|
316
204
|
*/
|
|
317
|
-
this.__manualRebase = () => this.meta.manualRebase();
|
|
318
|
-
this.meta = components.meta;
|
|
205
|
+
this.__manualRebase = () => this.context.meta.manualRebase();
|
|
319
206
|
this.collectionNames = Object.keys(context.schema.collections);
|
|
320
207
|
this._sync =
|
|
321
|
-
this.config.
|
|
322
|
-
? new ServerSync(this.config.
|
|
323
|
-
meta: this.meta,
|
|
208
|
+
this.context.config.sync && !context.schema.wip
|
|
209
|
+
? new ServerSync(this.context.config.sync, {
|
|
324
210
|
onData: this.addData,
|
|
325
211
|
ctx: this.context,
|
|
326
212
|
})
|
|
327
|
-
: new NoSync(
|
|
328
|
-
if (context.schema.wip && this.config.
|
|
213
|
+
: new NoSync(this.context);
|
|
214
|
+
if (context.schema.wip && this.context.config.sync) {
|
|
329
215
|
context.log('warn', '⚠️⚠️ Sync is disabled for WIP schemas. Commit your schema changes to start syncing again. ⚠️⚠️');
|
|
330
216
|
}
|
|
331
217
|
this._fileManager = new FileManager({
|
|
332
|
-
db: this.metaDb,
|
|
333
218
|
sync: this.sync,
|
|
334
219
|
context: this.context,
|
|
335
|
-
config: this.config.files,
|
|
336
|
-
meta: this.meta,
|
|
337
|
-
});
|
|
338
|
-
this._queryCache = new QueryCache({
|
|
339
|
-
context,
|
|
340
220
|
});
|
|
341
221
|
this._entities = new EntityStore({
|
|
342
222
|
ctx: this.context,
|
|
343
|
-
meta: this.meta,
|
|
344
223
|
files: this._fileManager,
|
|
345
224
|
});
|
|
225
|
+
// note: query cache must be initialized after EntityStore,
|
|
226
|
+
// since EntityStore needs to clear its cache before queries
|
|
227
|
+
// refresh.
|
|
228
|
+
// FIXME: make this less fragile
|
|
229
|
+
this._queryCache = new QueryCache({
|
|
230
|
+
context,
|
|
231
|
+
});
|
|
346
232
|
this._documentManager = new DocumentManager(this.schema, this._entities);
|
|
347
233
|
const notifyFutureSeen = debounce(() => {
|
|
348
234
|
this.emit('futureSeen');
|
|
@@ -351,14 +237,11 @@ export class Client extends EventSubscriber {
|
|
|
351
237
|
this.context.globalEvents.subscribe('resetToServer', () => {
|
|
352
238
|
this.emit('resetToServer');
|
|
353
239
|
});
|
|
354
|
-
this.
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
this.
|
|
359
|
-
if (typeof window !== 'undefined') {
|
|
360
|
-
window.location.reload();
|
|
361
|
-
}
|
|
240
|
+
this.context.globalEvents.subscribe('operation', (operation) => {
|
|
241
|
+
this.emit('operation', operation);
|
|
242
|
+
});
|
|
243
|
+
this.context.globalEvents.subscribe('rebase', () => {
|
|
244
|
+
this.emit('rebase');
|
|
362
245
|
});
|
|
363
246
|
// self-assign collection shortcuts. these are not typed
|
|
364
247
|
// here but are typed in the generated code...
|
|
@@ -373,12 +256,6 @@ export class Client extends EventSubscriber {
|
|
|
373
256
|
});
|
|
374
257
|
}
|
|
375
258
|
}
|
|
376
|
-
get documentDb() {
|
|
377
|
-
return this.context.documentDb;
|
|
378
|
-
}
|
|
379
|
-
get metaDb() {
|
|
380
|
-
return this.context.metaDb;
|
|
381
|
-
}
|
|
382
259
|
get schema() {
|
|
383
260
|
return this.context.schema;
|
|
384
261
|
}
|
|
@@ -401,5 +278,17 @@ export class Client extends EventSubscriber {
|
|
|
401
278
|
get batch() {
|
|
402
279
|
return this.entities.batch;
|
|
403
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* WARNING: the internal functions of the persistence layer
|
|
283
|
+
* are not guaranteed and cannot be relied upon for application
|
|
284
|
+
* behavior. They are subject to change without notice.
|
|
285
|
+
*/
|
|
286
|
+
get __persistence() {
|
|
287
|
+
return {
|
|
288
|
+
meta: this.context.meta,
|
|
289
|
+
queries: this.context.queries,
|
|
290
|
+
files: this.context.files,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
404
293
|
}
|
|
405
294
|
//# sourceMappingURL=Client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/client/Client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/client/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { Migration,
|
|
2
|
-
import {
|
|
1
|
+
import { Migration, StorageSchema } from '@verdant-web/common';
|
|
2
|
+
import { FileConfig } from '../context/context.js';
|
|
3
3
|
import { ServerSyncOptions } from '../sync/Sync.js';
|
|
4
4
|
import { UndoHistory } from '../UndoHistory.js';
|
|
5
5
|
import { Client } from './Client.js';
|
|
6
6
|
import { METADATA_VERSION_KEY } from './constants.js';
|
|
7
|
+
import { PersistenceImplementation } from '../persistence/interfaces.js';
|
|
7
8
|
export interface ClientDescriptorOptions<Presence = any, Profile = any> {
|
|
8
9
|
/** The schema used to create this client */
|
|
9
10
|
schema: StorageSchema<any>;
|
|
10
|
-
oldSchemas
|
|
11
|
+
oldSchemas: StorageSchema<any>[];
|
|
11
12
|
/** Migrations, in order, to upgrade to each successive version of the schema */
|
|
12
13
|
migrations: Migration<any>[];
|
|
13
14
|
/** Provide a sync config to turn on synchronization with a server */
|
|
@@ -28,6 +29,7 @@ export interface ClientDescriptorOptions<Presence = any, Profile = any> {
|
|
|
28
29
|
*/
|
|
29
30
|
log?: (level: 'debug' | 'info' | 'warn' | 'error' | 'critical', ...args: any[]) => void;
|
|
30
31
|
disableRebasing?: boolean;
|
|
32
|
+
rebaseTimeout?: number;
|
|
31
33
|
/**
|
|
32
34
|
* Provide a specific schema number to override the schema version
|
|
33
35
|
* in the database. This is useful for testing migrations or recovering
|
|
@@ -38,13 +40,11 @@ export interface ClientDescriptorOptions<Presence = any, Profile = any> {
|
|
|
38
40
|
/**
|
|
39
41
|
* Configuration for file management
|
|
40
42
|
*/
|
|
41
|
-
files?:
|
|
43
|
+
files?: FileConfig;
|
|
42
44
|
/**
|
|
43
|
-
*
|
|
44
|
-
* Wouldn't recommend using this unless you know what you're doing.
|
|
45
|
-
* It's a very hot code path...
|
|
45
|
+
* Override the default IndexedDB persistence implementation.
|
|
46
46
|
*/
|
|
47
|
-
|
|
47
|
+
persistence?: PersistenceImplementation;
|
|
48
48
|
/**
|
|
49
49
|
* Enables experimental WeakRef usage to cull documents
|
|
50
50
|
* from cache that aren't being used. This is a performance
|
|
@@ -71,9 +71,6 @@ export declare class ClientDescriptor<Presence = any, Profile = any, ClientImpl
|
|
|
71
71
|
get namespace(): string;
|
|
72
72
|
constructor(init: ClientDescriptorOptions<Presence, Profile>);
|
|
73
73
|
private initialize;
|
|
74
|
-
private initializeDatabases;
|
|
75
|
-
private initializeWIPDatabases;
|
|
76
|
-
private cleanupWIPDatabases;
|
|
77
74
|
get current(): ClientImpl | undefined;
|
|
78
75
|
get readyPromise(): Promise<ClientImpl>;
|
|
79
76
|
get schema(): StorageSchema<any>;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { EventSubscriber,
|
|
2
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
3
|
-
import { openMetadataDatabase, openWIPMetadataDatabase, } from '../metadata/openMetadataDatabase.js';
|
|
4
|
-
import { openWIPDatabase } from '../migration/openWIPDatabase.js';
|
|
1
|
+
import { EventSubscriber, HybridLogicalClockTimestampProvider, PatchCreator, noop, } from '@verdant-web/common';
|
|
5
2
|
import { UndoHistory } from '../UndoHistory.js';
|
|
6
3
|
import { Client } from './Client.js';
|
|
7
|
-
import { deleteAllDatabases
|
|
4
|
+
import { deleteAllDatabases } from '../persistence/idb/util.js';
|
|
8
5
|
import { FakeWeakRef } from '../FakeWeakRef.js';
|
|
9
6
|
import { METADATA_VERSION_KEY } from './constants.js';
|
|
10
|
-
import {
|
|
7
|
+
import { Time } from '../context/Time.js';
|
|
8
|
+
import { initializePersistence } from '../persistence/persistence.js';
|
|
9
|
+
import { IdbPersistence } from '../persistence/idb/idbPersistence.js';
|
|
11
10
|
/**
|
|
12
11
|
* Since storage initialization is async, this class wraps the core
|
|
13
12
|
* Storage creation promise and exposes some metadata which can
|
|
@@ -24,24 +23,46 @@ export class ClientDescriptor {
|
|
|
24
23
|
// if server-side and no alternative IndexedDB implementation was provided,
|
|
25
24
|
// we can't initialize the storage
|
|
26
25
|
if (typeof window === 'undefined' && !init.indexedDb) {
|
|
27
|
-
throw new Error('A
|
|
26
|
+
throw new Error('A Verdant client was initialized in an environment without IndexedDB. If you are using verdant in a server-rendered framework, you must enforce that all clients are initialized on the client-side, or you must provide some mock interface of IDBFactory to the ClientDescriptor options.');
|
|
28
27
|
}
|
|
29
28
|
if (this._initializing || this._resolvedValue) {
|
|
30
29
|
return this._readyPromise;
|
|
31
30
|
}
|
|
32
31
|
this._initializing = true;
|
|
33
32
|
try {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
const time = new Time(new HybridLogicalClockTimestampProvider(), init.schema.version);
|
|
34
|
+
let ctx = {
|
|
35
|
+
closing: false,
|
|
36
|
+
entityEvents: new EventSubscriber(),
|
|
37
|
+
globalEvents: new EventSubscriber(),
|
|
38
|
+
internalEvents: new EventSubscriber(),
|
|
39
|
+
log: init.log || noop,
|
|
40
|
+
migrations: init.migrations,
|
|
41
|
+
namespace: init.namespace,
|
|
42
|
+
originalNamespace: init.namespace,
|
|
43
|
+
schema: init.schema,
|
|
44
|
+
oldSchemas: init.oldSchemas,
|
|
45
|
+
time,
|
|
46
|
+
undoHistory: init.undoHistory || new UndoHistory(),
|
|
47
|
+
weakRef: (val) => init.EXPERIMENTAL_weakRefs
|
|
48
|
+
? new WeakRef(val)
|
|
49
|
+
: new FakeWeakRef(val),
|
|
50
|
+
patchCreator: new PatchCreator(() => time.now),
|
|
51
|
+
config: {
|
|
52
|
+
files: init.files,
|
|
53
|
+
sync: init.sync,
|
|
54
|
+
persistence: {
|
|
55
|
+
disableRebasing: init.disableRebasing,
|
|
56
|
+
rebaseTimeout: init.rebaseTimeout,
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
persistence: init.persistence || new IdbPersistence(init.indexedDb),
|
|
60
|
+
};
|
|
61
|
+
const context = await initializePersistence(ctx);
|
|
62
|
+
const client = new Client(context);
|
|
63
|
+
this.resolveReady(client);
|
|
64
|
+
this._resolvedValue = client;
|
|
65
|
+
return client;
|
|
45
66
|
}
|
|
46
67
|
catch (err) {
|
|
47
68
|
if (err instanceof Error) {
|
|
@@ -56,129 +77,6 @@ export class ClientDescriptor {
|
|
|
56
77
|
this._initializing = false;
|
|
57
78
|
}
|
|
58
79
|
};
|
|
59
|
-
this.initializeDatabases = async (init) => {
|
|
60
|
-
const metadataVersion = init[METADATA_VERSION_KEY];
|
|
61
|
-
const { db: metaDb } = await openMetadataDatabase({
|
|
62
|
-
indexedDB: init.indexedDb,
|
|
63
|
-
log: init.log,
|
|
64
|
-
namespace: init.namespace,
|
|
65
|
-
metadataVersion,
|
|
66
|
-
});
|
|
67
|
-
const context = {
|
|
68
|
-
namespace: this._namespace,
|
|
69
|
-
metaDb,
|
|
70
|
-
schema: init.schema,
|
|
71
|
-
log: init.log || (() => { }),
|
|
72
|
-
undoHistory: init.undoHistory || new UndoHistory(),
|
|
73
|
-
entityEvents: new EventSubscriber(),
|
|
74
|
-
globalEvents: new EventSubscriber(),
|
|
75
|
-
internalEvents: new EventSubscriber(),
|
|
76
|
-
weakRef: (value) => {
|
|
77
|
-
if (init.EXPERIMENTAL_weakRefs) {
|
|
78
|
-
return new WeakRef(value);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
return new FakeWeakRef(value);
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
migrations: init.migrations,
|
|
85
|
-
oldSchemas: init.oldSchemas,
|
|
86
|
-
};
|
|
87
|
-
const meta = new Metadata({
|
|
88
|
-
context,
|
|
89
|
-
disableRebasing: init.disableRebasing,
|
|
90
|
-
onOperation: init.onOperation,
|
|
91
|
-
});
|
|
92
|
-
// verify schema integrity
|
|
93
|
-
await meta.updateSchema(init.schema, init.overrideSchemaConflict);
|
|
94
|
-
const contextWithNow = Object.assign(context, {
|
|
95
|
-
getNow: () => meta.now,
|
|
96
|
-
});
|
|
97
|
-
const documentDb = await openQueryDatabase({
|
|
98
|
-
context: contextWithNow,
|
|
99
|
-
version: init.schema.version,
|
|
100
|
-
meta,
|
|
101
|
-
migrations: init.migrations,
|
|
102
|
-
indexedDB: init.indexedDb,
|
|
103
|
-
});
|
|
104
|
-
const fullContext = Object.assign(contextWithNow, { documentDb });
|
|
105
|
-
const storage = new Client({
|
|
106
|
-
syncConfig: init.sync,
|
|
107
|
-
migrations: init.migrations,
|
|
108
|
-
files: init.files,
|
|
109
|
-
}, fullContext, {
|
|
110
|
-
meta,
|
|
111
|
-
});
|
|
112
|
-
return storage;
|
|
113
|
-
};
|
|
114
|
-
this.initializeWIPDatabases = async (init) => {
|
|
115
|
-
const schemaHash = hashObject(init.schema);
|
|
116
|
-
console.info(`WIP schema in use. Opening database with hash ${schemaHash}`);
|
|
117
|
-
const wipNamespace = `@@wip_${init.namespace}_${schemaHash}`;
|
|
118
|
-
const { db: metaDb } = await openWIPMetadataDatabase({
|
|
119
|
-
indexedDB: init.indexedDb,
|
|
120
|
-
log: init.log,
|
|
121
|
-
namespace: init.namespace,
|
|
122
|
-
wipNamespace: wipNamespace,
|
|
123
|
-
});
|
|
124
|
-
const context = {
|
|
125
|
-
namespace: this._namespace,
|
|
126
|
-
metaDb,
|
|
127
|
-
schema: init.schema,
|
|
128
|
-
log: init.log || (() => { }),
|
|
129
|
-
undoHistory: init.undoHistory || new UndoHistory(),
|
|
130
|
-
entityEvents: new EventSubscriber(),
|
|
131
|
-
globalEvents: new EventSubscriber(),
|
|
132
|
-
internalEvents: new EventSubscriber(),
|
|
133
|
-
weakRef: (value) => {
|
|
134
|
-
if (init.EXPERIMENTAL_weakRefs) {
|
|
135
|
-
return new WeakRef(value);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
return new FakeWeakRef(value);
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
migrations: init.migrations,
|
|
142
|
-
oldSchemas: init.oldSchemas,
|
|
143
|
-
};
|
|
144
|
-
const meta = new Metadata({
|
|
145
|
-
context,
|
|
146
|
-
disableRebasing: init.disableRebasing,
|
|
147
|
-
});
|
|
148
|
-
const contextWithNow = Object.assign(context, {
|
|
149
|
-
getNow: () => meta.now,
|
|
150
|
-
});
|
|
151
|
-
// verify schema integrity
|
|
152
|
-
await meta.updateSchema(init.schema, init.overrideSchemaConflict);
|
|
153
|
-
const documentDb = await openWIPDatabase({
|
|
154
|
-
context: contextWithNow,
|
|
155
|
-
version: init.schema.version,
|
|
156
|
-
meta,
|
|
157
|
-
migrations: init.migrations,
|
|
158
|
-
indexedDB: init.indexedDb,
|
|
159
|
-
wipNamespace,
|
|
160
|
-
});
|
|
161
|
-
const fullContext = Object.assign(contextWithNow, { documentDb });
|
|
162
|
-
const storage = new Client({
|
|
163
|
-
syncConfig: init.sync,
|
|
164
|
-
migrations: init.migrations,
|
|
165
|
-
files: init.files,
|
|
166
|
-
}, fullContext, {
|
|
167
|
-
meta,
|
|
168
|
-
});
|
|
169
|
-
return storage;
|
|
170
|
-
};
|
|
171
|
-
this.cleanupWIPDatabases = async (init) => {
|
|
172
|
-
const databaseInfo = await getAllDatabaseNamesAndVersions(init.indexedDb);
|
|
173
|
-
const wipDatabases = databaseInfo
|
|
174
|
-
.filter((db) => { var _a; return (_a = db.name) === null || _a === void 0 ? void 0 : _a.startsWith('@@wip_'); })
|
|
175
|
-
.map((db) => db.name);
|
|
176
|
-
// don't clear a current WIP database.
|
|
177
|
-
const wipDatabasesToDelete = wipDatabases.filter((db) => !db.startsWith(`@@wip_${init.namespace}_${hashObject(init.schema)}`));
|
|
178
|
-
for (const db of wipDatabasesToDelete) {
|
|
179
|
-
await deleteDatabase(db, init.indexedDb);
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
80
|
this.open = () => this.initialize(this.init);
|
|
183
81
|
this.close = async () => {
|
|
184
82
|
if (this._resolvedValue) {
|