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.

104 lines (103 loc) 3.77 kB
/** * Plugin Engine - Zero-runtime cost category functors * Each plugin is a category functor that rewrites the AST lazily */ import { Signal } from '../core/signal'; export type Plugin<A> = (signal: Signal<A>) => Signal<A>; /** * Debounce plugin - delays signal updates */ export declare const debouncePlugin: <A>(ms: number) => Plugin<A>; /** * Throttle plugin - limits signal update frequency */ export declare const throttlePlugin: <A>(ms: number) => Plugin<A>; /** * Cache plugin - caches signal values in localStorage */ export declare const cachePlugin: <A>(key: string, ttl?: number) => Plugin<A>; /** * Logger plugin - logs signal changes */ export declare const loggerPlugin: <A>(prefix?: string) => Plugin<A>; /** * Filter plugin - only emits values that pass predicate */ export declare const filterPlugin: <A>(predicate: (value: A) => boolean) => Plugin<A>; /** * Transform plugin - applies transformation to signal values */ export declare const transformPlugin: <A, B>(transform: (value: A) => B) => Plugin<A>; /** * Validation plugin - validates signal values */ export declare const validatePlugin: <A>(validator: (value: A) => boolean, onError?: (value: A) => void) => Plugin<A>; /** * Persistence plugin - persists signal state */ export declare const persistPlugin: <A>(key: string) => Plugin<A>; /** * Compose multiple plugins */ export declare const compose: <A>(...plugins: Plugin<A>[]) => Plugin<A>; /** * Apply plugin to signal */ export declare const apply: <A>(plugin: Plugin<A>) => (signal: Signal<A>) => Signal<A>; /** * Conditional plugin application */ export declare const when: <A>(condition: boolean, plugin: Plugin<A>) => Plugin<A>; /** * Plugin that applies different plugins based on signal value */ export declare const switchPlugin: <A>(selector: (value: A) => string, plugins: Record<string, Plugin<A>>, defaultPlugin?: Plugin<A>) => Plugin<A>; /** * Async plugin - handles async operations with loading states */ export declare const asyncPlugin: <A, B>(asyncFn: (value: A) => Promise<B>, initialValue?: B) => Plugin<A>; /** * Validation plugin with real-time feedback */ export declare const validationPlugin: <A>(validator: (value: A) => boolean, onValidChange?: (isValid: boolean) => void) => Plugin<A>; /** * State machine plugin */ export declare const stateMachinePlugin: <S, A>(initialState: S, reducer: (state: S, action: A) => S) => Plugin<A>; /** * Fetch plugin - HTTP operations with retry and caching */ export declare const fetchPlugin: <T>(fetcher: () => Promise<T>, options?: { retries?: number; cacheKey?: string; cacheTtl?: number; }) => Plugin<any>; /** * Built-in plugin combinations */ export declare const commonPlugins: { /** * Debug plugin - combines logging and validation */ debug: <A>(name: string, validator?: (value: A) => boolean) => Plugin<A>; /** * Performance plugin - combines debounce and cache */ performance: <A_1>(key: string, debounceMs?: number, cacheTtl?: number) => Plugin<A_1>; /** * Persistent state plugin - combines persistence and validation */ persistentState: <A_2>(key: string, validator?: (value: A_2) => boolean) => Plugin<A_2>; /** * Form field plugin - combines validation, debouncing, and persistence */ formField: <A_3>(key: string, validator: (value: A_3) => boolean, debounceMs?: number) => Plugin<A_3>; /** * API data plugin - combines fetch, caching, and error handling */ apiData: <T>(fetcher: () => Promise<T>, cacheKey: string, retries?: number) => Plugin<any>; /** * Real-time data plugin - combines debouncing and logging for live updates */ realTime: <A_4>(name: string, debounceMs?: number) => Plugin<A_4>; };