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.

70 lines 4.29 kB
"use strict"; /** * Core Signal Category - Functor implementation * Following category-theoretic laws for structure preservation */ Object.defineProperty(exports, "__esModule", { value: true }); exports.computed = exports.pure = exports.compose = exports.id = exports.signal = void 0; /** * Creates a basic signal with functor laws * Laws verified: * - map(id) ≡ id (identity) * - map(f ∘ g) ≡ map(f) ∘ map(g) (composition) */ const signal = (initial) => { let current = initial; const subscribers = new Set(); const notify = () => { subscribers.forEach((fn) => fn(current)); }; const signalInstance = { value: () => current, map: (f) => { // Create derived signal that follows functor laws const derived = (0, exports.signal)(f(current)); // Subscribe to changes and map them signalInstance.subscribe((newValue) => { derived._set(f(newValue)); }); return derived; }, subscribe: (fn) => { subscribers.add(fn); return () => subscribers.delete(fn); }, _set: (value) => { if (value !== current) { current = value; notify(); } }, }; return signalInstance; }; exports.signal = signal; /** * Identity function for functor law verification */ const id = (a) => a; exports.id = id; /** * Function composition for functor law verification */ const compose = (f, g) => (a) => f(g(a)); exports.compose = compose; /** * Pure function - lifts a value into Signal context */ const pure = (value) => (0, exports.signal)(value); exports.pure = pure; /** * Computed signal - creates a derived signal from a computation function */ const computed = (compute) => { const computedSignal = (0, exports.signal)(compute()); // For now, return a basic computed signal // In a full implementation, this would track dependencies automatically return computedSignal; }; exports.computed = computed; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvc2lnbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQVVIOzs7OztHQUtHO0FBQ0ksTUFBTSxNQUFNLEdBQUcsQ0FDcEIsT0FBVSxFQUN1QyxFQUFFO0lBQ25ELElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztJQUVsRCxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDbEIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDO0lBRUYsTUFBTSxjQUFjLEdBQW9EO1FBQ3RFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPO1FBRXBCLEdBQUcsRUFBRSxDQUFJLENBQWMsRUFBb0IsRUFBRTtZQUMzQyxrREFBa0Q7WUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBQSxjQUFNLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFbkMsb0NBQW9DO1lBQ3BDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxTQUFTLEVBQUUsQ0FBQyxFQUFrQixFQUFFLEVBQUU7WUFDaEMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQixPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksRUFBRSxDQUFDLEtBQVEsRUFBRSxFQUFFO1lBQ2pCLElBQUksS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQixNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztJQUVGLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQXZDVyxRQUFBLE1BQU0sVUF1Q2pCO0FBRUY7O0dBRUc7QUFDSSxNQUFNLEVBQUUsR0FBRyxDQUFJLENBQUksRUFBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQXZCLFFBQUEsRUFBRSxNQUFxQjtBQUVwQzs7R0FFRztBQUNJLE1BQU0sT0FBTyxHQUNsQixDQUFVLENBQWMsRUFBRSxDQUFjLEVBQUUsRUFBRSxDQUM1QyxDQUFDLENBQUksRUFBSyxFQUFFLENBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBSEMsUUFBQSxPQUFPLFdBR1I7QUFFWjs7R0FFRztBQUNJLE1BQU0sSUFBSSxHQUFHLENBQUksS0FBUSxFQUFhLEVBQUUsQ0FBQyxJQUFBLGNBQU0sRUFBQyxLQUFLLENBQUMsQ0FBQztBQUFqRCxRQUFBLElBQUksUUFBNkM7QUFFOUQ7O0dBRUc7QUFDSSxNQUFNLFFBQVEsR0FBRyxDQUFJLE9BQWdCLEVBQW9CLEVBQUU7SUFDaEUsTUFBTSxjQUFjLEdBQUcsSUFBQSxjQUFNLEVBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUV6QywwQ0FBMEM7SUFDMUMsd0VBQXdFO0lBQ3hFLE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQU5XLFFBQUEsUUFBUSxZQU1uQiJ9