UNPKG

@reactivex/ix-es5-esm

Version:

The Interactive Extensions for JavaScript

95 lines (93 loc) 4.24 kB
import { __asyncGenerator, __asyncValues, __await, __extends, __generator } from "tslib"; import { AsyncIterableX } from '../asynciterablex.js'; import { wrapWithAbort } from './withabort.js'; import { throwIfAborted } from '../../aborterror.js'; /** @ignore */ var SkipWhileAsyncIterable = /** @class */ (function (_super) { __extends(SkipWhileAsyncIterable, _super); function SkipWhileAsyncIterable(source, predicate) { var _this = _super.call(this) || this; _this._source = source; _this._predicate = predicate; return _this; } SkipWhileAsyncIterable.prototype[Symbol.asyncIterator] = function (signal) { return __asyncGenerator(this, arguments, function _a() { var yielding, i, _b, _c, _d, element, _e, e_1_1; var _f, e_1, _g, _h; return __generator(this, function (_j) { switch (_j.label) { case 0: throwIfAborted(signal); yielding = false; i = 0; _j.label = 1; case 1: _j.trys.push([1, 10, 11, 16]); _b = true, _c = __asyncValues(wrapWithAbort(this._source, signal)); _j.label = 2; case 2: return [4 /*yield*/, __await(_c.next())]; case 3: if (!(_d = _j.sent(), _f = _d.done, !_f)) return [3 /*break*/, 9]; _h = _d.value; _b = false; element = _h; _e = !yielding; if (!_e) return [3 /*break*/, 5]; return [4 /*yield*/, __await(this._predicate(element, i++, signal))]; case 4: _e = !(_j.sent()); _j.label = 5; case 5: if (_e) { yielding = true; } if (!yielding) return [3 /*break*/, 8]; return [4 /*yield*/, __await(element)]; case 6: return [4 /*yield*/, _j.sent()]; case 7: _j.sent(); _j.label = 8; case 8: _b = true; return [3 /*break*/, 2]; case 9: return [3 /*break*/, 16]; case 10: e_1_1 = _j.sent(); e_1 = { error: e_1_1 }; return [3 /*break*/, 16]; case 11: _j.trys.push([11, , 14, 15]); if (!(!_b && !_f && (_g = _c.return))) return [3 /*break*/, 13]; return [4 /*yield*/, __await(_g.call(_c))]; case 12: _j.sent(); _j.label = 13; case 13: return [3 /*break*/, 15]; case 14: if (e_1) throw e_1.error; return [7 /*endfinally*/]; case 15: return [7 /*endfinally*/]; case 16: return [2 /*return*/]; } }); }); }; return SkipWhileAsyncIterable; }(AsyncIterableX)); export { SkipWhileAsyncIterable }; /** * Bypasses elements in an async-iterale sequence as long as a specified condition is true * and then returns the remaining elements. * * @template T The type of the elements in the source sequence. * @param {((value: T, index: number, signal?: AbortSignal) => boolean | Promise<boolean>)} predicate A function to test each element for a condition. * @returns {OperatorAsyncFunction<T, T>} An async-iterable sequence that contains the elements from the input * sequence starting at the first element in the linear series that does not pass the test specified by predicate. */ export function skipWhile(predicate) { return function skipWhileOperatorFunction(source) { return new SkipWhileAsyncIterable(source, predicate); }; } //# sourceMappingURL=skipwhile.js.map