@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
TypeScript
/**
* 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>;