UNPKG

@most/types

Version:

Reactive programming with lean, functions-only, curried, tree-shakeable API

83 lines (67 loc) 1.81 kB
// @flow // An instant in time. This can be wall-clock time // or a virtual time, depending on the particular Scheduler // in use export type Time = number // A Clock represents a source of the current time export type Clock = { now (): Time } export type Stream<A> = { run (Sink<A>, Scheduler): Disposable } export type Sink<A> = { event (Time, A): void, end (Time): void, error (Time, Error): void, } // Interface of a resource that can be disposed export type Disposable = { dispose (): void } // Delay time offset export type Delay = number // Span of time between time instants export type Period = number // Relative offset between two clocks / schedulers export type Offset = number export type Scheduler = { currentTime (): Time, scheduleTask (Offset, Delay, Period, Task): ScheduledTask, relative (Offset): Scheduler, cancel (ScheduledTask): void, // @deprecated cancelAll ((ScheduledTask) => boolean): void } // Opaque handle vended by some platform-specific functions, // like setTimeout. export type Handle = any // A Timer can schedule a function to run after // a particular delay export type Timer = { now (): Time, setTimer (() => any, Delay): Handle, clearTimer (Handle): void } // Run a ScheduledTask export type TaskRunner = (ScheduledTask) => any // A Timeline is a set of ScheduledTasks to be executed at // particular times export type Timeline = { add (ScheduledTask): void, remove (ScheduledTask): boolean, // @deprecated removeAll ((ScheduledTask) => boolean): void, isEmpty (): boolean, nextArrival (): Time, runTasks (Time, TaskRunner): void } export type Task = Disposable & { run (Time): void, error (Time, Error): void, } export type ScheduledTask = Disposable & { task: Task, run (): void, error (Error): void, }