Files
radicle-explorer/src/lib/error.ts
T
2022-12-22 16:46:08 +01:00

70 lines
1.3 KiB
TypeScript

export interface Err {
type: Failure;
txHash?: string;
message?: string;
}
export enum Failure {
TransactionFailed = 1,
NotAuthenticated = 2,
InsufficientBalance = 3,
}
export class Unreachable extends Error {
constructor(value?: never) {
if (value) {
super("unreachable value reached: " + value);
} else {
super("unreachable code reached");
}
}
}
export class NotFoundError extends Error {
constructor(message?: string) {
if (message) {
super(`not found: ${message}`);
} else {
super(`not found`);
}
}
}
export class MissingReverseRecord extends Error {
constructor(message?: string) {
if (message) {
super(`missing reverse record: ${message}`);
} else {
super(`missing reverse record`);
}
}
}
class AssertionError extends Error {
constructor(message?: string) {
if (message) {
super(`assertion failed: ${message}`);
} else {
super(`assertion failed`);
}
}
}
export function assert(value: unknown, message?: string): asserts value {
if (!value) {
throw new AssertionError(message);
}
}
export function assertEq(
actual: unknown,
expected: unknown,
message?: string,
): void {
if (actual !== expected) {
throw new AssertionError(
`assertion failed: expected '${expected}', got '${actual}': ${message}`,
);
}
}