Mirror: 馃帺 A tiny but capable push & pull stream library for TypeScript and Flow
at v3.0.0 1.7 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) => ignore(Js.Array.push(signal, signals)))); 9 }; 10 11 let talkback = ref((. _: talkbackT) => ()); 12 let res = [||]; 13 operator(source, (. signal) => 14 switch (signal) { 15 | Start(x) => talkback := x 16 | _ => ignore(Js.Array.push(signal, res)) 17 } 18 ); 19 20 Js.Promise.make((~resolve, ~reject as _) => { 21 sink^(. Push(1)); 22 ignore( 23 Js.Global.setTimeout( 24 () => { 25 sink^(. Push(2)); 26 ignore( 27 Js.Global.setTimeout( 28 () => { 29 sink^(. End); 30 ignore( 31 Js.Global.setTimeout(() => resolve(. (signals, res)), 0), 32 ); 33 }, 34 0, 35 ), 36 ); 37 }, 38 0, 39 ), 40 ); 41 }); 42}; 43 44let testTalkbackEnd = operator => { 45 let sink = ref((. _: signalT(int)) => ()); 46 let signals: array(talkbackT) = [||]; 47 let source = x => { 48 x(. Start((. signal) => ignore(Js.Array.push(signal, signals)))); 49 sink := x; 50 }; 51 52 let talkback = ref((. _: talkbackT) => ()); 53 let res = [||]; 54 operator(source, (. signal) => 55 switch (signal) { 56 | Start(x) => talkback := x 57 | _ => ignore(Js.Array.push(signal, res)) 58 } 59 ); 60 61 Js.Promise.make((~resolve, ~reject as _) => { 62 sink^(. Push(1)); 63 ignore( 64 Js.Global.setTimeout( 65 () => { 66 talkback^(. Close); 67 ignore(Js.Global.setTimeout(() => resolve(. (signals, res)), 0)); 68 }, 69 0, 70 ), 71 ); 72 }); 73};