diff options
Diffstat (limited to 'node_modules/core-js/modules/esnext.async-iterator.take.js')
| -rw-r--r-- | node_modules/core-js/modules/esnext.async-iterator.take.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/node_modules/core-js/modules/esnext.async-iterator.take.js b/node_modules/core-js/modules/esnext.async-iterator.take.js new file mode 100644 index 0000000..436eaec --- /dev/null +++ b/node_modules/core-js/modules/esnext.async-iterator.take.js @@ -0,0 +1,31 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var toPositiveInteger = require('../internals/to-positive-integer'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) { + var iterator = this.iterator; + var returnMethod, result; + if (!this.remaining--) { + result = { done: true, value: undefined }; + this.done = true; + returnMethod = iterator['return']; + if (returnMethod !== undefined) { + return Promise.resolve(returnMethod.call(iterator)).then(function () { + return result; + }); + } + return result; + } return this.next.call(iterator, arg); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + take: function take(limit) { + return new AsyncIteratorProxy({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } +}); |
