From 6a57ad5fe2492173bcebada357af705048fce6f7 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Fri, 16 Aug 2019 23:06:51 +0200 Subject: do not ignore database version --- packages/idb-bridge/package.json | 2 +- packages/idb-bridge/src/MemoryBackend.test.ts | 3 ++- packages/idb-bridge/src/MemoryBackend.ts | 19 +++++++------------ packages/idb-bridge/tsconfig.json | 1 + 4 files changed, 11 insertions(+), 14 deletions(-) (limited to 'packages') diff --git a/packages/idb-bridge/package.json b/packages/idb-bridge/package.json index a91b5f263..5816b7172 100644 --- a/packages/idb-bridge/package.json +++ b/packages/idb-bridge/package.json @@ -1,6 +1,6 @@ { "name": "idb-bridge", - "version": "0.0.4", + "version": "0.0.5", "description": "IndexedDB implementation that uses SQLite3 as storage", "main": "./build/index.js", "types": "./build/index.d.ts", diff --git a/packages/idb-bridge/src/MemoryBackend.test.ts b/packages/idb-bridge/src/MemoryBackend.test.ts index 41bf1986a..7f9c1440d 100644 --- a/packages/idb-bridge/src/MemoryBackend.test.ts +++ b/packages/idb-bridge/src/MemoryBackend.test.ts @@ -312,7 +312,7 @@ test("export", async t => { const backend = new MemoryBackend(); const idb = new BridgeIDBFactory(backend); - const request = idb.open("library"); + const request = idb.open("library", 42); request.onupgradeneeded = () => { const db = request.result; const store = db.createObjectStore("books", { keyPath: "isbn" }); @@ -344,5 +344,6 @@ test("export", async t => { t.assert(exportedData.databases["library"].objectStores["books"].records.length === 3); t.deepEqual(exportedData, exportedData2); + t.is(exportedData.databases["library"].schema.databaseVersion, 42); t.pass(); }); \ No newline at end of file diff --git a/packages/idb-bridge/src/MemoryBackend.ts b/packages/idb-bridge/src/MemoryBackend.ts index 4154435a0..b904dd040 100644 --- a/packages/idb-bridge/src/MemoryBackend.ts +++ b/packages/idb-bridge/src/MemoryBackend.ts @@ -107,7 +107,7 @@ interface MemoryBackendDump { interface Connection { dbName: string; - modifiedSchema: Schema | undefined; + modifiedSchema: Schema; /** * Has the underlying database been deleted? @@ -491,6 +491,8 @@ export class MemoryBackend implements Backend { this.connectionsByTransaction[transactionCookie] = myConn; + myConn.modifiedSchema.databaseVersion = newVersion; + return { transactionCookie }; } @@ -525,10 +527,7 @@ export class MemoryBackend implements Backend { if (!db) { throw Error("db not found"); } - if (myConn.modifiedSchema) { - return myConn.modifiedSchema; - } - return db.committedSchema; + return myConn.modifiedSchema; } renameIndex( @@ -827,9 +826,7 @@ export class MemoryBackend implements Backend { ); } - const schema = myConn.modifiedSchema - ? myConn.modifiedSchema - : db.committedSchema; + const schema = myConn.modifiedSchema; const objectStore = myConn.objectStoreMap[objectStoreName]; if (!objectStore.modifiedData) { @@ -1264,9 +1261,7 @@ export class MemoryBackend implements Backend { if (db.txLevel < TransactionLevel.Write) { throw Error("only allowed while running a transaction"); } - const schema = myConn.modifiedSchema - ? myConn.modifiedSchema - : db.committedSchema; + const schema = myConn.modifiedSchema; const objectStore = myConn.objectStoreMap[storeReq.objectStoreName]; if (!objectStore.modifiedData) { @@ -1421,7 +1416,7 @@ export class MemoryBackend implements Backend { throw Error("only allowed while running a transaction"); } - db.committedSchema = myConn.modifiedSchema || db.committedSchema; + db.committedSchema = structuredClone(myConn.modifiedSchema); db.txLevel = TransactionLevel.Connected; db.committedIndexes = {}; diff --git a/packages/idb-bridge/tsconfig.json b/packages/idb-bridge/tsconfig.json index 017afdae1..8baf78ac1 100644 --- a/packages/idb-bridge/tsconfig.json +++ b/packages/idb-bridge/tsconfig.json @@ -10,6 +10,7 @@ "strict": true, "incremental": true, "sourceMap": true, + "typeRoots": ["./node_modules"], "types": [] }, "include": ["src/**/*"] -- cgit v1.2.3