source: frontend/node_modules/core-js-pure/internals/array-from-async.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.2 KB
Line 
1'use strict';
2var bind = require('../internals/function-bind-context');
3var uncurryThis = require('../internals/function-uncurry-this');
4var isConstructor = require('../internals/is-constructor');
5var getAsyncIterator = require('../internals/get-async-iterator');
6var getIterator = require('../internals/get-iterator');
7var getIteratorDirect = require('../internals/get-iterator-direct');
8var getIteratorMethod = require('../internals/get-iterator-method');
9var getMethod = require('../internals/get-method');
10var getBuiltIn = require('../internals/get-built-in');
11var getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method');
12var wellKnownSymbol = require('../internals/well-known-symbol');
13var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
14var toArray = require('../internals/async-iterator-iteration').toArray;
15
16var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
17var arrayIterator = uncurryThis(getBuiltInPrototypeMethod('Array', 'values'));
18var arrayIteratorNext = uncurryThis(arrayIterator([]).next);
19
20var safeArrayIterator = function () {
21 return new SafeArrayIterator(this);
22};
23
24var SafeArrayIterator = function (O) {
25 this.iterator = arrayIterator(O);
26};
27
28SafeArrayIterator.prototype.next = function () {
29 return arrayIteratorNext(this.iterator);
30};
31
32// `Array.fromAsync` method implementation
33// https://github.com/tc39/proposal-array-from-async
34module.exports = function fromAsync(items /* , mapfn = undefined, thisArg = undefined */) {
35 var C = this;
36 var argumentsLength = arguments.length;
37 var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
38 var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
39 return new (getBuiltIn('Promise'))(function (resolve) {
40 if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);
41 var usingAsyncIterator = getMethod(items, ASYNC_ITERATOR);
42 var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(items) || safeArrayIterator;
43 var A = isConstructor(C) ? new C() : [];
44 var iterator = usingAsyncIterator
45 ? getAsyncIterator(items, usingAsyncIterator)
46 : new AsyncFromSyncIterator(getIteratorDirect(getIterator(items, usingSyncIterator)));
47 resolve(toArray(iterator, mapfn, A));
48 });
49};
Note: See TracBrowser for help on using the repository browser.