Mirror: 馃帺 A tiny but capable push & pull stream library for TypeScript and Flow
at v1.4.4 672 B view raw
1open Wonka_types; 2 3let tapAll = (~onStart, ~onPush, ~onEnd) => { 4 curry(source => curry(sink => { 5 let ended = ref(false); 6 7 source((.signal) => { 8 switch (signal) { 9 | Start(talkback) => { 10 onStart(.) 11 12 sink(.Start((.signal) => { 13 switch (signal) { 14 | Close when !ended^ => { 15 ended := true; 16 onEnd(.); 17 } 18 | Close => () 19 | _ => talkback(.signal) 20 } 21 })); 22 } 23 | Push(x) => { 24 onPush(.x) 25 sink(.signal); 26 } 27 | End when !ended^ => { 28 ended := true; 29 onEnd(.) 30 } 31 | _ => () 32 }; 33 34 }); 35 })); 36};