@riogz/router
Version:
A simple, lightweight, powerful, view-agnostic, modular and extensible router
38 lines (37 loc) • 1.49 kB
TypeScript
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;