Mirror: 馃帺 A tiny but capable push & pull stream library for TypeScript and Flow
at v2.0.0 1.5 kB view raw
1open Wonka_types; 2 3let testWithListenable = operator => { 4 let sink = ref((._: signalT(int)) => ()); 5 let signals = [||]; 6 let source = x => { 7 sink := x; 8 x(.Start((.signal) => { 9 ignore(Js.Array.push(signal, signals)) 10 })); 11 }; 12 13 let talkback = ref((._: talkbackT) => ()); 14 let res = [||]; 15 operator(source)((.signal) => { 16 switch (signal) { 17 | Start(x) => talkback := x 18 | _ => ignore(Js.Array.push(signal, res)) 19 } 20 }); 21 22 Js.Promise.make((~resolve, ~reject as _) => { 23 sink^(.Push(1)); 24 ignore(Js.Global.setTimeout(() => { 25 sink^(.Push(2)); 26 ignore(Js.Global.setTimeout(() => { 27 sink^(.End); 28 ignore(Js.Global.setTimeout(() => { 29 resolve(.(signals, res)); 30 }, 0)); 31 }, 0)); 32 }, 0)); 33 }) 34}; 35 36let testTalkbackEnd = operator => { 37 let sink = ref((._: signalT(int)) => ()); 38 let signals: array(talkbackT) = [||]; 39 let source = x => { 40 x(.Start((.signal) => ignore(Js.Array.push(signal, signals)))); 41 sink := x; 42 }; 43 44 let talkback = ref((._: talkbackT) => ()); 45 let res = [||]; 46 operator(source)((.signal) => { 47 switch (signal) { 48 | Start(x) => talkback := x 49 | _ => ignore(Js.Array.push(signal, res)) 50 } 51 }); 52 53 Js.Promise.make((~resolve, ~reject as _) => { 54 sink^(.Push(1)); 55 ignore(Js.Global.setTimeout(() => { 56 talkback^(.Close); 57 ignore(Js.Global.setTimeout(() => { 58 resolve(.(signals, res)); 59 }, 0)); 60 }, 0)); 61 }) 62};