2023-10-03 11:14:36 +08:00
'use strict' ;
function asyncGeneratorStep ( gen , resolve , reject , _next , _throw , key , arg ) { try { var info = gen [ key ] ( arg ) ; var value = info . value ; } catch ( error ) { reject ( error ) ; return ; } if ( info . done ) { resolve ( value ) ; } else { Promise . resolve ( value ) . then ( _next , _throw ) ; } }
function _asyncToGenerator ( fn ) { return function ( ) { var self = this , args = arguments ; return new Promise ( function ( resolve , reject ) { var gen = fn . apply ( self , args ) ; function _next ( value ) { asyncGeneratorStep ( gen , resolve , reject , _next , _throw , "next" , value ) ; } function _throw ( err ) { asyncGeneratorStep ( gen , resolve , reject , _next , _throw , "throw" , err ) ; } _next ( undefined ) ; } ) ; } ; }
function ownKeys ( object , enumerableOnly ) { var keys = Object . keys ( object ) ; if ( Object . getOwnPropertySymbols ) { var symbols = Object . getOwnPropertySymbols ( object ) ; enumerableOnly && ( symbols = symbols . filter ( function ( sym ) { return Object . getOwnPropertyDescriptor ( object , sym ) . enumerable ; } ) ) , keys . push . apply ( keys , symbols ) ; } return keys ; }
function _objectSpread ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = null != arguments [ i ] ? arguments [ i ] : { } ; i % 2 ? ownKeys ( Object ( source ) , ! 0 ) . forEach ( function ( key ) { _defineProperty ( target , key , source [ key ] ) ; } ) : Object . getOwnPropertyDescriptors ? Object . defineProperties ( target , Object . getOwnPropertyDescriptors ( source ) ) : ownKeys ( Object ( source ) ) . forEach ( function ( key ) { Object . defineProperty ( target , key , Object . getOwnPropertyDescriptor ( source , key ) ) ; } ) ; } return target ; }
function _defineProperty ( obj , key , value ) { key = _toPropertyKey ( key ) ; if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; }
function _toPropertyKey ( arg ) { var key = _toPrimitive ( arg , "string" ) ; return typeof key === "symbol" ? key : String ( key ) ; }
function _toPrimitive ( input , hint ) { if ( typeof input !== "object" || input === null ) return input ; var prim = input [ Symbol . toPrimitive ] ; if ( prim !== undefined ) { var res = prim . call ( input , hint || "default" ) ; if ( typeof res !== "object" ) return res ; throw new TypeError ( "@@toPrimitive must return a primitive value." ) ; } return ( hint === "string" ? String : Number ) ( input ) ; }
var ERR _INVALID _ARG _TYPE = require ( '../../../errors' ) . codes . ERR _INVALID _ARG _TYPE ;
function from ( Readable , iterable , opts ) {
var iterator ;
if ( iterable && typeof iterable . next === 'function' ) {
iterator = iterable ;
} else if ( iterable && iterable [ Symbol . asyncIterator ] ) iterator = iterable [ Symbol . asyncIterator ] ( ) ; else if ( iterable && iterable [ Symbol . iterator ] ) iterator = iterable [ Symbol . iterator ] ( ) ; else throw new ERR _INVALID _ARG _TYPE ( 'iterable' , [ 'Iterable' ] , iterable ) ;
var readable = new Readable ( _objectSpread ( {
objectMode : true
} , opts ) ) ;
// Reading boolean to protect against _read
// being called before last iteration completion.
var reading = false ;
readable . _read = function ( ) {
if ( ! reading ) {
reading = true ;
next ( ) ;
}
} ;
function next ( ) {
return _next2 . apply ( this , arguments ) ;
}
function _next2 ( ) {
_next2 = _asyncToGenerator ( function * ( ) {
try {
var _yield$iterator$next = yield iterator . next ( ) ,
value = _yield$iterator$next . value ,
done = _yield$iterator$next . done ;
if ( done ) {
readable . push ( null ) ;
} else if ( readable . push ( yield value ) ) {
next ( ) ;
} else {
reading = false ;
}
} catch ( err ) {
readable . destroy ( err ) ;
}
} ) ;
return _next2 . apply ( this , arguments ) ;
}
return readable ;
}
module . exports = from ;