UNPKG

channel-ts

Version:

Channels implemented in Typescript using async/await

45 lines (44 loc) 1.08 kB
export declare enum State { empty = "empty", receiver = "receiver", data = "data", close = "close" } export declare enum TryReceivedKind { value = "value", notReceived = "no", close = "close" } export declare type TryReceived<T> = { kind: TryReceivedKind.value; value: T; } | { kind: TryReceivedKind.notReceived; } | { kind: TryReceivedKind.close; }; export declare class SimpleChannel<T> { private receivers; private data; private _state; get state(): State; constructor(); tryReceive(): TryReceived<T>; receive(): Promise<T>; send(data: T): void; close(): void; [Symbol.asyncIterator](): AsyncIterableIterator<T>; } export interface SimpleReceiver<T> { receive: () => Promise<T>; tryReceive(): TryReceived<T>; [Symbol.asyncIterator]: () => AsyncIterableIterator<T>; } export declare class MultiReceiverChannel<T> { private chan; constructor(); send(data: T): void; close(): void; receiver(): SimpleReceiver<T>; removeReceiver(chan: SimpleReceiver<T>): void; }