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