UNPKG

@pexip/signal

Version:

an observer pattern while avoiding boilerplate code. https://en.wikipedia.org/wiki/Signals_and_slots

39 lines (38 loc) 1.58 kB
/** * An implementation of {@link https://en.wikipedia.org/wiki/Signals_and_slots | Signals and slots}. * * @packageDocumentation */ import type { Signal, SignalOptions, GenericSignalOptions, BehaviorSignalOptions, ReplaySignalOptions, BatchedSignalOptions } from './types'; /** * A function to create a new {@link Signal} * * @param options - See {@link SignalOptions} * * @example * * ```typescript * const defaultSignal = createSignal<number>(); * * // Behavior Signal, always emitted with the latest value when added * const behaviorSignal = createSignal<number>({variant: 'behavior'}); * * // Replay Signal, replay the last values when added according to `bufferSize` * const replaySignal = createSignal<number>({variant: 'replay'}); * * // Batched Signal * const scheduler = ...; // e.g. `(task) => setTimeout(task, 1000)` * const signal = createSignal<number>({ * variant: 'batched', * schedule: scheduler.schedule, * emitImmediatelyWhenFull: true, // If you don't want to lose the data * bufferSize: 10, // Buffer upto 10 subjects * }); * * ``` */ export declare function createSignal<T = undefined>(options?: GenericSignalOptions): Signal<T>; export declare function createSignal<T = undefined>(options: ReplaySignalOptions): Signal<T>; export declare function createSignal<T = undefined>(options: BehaviorSignalOptions): Signal<T>; export declare function createSignal<T = undefined>(options: BatchedSignalOptions): Signal<T, T[]>; export declare function createSignal<T = undefined>(options: SignalOptions): Signal<T, T>;