@@ -18,7 +18,9 @@ function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.
1818
1919function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) { for ( var i = 0 , arr2 = new Array ( arr . length ) ; i < arr . length ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; } }
2020
21- function _objectSpread ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] != null ? arguments [ i ] : { } ; var ownKeys = Object . keys ( source ) ; if ( typeof Object . getOwnPropertySymbols === 'function' ) { ownKeys = ownKeys . concat ( Object . getOwnPropertySymbols ( source ) . filter ( function ( sym ) { return Object . getOwnPropertyDescriptor ( source , sym ) . enumerable ; } ) ) ; } ownKeys . forEach ( function ( key ) { _defineProperty ( target , key , source [ key ] ) ; } ) ; } return target ; }
21+ function ownKeys ( object , enumerableOnly ) { var keys = Object . keys ( object ) ; if ( Object . getOwnPropertySymbols ) { var symbols = Object . getOwnPropertySymbols ( object ) ; if ( enumerableOnly ) symbols = symbols . filter ( function ( sym ) { return Object . getOwnPropertyDescriptor ( object , sym ) . enumerable ; } ) ; keys . push . apply ( keys , symbols ) ; } return keys ; }
22+
23+ function _objectSpread ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] != null ? arguments [ i ] : { } ; if ( i % 2 ) { ownKeys ( source , true ) . forEach ( function ( key ) { _defineProperty ( target , key , source [ key ] ) ; } ) ; } else if ( Object . getOwnPropertyDescriptors ) { Object . defineProperties ( target , Object . getOwnPropertyDescriptors ( source ) ) ; } else { ownKeys ( source ) . forEach ( function ( key ) { Object . defineProperty ( target , key , Object . getOwnPropertyDescriptor ( source , key ) ) ; } ) ; } } return target ; }
2224
2325function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
2426
@@ -69,7 +71,7 @@ function (_Transform) {
6971
7072 _this = _possibleConstructorReturn ( this , _getPrototypeOf ( Parser ) . call ( this , _objectSpread ( { } , {
7173 readableObjectMode : true
72- } , opts ) ) ) ;
74+ } , { } , opts ) ) ) ;
7375 var options = { } ; // Merge with user options
7476
7577 for ( var opt in opts ) {
@@ -396,6 +398,7 @@ function (_Transform) {
396398 } ;
397399 _this . options = options ;
398400 _this . state = {
401+ bomSkipped : false ,
399402 castField : fnCastField ,
400403 commenting : false ,
401404 enabled : options . from_line === 1 ,
@@ -472,6 +475,7 @@ function (_Transform) {
472475 to_line = _this$options . to_line ;
473476 var record_delimiter = this . options . record_delimiter ;
474477 var _this$state = this . state ,
478+ bomSkipped = _this$state . bomSkipped ,
475479 previousBuf = _this$state . previousBuf ,
476480 rawBuffer = _this$state . rawBuffer ,
477481 escapeIsQuote = _this$state . escapeIsQuote ,
@@ -484,17 +488,34 @@ function (_Transform) {
484488 this . push ( null ) ;
485489 return ;
486490 } else {
487- // Handle UTF BOM
488- if ( bom === true && bom_utf8 . compare ( nextBuf , 0 , 3 ) === 0 ) {
489- buf = nextBuf . slice ( 3 ) ;
490- } else {
491- buf = nextBuf ;
492- }
491+ buf = nextBuf ;
493492 }
494493 } else if ( previousBuf !== undefined && nextBuf === undefined ) {
495494 buf = previousBuf ;
496495 } else {
497496 buf = Buffer . concat ( [ previousBuf , nextBuf ] ) ;
497+ } // Handle UTF BOM
498+
499+
500+ if ( bomSkipped === false ) {
501+ if ( bom === false ) {
502+ this . state . bomSkipped = true ;
503+ } else if ( buf . length < 3 ) {
504+ // No enough data
505+ if ( end === false ) {
506+ // Wait for more data
507+ this . state . previousBuf = buf ;
508+ return ;
509+ } // skip BOM detect because data length < 3
510+
511+ } else {
512+ if ( bom_utf8 . compare ( buf , 0 , 3 ) === 0 ) {
513+ // Skip BOM
514+ buf = buf . slice ( 3 ) ;
515+ }
516+
517+ this . state . bomSkipped = true ;
518+ }
498519 }
499520
500521 var bufLen = buf . length ;
0 commit comments