File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -94,3 +94,18 @@ const log = new Logger({
9494log . info ( error ) ;
9595
9696////////////////////////////
97+
98+ function createReadonlyError ( message : string , property : string ) {
99+ const error = new Error ( message ) ;
100+ Object . defineProperty ( error , "property" , {
101+ value : property ,
102+ writable : false ,
103+ enumerable : true ,
104+ configurable : false ,
105+ } ) ;
106+ return error ;
107+ }
108+
109+ const e = createReadonlyError ( "message" , "property" ) ;
110+
111+ logger . error ( e ) ;
Original file line number Diff line number Diff line change @@ -217,7 +217,7 @@ export class BaseLogger<LogObj> {
217217 ? this . settings . maskPlaceholder
218218 : this . _recursiveCloneAndMaskValuesOfKeys ( ( source as { [ key : string ] : unknown } ) [ prop ] , keys , seen ) ;
219219 return o ;
220- } , source )
220+ } , this . _cloneError ( source as Error ) )
221221 : source != null && typeof source === "object"
222222 ? Object . getOwnPropertyNames ( source ) . reduce ( ( o , prop ) => {
223223 // mask
@@ -275,6 +275,21 @@ export class BaseLogger<LogObj> {
275275 return clonedLogObj ;
276276 }
277277
278+ private _cloneError < T extends Error > ( error : T ) : T {
279+ const ErrorConstructor = error . constructor as new ( message ?: string ) => T ;
280+ const newError = new ErrorConstructor ( error . message ) ;
281+ Object . assign ( newError , error ) ;
282+ const propertyNames = Object . getOwnPropertyNames ( newError ) ;
283+ for ( const propName of propertyNames ) {
284+ const propDesc = Object . getOwnPropertyDescriptor ( newError , propName ) ;
285+ if ( propDesc ) {
286+ propDesc . writable = true ;
287+ Object . defineProperty ( newError , propName , propDesc ) ;
288+ }
289+ }
290+ return newError ;
291+ }
292+
278293 private _toErrorObject ( error : Error ) : IErrorObject {
279294 return {
280295 nativeError : error ,
You can’t perform that action at this time.
0 commit comments