@@ -36,16 +36,21 @@ export type RpcErrorValue = Value<RpcError>;
3636export class RpcError extends Error implements IRpcError {
3737 public static from ( error : unknown ) {
3838 if ( error instanceof RpcError ) return error ;
39- return RpcError . internal ( ) ;
39+ return RpcError . internal ( error ) ;
4040 }
4141
42- public static fromCode ( errno : RpcErrorCodes , message : string = '' , meta : unknown = undefined ) : RpcError {
42+ public static fromCode (
43+ errno : RpcErrorCodes ,
44+ message : string = '' ,
45+ meta : unknown = undefined ,
46+ originalError : unknown = undefined ,
47+ ) : RpcError {
4348 const code = RpcErrorCodes [ errno ] ;
44- return new RpcError ( message || code , code , errno , undefined , meta || undefined ) ;
49+ return new RpcError ( message || code , code , errno , undefined , meta || undefined , originalError ) ;
4550 }
4651
47- public static internal ( message : string = 'Internal Server Error' ) : RpcError {
48- return RpcError . fromCode ( RpcErrorCodes . INTERNAL_ERROR , message ) ;
52+ public static internal ( originalError : unknown , message : string = 'Internal Server Error' ) : RpcError {
53+ return RpcError . fromCode ( RpcErrorCodes . INTERNAL_ERROR , message , undefined , originalError ) ;
4954 }
5055
5156 public static badRequest ( ) : RpcError {
@@ -60,7 +65,7 @@ export class RpcError extends Error implements IRpcError {
6065 return new Value ( error , RpcErrorType ) ;
6166 }
6267
63- public static valueFrom ( error : unknown , def = RpcError . internalErrorValue ( ) ) : RpcErrorValue {
68+ public static valueFrom ( error : unknown , def = RpcError . internalErrorValue ( error ) ) : RpcErrorValue {
6469 if ( error instanceof Value && error . data instanceof RpcError && error . type === RpcErrorType ) return error ;
6570 if ( error instanceof RpcError ) return RpcError . value ( error ) ;
6671 return def ;
@@ -70,8 +75,8 @@ export class RpcError extends Error implements IRpcError {
7075 return RpcError . value ( RpcError . fromCode ( errno , message ) ) ;
7176 }
7277
73- public static internalErrorValue ( ) : RpcErrorValue {
74- return RpcError . value ( RpcError . internal ( ) ) ;
78+ public static internalErrorValue ( originalError : unknown ) : RpcErrorValue {
79+ return RpcError . value ( RpcError . internal ( originalError ) ) ;
7580 }
7681
7782 public static isRpcError ( error : unknown ) : error is RpcError {
@@ -84,6 +89,7 @@ export class RpcError extends Error implements IRpcError {
8489 public readonly errno : number ,
8590 public readonly errorId : string | undefined ,
8691 public readonly meta : unknown | undefined ,
92+ public readonly originalError : unknown | undefined ,
8793 ) {
8894 super ( message ) ;
8995 if ( message === code ) this . code = undefined ;
0 commit comments