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