@@ -987,6 +987,7 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
987987 noIterator = true ;
988988 }
989989 }
990+ let isDV ;
990991 if ( noIterator ) {
991992 keys = getKeys ( value , ctx . showHidden ) ;
992993 braces = [ '{' , '}' ] ;
@@ -1046,6 +1047,7 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
10461047 braces [ 0 ] = `${ prefix } {` ;
10471048 ArrayPrototypeUnshift ( keys , 'byteLength' ) ;
10481049 } else if ( isDataView ( value ) ) {
1050+ isDV = true ;
10491051 braces [ 0 ] = `${ getPrefix ( constructor , tag , 'DataView' ) } {` ;
10501052 // .buffer goes last, it's not a primitive like the others.
10511053 ArrayPrototypeUnshift ( keys , 'byteLength' , 'byteOffset' , 'buffer' ) ;
@@ -1099,6 +1101,20 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
10991101 try {
11001102 output = formatter ( ctx , value , recurseTimes ) ;
11011103 for ( i = 0 ; i < keys . length ; i ++ ) {
1104+ isDV ??= isDataView ( value ) ;
1105+ if (
1106+ isDV && ( keys [ i ] === 'byteLength' || keys [ i ] === 'byteOffset' )
1107+ ) {
1108+ try {
1109+ new Uint8Array ( value . buffer ) ;
1110+ } catch {
1111+ ArrayPrototypePush (
1112+ output ,
1113+ formatValue ( ctx , value . buffer . byteLength ) ,
1114+ ) ;
1115+ continue ;
1116+ }
1117+ }
11021118 ArrayPrototypePush (
11031119 output ,
11041120 formatProperty ( ctx , value , recurseTimes , keys [ i ] , extrasType ) ,
@@ -1994,8 +2010,7 @@ function formatProperty(ctx, value, recurseTimes, key, type, desc,
19942010 original = value ) {
19952011 let name , str ;
19962012 let extra = ' ' ;
1997- desc ||= ObjectGetOwnPropertyDescriptor ( value , key ) ||
1998- { value : value [ key ] , enumerable : true } ;
2013+ desc ||= ObjectGetOwnPropertyDescriptor ( value , key ) || { value : value [ key ] , enumerable : true } ;
19992014 if ( desc . value !== undefined ) {
20002015 const diff = ( ctx . compact !== true || type !== kObjectType ) ? 2 : 3 ;
20012016 ctx . indentationLvl += diff ;
0 commit comments