UNPKG

@riogz/router

Version:

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

33 lines (32 loc) 1.31 kB
import { Router, DefaultDependencies } from './types/router'; /** * Creates a deep clone of an existing router instance with optional new dependencies. * * The cloned router will have: * - Same route tree structure * - Same configuration options * - Same middleware and plugins * - Same lifecycle handlers (canActivate/canDeactivate) * - Same configuration object * - Optionally different dependencies * * This is useful for creating router instances with different dependency contexts * while maintaining the same routing configuration. * * @template Dependencies - Type of dependencies to inject into the cloned router * @param router - The router instance to clone * @param dependencies - Optional new dependencies for the cloned router * @returns A new router instance that is a clone of the original * * @example * ```typescript * const originalRouter = createRouter(routes, options, { api: apiV1 }) * * // Clone with different dependencies * const clonedRouter = cloneRouter(originalRouter, { api: apiV2 }) * * // Clone with same dependencies * const identicalRouter = cloneRouter(originalRouter) * ``` */ export default function cloneRouter<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router, dependencies?: Dependencies): Router<Dependencies>;