summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-02-12 15:54:49 -0300
committerSebastian <sebasjm@gmail.com>2024-02-12 16:05:51 -0300
commit86194c61457f2e2e534cd05071bde9633e205ad3 (patch)
tree2eb7794af5b6575680a259fb066bc698d7a71ed0 /packages/taler-wallet-core/src
parent975a087956c8c392801515db4b6809a368b83e20 (diff)
downloadwallet-core-86194c61457f2e2e534cd05071bde9633e205ad3.tar.gz
wallet-core-86194c61457f2e2e534cd05071bde9633e205ad3.tar.bz2
wallet-core-86194c61457f2e2e534cd05071bde9633e205ad3.zip
add more info when wallet-core is not available
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r--packages/taler-wallet-core/src/db.ts6
-rw-r--r--packages/taler-wallet-core/src/host-impl.node.ts6
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts2
-rw-r--r--packages/taler-wallet-core/src/util/promiseUtils.ts17
-rw-r--r--packages/taler-wallet-core/src/util/query.ts17
5 files changed, 35 insertions, 13 deletions
diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts
index b0605cb1d..705df48b1 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -3012,8 +3012,10 @@ function upgradeFromStoreMap(
});
} catch (e) {
const moreInfo = e instanceof Error ? ` Reason: ${e.message}` : "";
- throw Error(
+ throw new Error(
`Migration failed. Could not create store ${swi.storeName}.${moreInfo}`,
+ // @ts-expect-error no support for options.cause yet
+ { cause: e },
);
}
}
@@ -3040,6 +3042,8 @@ function upgradeFromStoreMap(
const moreInfo = e instanceof Error ? ` Reason: ${e.message}` : "";
throw Error(
`Migration failed. Could not create index ${indexDesc.name}/${indexDesc.keyPath}. ${moreInfo}`,
+ // @ts-expect-error no support for options.cause yet
+ { cause: e },
);
}
}
diff --git a/packages/taler-wallet-core/src/host-impl.node.ts b/packages/taler-wallet-core/src/host-impl.node.ts
index fefee1067..622ea742e 100644
--- a/packages/taler-wallet-core/src/host-impl.node.ts
+++ b/packages/taler-wallet-core/src/host-impl.node.ts
@@ -68,7 +68,11 @@ async function makeFileDb(
logger.trace("wallet file doesn't exist yet");
} else {
logger.error("could not open wallet database file");
- throw e;
+ throw Error(
+ "could not open wallet database file",
+ // @ts-expect-error no support for options.cause yet
+ { cause: e },
+ );
}
}
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts
index d664a6da6..86f05478a 100644
--- a/packages/taler-wallet-core/src/operations/withdraw.ts
+++ b/packages/taler-wallet-core/src/operations/withdraw.ts
@@ -2116,7 +2116,7 @@ async function registerReserveWithBank(
if (
withdrawalGroup.wgInfo.withdrawalType != WithdrawalRecordType.BankIntegrated
) {
- throw Error();
+ throw Error("expecting withdrarwal type = bank integrated");
}
const bankInfo = withdrawalGroup.wgInfo.bankInfo;
if (!bankInfo) {
diff --git a/packages/taler-wallet-core/src/util/promiseUtils.ts b/packages/taler-wallet-core/src/util/promiseUtils.ts
index df4cc343b..d152a12f4 100644
--- a/packages/taler-wallet-core/src/util/promiseUtils.ts
+++ b/packages/taler-wallet-core/src/util/promiseUtils.ts
@@ -23,6 +23,7 @@ export interface OpenedPromise<T> {
promise: Promise<T>;
resolve: (val: T) => void;
reject: (err: any) => void;
+ lastError?: any;
}
/**
@@ -33,16 +34,22 @@ export interface OpenedPromise<T> {
*/
export function openPromise<T>(): OpenedPromise<T> {
let resolve: ((x?: any) => void) | null = null;
- let reject: ((reason?: any) => void) | null = null;
+ let promiseReject: ((reason?: any) => void) | null = null;
const promise = new Promise<T>((res, rej) => {
resolve = res;
- reject = rej;
+ promiseReject = rej;
});
- if (!(resolve && reject)) {
+ if (!(resolve && promiseReject)) {
// Never happens, unless JS implementation is broken
- throw Error();
+ throw Error("JS implementation is broken");
}
- return { resolve, reject, promise };
+ const result: OpenedPromise<T> = { resolve, reject: promiseReject, promise };
+ function saveLastError(reason?: any) {
+ result.lastError = reason;
+ promiseReject!(reason);
+ }
+ result.reject = saveLastError;
+ return result;
}
export class AsyncCondition {
diff --git a/packages/taler-wallet-core/src/util/query.ts b/packages/taler-wallet-core/src/util/query.ts
index efb1a3f42..8274e252b 100644
--- a/packages/taler-wallet-core/src/util/query.ts
+++ b/packages/taler-wallet-core/src/util/query.ts
@@ -34,6 +34,7 @@ import {
IDBCursor,
IDBKeyPath,
IDBKeyRange,
+ IDBOpenDBRequest,
} from "@gnu-taler/idb-bridge";
import { Codec, Logger, j2s } from "@gnu-taler/taler-util";
@@ -250,9 +251,9 @@ export function openDatabase(
): Promise<IDBDatabase> {
return new Promise<IDBDatabase>((resolve, reject) => {
const req = idbFactory.open(databaseName, databaseVersion);
- req.onerror = (e) => {
- logger.error("database error", e);
- reject(new Error("database error"));
+ req.onerror = (event) => {
+ // @ts-expect-error
+ reject(new Error(`database opening error`, { cause: req.error }));
};
req.onsuccess = (e) => {
req.result.onversionchange = (evt: IDBVersionChangeEvent) => {
@@ -268,11 +269,17 @@ export function openDatabase(
const db = req.result;
const newVersion = e.newVersion;
if (!newVersion) {
- throw Error("upgrade needed, but new version unknown");
+ // @ts-expect-error
+ throw Error("upgrade needed, but new version unknown", {
+ cause: req.error,
+ });
}
const transaction = req.transaction;
if (!transaction) {
- throw Error("no transaction handle available in upgrade handler");
+ // @ts-expect-error
+ throw Error("no transaction handle available in upgrade handler", {
+ cause: req.error,
+ });
}
logger.info(
`handling upgradeneeded event on ${databaseName} from ${e.oldVersion} to ${e.newVersion}`,