summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/errors.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/errors.ts')
-rw-r--r--packages/taler-wallet-core/src/errors.ts66
1 files changed, 48 insertions, 18 deletions
diff --git a/packages/taler-wallet-core/src/errors.ts b/packages/taler-wallet-core/src/errors.ts
index 7dbba2e2e..038bdbc7c 100644
--- a/packages/taler-wallet-core/src/errors.ts
+++ b/packages/taler-wallet-core/src/errors.ts
@@ -32,6 +32,8 @@ import {
TransactionType,
} from "@gnu-taler/taler-util";
+type empty = Record<string, never>;
+
export interface DetailsMap {
[TalerErrorCode.WALLET_PENDING_OPERATION_FAILED]: {
innerError: TalerErrorDetail;
@@ -44,13 +46,13 @@ export interface DetailsMap {
exchangeProtocolVersion: string;
walletProtocolVersion: string;
};
- [TalerErrorCode.WALLET_WITHDRAWAL_OPERATION_ABORTED_BY_BANK]: {};
- [TalerErrorCode.WALLET_TIPPING_COIN_SIGNATURE_INVALID]: {};
+ [TalerErrorCode.WALLET_WITHDRAWAL_OPERATION_ABORTED_BY_BANK]: empty;
+ [TalerErrorCode.WALLET_TIPPING_COIN_SIGNATURE_INVALID]: empty;
[TalerErrorCode.WALLET_ORDER_ALREADY_CLAIMED]: {
orderId: string;
claimUrl: string;
};
- [TalerErrorCode.WALLET_CONTRACT_TERMS_MALFORMED]: {};
+ [TalerErrorCode.WALLET_CONTRACT_TERMS_MALFORMED]: empty;
[TalerErrorCode.WALLET_CONTRACT_TERMS_SIGNATURE_INVALID]: {
merchantPub: string;
orderId: string;
@@ -62,18 +64,46 @@ export interface DetailsMap {
[TalerErrorCode.WALLET_INVALID_TALER_PAY_URI]: {
talerPayUri: string;
};
- [TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR]: {};
- [TalerErrorCode.WALLET_UNEXPECTED_EXCEPTION]: {};
- [TalerErrorCode.WALLET_BANK_INTEGRATION_PROTOCOL_VERSION_INCOMPATIBLE]: {};
- [TalerErrorCode.WALLET_CORE_API_OPERATION_UNKNOWN]: {};
- [TalerErrorCode.WALLET_HTTP_REQUEST_THROTTLED]: {};
- [TalerErrorCode.WALLET_HTTP_REQUEST_GENERIC_TIMEOUT]: {};
- [TalerErrorCode.WALLET_NETWORK_ERROR]: {};
- [TalerErrorCode.WALLET_RECEIVED_MALFORMED_RESPONSE]: {};
- [TalerErrorCode.WALLET_EXCHANGE_COIN_SIGNATURE_INVALID]: {};
- [TalerErrorCode.WALLET_WITHDRAWAL_GROUP_INCOMPLETE]: {};
- [TalerErrorCode.WALLET_CORE_NOT_AVAILABLE]: {};
- [TalerErrorCode.GENERIC_UNEXPECTED_REQUEST_ERROR]: {};
+ [TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR]: {
+ requestUrl: string;
+ requestMethod: string;
+ httpStatusCode: number;
+ errorResponse?: any;
+ };
+ [TalerErrorCode.WALLET_UNEXPECTED_EXCEPTION]: {
+ stack?: string;
+ };
+ [TalerErrorCode.WALLET_BANK_INTEGRATION_PROTOCOL_VERSION_INCOMPATIBLE]: {
+ exchangeProtocolVersion: string;
+ walletProtocolVersion: string;
+ };
+ [TalerErrorCode.WALLET_CORE_API_OPERATION_UNKNOWN]: {
+ operation: string;
+ };
+ [TalerErrorCode.WALLET_HTTP_REQUEST_THROTTLED]: {
+ requestUrl: string;
+ requestMethod: string;
+ throttleStats: Record<string, unknown>;
+ };
+ [TalerErrorCode.WALLET_HTTP_REQUEST_GENERIC_TIMEOUT]: empty;
+ [TalerErrorCode.WALLET_NETWORK_ERROR]: {
+ requestUrl: string;
+ requestMethod: string;
+ };
+ [TalerErrorCode.WALLET_RECEIVED_MALFORMED_RESPONSE]: {
+ requestUrl: string;
+ requestMethod: string;
+ httpStatusCode: number;
+ validationError?: string;
+ };
+ [TalerErrorCode.WALLET_EXCHANGE_COIN_SIGNATURE_INVALID]: empty;
+ [TalerErrorCode.WALLET_WITHDRAWAL_GROUP_INCOMPLETE]: {
+ errorsPerCoin: Record<number, TalerErrorDetail>;
+ };
+ [TalerErrorCode.WALLET_CORE_NOT_AVAILABLE]: empty;
+ [TalerErrorCode.GENERIC_UNEXPECTED_REQUEST_ERROR]: {
+ httpStatusCode: number;
+ };
[TalerErrorCode.WALLET_PAY_MERCHANT_SERVER_ERROR]: {
requestError: TalerErrorDetail;
};
@@ -84,7 +114,7 @@ export interface DetailsMap {
detail: string;
};
[TalerErrorCode.WALLET_WITHDRAWAL_KYC_REQUIRED]: {
- // FIXME!
+ kycUrl: string;
};
[TalerErrorCode.WALLET_DEPOSIT_GROUP_INSUFFICIENT_BALANCE]: {
insufficientBalanceDetails: PayMerchantInsufficientBalanceDetails;
@@ -94,7 +124,7 @@ export interface DetailsMap {
};
}
-type ErrBody<Y> = Y extends keyof DetailsMap ? DetailsMap[Y] : never;
+type ErrBody<Y> = Y extends keyof DetailsMap ? DetailsMap[Y] : empty;
export function makeErrorDetail<C extends TalerErrorCode>(
code: C,
@@ -133,7 +163,7 @@ function getDefaultHint(code: number): string {
}
}
-export class TalerProtocolViolationError<T = any> extends Error {
+export class TalerProtocolViolationError extends Error {
constructor(hint?: string) {
let msg: string;
if (hint) {