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