From e93da8b04da86773247aadb1cbb1912e4f4526b2 Mon Sep 17 00:00:00 2001 From: Priyansh Date: Tue, 22 Dec 2020 17:49:59 +0530 Subject: Rewriting Project --- .../modules/esnext.async-iterator.flat-map.js | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 node_modules/core-js/modules/esnext.async-iterator.flat-map.js (limited to 'node_modules/core-js/modules/esnext.async-iterator.flat-map.js') diff --git a/node_modules/core-js/modules/esnext.async-iterator.flat-map.js b/node_modules/core-js/modules/esnext.async-iterator.flat-map.js new file mode 100644 index 0000000..0613368 --- /dev/null +++ b/node_modules/core-js/modules/esnext.async-iterator.flat-map.js @@ -0,0 +1,67 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); +var getAsyncIteratorMethod = require('../internals/get-async-iterator-method'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) { + var state = this; + var mapper = state.mapper; + var innerIterator, iteratorMethod; + + return new Promise(function (resolve, reject) { + var outerLoop = function () { + try { + Promise.resolve(anObject(state.next.call(state.iterator, arg))).then(function (step) { + try { + if (anObject(step).done) { + state.done = true; + resolve({ done: true, value: undefined }); + } else { + Promise.resolve(mapper(step.value)).then(function (mapped) { + try { + iteratorMethod = getAsyncIteratorMethod(mapped); + if (iteratorMethod !== undefined) { + state.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped)); + state.innerNext = aFunction(innerIterator.next); + return innerLoop(); + } reject(TypeError('.flatMap callback should return an iterable object')); + } catch (error2) { reject(error2); } + }, reject); + } + } catch (error1) { reject(error1); } + }, reject); + } catch (error) { reject(error); } + }; + + var innerLoop = function () { + if (innerIterator = state.innerIterator) { + try { + Promise.resolve(anObject(state.innerNext.call(innerIterator))).then(function (result) { + try { + if (anObject(result).done) { + state.innerIterator = state.innerNext = null; + outerLoop(); + } else resolve({ done: false, value: result.value }); + } catch (error1) { reject(error1); } + }, reject); + } catch (error) { reject(error); } + } else outerLoop(); + }; + + innerLoop(); + }); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + flatMap: function flatMap(mapper) { + return new AsyncIteratorProxy({ + iterator: anObject(this), + mapper: aFunction(mapper), + innerIterator: null, + innerNext: null + }); + } +}); -- cgit v1.2.3