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.
61 lines (60 loc) • 1.75 kB
TypeScript
/**
* Route Implementation - Functor Laws
* Core route primitives and combinators
*/
import { Route, Option } from './types';
/**
* 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;
/**
* Literal route - matches exact path
*/
export declare const literal: (path: string) => Route<{}>;
/**
* Parameter route - extracts path parameters
*/
export declare const param: <T extends Record<string, string>>(template: string) => Route<T>;
/**
* Query route - extracts query parameters
*/
export declare const query: <T extends Record<string, string>>(basePath: string) => Route<T>;
/**
* Wildcard route - catches all paths
*/
export declare const wildcard: (pattern: string) => Route<{
path: string;
}>;
/**
* Route Combinators - Algebraic Operations
*/
/**
* Sequence combinator - combines routes in sequence
*/
export declare const sequence: <A, B>(routeA: Route<A>, routeB: Route<B>) => Route<A & B>;
/**
* Choice combinator - tries routes in order
*/
export declare const choice: <A>(routes: Route<A>[]) => Route<A>;
/**
* Optional combinator - makes route optional
*/
export declare const optional: <A>(route: Route<A>) => Route<A | null>;
/**
* Nested combinator - creates nested routes
*/
export declare const nested: <A, B>(parent: Route<A>, _child: Route<B>) => Route<A & {
child: B;
}>;
/**
* Route matching utility
*/
export declare const matchRoute: <A>(routes: Route<A>[], path: string) => Option<Route<A>>;
/**
* Type-safe route builder
*/
export declare const route: <T extends string>(template: T) => Route<{}>;