lotus-sdk
Version:
Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem
95 lines (94 loc) • 3.2 kB
JavaScript
export class MuSig2P2PError extends Error {
constructor(message) {
super(message);
this.name = 'MuSig2P2PError';
}
}
export class DeserializationError extends MuSig2P2PError {
fieldName;
receivedValue;
constructor(message, fieldName, receivedValue) {
super(`Deserialization failed for ${fieldName}: ${message}`);
this.fieldName = fieldName;
this.receivedValue = receivedValue;
this.name = 'DeserializationError';
}
}
export class ValidationError extends MuSig2P2PError {
reason;
constructor(message, reason) {
super(`Validation failed: ${message}`);
this.reason = reason;
this.name = 'ValidationError';
}
}
export class ProtocolError extends MuSig2P2PError {
constructor(message) {
super(message);
this.name = 'ProtocolError';
}
}
export class SecurityError extends MuSig2P2PError {
violationType;
peerId;
constructor(message, violationType, peerId) {
super(`Security violation: ${message}`);
this.violationType = violationType;
this.peerId = peerId;
this.name = 'SecurityError';
}
}
export class SerializationError extends MuSig2P2PError {
objectType;
reason;
constructor(message, objectType, reason) {
super(`Serialization failed for ${objectType}: ${message}`);
this.objectType = objectType;
this.reason = reason;
this.name = 'SerializationError';
}
}
export var ErrorCode;
(function (ErrorCode) {
ErrorCode["INVALID_PAYLOAD"] = "VAL001";
ErrorCode["MISSING_FIELD"] = "VAL002";
ErrorCode["INVALID_TYPE"] = "VAL003";
ErrorCode["INVALID_FORMAT"] = "VAL004";
ErrorCode["SIZE_LIMIT_EXCEEDED"] = "VAL005";
ErrorCode["TIMESTAMP_SKEW"] = "VAL006";
ErrorCode["MALFORMED_DATA"] = "DES001";
ErrorCode["INVALID_HEX"] = "DES002";
ErrorCode["INVALID_LENGTH"] = "DES003";
ErrorCode["INVALID_PREFIX"] = "DES004";
ErrorCode["BUFFER_ERROR"] = "DES005";
ErrorCode["SERIALIZATION_FAILED"] = "SER001";
ErrorCode["INVALID_OBJECT"] = "SER002";
ErrorCode["ENCODING_ERROR"] = "SER003";
ErrorCode["INVALID_MESSAGE_TYPE"] = "PROT001";
ErrorCode["INVALID_PHASE"] = "PROT002";
ErrorCode["INVALID_STATE"] = "PROT003";
ErrorCode["PROTOCOL_VIOLATION"] = "PROT004";
ErrorCode["RATE_LIMIT_EXCEEDED"] = "SEC001";
ErrorCode["REPLAY_ATTACK"] = "SEC002";
ErrorCode["NONCE_REUSE"] = "SEC003";
ErrorCode["MALICIOUS_PEER"] = "SEC004";
ErrorCode["DOS_ATTEMPT"] = "SEC005";
})(ErrorCode || (ErrorCode = {}));
export function createValidationError(message, code, fieldName) {
const error = new ValidationError(message, code);
if (fieldName) {
;
error.fieldName = fieldName;
}
return error;
}
export function createDeserializationError(message, code, fieldName, receivedValue) {
const error = new DeserializationError(message, fieldName, receivedValue);
error.code = code;
return error;
}
export function createSecurityError(message, code, violationType, peerId) {
const error = new SecurityError(message, violationType, peerId);
error.code = code;
return error;
}