Commit 808bcfe8 authored by imtase's avatar imtase
Browse files

feat(errors): add typed error taxonomy refs #6

parent cd9eccda
Loading
Loading
Loading
Loading
+37 −5
Original line number Diff line number Diff line
@@ -137,22 +137,52 @@ declare module 'dblurt/errors' {
	    message: string;
	    data?: any;
	}
	export type DBlurtErrorCategory = 'rpc_application' | 'serialization' | 'validation' | 'transport' | 'timeout' | 'unknown';
	export type DBlurtErrorCode = 'DBLURT_RPC_APPLICATION' | 'DBLURT_SERIALIZATION' | 'DBLURT_VALIDATION' | 'DBLURT_TRANSPORT' | 'DBLURT_TIMEOUT' | 'DBLURT_UNKNOWN';
	export interface DBlurtErrorMetadata {
	    category: DBlurtErrorCategory;
	    code: DBlurtErrorCode;
	    retryable: boolean;
	    cause_code?: string;
	    cause_message?: string;
	    cause_name?: string;
	    field?: string;
	    path?: Array<string | number>;
	    rpc_code?: number;
	    rpc_data?: any;
	}
	export interface DBlurtErrorOptions {
	    cause?: Error;
	    info?: any;
	    metadata?: DBlurtErrorMetadata;
	}
	export interface ValidationErrorContext {
	    field?: string;
	    path?: Array<string | number>;
	}
	export class DBlurtError extends Error {
	    readonly category: DBlurtErrorCategory;
	    readonly code: DBlurtErrorCode;
	    readonly dblurt_error = true;
	    readonly jse_shortmsg: string;
	    readonly jse_info: any;
	    readonly jse_cause?: Error;
	    constructor(name: string, message: string, options?: {
	        cause?: Error;
	        info?: any;
	    });
	    readonly metadata: DBlurtErrorMetadata;
	    readonly retryable: boolean;
	    constructor(name: string, message: string, options?: DBlurtErrorOptions);
	    cause(): Error | undefined;
	}
	export class SerializationError extends DBlurtError {
	    constructor(cause: any);
	}
	export class ValidationError extends DBlurtError {
	    constructor(message: string, context?: ValidationErrorContext);
	}
	export class RpcApplicationError extends DBlurtError {
	    constructor(message: string, info: any);
	    constructor(message: string, info: any, rpcCode?: number);
	}
	export const isDBlurtError: (error: any) => error is DBlurtError;
	export const classifyError: (error: any) => DBlurtErrorMetadata;
	export const rpcErrorFromResponse: (error: JsonRpcError) => Error;
	export {};

@@ -4967,6 +4997,8 @@ declare module 'dblurt' {
	export * from 'dblurt/chain/transaction';
	export * from 'dblurt/chain/witness';
	export * from 'dblurt/client';
	export { DBlurtError, RpcApplicationError, SerializationError, ValidationError, classifyError, isDBlurtError } from 'dblurt/errors';
	export type { DBlurtErrorCategory, DBlurtErrorCode, DBlurtErrorMetadata, DBlurtErrorOptions, ValidationErrorContext } from 'dblurt/errors';
	export * from 'dblurt/experimental_client';
	export * from 'dblurt/transports/core_rpc_transport';
	export * from 'dblurt/transports/legacy_rpc_transport';
+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+891 B (109 KiB)

File changed.

No diff preview for this file type.

+1 −1

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
window.navigationData = "data:application/octet-stream;base64,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"
 No newline at end of file
window.navigationData = "data:application/octet-stream;base64,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"
 No newline at end of file
Loading