multitude
Version:
Comprehensive streams for push and pull
37 lines (29 loc) • 3.29 kB
JavaScript
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=
;