| | |
| | | // https://github.com/tc39/proposal-iterator-helpers |
| | | var $ = require('../internals/export'); |
| | | var apply = require('../internals/function-apply'); |
| | | var anObject = require('../internals/an-object'); |
| | | var toObject = require('../internals/to-object'); |
| | | var isPrototypeOf = require('../internals/object-is-prototype-of'); |
| | | var AsyncIteratorPrototype = require('../internals/async-iterator-prototype'); |
| | | var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); |
| | | var getAsyncIterator = require('../internals/get-async-iterator'); |
| | |
| | | |
| | | var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator'); |
| | | |
| | | var isPrototypeOf = {}.isPrototypeOf; |
| | | |
| | | var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) { |
| | | return anObject(this.next.apply(this.iterator, args)); |
| | | return anObject(apply(this.next, this.iterator, args)); |
| | | }, true); |
| | | |
| | | $({ target: 'AsyncIterator', stat: true }, { |
| | | $({ target: 'AsyncIterator', stat: true, forced: true }, { |
| | | from: function from(O) { |
| | | var object = toObject(O); |
| | | var usingIterator = getMethod(object, ASYNC_ITERATOR); |
| | | var iterator; |
| | | if (usingIterator) { |
| | | iterator = getAsyncIterator(object, usingIterator); |
| | | if (isPrototypeOf.call(AsyncIteratorPrototype, iterator)) return iterator; |
| | | if (isPrototypeOf(AsyncIteratorPrototype, iterator)) return iterator; |
| | | } |
| | | if (iterator === undefined) { |
| | | usingIterator = getIteratorMethod(object); |