amis-rpc-design/node_modules/core-js/internals/get-async-iterator-flattenable.js
2023-10-07 19:42:30 +08:00

31 lines
1.1 KiB
JavaScript

'use strict';
var call = require('../internals/function-call');
var isCallable = require('../internals/is-callable');
var anObject = require('../internals/an-object');
var getIteratorDirect = require('../internals/get-iterator-direct');
var getIteratorMethod = require('../internals/get-iterator-method');
var getMethod = require('../internals/get-method');
var wellKnownSymbol = require('../internals/well-known-symbol');
var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
module.exports = function from(obj) {
var object = anObject(obj);
var alreadyAsync = true;
var method = getMethod(object, ASYNC_ITERATOR);
var iterator;
if (!isCallable(method)) {
method = getIteratorMethod(object);
alreadyAsync = false;
}
if (method !== undefined) {
iterator = call(method, object);
} else {
iterator = object;
alreadyAsync = true;
}
anObject(iterator);
return getIteratorDirect(alreadyAsync ? iterator : new AsyncFromSyncIterator(getIteratorDirect(iterator)));
};