diff options
Diffstat (limited to 'node_modules/core-js/modules/esnext.iterator.from.js')
| -rw-r--r-- | node_modules/core-js/modules/esnext.iterator.from.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/esnext.iterator.from.js b/node_modules/core-js/modules/esnext.iterator.from.js new file mode 100644 index 0000000..10fa7f2 --- /dev/null +++ b/node_modules/core-js/modules/esnext.iterator.from.js @@ -0,0 +1,32 @@ +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var path = require('../internals/path'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var toObject = require('../internals/to-object'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); +var getIteratorMethod = require('../internals/get-iterator-method'); + +var Iterator = path.Iterator; + +var IteratorProxy = createIteratorProxy(function (arg) { + var result = anObject(this.next.call(this.iterator, arg)); + var done = this.done = !!result.done; + if (!done) return result.value; +}, true); + +$({ target: 'Iterator', stat: true }, { + from: function from(O) { + var object = toObject(O); + var usingIterator = getIteratorMethod(object); + var iterator; + if (usingIterator != null) { + iterator = aFunction(usingIterator).call(object); + if (iterator instanceof Iterator) return iterator; + } else { + iterator = object; + } return new IteratorProxy({ + iterator: iterator + }); + } +}); |
