@basic-streams/take-until
Version:
takeUntil operator for basic-streams
44 lines (43 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function noop() { }
function takeUntil(controller, stream) {
return function (cb) {
var state = { cb: cb };
function stop() {
if (state !== null) {
var controllerDisposer_1 = state.controllerDisposer, sourceDisposer = state.sourceDisposer;
state = null;
if (controllerDisposer_1) {
controllerDisposer_1();
}
if (sourceDisposer) {
sourceDisposer();
}
}
}
function onEvent(x) {
if (state !== null) {
var cb_1 = state.cb;
cb_1(x);
}
}
var controllerDisposer = controller(stop);
if (state === null) {
controllerDisposer();
stream(noop)();
}
else {
state.controllerDisposer = controllerDisposer;
var sourceDisposer = stream(onEvent);
if (state === null) {
sourceDisposer();
}
else {
state.sourceDisposer = sourceDisposer;
}
}
return stop;
};
}
exports.default = takeUntil;