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
JavaScript
;
/**
* 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=