@@ -310,14 +310,8 @@ const inflate = (
310
310
case TypeIds . Error : {
311
311
const d = data as unknown [ ] ;
312
312
target . message = d [ 0 ] ;
313
- const second = d [ 1 ] ;
314
- if ( second && Array . isArray ( second ) ) {
315
- for ( let i = 0 ; i < second . length ; i ++ ) {
316
- target [ second [ i ++ ] ] = d [ i ] ;
317
- }
318
- target . stack = d [ 2 ] ;
319
- } else {
320
- target . stack = second ;
313
+ for ( let i = 1 ; i < d . length ; i += 2 ) {
314
+ target [ d [ i ] as string ] = d [ i + 1 ] ;
321
315
}
322
316
break ;
323
317
}
@@ -802,7 +796,7 @@ export const createSerializationContext = (
802
796
) {
803
797
// ignore
804
798
} else if ( obj instanceof Error ) {
805
- discoveredValues . push ( ... Object . values ( obj ) ) ;
799
+ discoveredValues . push ( obj . message , ... Object . values ( obj ) , isDev && obj . stack ) ;
806
800
} else if ( isStore ( obj ) ) {
807
801
const target = getStoreTarget ( obj ) ! ;
808
802
const effects = getStoreHandler ( obj ) ! . $effects$ ;
@@ -1205,13 +1199,11 @@ function serialize(serializationContext: SerializationContext): void {
1205
1199
output ( TypeIds . Regex , value . toString ( ) ) ;
1206
1200
} else if ( value instanceof Error ) {
1207
1201
const out : any [ ] = [ value . message ] ;
1208
- const extraProps = Object . entries ( value ) . flat ( ) ;
1209
- if ( extraProps . length ) {
1210
- out . push ( extraProps ) ;
1211
- }
1202
+ // flatten gives us the right output
1203
+ out . push ( ...Object . entries ( value ) . flat ( ) ) ;
1212
1204
/// In production we don't want to leak the stack trace.
1213
1205
if ( isDev ) {
1214
- out . push ( value . stack ) ;
1206
+ out . push ( 'stack' , value . stack ) ;
1215
1207
}
1216
1208
output ( TypeIds . Error , out ) ;
1217
1209
} else if ( $isSsrNode$ ( value ) ) {
0 commit comments