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.

143 lines 9.62 kB
"use strict"; /** * Signal-Σ Router - Category Theory Based Isomorphic Router * * A mathematically sound router built on categorical principles: * - Route as Functor (structure preservation) * - Navigation as Monad (effect composition) * - Router as Coalgebra (isomorphic transformation) * * Features: * - Type-safe route matching * - Framework-agnostic (React, Svelte, Vue, SolidJS) * - Isomorphic (works client/server) * - Composable route combinators * - Algebraic route construction * - Built-in route guards * - Zero dependencies on router libraries */ Object.defineProperty(exports, "__esModule", { value: true }); exports.effect = exports.signal = exports.useReactTreeRouter = exports.useReactRouter = exports.conditionalGuard = exports.composeGuards = exports.createGuardedNavigation = exports.executeGuards = exports.confirmGuard = exports.roleGuard = exports.authGuard = exports.withGuards = exports.withGuard = exports.createTreeRouter = exports.matchRouteTree = exports.treeRouter = exports.router = exports.createRouterSignal = exports.createRouter = exports.createNavigationEffects = exports.createMemoryNav = exports.createNodeNav = exports.createBrowserNav = exports.pureNavigation = exports.navigation = exports.matchRoute = exports.nested = exports.optional = exports.choice = exports.routeSequence = exports.route = exports.wildcard = exports.query = exports.param = exports.literal = exports.isNone = exports.isSome = exports.None = exports.Some = void 0; // Core Functions var types_1 = require("./types"); Object.defineProperty(exports, "Some", { enumerable: true, get: function () { return types_1.Some; } }); Object.defineProperty(exports, "None", { enumerable: true, get: function () { return types_1.None; } }); Object.defineProperty(exports, "isSome", { enumerable: true, get: function () { return types_1.isSome; } }); Object.defineProperty(exports, "isNone", { enumerable: true, get: function () { return types_1.isNone; } }); // Route Constructors var route_1 = require("./route"); Object.defineProperty(exports, "literal", { enumerable: true, get: function () { return route_1.literal; } }); Object.defineProperty(exports, "param", { enumerable: true, get: function () { return route_1.param; } }); Object.defineProperty(exports, "query", { enumerable: true, get: function () { return route_1.query; } }); Object.defineProperty(exports, "wildcard", { enumerable: true, get: function () { return route_1.wildcard; } }); Object.defineProperty(exports, "route", { enumerable: true, get: function () { return route_1.route; } }); Object.defineProperty(exports, "routeSequence", { enumerable: true, get: function () { return route_1.sequence; } }); Object.defineProperty(exports, "choice", { enumerable: true, get: function () { return route_1.choice; } }); Object.defineProperty(exports, "optional", { enumerable: true, get: function () { return route_1.optional; } }); Object.defineProperty(exports, "nested", { enumerable: true, get: function () { return route_1.nested; } }); Object.defineProperty(exports, "matchRoute", { enumerable: true, get: function () { return route_1.matchRoute; } }); // Navigation var navigation_1 = require("./navigation"); Object.defineProperty(exports, "navigation", { enumerable: true, get: function () { return navigation_1.navigation; } }); Object.defineProperty(exports, "pureNavigation", { enumerable: true, get: function () { return navigation_1.pureNavigation; } }); Object.defineProperty(exports, "createBrowserNav", { enumerable: true, get: function () { return navigation_1.createBrowserNav; } }); Object.defineProperty(exports, "createNodeNav", { enumerable: true, get: function () { return navigation_1.createNodeNav; } }); Object.defineProperty(exports, "createMemoryNav", { enumerable: true, get: function () { return navigation_1.createMemoryNav; } }); Object.defineProperty(exports, "createNavigationEffects", { enumerable: true, get: function () { return navigation_1.createNavigationEffects; } }); // Router Core var router_1 = require("./router"); Object.defineProperty(exports, "createRouter", { enumerable: true, get: function () { return router_1.createRouter; } }); Object.defineProperty(exports, "createRouterSignal", { enumerable: true, get: function () { return router_1.createRouterSignal; } }); Object.defineProperty(exports, "router", { enumerable: true, get: function () { return router_1.router; } }); Object.defineProperty(exports, "treeRouter", { enumerable: true, get: function () { return router_1.treeRouter; } }); Object.defineProperty(exports, "matchRouteTree", { enumerable: true, get: function () { return router_1.matchRouteTree; } }); Object.defineProperty(exports, "createTreeRouter", { enumerable: true, get: function () { return router_1.createTreeRouter; } }); // Guards var guards_1 = require("./guards"); Object.defineProperty(exports, "withGuard", { enumerable: true, get: function () { return guards_1.withGuard; } }); Object.defineProperty(exports, "withGuards", { enumerable: true, get: function () { return guards_1.withGuards; } }); Object.defineProperty(exports, "authGuard", { enumerable: true, get: function () { return guards_1.authGuard; } }); Object.defineProperty(exports, "roleGuard", { enumerable: true, get: function () { return guards_1.roleGuard; } }); Object.defineProperty(exports, "confirmGuard", { enumerable: true, get: function () { return guards_1.confirmGuard; } }); Object.defineProperty(exports, "executeGuards", { enumerable: true, get: function () { return guards_1.executeGuards; } }); Object.defineProperty(exports, "createGuardedNavigation", { enumerable: true, get: function () { return guards_1.createGuardedNavigation; } }); Object.defineProperty(exports, "composeGuards", { enumerable: true, get: function () { return guards_1.composeGuards; } }); Object.defineProperty(exports, "conditionalGuard", { enumerable: true, get: function () { return guards_1.conditionalGuard; } }); // Framework Adapters var adapter_react_1 = require("./adapter.react"); Object.defineProperty(exports, "useReactRouter", { enumerable: true, get: function () { return adapter_react_1.useReactRouter; } }); Object.defineProperty(exports, "useReactTreeRouter", { enumerable: true, get: function () { return adapter_react_1.useReactTreeRouter; } }); // Convenience Re-exports var signal_1 = require("../core/signal"); Object.defineProperty(exports, "signal", { enumerable: true, get: function () { return signal_1.signal; } }); var effect_1 = require("../core/effect"); Object.defineProperty(exports, "effect", { enumerable: true, get: function () { return effect_1.effect; } }); /** * Quick Start Examples: * * Basic Usage: * ```ts * import { router, route } from 'signal-σ/router'; * * const routes = [ * route("/"), * route("/user/:id"), * route("/posts/:id/comments/:commentId") * ]; * * const app = router(routes); * * // Access current route * const currentRoute = app.route(); * const params = app.params(); * * // Navigate * app.navigate("/user/123"); * ``` * * Framework Integration: * ```ts * // React * const router = useReactRouter(routes); * * // Svelte * const router = useSvelteRouter(routes); * * // Vue * const router = useVueRouter(routes); * ``` * * Type-Safe Routes: * ```ts * const userRoute = route("/user/:id"); * // userRoute.params has type {id: string} * * const mapped = userRoute.map(({id}) => ({ * userId: id, * user: fetchUser(id) * })); * ``` * * Composable Routes: * ```ts * const api = route("/api"); * const users = route("/users/:id"); * const apiUsers = sequence(api, users); * // Matches: /api/users/:id * * const routes = choice([ * route("/home"), * route("/about"), * wildcard("*") // 404 fallback * ]); * ``` * * Route Guards: * ```ts * const adminRoute = withGuard( * route("/admin/:page"), * authGuard(() => checkAuth()) * ); * ``` */ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRzs7O0FBaUJILGlCQUFpQjtBQUNqQixpQ0FLaUI7QUFKZiw2RkFBQSxJQUFJLE9BQUE7QUFDSiw2RkFBQSxJQUFJLE9BQUE7QUFDSiwrRkFBQSxNQUFNLE9BQUE7QUFDTiwrRkFBQSxNQUFNLE9BQUE7QUFHUixxQkFBcUI7QUFDckIsaUNBV2lCO0FBVmYsZ0dBQUEsT0FBTyxPQUFBO0FBQ1AsOEZBQUEsS0FBSyxPQUFBO0FBQ0wsOEZBQUEsS0FBSyxPQUFBO0FBQ0wsaUdBQUEsUUFBUSxPQUFBO0FBQ1IsOEZBQUEsS0FBSyxPQUFBO0FBQ0wsc0dBQUEsUUFBUSxPQUFpQjtBQUN6QiwrRkFBQSxNQUFNLE9BQUE7QUFDTixpR0FBQSxRQUFRLE9BQUE7QUFDUiwrRkFBQSxNQUFNLE9BQUE7QUFDTixtR0FBQSxVQUFVLE9BQUE7QUFHWixhQUFhO0FBQ2IsMkNBT3NCO0FBTnBCLHdHQUFBLFVBQVUsT0FBQTtBQUNWLDRHQUFBLGNBQWMsT0FBQTtBQUNkLDhHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDJHQUFBLGFBQWEsT0FBQTtBQUNiLDZHQUFBLGVBQWUsT0FBQTtBQUNmLHFIQUFBLHVCQUF1QixPQUFBO0FBR3pCLGNBQWM7QUFDZCxtQ0FPa0I7QUFOaEIsc0dBQUEsWUFBWSxPQUFBO0FBQ1osNEdBQUEsa0JBQWtCLE9BQUE7QUFDbEIsZ0dBQUEsTUFBTSxPQUFBO0FBQ04sb0dBQUEsVUFBVSxPQUFBO0FBQ1Ysd0dBQUEsY0FBYyxPQUFBO0FBQ2QsMEdBQUEsZ0JBQWdCLE9BQUE7QUFHbEIsU0FBUztBQUNULG1DQVVrQjtBQVRoQixtR0FBQSxTQUFTLE9BQUE7QUFDVCxvR0FBQSxVQUFVLE9BQUE7QUFDVixtR0FBQSxTQUFTLE9BQUE7QUFDVCxtR0FBQSxTQUFTLE9BQUE7QUFDVCxzR0FBQSxZQUFZLE9BQUE7QUFDWix1R0FBQSxhQUFhLE9BQUE7QUFDYixpSEFBQSx1QkFBdUIsT0FBQTtBQUN2Qix1R0FBQSxhQUFhLE9BQUE7QUFDYiwwR0FBQSxnQkFBZ0IsT0FBQTtBQUdsQixxQkFBcUI7QUFDckIsaURBR3lCO0FBRnZCLCtHQUFBLGNBQWMsT0FBQTtBQUNkLG1IQUFBLGtCQUFrQixPQUFBO0FBR3BCLHlCQUF5QjtBQUN6Qix5Q0FBd0M7QUFBL0IsZ0dBQUEsTUFBTSxPQUFBO0FBQ2YseUNBQXdDO0FBQS9CLGdHQUFBLE1BQU0sT0FBQTtBQUVmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUVHIn0=