-
Notifications
You must be signed in to change notification settings - Fork 302
Expand file tree
/
Copy patherrors.ts
More file actions
85 lines (74 loc) · 3.12 KB
/
errors.ts
File metadata and controls
85 lines (74 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
* Each subclass needs the explicit Object.setPrototypeOf() so that instanceof will work correctly.
* See https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
*/
import { CoinFeature } from './base';
class BitGoStaticsError extends Error {
public constructor(message: string) {
super(message);
this.stack = new Error(message).stack;
Object.setPrototypeOf(this, BitGoStaticsError.prototype);
}
}
export class CoinNotDefinedError extends BitGoStaticsError {
public constructor(coinName: string) {
super(`coin '${coinName}' is not defined`);
Object.setPrototypeOf(this, CoinNotDefinedError.prototype);
}
}
export class DuplicateCoinDefinitionError extends BitGoStaticsError {
public constructor(coinName: string) {
super(`coin '${coinName}' is already defined`);
Object.setPrototypeOf(this, DuplicateCoinDefinitionError.prototype);
}
}
export class DuplicateCoinIdDefinitionError extends BitGoStaticsError {
public constructor(id: string) {
super(`coin with id '${id}' is already defined`);
Object.setPrototypeOf(this, DuplicateCoinIdDefinitionError.prototype);
}
}
export class DisallowedCoinFeatureError extends BitGoStaticsError {
public constructor(coinName: string, feature: CoinFeature) {
super(`coin feature '${feature}' is disallowed for coin ${coinName}.`);
Object.setPrototypeOf(this, DisallowedCoinFeatureError.prototype);
}
}
export class MissingRequiredCoinFeatureError extends BitGoStaticsError {
public constructor(coinName: string, missingFeatures: CoinFeature[]) {
super(`Required coin feature(s) '${missingFeatures.join(', ')}' were not found for coin ${coinName}.`);
Object.setPrototypeOf(this, MissingRequiredCoinFeatureError.prototype);
}
}
export class InvalidIdError extends BitGoStaticsError {
public constructor(coinName: string, id: string) {
super(`invalid uuid '${id}' for coin '${coinName}'`);
Object.setPrototypeOf(this, InvalidIdError.prototype);
}
}
export class InvalidContractAddressError extends BitGoStaticsError {
public constructor(coinName: string, contractAddress: string) {
super(`invalid contract address '${contractAddress}' for coin '${coinName}'`);
Object.setPrototypeOf(this, InvalidContractAddressError.prototype);
}
}
export class InvalidDomainError extends BitGoStaticsError {
public constructor(coinName: string, domain: string) {
super(`invalid domain '${domain}' for coin '${coinName}'`);
Object.setPrototypeOf(this, InvalidDomainError.prototype);
}
}
export class ConflictingCoinFeaturesError extends BitGoStaticsError {
public constructor(coinName: string, conflictingFeatures: CoinFeature[]) {
super(
`coin feature(s) for coin '${coinName}' cannot be both required and disallowed: ${conflictingFeatures.join(', ')}`
);
Object.setPrototypeOf(this, ConflictingCoinFeaturesError.prototype);
}
}
export class ChainIdNotFoundError extends BitGoStaticsError {
public constructor(chainId: number) {
super(`chain '${chainId}' not found`);
Object.setPrototypeOf(this, CoinNotDefinedError.prototype);
}
}