Mirror: 🎩 A tiny but capable push & pull stream library for TypeScript and Flow

Add Close talkback signal to tapAll

Changed files
+25 -4
src
+25 -4
src/operators/wonka_operator_tapAll.re
···
let tapAll = (~onStart, ~onPush, ~onEnd) => {
curry(source => curry(sink => {
+
let ended = ref(false);
+
source((.signal) => {
switch (signal) {
-
| Start(_) => onStart(.)
-
| Push(x) => onPush(.x)
-
| End => onEnd(.)
+
| Start(talkback) => {
+
onStart(.)
+
+
sink(.Start((.signal) => {
+
switch (signal) {
+
| Close when !ended^ => {
+
ended := true;
+
onEnd(.);
+
}
+
| Close => ()
+
| _ => talkback(.signal)
+
}
+
}));
+
}
+
| Push(x) => {
+
onPush(.x)
+
sink(.signal);
+
}
+
| End when !ended^ => {
+
ended := true;
+
onEnd(.)
+
}
+
| _ => ()
};
-
sink(.signal);
});
}));
};