UNPKG

resig.js

Version:

Universal reactive signal library with complete platform features: signals, animations, CRDTs, scheduling, DOM integration. Works identically across React, SolidJS, Svelte, Vue, and Qwik.

33 lines (32 loc) 1.37 kB
/** * Stream Coalgebra System * Mathematical foundation for streaming signals using coalgebra patterns * Following the pattern: State → (Output × State) */ import { Signal } from '../core/signal'; export interface StreamCoalgebra<S, O> { observe: (state: S) => O; transition: (state: S) => S; } export type BackpressureStrategy = 'drop' | 'buffer' | 'error'; export interface StreamState<T> { buffer: T[]; lastEmitted: number; isActive: boolean; errorCount: number; } export interface StreamingSignal<T> extends Signal<T> { stream(): AsyncIterable<T>; buffer(size: number): Signal<T[]>; throttle(ms: number): StreamingSignal<T>; backpressure(strategy: BackpressureStrategy): StreamingSignal<T>; take(count: number): StreamingSignal<T>; skip(count: number): StreamingSignal<T>; filter(predicate: (value: T) => boolean): StreamingSignal<T>; transform<U>(fn: (value: T) => U): StreamingSignal<U>; merge(other: StreamingSignal<T>): StreamingSignal<T>; debounce(ms: number): StreamingSignal<T>; } export declare const createStreamingSignal: <T>(initialValue: T, coalgebra?: StreamCoalgebra<StreamState<T>, T>) => StreamingSignal<T>; export declare const streamFrom: <T>(...values: T[]) => StreamingSignal<T>; export declare const streamFromIterable: <T>(iterable: AsyncIterable<T>) => StreamingSignal<T>;