UNPKG

iteragain

Version:

Javascript Iterable/Iterator/Generator-function utilities.

45 lines 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FlatMapIterator = void 0; const toIterator_1 = require("../toIterator"); const isIterable_1 = require("../isIterable"); const isIterator_1 = require("../isIterator"); /** Maps and flattens an iterator by a depth of 1. String values returned from `iteratee` are not split into characters. */ class FlatMapIterator { constructor(iterator, iteratee) { this.iterator = iterator; this.iteratee = iteratee; this.inner = null; } [Symbol.iterator]() { return this; } next(...args) { if (this.inner) { const next = this.inner.next(...args); if (next.done) { this.inner = null; return this.next(...args); } return next; } const next = this.iterator.next(...args); if (next.done) return next; const value = this.iteratee(next.value); if (typeof value !== 'string') { if ((0, isIterator_1.default)(value)) { this.inner = value; return this.next(...args); } else if ((0, isIterable_1.default)(value)) { this.inner = (0, toIterator_1.default)(value); return this.next(...args); } } return { value, done: false }; } } exports.FlatMapIterator = FlatMapIterator; exports.default = FlatMapIterator; //# sourceMappingURL=FlatMapIterator.js.map