Mirror: 馃帺 A tiny but capable push & pull stream library for TypeScript and Flow
at v1.4.2 626 B view raw
1// Reason Helper Types: 2 3interface ListNode<T> { 4 [0]: T, 5 [1]: 0 | List<T> 6} 7 8export type List<T> = ListNode<T> | 0; 9 10// Wonka Types: 11 12export type Talkback = 0 | 1; 13 14export type Signal<A> = 15 | { tag: 0, [0]: (talkback: Talkback) => void } 16 | { tag: 1, [0]: A } 17 | 0; 18 19export interface Sink<A> { (signal: Signal<A>): void; } 20export interface Source<A> { (sink: Sink<A>): void; } 21export interface Operator<A, B> { (source: Source<A>): Source<B>; } 22 23export type Subscription = [() => void]; 24 25export type Observer<A> = [(value: A) => void, () => void]; 26 27export type Subject<A> = [Source<A>, (value: A) => void, () => void];