massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / array-from-async.js
1 'use strict';
2 var bind = require('../internals/function-bind-context');
3 var toObject = require('../internals/to-object');
4 var isConstructor = require('../internals/is-constructor');
5 var getAsyncIterator = require('../internals/get-async-iterator');
6 var getIterator = require('../internals/get-iterator');
7 var getIteratorMethod = require('../internals/get-iterator-method');
8 var getMethod = require('../internals/get-method');
9 var getVirtual = require('../internals/entry-virtual');
10 var getBuiltIn = require('../internals/get-built-in');
11 var wellKnownSymbol = require('../internals/well-known-symbol');
12 var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
13 var toArray = require('../internals/async-iterator-iteration').toArray;
14
15 var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
16 var arrayIterator = getVirtual('Array').values;
17
18 // `Array.fromAsync` method implementation
19 // https://github.com/tc39/proposal-array-from-async
20 module.exports = function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {
21   var C = this;
22   var argumentsLength = arguments.length;
23   var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
24   var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
25   return new (getBuiltIn('Promise'))(function (resolve) {
26     var O = toObject(asyncItems);
27     if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);
28     var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);
29     var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(O) || arrayIterator;
30     var A = isConstructor(C) ? new C() : [];
31     var iterator = usingAsyncIterator
32       ? getAsyncIterator(O, usingAsyncIterator)
33       : new AsyncFromSyncIterator(getIterator(O, usingSyncIterator));
34     resolve(toArray(iterator, mapfn, A));
35   });
36 };