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);