@@ -39,9 +39,11 @@ export default function Body(body, {
39
39
} else if ( body instanceof Blob ) {
40
40
// body is blob
41
41
} else if ( Buffer . isBuffer ( body ) ) {
42
- // body is buffer
43
- } else if ( Object . prototype . toString . call ( body ) === '[object ArrayBuffer]' ) {
44
- // body is array buffer
42
+ // body is ArrayBuffer
43
+ } else if ( body instanceof ArrayBuffer ) {
44
+ // body is ArrayBufferView
45
+ } else if ( ArrayBuffer . isView ( body ) ) {
46
+ // body is array buffer view
45
47
} else if ( body instanceof Stream ) {
46
48
// body is stream
47
49
} else {
@@ -204,8 +206,8 @@ function consumeBody() {
204
206
return Body . Promise . resolve ( this . body ) ;
205
207
}
206
208
207
- // body is buffer
208
- if ( Object . prototype . toString . call ( this . body ) === '[object ArrayBuffer]' ) {
209
+ // body is ArrayBuffer
210
+ if ( this . body instanceof ArrayBuffer ) {
209
211
return Body . Promise . resolve ( Buffer . from ( this . body ) ) ;
210
212
}
211
213
@@ -416,8 +418,11 @@ export function extractContentType(instance) {
416
418
} else if ( Buffer . isBuffer ( body ) ) {
417
419
// body is buffer
418
420
return null ;
419
- } else if ( Object . prototype . toString . call ( body ) === '[object ArrayBuffer]' ) {
420
- // body is array buffer
421
+ } else if ( body instanceof ArrayBuffer ) {
422
+ // body is ArrayBuffer
423
+ return null ;
424
+ } else if ( ArrayBuffer . isView ( body ) ) {
425
+ // body is ArrayBufferView
421
426
return null ;
422
427
} else if ( typeof body . getBoundary === 'function' ) {
423
428
// detect form data input from form-data module
@@ -457,8 +462,11 @@ export function getTotalBytes(instance) {
457
462
} else if ( Buffer . isBuffer ( body ) ) {
458
463
// body is buffer
459
464
return body . length ;
460
- } else if ( Object . prototype . toString . call ( body ) === '[object ArrayBuffer]' ) {
461
- // body is array buffer
465
+ } else if ( body instanceof ArrayBuffer ) {
466
+ // body is ArrayBuffer
467
+ return body . byteLength ;
468
+ } else if ( ArrayBuffer . isView ( body ) ) {
469
+ // body is ArrayBufferView
462
470
return body . byteLength ;
463
471
} else if ( body && typeof body . getLengthSync === 'function' ) {
464
472
// detect form data input from form-data module
@@ -502,10 +510,14 @@ export function writeToStream(dest, instance) {
502
510
// body is buffer
503
511
dest . write ( body ) ;
504
512
dest . end ( )
505
- } else if ( Object . prototype . toString . call ( body ) === '[object ArrayBuffer]' ) {
506
- // body is array buffer
513
+ } else if ( body instanceof ArrayBuffer ) {
514
+ // body is ArrayBuffer
507
515
dest . write ( Buffer . from ( body ) ) ;
508
516
dest . end ( )
517
+ } else if ( ArrayBuffer . isView ( body ) ) {
518
+ // body is ArrayBufferView
519
+ dest . write ( Buffer . from ( body . buffer , body . byteOffset , body . byteLength ) ) ;
520
+ dest . end ( )
509
521
} else {
510
522
// body is stream
511
523
body . pipe ( dest ) ;
0 commit comments