@@ -19,6 +19,11 @@ var vm = require('vm');
19
19
var Buffer = require ( 'safe-buffer' ) . Buffer
20
20
var objectEntries = require ( 'object.entries' ) ;
21
21
22
+ // "polyfill" deepStrictEqual on Node 0.12 and below
23
+ if ( ! assert . deepStrictEqual ) {
24
+ assert . deepStrictEqual = assert . deepEqual ;
25
+ }
26
+
22
27
function uncurryThis ( f ) {
23
28
return f . call . bind ( f ) ;
24
29
}
@@ -82,7 +87,7 @@ for (var _i = 0, _arr = [
82
87
value : 'foo'
83
88
} ) ;
84
89
} , 'isUint8Array' ] ,
85
- [ function ( ) { return new DataView ( new ArrayBuffer ( 1 ) ) ; } , 'isDataView' ] ,
90
+ [ function ( ) { return new DataView ( new ArrayBuffer ( 1 ) , 0 , 1 ) ; } , 'isDataView' ] ,
86
91
[ function ( ) { return new SharedArrayBuffer ( ) ; } , 'isSharedArrayBuffer' ] ,
87
92
// [ new Proxy({}, {}), 'isProxy' ],
88
93
[ function ( ) { return new WebAssembly . Module ( wasmBuffer ) ; } , 'isWebAssemblyCompiledModule' ]
@@ -137,7 +142,9 @@ console.log('Testing', 'isBoxedPrimitive');
137
142
138
143
var SymbolSupported = typeof Symbol !== 'undefined' ;
139
144
var SymbolToStringTagSupported = SymbolSupported && typeof Symbol . toStringTag !== 'undefined' ;
140
- if ( SymbolToStringTagSupported ) {
145
+ var isBuggyFirefox = typeof navigator !== 'undefined' && / F i r e f o x \/ \d + / . test ( navigator . userAgent ) &&
146
+ parseInt ( navigator . userAgent . split ( 'Firefox/' ) [ 1 ] , 10 ) < 66
147
+ if ( SymbolToStringTagSupported && ! isBuggyFirefox ) {
141
148
[
142
149
'Uint8Array' ,
143
150
'Uint8ClampedArray' ,
@@ -164,13 +171,19 @@ if (SymbolToStringTagSupported) {
164
171
assert ( types [ method ] ( array ) ) ;
165
172
} ) ;
166
173
}
174
+ if ( isBuggyFirefox ) {
175
+ console . log ( 'skipping fake typed array tests because they do not work in FF' )
176
+ }
167
177
178
+ // Old Node.js had a fully custom Buffer implementation, newer are based on ArrayBuffer
179
+ // This is important for the ArrayBuffer and typed array tests
180
+ var isBufferBasedOnArrayBuffer = Buffer . alloc ( 1 ) . buffer !== undefined ;
168
181
{
169
182
var primitive = function primitive ( ) { return true ; } ;
170
183
var arrayBuffer = function arrayBuffer ( ) { return new ArrayBuffer ( 1 ) ; } ;
171
184
172
185
var buffer = function buffer ( ) { return Buffer . from ( arrayBuffer ( ) ) ; } ;
173
- var dataView = function dataView ( ) { return new DataView ( arrayBuffer ( ) ) ; } ;
186
+ var dataView = function dataView ( ) { return new DataView ( arrayBuffer ( ) , 0 , 1 ) ; } ;
174
187
var uint8Array = function uint8Array ( ) { return new Uint8Array ( arrayBuffer ( ) ) ; } ;
175
188
var uint8ClampedArray = function uint8ClampedArray ( ) { return new Uint8ClampedArray ( arrayBuffer ( ) ) ; } ;
176
189
var uint16Array = function uint16Array ( ) { return new Uint16Array ( arrayBuffer ( ) ) ; } ;
@@ -208,7 +221,7 @@ if (SymbolToStringTagSupported) {
208
221
var fakeBigUint64Array = function fakeBigUint64Array ( ) { return Object . create ( BigUint64Array . prototype ) ; } ;
209
222
210
223
var stealthyDataView = function stealthyDataView ( ) {
211
- return Object . setPrototypeOf ( new DataView ( arrayBuffer ( ) ) , Uint8Array . prototype ) ;
224
+ return Object . setPrototypeOf ( new DataView ( arrayBuffer ( ) , 0 , 1 ) , Uint8Array . prototype ) ;
212
225
} ;
213
226
var stealthyUint8Array = function stealthyUint8Array ( ) {
214
227
return Object . setPrototypeOf ( new Uint8Array ( arrayBuffer ( ) ) , ArrayBuffer . prototype ) ;
@@ -384,7 +397,7 @@ if (SymbolToStringTagSupported) {
384
397
385
398
var expected = {
386
399
isArrayBufferView : [
387
- buffer ,
400
+ isBufferBasedOnArrayBuffer ? buffer : undefined ,
388
401
dataView ,
389
402
stealthyDataView ,
390
403
uint8Array ,
@@ -411,7 +424,7 @@ if (SymbolToStringTagSupported) {
411
424
stealthyBigUint64Array
412
425
] ,
413
426
isTypedArray : [
414
- buffer ,
427
+ isBufferBasedOnArrayBuffer ? buffer : undefined ,
415
428
uint8Array ,
416
429
stealthyUint8Array ,
417
430
uint8ClampedArray ,
@@ -436,7 +449,7 @@ if (SymbolToStringTagSupported) {
436
449
stealthyBigUint64Array
437
450
] ,
438
451
isUint8Array : [
439
- buffer ,
452
+ isBufferBasedOnArrayBuffer ? buffer : undefined ,
440
453
uint8Array ,
441
454
stealthyUint8Array
442
455
] ,
0 commit comments