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.

362 lines 22.1 kB
"use strict"; /** * Signal-Σ - Category-theoretic signal library * A signal library that obeys algebraic laws, grows via plugins, and never breaks composition */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeStreams = exports.createThrottledStream = exports.createPersistentStream = exports.createDebouncedStream = exports.createCollaborativeSignal = exports.createAIEnhancedSignal = exports.combineStreams = exports.indexedDBEventStore = exports.eventSourcedORSet = exports.eventSourcedGCounter = exports.createEventSourcedCRDT = exports.createWebRTCStream = exports.createWebRTCBroadcast = exports.BroadcastChannelSignaling = exports.streamFromIterable = exports.streamFrom = exports.createStreamingSignal = exports.createVisionModel = exports.createLLMTransformer = exports.composeAITransformers = exports.globalExtensionRegistry = exports.createExtension = exports.ExtensionPatterns = exports.createUndoRedoManager = exports.UndoRedoManager = exports.createThemeManager = exports.ThemeManager = exports.createRealtimeSync = exports.RealtimeSync = exports.createDragContainer = exports.DragContainer = exports.applyPlugin = exports.composePlugins = exports.commonPlugins = exports.persistPlugin = exports.validatePlugin = exports.transformPlugin = exports.filterPlugin = exports.loggerPlugin = exports.cachePlugin = exports.throttlePlugin = exports.debouncePlugin = void 0; // Core category exports __exportStar(require("./core/signal"), exports); __exportStar(require("./core/effect"), exports); // Algebra exports __exportStar(require("./algebras/time"), exports); __exportStar(require("./algebras/fetch"), exports); __exportStar(require("./algebras/state"), exports); // Router exports - Category-theoretic isomorphic router __exportStar(require("./router"), exports); // Framework adapters are now loaded dynamically via the factory system // Individual adapters can be imported directly if needed: // import { useSignal } from 'resig.js/adapters/react'; // Plugin system (explicit exports to avoid conflicts) var plugins_1 = require("./plugins"); Object.defineProperty(exports, "debouncePlugin", { enumerable: true, get: function () { return plugins_1.debouncePlugin; } }); Object.defineProperty(exports, "throttlePlugin", { enumerable: true, get: function () { return plugins_1.throttlePlugin; } }); Object.defineProperty(exports, "cachePlugin", { enumerable: true, get: function () { return plugins_1.cachePlugin; } }); Object.defineProperty(exports, "loggerPlugin", { enumerable: true, get: function () { return plugins_1.loggerPlugin; } }); Object.defineProperty(exports, "filterPlugin", { enumerable: true, get: function () { return plugins_1.filterPlugin; } }); Object.defineProperty(exports, "transformPlugin", { enumerable: true, get: function () { return plugins_1.transformPlugin; } }); Object.defineProperty(exports, "validatePlugin", { enumerable: true, get: function () { return plugins_1.validatePlugin; } }); Object.defineProperty(exports, "persistPlugin", { enumerable: true, get: function () { return plugins_1.persistPlugin; } }); Object.defineProperty(exports, "commonPlugins", { enumerable: true, get: function () { return plugins_1.commonPlugins; } }); var plugins_2 = require("./plugins"); Object.defineProperty(exports, "composePlugins", { enumerable: true, get: function () { return plugins_2.compose; } }); Object.defineProperty(exports, "applyPlugin", { enumerable: true, get: function () { return plugins_2.apply; } }); // Extension system exports var extensions_1 = require("./extensions"); Object.defineProperty(exports, "DragContainer", { enumerable: true, get: function () { return extensions_1.DragContainer; } }); Object.defineProperty(exports, "createDragContainer", { enumerable: true, get: function () { return extensions_1.createDragContainer; } }); Object.defineProperty(exports, "RealtimeSync", { enumerable: true, get: function () { return extensions_1.RealtimeSync; } }); Object.defineProperty(exports, "createRealtimeSync", { enumerable: true, get: function () { return extensions_1.createRealtimeSync; } }); Object.defineProperty(exports, "ThemeManager", { enumerable: true, get: function () { return extensions_1.ThemeManager; } }); Object.defineProperty(exports, "createThemeManager", { enumerable: true, get: function () { return extensions_1.createThemeManager; } }); Object.defineProperty(exports, "UndoRedoManager", { enumerable: true, get: function () { return extensions_1.UndoRedoManager; } }); Object.defineProperty(exports, "createUndoRedoManager", { enumerable: true, get: function () { return extensions_1.createUndoRedoManager; } }); Object.defineProperty(exports, "ExtensionPatterns", { enumerable: true, get: function () { return extensions_1.ExtensionPatterns; } }); Object.defineProperty(exports, "createExtension", { enumerable: true, get: function () { return extensions_1.createExtension; } }); Object.defineProperty(exports, "globalExtensionRegistry", { enumerable: true, get: function () { return extensions_1.globalExtensionRegistry; } }); // Streaming infrastructure exports var streaming_1 = require("./streaming"); Object.defineProperty(exports, "composeAITransformers", { enumerable: true, get: function () { return streaming_1.composeAITransformers; } }); Object.defineProperty(exports, "createLLMTransformer", { enumerable: true, get: function () { return streaming_1.createLLMTransformer; } }); Object.defineProperty(exports, "createVisionModel", { enumerable: true, get: function () { return streaming_1.createVisionModel; } }); Object.defineProperty(exports, "createStreamingSignal", { enumerable: true, get: function () { return streaming_1.createStreamingSignal; } }); Object.defineProperty(exports, "streamFrom", { enumerable: true, get: function () { return streaming_1.streamFrom; } }); Object.defineProperty(exports, "streamFromIterable", { enumerable: true, get: function () { return streaming_1.streamFromIterable; } }); // WebRTC Streaming Object.defineProperty(exports, "BroadcastChannelSignaling", { enumerable: true, get: function () { return streaming_1.BroadcastChannelSignaling; } }); Object.defineProperty(exports, "createWebRTCBroadcast", { enumerable: true, get: function () { return streaming_1.createWebRTCBroadcast; } }); Object.defineProperty(exports, "createWebRTCStream", { enumerable: true, get: function () { return streaming_1.createWebRTCStream; } }); // Event Sourcing Object.defineProperty(exports, "createEventSourcedCRDT", { enumerable: true, get: function () { return streaming_1.createEventSourcedCRDT; } }); Object.defineProperty(exports, "eventSourcedGCounter", { enumerable: true, get: function () { return streaming_1.eventSourcedGCounter; } }); Object.defineProperty(exports, "eventSourcedORSet", { enumerable: true, get: function () { return streaming_1.eventSourcedORSet; } }); Object.defineProperty(exports, "indexedDBEventStore", { enumerable: true, get: function () { return streaming_1.indexedDBEventStore; } }); // Convenience functions Object.defineProperty(exports, "combineStreams", { enumerable: true, get: function () { return streaming_1.combineStreams; } }); Object.defineProperty(exports, "createAIEnhancedSignal", { enumerable: true, get: function () { return streaming_1.createAIEnhancedSignal; } }); Object.defineProperty(exports, "createCollaborativeSignal", { enumerable: true, get: function () { return streaming_1.createCollaborativeSignal; } }); Object.defineProperty(exports, "createDebouncedStream", { enumerable: true, get: function () { return streaming_1.createDebouncedStream; } }); Object.defineProperty(exports, "createPersistentStream", { enumerable: true, get: function () { return streaming_1.createPersistentStream; } }); Object.defineProperty(exports, "createThrottledStream", { enumerable: true, get: function () { return streaming_1.createThrottledStream; } }); Object.defineProperty(exports, "mergeStreams", { enumerable: true, get: function () { return streaming_1.mergeStreams; } }); // Main API const fetch_1 = require("./algebras/fetch"); const state_1 = require("./algebras/state"); const time_1 = require("./algebras/time"); const effect_1 = require("./core/effect"); const signal_1 = require("./core/signal"); const router_1 = require("./router"); // CRDT exports // CRDT exports commented out to avoid unused import errors // import { // gCounter, // pnCounter, // gSet, // lwwRegister, // orSet, // reactiveGCounter, // reactivePNCounter, // reactiveORSet, // reactiveLWWRegister, // } from './crdt'; // Block exports commented out to avoid unused import errors // import { // block, // reactiveBlock, // textBlock, // headingBlock, // paragraphBlock, // containerBlock, // listBlock, // editableTextBlock, // compose, // sequence, // } from './blocks'; // DOM adapter exports const dom_1 = require("./dom"); // Scheduler exports const scheduler_1 = require("./scheduler"); // htmx/Alpine adapter exports (commented out due to compilation issues) // import { // alpineSignal, // htmxSignal, // hybridSignal, // syncCRDTWithHtmx, // createAlpineDirective, // createHtmxExtension, // initializeHtmxAlpineIntegration, // createTodoSignal, // createCounterSignal, // createFormSignal, // } from './adapters/htmx-alpine'; // Animation system exports (commented out due to compilation issues) // import { // Animation, // AnimationState, // EasingFunction, // Interpolator, // animation, // easings, // interpolators, // ParallelAnimation, // SequentialAnimation, // Timeline, // parallel, // sequence, // timeline, // stagger, // repeat, // AnimationManager, // ScheduledAnimation, // getGlobalAnimationManager, // scheduledAnimation, // animate as animateScheduled, // scheduledTimeline, // getAnimationStats, // debugAnimations, // profileAnimations, // AnimatedSignal, // SpringSignal, // SpringConfig, // animatedSignal, // springSignal, // animatedNumber, // springNumber, // animatedColor, // animatedArray, // useAnimatedValue, // useSpringValue, // CSSAnimationConfig, // TransformConfig, // AnimatedElement, // animatedElement, // fadeIn, // fadeOut, // slideIn, // slideOut, // scale, // rotate, // shake, // bounce, // animateElements, // animateOnScroll, // Keyframe, // KeyframeAnimation, // PathPoint, // PathAnimation, // PhysicsSpring, // GestureRecognizer, // keyframeAnimation, // pathAnimation, // physicsSpring, // gestureRecognizer, // presets, // timelineBuilder, // } from './animation'; // React hooks (available via React adapter factory) // import { // useAsyncComputed, // useAsyncComputedSignal, // useAsyncSignal, // useComputed, // useDebouncedSignal, // useDerived, // useEffect, // useFetch, // useMachine, // usePersistentSignal, // useSignal, // useValidatedSignal, // } from './react/hooks'; /** * Main Signal-Σ API */ exports.default = { // Core constructors signal: signal_1.signal, effect: effect_1.effect, time: time_1.time, fetch: fetch_1.fetch, machine: state_1.machine, // Router constructors router: router_1.router, route: router_1.route, // Framework adapter hooks (available via factory system) // useSignal, // useComputed, // useEffect, // useMachine, // useFetch, // useDerived, // useValidatedSignal, // useDebouncedSignal, // usePersistentSignal, // useAsyncSignal, // useAsyncComputed, // useAsyncComputedSignal, // CRDT constructors (commented out due to compilation issues) // gCounter, // pnCounter, // gSet, // lwwRegister, // orSet, // reactiveGCounter, // reactivePNCounter, // reactiveORSet, // reactiveLWWRegister, // Block constructors (commented out due to compilation issues) // block, // reactiveBlock, // textBlock, // headingBlock, // paragraphBlock, // containerBlock, // listBlock, // editableTextBlock, // compose, // sequence, // Scheduler scheduler: scheduler_1.scheduler, getGlobalScheduler: scheduler_1.getGlobalScheduler, schedule: scheduler_1.schedule, cancel: scheduler_1.cancel, delay: scheduler_1.delay, nextFrame: scheduler_1.nextFrame, idle: scheduler_1.idle, animate: scheduler_1.animate, debounce: scheduler_1.debounce, throttle: scheduler_1.throttle, Priority: scheduler_1.Priority, // DOM utilities domSignal: dom_1.domSignal, bindElement: dom_1.bindElement, bindAttribute: dom_1.bindAttribute, bindProperty: dom_1.bindProperty, bindEvent: dom_1.bindEvent, domBlock: dom_1.domBlock, reactiveDOMBlock: dom_1.reactiveDOMBlock, syncCRDTToDOM: dom_1.syncCRDTToDOM, bindFormToSignal: dom_1.bindFormToSignal, delegate: dom_1.delegate, animateElement: dom_1.animateElement, observeIntersection: dom_1.observeIntersection, observeResize: dom_1.observeResize, // htmx/Alpine integration (commented out due to compilation issues) // alpineSignal, // htmxSignal, // hybridSignal, // syncCRDTWithHtmx, // createAlpineDirective, // createHtmxExtension, // initializeHtmxAlpineIntegration, // createTodoSignal, // createCounterSignal, // createFormSignal, // Animation system (commented out due to compilation issues) // Animation, // AnimationState, // EasingFunction, // Interpolator, // animation, // easings, // interpolators, // ParallelAnimation, // SequentialAnimation, // Timeline, // parallel, // sequence, // timeline, // stagger, // repeat, // AnimationManager, // ScheduledAnimation, // getGlobalAnimationManager, // scheduledAnimation, // animateScheduled, // scheduledTimeline, // getAnimationStats, // debugAnimations, // profileAnimations, // AnimatedSignal, // SpringSignal, // SpringConfig, // animatedSignal, // springSignal, // animatedNumber, // springNumber, // animatedColor, // animatedArray, // useAnimatedValue, // useSpringValue, // CSSAnimationConfig, // TransformConfig, // AnimatedElement, // animatedElement, // fadeIn, // fadeOut, // slideIn, // slideOut, // scale, // rotate, // shake, // bounce, // animateElements, // animateOnScroll, // Keyframe, // KeyframeAnimation, // PathPoint, // PathAnimation, // PhysicsSpring, // GestureRecognizer, // keyframeAnimation, // pathAnimation, // physicsSpring, // gestureRecognizer, // presets, // timelineBuilder, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx3QkFBd0I7QUFDeEIsZ0RBQThCO0FBQzlCLGdEQUE4QjtBQUU5QixrQkFBa0I7QUFDbEIsa0RBQWdDO0FBQ2hDLG1EQUFpQztBQUNqQyxtREFBaUM7QUFFakMsd0RBQXdEO0FBQ3hELDJDQUF5QjtBQUV6Qix1RUFBdUU7QUFDdkUsMERBQTBEO0FBQzFELHVEQUF1RDtBQUV2RCxzREFBc0Q7QUFDdEQscUNBVW1CO0FBVGpCLHlHQUFBLGNBQWMsT0FBQTtBQUNkLHlHQUFBLGNBQWMsT0FBQTtBQUNkLHNHQUFBLFdBQVcsT0FBQTtBQUNYLHVHQUFBLFlBQVksT0FBQTtBQUNaLHVHQUFBLFlBQVksT0FBQTtBQUNaLDBHQUFBLGVBQWUsT0FBQTtBQUNmLHlHQUFBLGNBQWMsT0FBQTtBQUNkLHdHQUFBLGFBQWEsT0FBQTtBQUNiLHdHQUFBLGFBQWEsT0FBQTtBQUVmLHFDQUE0RTtBQUFuRSx5R0FBQSxPQUFPLE9BQWtCO0FBQUUsc0dBQUEsS0FBSyxPQUFlO0FBRXhELDJCQUEyQjtBQUMzQiwyQ0FZc0I7QUFYcEIsMkdBQUEsYUFBYSxPQUFBO0FBQ2IsaUhBQUEsbUJBQW1CLE9BQUE7QUFDbkIsMEdBQUEsWUFBWSxPQUFBO0FBQ1osZ0hBQUEsa0JBQWtCLE9BQUE7QUFDbEIsMEdBQUEsWUFBWSxPQUFBO0FBQ1osZ0hBQUEsa0JBQWtCLE9BQUE7QUFDbEIsNkdBQUEsZUFBZSxPQUFBO0FBQ2YsbUhBQUEscUJBQXFCLE9BQUE7QUFDckIsK0dBQUEsaUJBQWlCLE9BQUE7QUFDakIsNkdBQUEsZUFBZSxPQUFBO0FBQ2YscUhBQUEsdUJBQXVCLE9BQUE7QUFHekIsbUNBQW1DO0FBQ25DLHlDQW1DcUI7QUFoQ25CLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGlIQUFBLG9C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