From f797f16e2f5b6ccfa5b1301becc07302ab2131a2 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 21 Nov 2019 10:43:40 +0100 Subject: improve error reporting --- packages/idb-bridge/src/MemoryBackend.ts | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'packages/idb-bridge/src/MemoryBackend.ts') diff --git a/packages/idb-bridge/src/MemoryBackend.ts b/packages/idb-bridge/src/MemoryBackend.ts index bb13a0223..b19c25cf0 100644 --- a/packages/idb-bridge/src/MemoryBackend.ts +++ b/packages/idb-bridge/src/MemoryBackend.ts @@ -32,6 +32,7 @@ import { InvalidStateError, InvalidAccessError, ConstraintError, + DataError, } from "./util/errors"; import BTree, { ISortedMapF } from "./tree/b+tree"; import compareKeys from "./util/cmp"; @@ -1386,11 +1387,27 @@ export class MemoryBackend implements Backend { ); } let indexData = index.modifiedData || index.originalData; - const indexKeys = getIndexKeys( - value, - indexProperties.keyPath, - indexProperties.multiEntry, - ); + let indexKeys; + try { + indexKeys = getIndexKeys( + value, + indexProperties.keyPath, + indexProperties.multiEntry, + ); + } catch (e) { + if (e instanceof DataError) { + const n = index.modifiedName || index.originalName; + const p = JSON.stringify(indexProperties.keyPath); + const m = `Failed to extract index keys from index ${n} for keyPath ${p}.`; + if (this.enableTracing) { + console.error(m); + console.error("value was", value); + } + throw new DataError(m); + } else { + throw e; + } + } for (const indexKey of indexKeys) { const existingRecord = indexData.get(indexKey); if (existingRecord) { -- cgit v1.2.3