@verdant-web/store 4.0.0 → 4.1.0-alpha.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/LICENSE +21 -650
- package/dist/bundle/index.js +11 -11
- package/dist/bundle/index.js.map +4 -4
- package/dist/esm/__tests__/fixtures/testStorage.d.ts +1 -2
- package/dist/esm/__tests__/fixtures/testStorage.js +3 -5
- package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
- package/dist/esm/client/Client.d.ts +6 -2
- package/dist/esm/client/Client.js +18 -6
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/client/ClientDescriptor.d.ts +7 -5
- package/dist/esm/client/ClientDescriptor.js +18 -4
- package/dist/esm/client/ClientDescriptor.js.map +1 -1
- package/dist/esm/context/ShutdownHandler.d.ts +8 -0
- package/dist/esm/context/ShutdownHandler.js +24 -0
- package/dist/esm/context/ShutdownHandler.js.map +1 -0
- package/dist/esm/context/context.d.ts +15 -4
- package/dist/esm/entities/EntityStore.js +6 -3
- package/dist/esm/entities/EntityStore.js.map +1 -1
- package/dist/esm/files/EntityFile.d.ts +1 -0
- package/dist/esm/files/EntityFile.js +16 -11
- package/dist/esm/files/EntityFile.js.map +1 -1
- package/dist/esm/files/FileManager.d.ts +1 -3
- package/dist/esm/files/FileManager.js +12 -10
- package/dist/esm/files/FileManager.js.map +1 -1
- package/dist/esm/index.d.ts +4 -5
- package/dist/esm/index.js +2 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal.d.ts +6 -0
- package/dist/esm/internal.js +5 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/persistence/MessageCreator.d.ts +3 -1
- package/dist/esm/persistence/MessageCreator.js +58 -55
- package/dist/esm/persistence/MessageCreator.js.map +1 -1
- package/dist/esm/persistence/PersistenceFiles.d.ts +8 -21
- package/dist/esm/persistence/PersistenceFiles.js +44 -30
- package/dist/esm/persistence/PersistenceFiles.js.map +1 -1
- package/dist/esm/persistence/PersistenceMetadata.d.ts +12 -11
- package/dist/esm/persistence/PersistenceMetadata.js +201 -137
- package/dist/esm/persistence/PersistenceMetadata.js.map +1 -1
- package/dist/esm/persistence/PersistenceQueries.d.ts +10 -11
- package/dist/esm/persistence/PersistenceQueries.js +33 -5
- package/dist/esm/persistence/PersistenceQueries.js.map +1 -1
- package/dist/esm/persistence/PersistenceRebaser.d.ts +5 -9
- package/dist/esm/persistence/PersistenceRebaser.js +63 -47
- package/dist/esm/persistence/PersistenceRebaser.js.map +1 -1
- package/dist/esm/persistence/idb/IdbService.d.ts +0 -1
- package/dist/esm/persistence/idb/IdbService.js +28 -16
- package/dist/esm/persistence/idb/IdbService.js.map +1 -1
- package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.d.ts +11 -31
- package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js +31 -36
- package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js.map +1 -1
- package/dist/esm/persistence/idb/idbPersistence.d.ts +17 -9
- package/dist/esm/persistence/idb/idbPersistence.js +80 -39
- package/dist/esm/persistence/idb/idbPersistence.js.map +1 -1
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.d.ts +7 -10
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js +45 -71
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js.map +1 -1
- package/dist/esm/persistence/idb/metadata/openMetadataDatabase.d.ts +1 -12
- package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js +3 -56
- package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js.map +1 -1
- package/dist/esm/persistence/idb/queries/{IdbQueryDb.d.ts → IdbDocumentDb.d.ts} +7 -13
- package/dist/esm/persistence/idb/queries/{IdbQueryDb.js → IdbDocumentDb.js} +15 -32
- package/dist/esm/persistence/idb/queries/IdbDocumentDb.js.map +1 -0
- package/dist/esm/persistence/idb/queries/migration/db.d.ts +3 -5
- package/dist/esm/persistence/idb/queries/migration/db.js +13 -28
- package/dist/esm/persistence/idb/queries/migration/db.js.map +1 -1
- package/dist/esm/persistence/idb/util.d.ts +8 -4
- package/dist/esm/persistence/idb/util.js +64 -21
- package/dist/esm/persistence/idb/util.js.map +1 -1
- package/dist/esm/persistence/interfaces.d.ts +68 -75
- package/dist/esm/persistence/{idb/queries/migration → migration}/engine.d.ts +4 -7
- package/dist/esm/persistence/{idb/queries/migration → migration}/engine.js +18 -10
- package/dist/esm/persistence/migration/engine.js.map +1 -0
- package/dist/esm/persistence/migration/finalize.d.ts +9 -0
- package/dist/esm/persistence/migration/finalize.js +75 -0
- package/dist/esm/persistence/migration/finalize.js.map +1 -0
- package/dist/esm/persistence/migration/migrate.d.ts +12 -0
- package/dist/esm/persistence/migration/migrate.js +89 -0
- package/dist/esm/persistence/migration/migrate.js.map +1 -0
- package/dist/esm/persistence/migration/paths.js.map +1 -0
- package/dist/esm/persistence/migration/paths.test.js.map +1 -0
- package/dist/esm/persistence/migration/types.d.ts +3 -0
- package/dist/esm/persistence/migration/types.js.map +1 -0
- package/dist/esm/persistence/persistence.js +25 -15
- package/dist/esm/persistence/persistence.js.map +1 -1
- package/dist/esm/queries/FindAllQuery.js +1 -1
- package/dist/esm/queries/FindAllQuery.js.map +1 -1
- package/dist/esm/queries/FindInfiniteQuery.js +2 -2
- package/dist/esm/queries/FindInfiniteQuery.js.map +1 -1
- package/dist/esm/queries/FindOneQuery.js +1 -1
- package/dist/esm/queries/FindOneQuery.js.map +1 -1
- package/dist/esm/queries/FindPageQuery.js +1 -1
- package/dist/esm/queries/FindPageQuery.js.map +1 -1
- package/dist/esm/sync/FileSync.js +3 -3
- package/dist/esm/sync/FileSync.js.map +1 -1
- package/dist/esm/sync/PushPullSync.d.ts +2 -3
- package/dist/esm/sync/PushPullSync.js +4 -2
- package/dist/esm/sync/PushPullSync.js.map +1 -1
- package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +3 -7
- package/dist/esm/sync/ServerSyncEndpointProvider.js +3 -2
- package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
- package/dist/esm/sync/Sync.d.ts +6 -1
- package/dist/esm/sync/Sync.js +12 -4
- package/dist/esm/sync/Sync.js.map +1 -1
- package/dist/esm/sync/WebSocketSync.js +10 -4
- package/dist/esm/sync/WebSocketSync.js.map +1 -1
- package/package.json +6 -2
- package/src/__tests__/fixtures/testStorage.ts +6 -6
- package/src/client/Client.ts +26 -8
- package/src/client/ClientDescriptor.ts +27 -9
- package/src/context/ShutdownHandler.ts +26 -0
- package/src/context/context.ts +16 -4
- package/src/entities/EntityStore.ts +9 -3
- package/src/files/EntityFile.ts +11 -6
- package/src/files/FileManager.ts +13 -10
- package/src/index.ts +8 -9
- package/src/internal.ts +27 -0
- package/src/persistence/MessageCreator.ts +79 -73
- package/src/persistence/PersistenceFiles.ts +57 -31
- package/src/persistence/PersistenceMetadata.ts +287 -195
- package/src/persistence/PersistenceQueries.ts +45 -9
- package/src/persistence/PersistenceRebaser.ts +105 -70
- package/src/persistence/idb/IdbService.ts +40 -22
- package/src/persistence/idb/files/IdbPersistenceFileDb.ts +30 -62
- package/src/persistence/idb/idbPersistence.ts +123 -47
- package/src/persistence/idb/metadata/IdbMetadataDb.ts +75 -97
- package/src/persistence/idb/metadata/openMetadataDatabase.ts +2 -96
- package/src/persistence/idb/queries/{IdbQueryDb.ts → IdbDocumentDb.ts} +17 -57
- package/src/persistence/idb/queries/migration/db.ts +20 -39
- package/src/persistence/idb/util.ts +84 -21
- package/src/persistence/interfaces.ts +89 -90
- package/src/persistence/{idb/queries/migration → migration}/engine.ts +30 -15
- package/src/persistence/migration/finalize.ts +126 -0
- package/src/persistence/migration/migrate.ts +169 -0
- package/src/persistence/migration/types.ts +4 -0
- package/src/persistence/persistence.ts +37 -14
- package/src/queries/FindAllQuery.ts +1 -1
- package/src/queries/FindInfiniteQuery.ts +2 -2
- package/src/queries/FindOneQuery.ts +1 -1
- package/src/queries/FindPageQuery.ts +1 -1
- package/src/sync/FileSync.ts +21 -15
- package/src/sync/PushPullSync.ts +3 -4
- package/src/sync/ServerSyncEndpointProvider.ts +6 -8
- package/src/sync/Sync.ts +20 -7
- package/src/sync/WebSocketSync.ts +10 -4
- package/dist/esm/client/constants.d.ts +0 -1
- package/dist/esm/client/constants.js +0 -2
- package/dist/esm/client/constants.js.map +0 -1
- package/dist/esm/persistence/idb/queries/IdbQueryDb.js.map +0 -1
- package/dist/esm/persistence/idb/queries/migration/engine.js.map +0 -1
- package/dist/esm/persistence/idb/queries/migration/migrations.d.ts +0 -15
- package/dist/esm/persistence/idb/queries/migration/migrations.js +0 -243
- package/dist/esm/persistence/idb/queries/migration/migrations.js.map +0 -1
- package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.d.ts +0 -8
- package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js +0 -24
- package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js.map +0 -1
- package/dist/esm/persistence/idb/queries/migration/paths.js.map +0 -1
- package/dist/esm/persistence/idb/queries/migration/paths.test.js.map +0 -1
- package/dist/esm/persistence/idb/queries/migration/types.d.ts +0 -6
- package/dist/esm/persistence/idb/queries/migration/types.js.map +0 -1
- package/src/client/constants.ts +0 -1
- package/src/persistence/idb/queries/migration/migrations.ts +0 -345
- package/src/persistence/idb/queries/migration/openQueryDatabase.ts +0 -54
- package/src/persistence/idb/queries/migration/types.ts +0 -8
- /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.d.ts +0 -0
- /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.js +0 -0
- /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.test.d.ts +0 -0
- /package/dist/esm/persistence/{idb/queries/migration → migration}/paths.test.js +0 -0
- /package/dist/esm/persistence/{idb/queries/migration → migration}/types.js +0 -0
- /package/src/persistence/{idb/queries/migration → migration}/paths.test.ts +0 -0
- /package/src/persistence/{idb/queries/migration → migration}/paths.ts +0 -0
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import { CollectionFilter, ObjectIdentifier } from '@verdant-web/common';
|
|
2
2
|
import { Context } from '../../../context/context.js';
|
|
3
|
-
import {
|
|
3
|
+
import { PersistenceDocumentDb } from '../../interfaces.js';
|
|
4
4
|
import { IdbService } from '../IdbService.js';
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class IdbDocumentDb extends IdbService implements PersistenceDocumentDb {
|
|
6
6
|
private ctx;
|
|
7
|
-
constructor(db: IDBDatabase, context: Omit<Context, '
|
|
7
|
+
constructor(db: IDBDatabase, context: Omit<Context, 'documents' | 'files'>);
|
|
8
|
+
close: () => Promise<void>;
|
|
8
9
|
stats: () => Promise<Record<string, {
|
|
9
10
|
count: number;
|
|
10
11
|
size: number;
|
|
11
12
|
}>>;
|
|
12
|
-
transaction: (opts: {
|
|
13
|
-
mode?: QueryMode;
|
|
14
|
-
storeNames: string[];
|
|
15
|
-
abort?: AbortSignal;
|
|
16
|
-
}) => AbstractTransaction;
|
|
17
13
|
findOneOid: (opts: {
|
|
18
14
|
collection: string;
|
|
19
15
|
index?: CollectionFilter;
|
|
@@ -30,12 +26,10 @@ export declare class IdbQueryDb extends IdbService implements PersistenceQueryDb
|
|
|
30
26
|
saveEntities: (entities: {
|
|
31
27
|
oid: ObjectIdentifier;
|
|
32
28
|
getSnapshot: () => any;
|
|
33
|
-
}[],
|
|
29
|
+
}[], optsAndInfo: {
|
|
34
30
|
abort?: AbortSignal;
|
|
31
|
+
collections: string[];
|
|
35
32
|
}) => Promise<void>;
|
|
36
|
-
reset: (
|
|
37
|
-
transaction?: AbstractTransaction;
|
|
38
|
-
}) => Promise<void>;
|
|
39
|
-
dispose: () => Promise<void>;
|
|
33
|
+
reset: () => Promise<void>;
|
|
40
34
|
private saveDocument;
|
|
41
35
|
}
|
|
@@ -2,9 +2,12 @@ import { createOid, decomposeOid, getIndexValues, } from '@verdant-web/common';
|
|
|
2
2
|
import { IdbService } from '../IdbService.js';
|
|
3
3
|
import { getRange } from './ranges.js';
|
|
4
4
|
import { closeDatabase, getSizeOfObjectStore, isAbortError } from '../util.js';
|
|
5
|
-
export class
|
|
5
|
+
export class IdbDocumentDb extends IdbService {
|
|
6
6
|
constructor(db, context) {
|
|
7
7
|
super(db, { log: context.log });
|
|
8
|
+
this.close = async () => {
|
|
9
|
+
await this.dispose();
|
|
10
|
+
};
|
|
8
11
|
this.stats = async () => {
|
|
9
12
|
const collectionNames = Object.keys(this.ctx.schema.collections);
|
|
10
13
|
const collections = {};
|
|
@@ -14,12 +17,6 @@ export class IdbQueryDb extends IdbService {
|
|
|
14
17
|
}));
|
|
15
18
|
return collections;
|
|
16
19
|
};
|
|
17
|
-
this.transaction = (opts) => {
|
|
18
|
-
return this.createTransaction(opts.storeNames, {
|
|
19
|
-
mode: opts.mode,
|
|
20
|
-
abort: opts.abort,
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
20
|
this.findOneOid = async (opts) => {
|
|
24
21
|
const result = await this.run(opts.collection, (store) => {
|
|
25
22
|
var _a, _b;
|
|
@@ -97,24 +94,13 @@ export class IdbQueryDb extends IdbService {
|
|
|
97
94
|
hasNextPage,
|
|
98
95
|
};
|
|
99
96
|
};
|
|
100
|
-
this.saveEntities = async (entities,
|
|
101
|
-
if (entities.length === 0)
|
|
102
|
-
return;
|
|
103
|
-
let collections = Array.from(new Set(entities.map((e) => decomposeOid(e.oid).collection)));
|
|
104
|
-
const toRemove = collections.filter((c) => !this.ctx.schema.collections[c]);
|
|
105
|
-
if (toRemove.length > 0) {
|
|
106
|
-
this.ctx.log('warn', `Ignoring entities from collections that no longer exist: ${toRemove.join(', ')}`);
|
|
107
|
-
}
|
|
108
|
-
const withRemoved = new Set(collections);
|
|
109
|
-
toRemove.forEach((c) => withRemoved.delete(c));
|
|
110
|
-
collections = Array.from(withRemoved);
|
|
97
|
+
this.saveEntities = async (entities, optsAndInfo) => {
|
|
111
98
|
const options = {
|
|
112
|
-
transaction: this.createTransaction(collections, {
|
|
99
|
+
transaction: this.createTransaction(optsAndInfo.collections, {
|
|
113
100
|
mode: 'readwrite',
|
|
114
|
-
abort:
|
|
101
|
+
abort: optsAndInfo.abort,
|
|
115
102
|
}),
|
|
116
103
|
};
|
|
117
|
-
// FIXME: not test is making it to this line
|
|
118
104
|
await Promise.all(entities.map(async (e) => {
|
|
119
105
|
const snapshot = e.getSnapshot();
|
|
120
106
|
try {
|
|
@@ -131,22 +117,14 @@ export class IdbQueryDb extends IdbService {
|
|
|
131
117
|
}
|
|
132
118
|
}));
|
|
133
119
|
options.transaction.commit();
|
|
134
|
-
this.ctx.entityEvents.emit('collectionsChanged', collections);
|
|
135
|
-
for (const entity of entities) {
|
|
136
|
-
this.ctx.entityEvents.emit('documentChanged', entity.oid);
|
|
137
|
-
}
|
|
138
120
|
};
|
|
139
|
-
this.reset = async (
|
|
121
|
+
this.reset = async () => {
|
|
140
122
|
const names = Object.keys(this.ctx.schema.collections);
|
|
141
|
-
const tx = (
|
|
142
|
-
this.createTransaction(names, { mode: 'readwrite' });
|
|
123
|
+
const tx = this.createTransaction(names, { mode: 'readwrite' });
|
|
143
124
|
await Promise.all(names.map((name) => this.run(name, (store) => store.clear(), { transaction: tx })));
|
|
144
125
|
this.ctx.entityEvents.emit('collectionsChanged', names);
|
|
145
126
|
this.ctx.log('info', '💨 Reset queryable storage');
|
|
146
127
|
};
|
|
147
|
-
this.dispose = () => {
|
|
148
|
-
return closeDatabase(this.db);
|
|
149
|
-
};
|
|
150
128
|
this.saveDocument = async (oid, doc, { transaction }) => {
|
|
151
129
|
this.ctx.log('debug', `Saving document indexes for querying ${oid}`);
|
|
152
130
|
const { collection, id } = decomposeOid(oid);
|
|
@@ -161,6 +139,7 @@ export class IdbQueryDb extends IdbService {
|
|
|
161
139
|
const schema = this.ctx.schema.collections[collection];
|
|
162
140
|
// no need to validate before storing; the entity's snapshot is already validated.
|
|
163
141
|
const indexes = getIndexValues(schema, doc);
|
|
142
|
+
indexes['@@@snapshot'] = JSON.stringify(doc);
|
|
164
143
|
await this.run(collection, (store) => store.put(indexes), {
|
|
165
144
|
mode: 'readwrite',
|
|
166
145
|
transaction,
|
|
@@ -169,6 +148,10 @@ export class IdbQueryDb extends IdbService {
|
|
|
169
148
|
}
|
|
170
149
|
};
|
|
171
150
|
this.ctx = context;
|
|
151
|
+
this.addDispose(() => {
|
|
152
|
+
this.ctx.log('info', 'Closing document database for', this.ctx.namespace);
|
|
153
|
+
return closeDatabase(this.db);
|
|
154
|
+
});
|
|
172
155
|
}
|
|
173
156
|
}
|
|
174
|
-
//# sourceMappingURL=
|
|
157
|
+
//# sourceMappingURL=IdbDocumentDb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdbDocumentDb.js","sourceRoot":"","sources":["../../../../../src/persistence/idb/queries/IdbDocumentDb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function getDatabaseVersion(indexedDB: IDBFactory, namespace: string): Promise<number>;
|
|
1
|
+
import { Context } from '../../../../internal.js';
|
|
3
2
|
/**
|
|
4
3
|
* Upgrades the database to the given version, using the given upgrader function.
|
|
5
4
|
*/
|
|
6
5
|
export declare function upgradeDatabase(indexedDb: IDBFactory, namespace: string, version: number, upgrader: (transaction: IDBTransaction, db: IDBDatabase, event: IDBVersionChangeEvent) => void, log?: (...args: any[]) => void): Promise<IDBDatabase>;
|
|
7
|
-
export declare function
|
|
8
|
-
export declare function openDatabase({ indexedDB, namespace, version, context, }: {
|
|
6
|
+
export declare function openDatabase({ indexedDB, namespace, version, log, }: {
|
|
9
7
|
indexedDB?: IDBFactory;
|
|
10
8
|
namespace: string;
|
|
11
9
|
version: number;
|
|
12
|
-
|
|
10
|
+
log?: Context['log'];
|
|
13
11
|
}): Promise<IDBDatabase>;
|
|
14
12
|
export declare function copyAll(sourceDatabase: IDBDatabase, targetDatabase: IDBDatabase): Promise<void>;
|
|
@@ -1,28 +1,21 @@
|
|
|
1
|
-
import { globalIDB, storeRequestPromise, openDatabase as baseOpenDatabase, getDocumentDbName, } from '../../util.js';
|
|
2
|
-
export async function getDatabaseVersion(indexedDB, namespace) {
|
|
3
|
-
var _a;
|
|
4
|
-
const databaseName = getDocumentDbName(namespace);
|
|
5
|
-
const dbInfo = await indexedDB.databases();
|
|
6
|
-
const existingDb = dbInfo.find((info) => info.name === databaseName);
|
|
7
|
-
if (existingDb) {
|
|
8
|
-
return (_a = existingDb.version) !== null && _a !== void 0 ? _a : 0;
|
|
9
|
-
}
|
|
10
|
-
return 0;
|
|
11
|
-
}
|
|
1
|
+
import { globalIDB, storeRequestPromise, openDatabase as baseOpenDatabase, getDocumentDbName, closeDatabase, } from '../../util.js';
|
|
12
2
|
/**
|
|
13
3
|
* Upgrades the database to the given version, using the given upgrader function.
|
|
14
4
|
*/
|
|
15
5
|
export async function upgradeDatabase(indexedDb, namespace, version, upgrader, log) {
|
|
6
|
+
log === null || log === void 0 ? void 0 : log('debug', 'Upgrading database', namespace, 'to version', version);
|
|
16
7
|
function openAndUpgrade(resolve, reject) {
|
|
17
|
-
const request = indexedDb.open(
|
|
8
|
+
const request = indexedDb.open(getDocumentDbName(namespace), version);
|
|
18
9
|
let wasUpgraded = false;
|
|
19
10
|
request.onupgradeneeded = (event) => {
|
|
20
11
|
const transaction = request.transaction;
|
|
21
12
|
upgrader(transaction, request.result, event);
|
|
22
13
|
wasUpgraded = true;
|
|
23
14
|
};
|
|
24
|
-
request.onsuccess = (event) => {
|
|
15
|
+
request.onsuccess = async (event) => {
|
|
25
16
|
if (wasUpgraded) {
|
|
17
|
+
// close the database
|
|
18
|
+
await closeDatabase(request.result);
|
|
26
19
|
resolve(request.result);
|
|
27
20
|
}
|
|
28
21
|
else {
|
|
@@ -33,29 +26,21 @@ export async function upgradeDatabase(indexedDb, namespace, version, upgrader, l
|
|
|
33
26
|
reject(request.error || new Error('Unknown error'));
|
|
34
27
|
};
|
|
35
28
|
request.onblocked = (event) => {
|
|
36
|
-
log === null || log === void 0 ? void 0 : log('Database upgrade blocked
|
|
37
|
-
|
|
38
|
-
// openAndUpgrade(resolve, reject);
|
|
39
|
-
// }, 200);
|
|
29
|
+
log === null || log === void 0 ? void 0 : log('Database upgrade blocked!');
|
|
30
|
+
reject(new Error('Database upgrade blocked. The app may be open in another tab?'));
|
|
40
31
|
};
|
|
41
32
|
}
|
|
42
33
|
return new Promise(openAndUpgrade);
|
|
43
34
|
}
|
|
44
|
-
export async function
|
|
45
|
-
|
|
46
|
-
await navigator.locks.request(`verdant_migration_${namespace}`, procedure);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
// TODO: is there a fallback?
|
|
50
|
-
await procedure();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export async function openDatabase({ indexedDB = globalIDB, namespace, version, context, }) {
|
|
54
|
-
context.log('debug', 'Opening database', namespace, 'at version', version);
|
|
35
|
+
export async function openDatabase({ indexedDB = globalIDB, namespace, version, log, }) {
|
|
36
|
+
log === null || log === void 0 ? void 0 : log('debug', 'Opening database', namespace, 'at version', version);
|
|
55
37
|
const db = await baseOpenDatabase(getDocumentDbName(namespace), version, indexedDB);
|
|
56
38
|
db.addEventListener('versionchange', (event) => {
|
|
57
39
|
db.close();
|
|
58
40
|
});
|
|
41
|
+
db.addEventListener('close', () => {
|
|
42
|
+
log === null || log === void 0 ? void 0 : log('warn', 'Database closed', namespace);
|
|
43
|
+
});
|
|
59
44
|
return db;
|
|
60
45
|
}
|
|
61
46
|
export async function copyAll(sourceDatabase, targetDatabase) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../../../src/persistence/idb/queries/migration/db.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,mBAAmB,EACnB,YAAY,IAAI,gBAAgB,EAChC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../../../src/persistence/idb/queries/migration/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Context } from '../../internal.js';
|
|
1
2
|
export declare const globalIDB: any;
|
|
2
3
|
export declare function isAbortError(err: unknown): boolean;
|
|
3
4
|
export declare function storeRequestPromise<T>(request: IDBRequest<T>): Promise<T>;
|
|
@@ -19,11 +20,14 @@ export declare function deleteDatabase(name: string, indexedDB?: IDBFactory): Pr
|
|
|
19
20
|
export declare function getAllDatabaseNamesAndVersions(indexedDB?: IDBFactory): Promise<IDBDatabaseInfo[]>;
|
|
20
21
|
export declare function createAbortableTransaction(db: IDBDatabase, storeNames: string[], mode: 'readonly' | 'readwrite', abortSignal?: AbortSignal, log?: (...args: any[]) => void): IDBTransaction;
|
|
21
22
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
23
|
+
* Deletes any existing database with name `toName` and
|
|
24
|
+
* copies the index structure and all data
|
|
25
|
+
* from `from` to a new database.
|
|
26
|
+
*
|
|
27
|
+
* Does NOT run Verdant migrations. Use to copy existing
|
|
28
|
+
* data as-is.
|
|
24
29
|
*/
|
|
25
|
-
export declare function
|
|
26
|
-
export declare function copyDatabase(from: IDBDatabase, to: IDBDatabase): Promise<void>;
|
|
30
|
+
export declare function overwriteDatabase(from: IDBDatabase, toName: string, ctx: Pick<Context, 'log'>, indexedDB?: IDBFactory): Promise<void>;
|
|
27
31
|
export declare function openDatabase(name: string, expectedVersion: number, indexedDB?: IDBFactory): Promise<IDBDatabase>;
|
|
28
32
|
export declare function getMetadataDbName(namespace: string): string;
|
|
29
33
|
export declare function getDocumentDbName(namespace: string): string;
|
|
@@ -155,34 +155,77 @@ export function createAbortableTransaction(db, storeNames, mode, abortSignal, lo
|
|
|
155
155
|
return tx;
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
|
-
*
|
|
159
|
-
*
|
|
158
|
+
* Deletes any existing database with name `toName` and
|
|
159
|
+
* copies the index structure and all data
|
|
160
|
+
* from `from` to a new database.
|
|
161
|
+
*
|
|
162
|
+
* Does NOT run Verdant migrations. Use to copy existing
|
|
163
|
+
* data as-is.
|
|
160
164
|
*/
|
|
161
|
-
export function
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
165
|
+
export async function overwriteDatabase(from, toName, ctx, indexedDB = window.indexedDB) {
|
|
166
|
+
const databases = await getAllDatabaseNamesAndVersions(indexedDB);
|
|
167
|
+
if (databases.some((d) => d.name === toName)) {
|
|
168
|
+
await deleteDatabase(toName, indexedDB);
|
|
169
|
+
ctx.log('debug', 'Deleted existing database', toName);
|
|
166
170
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
171
|
+
const to = await new Promise((resolve, reject) => {
|
|
172
|
+
ctx.log('debug', 'Opening reset database', toName, 'at', from.version);
|
|
173
|
+
const openRequest = indexedDB.open(toName, from.version);
|
|
174
|
+
openRequest.onupgradeneeded = () => {
|
|
175
|
+
ctx.log('debug', 'Upgrading database', toName, 'to version', from.version);
|
|
176
|
+
// copy all indexes from original
|
|
177
|
+
const original = from;
|
|
178
|
+
const upgradeTx = openRequest.transaction;
|
|
179
|
+
if (!upgradeTx) {
|
|
180
|
+
throw new Error('No transaction');
|
|
181
|
+
}
|
|
182
|
+
for (const storeName of Array.from(original.objectStoreNames)) {
|
|
183
|
+
const originalObjectStore = original
|
|
184
|
+
.transaction(storeName)
|
|
185
|
+
.objectStore(storeName);
|
|
186
|
+
// create object store
|
|
187
|
+
upgradeTx.db.createObjectStore(storeName, {
|
|
188
|
+
keyPath: originalObjectStore.keyPath,
|
|
189
|
+
autoIncrement: originalObjectStore.autoIncrement,
|
|
190
|
+
});
|
|
191
|
+
const store = upgradeTx.objectStore(storeName);
|
|
192
|
+
const originalStore = original
|
|
193
|
+
.transaction(storeName)
|
|
194
|
+
.objectStore(storeName);
|
|
195
|
+
for (const index of Array.from(originalStore.indexNames)) {
|
|
196
|
+
const originalIndex = originalStore.index(index);
|
|
197
|
+
ctx.log('debug', 'Copying index', index);
|
|
198
|
+
store.createIndex(index, originalIndex.keyPath, {
|
|
199
|
+
unique: originalIndex.unique,
|
|
200
|
+
multiEntry: originalIndex.multiEntry,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
openRequest.onsuccess = () => {
|
|
206
|
+
ctx.log('debug', 'Opened reset database', toName);
|
|
207
|
+
resolve(openRequest.result);
|
|
208
|
+
};
|
|
209
|
+
openRequest.onerror = () => { var _a; return reject((_a = openRequest.error) !== null && _a !== void 0 ? _a : new Error('Unknown database upgrade error')); };
|
|
170
210
|
});
|
|
171
|
-
}
|
|
172
|
-
export async function copyDatabase(from, to) {
|
|
173
|
-
await emptyDatabase(to);
|
|
174
211
|
const records = await getAllFromObjectStores(from, Array.from(from.objectStoreNames));
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
212
|
+
await new Promise((resolve, reject) => {
|
|
213
|
+
const writeTx = to.transaction(Array.from(to.objectStoreNames), 'readwrite');
|
|
214
|
+
for (let i = 0; i < records.length; i++) {
|
|
215
|
+
const store = writeTx.objectStore(from.objectStoreNames[i]);
|
|
216
|
+
for (const record of records[i]) {
|
|
217
|
+
store.add(record);
|
|
218
|
+
}
|
|
180
219
|
}
|
|
181
|
-
}
|
|
182
|
-
return new Promise((resolve, reject) => {
|
|
183
220
|
writeTx.oncomplete = () => resolve();
|
|
184
|
-
writeTx.onerror = () =>
|
|
221
|
+
writeTx.onerror = (ev) => {
|
|
222
|
+
var _a, _b, _c;
|
|
223
|
+
const err = (_c = (_a = writeTx.error) !== null && _a !== void 0 ? _a : (_b = ev.target.transaction) === null || _b === void 0 ? void 0 : _b.error) !== null && _c !== void 0 ? _c : new Error('Unknown error');
|
|
224
|
+
ctx.log('critical', 'Error copying data', err);
|
|
225
|
+
reject(err);
|
|
226
|
+
};
|
|
185
227
|
});
|
|
228
|
+
await closeDatabase(to);
|
|
186
229
|
}
|
|
187
230
|
export function openDatabase(name, expectedVersion, indexedDB = window.indexedDB) {
|
|
188
231
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/persistence/idb/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/persistence/idb/util.ts"],"names":[],"mappings":"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"}
|