simple-nano-wallet
Version:
Benskalz' simple-nano-wallet rewritten in TypeScript with some additional features.
107 lines (106 loc) • 3.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WorkGenerationError = exports.WebSocketMessageError = exports.TransactionFailedError = exports.InvalidAmountError = exports.InvalidAddressError = exports.AccountNotFoundError = exports.MissingConfigurationError = exports.InvalidSeedError = exports.CryptographicError = exports.WebSocketError = exports.ValidationError = exports.NetworkError = exports.TransactionError = exports.AccountError = exports.ConfigurationError = exports.WalletError = void 0;
class WalletError extends Error {
constructor(message, code, originalError) {
super(message);
this.name = this.constructor.name;
this.code = code;
this.originalError = originalError;
if (Error.captureStackTrace) {
Error.captureStackTrace(this, this.constructor);
}
}
}
exports.WalletError = WalletError;
class ConfigurationError extends WalletError {
constructor(message, code = 'CONFIG_ERROR') {
super(message, code);
}
}
exports.ConfigurationError = ConfigurationError;
class AccountError extends WalletError {
constructor(message, code = 'ACCOUNT_ERROR') {
super(message, code);
}
}
exports.AccountError = AccountError;
class TransactionError extends WalletError {
constructor(message, code = 'TX_ERROR') {
super(message, code);
}
}
exports.TransactionError = TransactionError;
class NetworkError extends WalletError {
constructor(message, code = 'NETWORK_ERROR', originalError) {
super(message, code, originalError);
}
}
exports.NetworkError = NetworkError;
class ValidationError extends WalletError {
constructor(message, code = 'VALIDATION_ERROR') {
super(message, code);
}
}
exports.ValidationError = ValidationError;
class WebSocketError extends WalletError {
constructor(message, code = 'WS_ERROR') {
super(message, code);
}
}
exports.WebSocketError = WebSocketError;
class CryptographicError extends WalletError {
constructor(message, code = 'CRYPTO_ERROR') {
super(message, code);
}
}
exports.CryptographicError = CryptographicError;
// Specific error subtypes
class InvalidSeedError extends ConfigurationError {
constructor() {
super('Invalid seed format - must be 64-character hex string', 'INVALID_SEED');
}
}
exports.InvalidSeedError = InvalidSeedError;
class MissingConfigurationError extends ConfigurationError {
constructor(missingField) {
super(`Missing required configuration: ${missingField}`, 'MISSING_CONFIG');
}
}
exports.MissingConfigurationError = MissingConfigurationError;
class AccountNotFoundError extends AccountError {
constructor(address) {
super(`Account not found: ${address}`, 'ACCOUNT_NOT_FOUND');
}
}
exports.AccountNotFoundError = AccountNotFoundError;
class InvalidAddressError extends ValidationError {
constructor(address) {
super(`Invalid address format: ${address}`, 'INVALID_ADDRESS');
}
}
exports.InvalidAddressError = InvalidAddressError;
class InvalidAmountError extends ValidationError {
constructor(amount) {
super(`Invalid amount format: ${amount}`, 'INVALID_AMOUNT');
}
}
exports.InvalidAmountError = InvalidAmountError;
class TransactionFailedError extends TransactionError {
constructor(details) {
super(`Transaction failed: ${details}`, 'TX_FAILED');
}
}
exports.TransactionFailedError = TransactionFailedError;
class WebSocketMessageError extends WebSocketError {
constructor() {
super('Invalid WebSocket message format', 'WS_INVALID_MESSAGE');
}
}
exports.WebSocketMessageError = WebSocketMessageError;
class WorkGenerationError extends NetworkError {
constructor(details) {
super(`Work generation failed: ${details}`, 'WORK_GENERATION_FAILED');
}
}
exports.WorkGenerationError = WorkGenerationError;