Mirror: 馃帺 A tiny but capable push & pull stream library for TypeScript and Flow
1import { talkbackPlaceholder } from './Wonka_helpers.bs'; 2 3import { 4 talkbackT, 5 signalT 6} from '../Wonka_types.gen'; 7 8type talkbackCb = (tb: talkbackT) => void; 9 10export const pull: talkbackT = 0; 11export const close: talkbackT = 1; 12 13export const start = <a>(tb: talkbackCb): signalT<a> => ({TAG: 0, "_0": tb}); 14export const push = <a>(x: a): signalT<a> => ({TAG: 1, "_0": x}); 15export const end = <a>(): signalT<a> => 0; 16 17export const isStart = <a>(s: signalT<a>) => 18 typeof s !== 'number' && s.TAG === 0; 19export const isPush = <a>(s: signalT<a>) => 20 typeof s !== 'number' && s.TAG === 1; 21export const isEnd = <a>(s: signalT<a>) => 22 typeof s === 'number' && s === 0; 23 24export const unboxPush = <a>(s: signalT<a>): a | null => 25 isPush(s) ? s["_0"] : null; 26export const unboxStart = <a>(s: signalT<a>): talkbackCb => 27 isStart(s) ? s["_0"] : (talkbackPlaceholder as any);