| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 'use strict';// https://github.com/tc39/proposal-iterator-helpersvar $ = require('../internals/export');var call = require('../internals/function-call');var aCallable = require('../internals/a-callable');var anObject = require('../internals/an-object');var getIteratorDirect = require('../internals/get-iterator-direct');var getIteratorFlattenable = require('../internals/get-iterator-flattenable');var createIteratorProxy = require('../internals/iterator-create-proxy');var iteratorClose = require('../internals/iterator-close');var IteratorProxy = createIteratorProxy(function () {  var iterator = this.iterator;  var mapper = this.mapper;  var result, inner;  while (true) {    if (inner = this.inner) try {      result = anObject(call(inner.next, inner.iterator));      if (!result.done) return result.value;      this.inner = null;    } catch (error) { iteratorClose(iterator, 'throw', error); }    result = anObject(call(this.next, iterator));    if (this.done = !!result.done) return;    try {      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++));    } catch (error) { iteratorClose(iterator, 'throw', error); }  }});$({ target: 'Iterator', proto: true, real: true, forced: true }, {  flatMap: function flatMap(mapper) {    return new IteratorProxy(getIteratorDirect(this), {      mapper: aCallable(mapper),      inner: null    });  }});
 |