@vechain/sdk-errors
Version:
This module is dedicated to managing and customizing errors within the VeChain SDK
199 lines (184 loc) • 4.66 kB
text/typescript
import { VechainSDKError } from '../sdk-error';
import type { JSONRpcErrorCode, ObjectErrorData } from '../types';
/**
* Provider method error.
*
* WHEN TO USE:
* * This error will be thrown when a provider method has failed.
*/
class ProviderMethodError extends VechainSDKError<ObjectErrorData> {}
/**
* Provider generic error.
*
* WHEN TO USE:
* * It is a subclass of all provider errors
*
* @see{https://www.jsonrpc.org/specification#error_object}
*/
class JSONRPCProviderError extends VechainSDKError<{
code: JSONRpcErrorCode;
message: string;
data: ObjectErrorData;
}> {
constructor(
readonly methodName: string,
code: JSONRpcErrorCode,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, message, { code, message, data }, innerError);
}
}
/**
* Parse error.
*
* WHEN TO USE:
* * Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.
*/
class JSONRPCParseError extends JSONRPCProviderError {
constructor(
readonly methodName: string,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, -32700, message, data, innerError);
}
}
/**
* Invalid request.
*
* WHEN TO USE:
* * The JSON sent is not a valid Request object.
*/
class JSONRPCInvalidRequest extends JSONRPCProviderError {
constructor(
readonly methodName: string,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, -32600, message, data, innerError);
}
}
/**
* Method not found.
*
* WHEN TO USE:
* * The method does not exist / is not available.
*/
class JSONRPCMethodNotFound extends JSONRPCProviderError {
constructor(
readonly methodName: string,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, -32601, message, data, innerError);
}
}
/**
* Invalid params.
*
* WHEN TO USE:
* * Invalid method parameter(s).
*/
class JSONRPCInvalidParams extends JSONRPCProviderError {
constructor(
readonly methodName: string,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, -32602, message, data, innerError);
}
}
/**
* Internal JSON-RPC error.
*
* WHEN TO USE:
* * Internal JSON-RPC error.
*/
class JSONRPCInternalError extends JSONRPCProviderError {
constructor(
readonly methodName: string,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, -32603, message, data, innerError);
}
}
/**
* Invalid default block.
*
* WHEN TO USE:
* * When converting default block to vechain revision
*/
class JSONRPCInvalidDefaultBlock extends VechainSDKError<string> {}
/**
* Server error.
*
* WHEN TO USE:
* * Reserved for implementation-defined server-errors.
*/
class JSONRPCServerError extends JSONRPCProviderError {
constructor(
readonly methodName: string,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, -32000, message, data, innerError);
}
}
/**
* Method not implemented.
*
* WHEN TO USE:
* * When a method is implemented but not yet supported by the provider.
*/
class JSONRPCMethodNotImplemented extends JSONRPCProviderError {
constructor(
readonly methodName: string,
message: string,
data: ObjectErrorData,
readonly innerError?: unknown
) {
super(methodName, -32004, message, data, innerError);
}
}
/**
* Revert error.
*
* WHEN TO USE:
* * When a Transaction is reverted.
*/
class JSONRPCTransactionRevertError extends Error {
code: number;
data?: string;
message: string;
constructor(message: string, data?: string) {
super(message || 'execution reverted');
this.message = message;
this.name = 'JSONRPCTransactionRevertError';
this.code = -32000;
this.data = data;
// Needed to make instanceof work when transpiled
Object.setPrototypeOf(this, new.target.prototype);
}
}
export {
JSONRPCInternalError,
JSONRPCInvalidParams,
JSONRPCInvalidRequest,
JSONRPCMethodNotFound,
JSONRPCMethodNotImplemented,
JSONRPCParseError,
JSONRPCProviderError,
JSONRPCServerError,
ProviderMethodError,
JSONRPCInvalidDefaultBlock,
JSONRPCTransactionRevertError
};