File tree Expand file tree Collapse file tree 4 files changed +46
-16
lines changed
Expand file tree Collapse file tree 4 files changed +46
-16
lines changed Original file line number Diff line number Diff line change @@ -737,13 +737,18 @@ function buildTree(
737737 )
738738 otherKeys . push ( key ) ;
739739 }
740- // Preserve Error.cause
741- if (
742- value instanceof Error &&
743- allKeys . indexOf ( "cause" ) !== - 1 &&
744- otherKeys . indexOf ( "cause" ) === - 1
745- )
746- otherKeys . push ( "cause" ) ;
740+ const ensurePreservedKeys = [
741+ // Error.cause
742+ value instanceof Error && "cause" ,
743+ // AggregateError.errors
744+ // @ts -expect-error - AggregateError is only available in ES2021+
745+ typeof AggregateError !== "undefined" &&
746+ // @ts -expect-error - AggregateError is only available in ES2021+
747+ value instanceof AggregateError &&
748+ "errors" ,
749+ ] . filter ( ( k ) => k ) as string [ ] ;
750+ for ( const key of ensurePreservedKeys )
751+ if ( allKeys . indexOf ( key ) !== - 1 && otherKeys . indexOf ( key ) === - 1 ) otherKeys . push ( key ) ;
747752
748753 // Array element
749754 const arrayEntries : Node [ ] = arrayItemKeys . map ( ( key ) =>
Original file line number Diff line number Diff line change @@ -243,7 +243,17 @@ describe("Error", () => {
243243 error = e ;
244244 }
245245
246- expect ( show ( error ) ) . toMatch ( / ^ A b o r t E r r o r : T h e o p e r a t i o n w a s a b o r t e d .* ?\n { 4 } a t / ) ;
246+ expect ( show ( error ) ) . toMatch (
247+ / ^ A b o r t E r r o r : T h e o p e r a t i o n w a s a b o r t e d .* ?\n { 4 } a t .+ \[ c a u s e \] : E r r o r : b o o m \n / s,
248+ ) ;
249+ expect ( inspect ( error ) ) . toEqual ( util . inspect ( error ) ) ;
250+ expect ( inspect ( error , { showHidden : true } ) ) . toEqual ( util . inspect ( error , { showHidden : true } ) ) ;
251+ } ) ;
252+
253+ it ( "should show AggregateError.errors by default" , ( ) => {
254+ const error = new AggregateError ( [ new Error ( "foo" ) , new TypeError ( "bar" ) ] , "baz" ) ;
255+
256+ expect ( show ( error ) ) . toMatch ( / ^ A g g r e g a t e E r r o r : b a z \n { 4 } a t .+ \[ e r r o r s \] : \[ / s) ;
247257 expect ( inspect ( error ) ) . toEqual ( util . inspect ( error ) ) ;
248258 expect ( inspect ( error , { showHidden : true } ) ) . toEqual ( util . inspect ( error , { showHidden : true } ) ) ;
249259 } ) ;
Original file line number Diff line number Diff line change @@ -887,13 +887,18 @@ function buildTree(
887887 )
888888 otherKeys . push ( key ) ;
889889 }
890- // Preserve Error.cause
891- if (
892- value instanceof Error &&
893- allKeys . indexOf ( "cause" ) !== - 1 &&
894- otherKeys . indexOf ( "cause" ) === - 1
895- )
896- otherKeys . push ( "cause" ) ;
890+ const ensurePreservedKeys = [
891+ // Error.cause
892+ value instanceof Error && "cause" ,
893+ // AggregateError.errors
894+ // @ts -expect-error - AggregateError is only available in ES2021+
895+ typeof AggregateError !== "undefined" &&
896+ // @ts -expect-error - AggregateError is only available in ES2021+
897+ value instanceof AggregateError &&
898+ "errors" ,
899+ ] . filter ( ( k ) => k ) as string [ ] ;
900+ for ( const key of ensurePreservedKeys )
901+ if ( allKeys . indexOf ( key ) !== - 1 && otherKeys . indexOf ( key ) === - 1 ) otherKeys . push ( key ) ;
897902
898903 // Array element
899904 const arrayEntries : Node [ ] = arrayItemKeys . map ( ( key ) =>
Original file line number Diff line number Diff line change @@ -243,7 +243,17 @@ describe("Error", () => {
243243 error = e ;
244244 }
245245
246- expect ( show ( error ) ) . toMatch ( / ^ A b o r t E r r o r : T h e o p e r a t i o n w a s a b o r t e d .* ?\n { 4 } a t / ) ;
246+ expect ( show ( error ) ) . toMatch (
247+ / ^ A b o r t E r r o r : T h e o p e r a t i o n w a s a b o r t e d .* ?\n { 4 } a t .+ \[ c a u s e \] : E r r o r : b o o m \n / s,
248+ ) ;
249+ expect ( inspect ( error ) ) . toEqual ( util . inspect ( error ) ) ;
250+ expect ( inspect ( error , { showHidden : true } ) ) . toEqual ( util . inspect ( error , { showHidden : true } ) ) ;
251+ } ) ;
252+
253+ it ( "should show AggregateError.errors by default" , ( ) => {
254+ const error = new AggregateError ( [ new Error ( "foo" ) , new TypeError ( "bar" ) ] , "baz" ) ;
255+
256+ expect ( show ( error ) ) . toMatch ( / ^ A g g r e g a t e E r r o r : b a z \n { 4 } a t .+ \[ e r r o r s \] : \[ / s) ;
247257 expect ( inspect ( error ) ) . toEqual ( util . inspect ( error ) ) ;
248258 expect ( inspect ( error , { showHidden : true } ) ) . toEqual ( util . inspect ( error , { showHidden : true } ) ) ;
249259 } ) ;
You can’t perform that action at this time.
0 commit comments