File tree Expand file tree Collapse file tree 3 files changed +20
-5
lines changed Expand file tree Collapse file tree 3 files changed +20
-5
lines changed Original file line number Diff line number Diff line change 3939 "dependencies" : {
4040 "whatwg-url" : " ^5.0.0"
4141 },
42- "peerDependencies" : {
42+ "peerDependencies" : {
4343 "encoding" : " ^0.1.0"
4444 },
4545 "peerDependenciesMeta" : {
Original file line number Diff line number Diff line change @@ -114,9 +114,9 @@ Body.prototype = {
114114 * @return Promise
115115 */
116116 json ( ) {
117- return consumeBody . call ( this ) . then ( ( buffer ) => {
118- try {
119- return JSON . parse ( buffer . toString ( ) ) ;
117+ return this . text ( ) . then ( ( text ) => {
118+ try {
119+ return JSON . parse ( text ) ;
120120 } catch ( err ) {
121121 return Body . Promise . reject ( new FetchError ( `invalid json response body at ${ this . url } reason: ${ err . message } ` , 'invalid-json' ) ) ;
122122 }
@@ -129,7 +129,7 @@ Body.prototype = {
129129 * @return Promise
130130 */
131131 text ( ) {
132- return consumeBody . call ( this ) . then ( buffer => buffer . toString ( ) ) ;
132+ return consumeBody . call ( this ) . then ( buffer => new TextDecoder ( ) . decode ( buffer ) ) ;
133133 } ,
134134
135135 /**
Original file line number Diff line number Diff line change @@ -2479,6 +2479,21 @@ describe('Response', function () {
24792479 expect ( res . headers . get ( 'a' ) ) . to . equal ( '1' ) ;
24802480 } ) ;
24812481
2482+ it ( 'should decode responses containing BOM to json' , async ( ) => {
2483+ const json = await new Response ( '\uFEFF{"a":1}' ) . json ( ) ;
2484+ expect ( json . a ) . to . equal ( 1 ) ;
2485+ } ) ;
2486+
2487+ it ( 'should decode responses containing BOM to text' , async ( ) => {
2488+ const text = await new Response ( '\uFEFF{"a":1}' ) . text ( ) ;
2489+ expect ( text ) . to . equal ( '{"a":1}' ) ;
2490+ } ) ;
2491+
2492+ it ( 'should keep BOM when getting raw bytes' , async ( ) => {
2493+ const ab = await new Response ( '\uFEFF{"a":1}' ) . arrayBuffer ( ) ;
2494+ expect ( ab . byteLength ) . to . equal ( 10 ) ;
2495+ } ) ;
2496+
24822497 it ( 'should support text() method' , function ( ) {
24832498 const res = new Response ( 'a=1' ) ;
24842499 return res . text ( ) . then ( result => {
You can’t perform that action at this time.
0 commit comments