UNPKG

@riogz/router

Version:

A simple, lightweight, powerful, view-agnostic, modular and extensible router

38 lines (37 loc) 1.49 kB
import { Router, Route, Options, DefaultDependencies } from './types/router'; import { RouteNode } from './lib/route-node'; /** * Creates a new router instance with the specified routes, options, and dependencies. * * The router is built using a functional composition pattern where each enhancer * adds specific functionality to the base router object. * * @template Dependencies - Type of dependencies to inject into the router * @param routes - Array of route definitions or a RouteNode instance. Defaults to empty array. * @param options - Configuration options for the router behavior. Defaults to empty object. * @param dependencies - Dependencies to inject into route handlers and middleware. Defaults to empty object. * @returns A fully configured router instance * * @example * ```typescript * // Basic router * const router = createRouter([ * { name: 'home', path: '/' }, * { name: 'user', path: '/users/:id' } * ]) * * // Router with options * const router = createRouter(routes, { * defaultRoute: 'home', * strictTrailingSlash: false * }) * * // Router with dependencies * const router = createRouter(routes, options, { * api: new ApiService(), * auth: new AuthService() * }) * ``` */ declare const createRouter: <Dependencies extends DefaultDependencies = DefaultDependencies>(routes?: RouteNode | Route<Dependencies>[], options?: Partial<Options>, dependencies?: Dependencies) => Router<Dependencies>; export default createRouter;