UNPKG

multitude

Version:

Comprehensive streams for push and pull

37 lines (29 loc) 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.take = take; var _operate = require("../../utils/operate"); var _typeCore = require("type-core"); function take(count) { const options = !count || _typeCore.TypeGuard.isNumber(count) ? { count } : count; return (0, _operate.operate)(obs => { let index = -1; return { next(value) { index++; if (options.count && index < options.count) { obs.next(value); return !options.while && index + 1 >= options.count ? obs.complete() : undefined; } if (options.while && options.while(value, index)) { return obs.next(value); } return obs.complete(); } }; }); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wdXNoL29wZXJhdG9ycy9maWx0ZXIvdGFrZS50cyJdLCJuYW1lcyI6WyJ0YWtlIiwiY291bnQiLCJvcHRpb25zIiwiVHlwZUd1YXJkIiwiaXNOdW1iZXIiLCJvYnMiLCJpbmRleCIsIm5leHQiLCJ2YWx1ZSIsIndoaWxlIiwiY29tcGxldGUiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFPTyxTQUFTQSxJQUFULENBQWlCQyxLQUFqQixFQUFvRTtBQUN6RSxRQUFNQyxPQUFPLEdBQUcsQ0FBQ0QsS0FBRCxJQUFVRSxvQkFBVUMsUUFBVixDQUFtQkgsS0FBbkIsQ0FBVixHQUFzQztBQUFFQSxJQUFBQTtBQUFGLEdBQXRDLEdBQWtEQSxLQUFsRTtBQUVBLFNBQU8sc0JBQVlJLEdBQUQsSUFBUztBQUN6QixRQUFJQyxLQUFLLEdBQUcsQ0FBQyxDQUFiO0FBQ0EsV0FBTztBQUNMQyxNQUFBQSxJQUFJLENBQUNDLEtBQUQsRUFBaUI7QUFDbkJGLFFBQUFBLEtBQUs7O0FBRUwsWUFBSUosT0FBTyxDQUFDRCxLQUFSLElBQWlCSyxLQUFLLEdBQUdKLE9BQU8sQ0FBQ0QsS0FBckMsRUFBNEM7QUFDMUNJLFVBQUFBLEdBQUcsQ0FBQ0UsSUFBSixDQUFTQyxLQUFUO0FBQ0EsaUJBQU8sQ0FBQ04sT0FBTyxDQUFDTyxLQUFULElBQWtCSCxLQUFLLEdBQUcsQ0FBUixJQUFhSixPQUFPLENBQUNELEtBQXZDLEdBQ0hJLEdBQUcsQ0FBQ0ssUUFBSixFQURHLEdBRUhDLFNBRko7QUFHRDs7QUFFRCxZQUFJVCxPQUFPLENBQUNPLEtBQVIsSUFBaUJQLE9BQU8sQ0FBQ08sS0FBUixDQUFjRCxLQUFkLEVBQXFCRixLQUFyQixDQUFyQixFQUFrRDtBQUNoRCxpQkFBT0QsR0FBRyxDQUFDRSxJQUFKLENBQVNDLEtBQVQsQ0FBUDtBQUNEOztBQUVELGVBQU9ILEdBQUcsQ0FBQ0ssUUFBSixFQUFQO0FBQ0Q7O0FBaEJJLEtBQVA7QUFrQkQsR0FwQk0sQ0FBUDtBQXFCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1c2ggfSBmcm9tICdAZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgb3BlcmF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL29wZXJhdGUnO1xuaW1wb3J0IHsgVHlwZUd1YXJkIH0gZnJvbSAndHlwZS1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWtlT3B0aW9uczxUPiB7XG4gIGNvdW50PzogbnVtYmVyO1xuICB3aGlsZT86ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlcikgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRha2U8VD4oY291bnQ6IG51bWJlciB8IFRha2VPcHRpb25zPFQ+KTogUHVzaC5PcGVyYXRpb248VD4ge1xuICBjb25zdCBvcHRpb25zID0gIWNvdW50IHx8IFR5cGVHdWFyZC5pc051bWJlcihjb3VudCkgPyB7IGNvdW50IH0gOiBjb3VudDtcblxuICByZXR1cm4gb3BlcmF0ZTxUPigob2JzKSA9PiB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5leHQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgaW5kZXgrKztcblxuICAgICAgICBpZiAob3B0aW9ucy5jb3VudCAmJiBpbmRleCA8IG9wdGlvbnMuY291bnQpIHtcbiAgICAgICAgICBvYnMubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuICFvcHRpb25zLndoaWxlICYmIGluZGV4ICsgMSA+PSBvcHRpb25zLmNvdW50XG4gICAgICAgICAgICA/IG9icy5jb21wbGV0ZSgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLndoaWxlICYmIG9wdGlvbnMud2hpbGUodmFsdWUsIGluZGV4KSkge1xuICAgICAgICAgIHJldHVybiBvYnMubmV4dCh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JzLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG4iXX0=