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.
38 lines (37 loc) • 1.16 kB
TypeScript
/**
* Core Signal Category - Functor implementation
* Following category-theoretic laws for structure preservation
*/
export interface Signal<A> {
readonly value: () => A;
readonly map: <B>(f: (a: A) => B) => Signal<B>;
readonly subscribe: (fn: (a: A) => void) => () => void;
}
export interface MutableSignal<A> extends Signal<A> {
_set: (value: A) => void;
}
/**
* Creates a basic signal with functor laws
* Laws verified:
* - map(id) ≡ id (identity)
* - map(f ∘ g) ≡ map(f) ∘ map(g) (composition)
*/
export declare const signal: <A>(initial: A) => MutableSignal<A> & {
_set: (value: A) => void;
};
/**
* Identity function for functor law verification
*/
export declare const id: <A>(a: A) => A;
/**
* Function composition for functor law verification
*/
export declare const compose: <A, B, C>(f: (b: B) => C, g: (a: A) => B) => (a: A) => C;
/**
* Pure function - lifts a value into Signal context
*/
export declare const pure: <A>(value: A) => Signal<A>;
/**
* Computed signal - creates a derived signal from a computation function
*/
export declare const computed: <A>(compute: () => A) => MutableSignal<A>;