diff --git a/packages/rpc-provider/src/coder/error.spec.ts b/packages/rpc-provider/src/coder/error.spec.ts index c9720d793b..c1ec6802d6 100644 --- a/packages/rpc-provider/src/coder/error.spec.ts +++ b/packages/rpc-provider/src/coder/error.spec.ts @@ -56,6 +56,14 @@ describe('RpcError', (): void => { new RpcError('test message', 1234, data).data ).toEqual(data); }); + + it('sets the .data property to generic value', (): void => { + const data = { custom: 'value' } as const; + + expect( + new RpcError('test message', 1234, data).data + ).toEqual(data); + }); }); describe('stack traces', (): void => { diff --git a/packages/rpc-provider/src/coder/error.ts b/packages/rpc-provider/src/coder/error.ts index 2c13144b69..f95a624a34 100644 --- a/packages/rpc-provider/src/coder/error.ts +++ b/packages/rpc-provider/src/coder/error.ts @@ -7,7 +7,7 @@ import { RpcErrorInterface } from '../types'; const UNKNOWN = -99999; -function extend (that: RpcError, name: string, value?: string | number): void { +function extend> (that: RpcError, name: K, value?: RpcError[K]): void { Object.defineProperty(that, name, { configurable: true, enumerable: false, @@ -29,10 +29,10 @@ function extend (that: RpcError, name: string, value?: string | number): void { * throw new RpcError('some message', RpcError.CODES.METHOD_NOT_FOUND); // => error.code = -32601 * ``` */ -export default class RpcError extends Error implements RpcErrorInterface { +export default class RpcError extends Error implements RpcErrorInterface { public code!: number; - public data?: number | string; + public data?: Data; public override message!: string; @@ -40,7 +40,7 @@ export default class RpcError extends Error implements RpcErrorInterface { public override stack!: string; - public constructor (message = '', code: number = UNKNOWN, data?: number | string) { + public constructor (message = '', code: number = UNKNOWN, data?: Data) { super(); extend(this, 'message', String(message)); diff --git a/packages/rpc-provider/src/types.ts b/packages/rpc-provider/src/types.ts index d1fda1a3a7..040e631a47 100644 --- a/packages/rpc-provider/src/types.ts +++ b/packages/rpc-provider/src/types.ts @@ -17,9 +17,9 @@ export interface JsonRpcResponseBaseError { message: string; } -export interface RpcErrorInterface { +export interface RpcErrorInterface { code: number; - data?: string | number; + data?: Data; message: string; stack: string; }