aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/MemoryBackend.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-11-21 10:43:40 +0100
committerFlorian Dold <florian.dold@gmail.com>2019-11-21 10:43:40 +0100
commitf797f16e2f5b6ccfa5b1301becc07302ab2131a2 (patch)
tree407ffc0592b32c044a561467f60b95540a1834c9 /packages/idb-bridge/src/MemoryBackend.ts
parent035b3fdae2961bd0b1d48e8119a64f4d340cd696 (diff)
downloadwallet-core-f797f16e2f5b6ccfa5b1301becc07302ab2131a2.tar.gz
wallet-core-f797f16e2f5b6ccfa5b1301becc07302ab2131a2.tar.bz2
wallet-core-f797f16e2f5b6ccfa5b1301becc07302ab2131a2.zip
improve error reporting
Diffstat (limited to 'packages/idb-bridge/src/MemoryBackend.ts')
-rw-r--r--packages/idb-bridge/src/MemoryBackend.ts27
1 files changed, 22 insertions, 5 deletions
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) {