UNPKG

@very-simple/router

Version:
36 lines (33 loc) 1.49 kB
declare type RouteTrigger = 'init' | 'push' | 'replace' | 'popstate'; declare type RouteParams = Record<string, string>; declare type RouteAction = (params: RouteParams, to: Route, from?: Route) => any; declare type TypedRouteAction<T> = (params: ParseRouteParams<T>, to: Route, from?: Route) => any; declare type RouteEvent = 'before-route' | 'route'; interface RouteDefinition { pattern: string; keys: string[]; regExp?: RegExp; action: RouteAction; } interface Route { path: string; params: RouteParams; matches: boolean; trigger: RouteTrigger; } declare type ParseRouteParams<url> = url extends `${infer start}/${infer rest}` ? ParseRouteParams<start> & ParseRouteParams<rest> : url extends `:${infer param}` ? { [k in param]: string; } : {}; declare type RouteEventHandler = (to: Route, from?: Route) => any | Promise<any>; declare const _default: { readonly currentRoute: Route | undefined; on: (event: RouteEvent, handler: RouteEventHandler) => void; off: (event: RouteEvent, handler: RouteEventHandler) => void; start({ handleInitial }?: { handleInitial?: boolean | undefined; }): void; route<T extends string>(path: T, action: TypedRouteAction<T>): void; push(path: string): void; replace(path: string): void; }; export { ParseRouteParams, Route, RouteAction, RouteDefinition, RouteEvent, RouteEventHandler, RouteParams, RouteTrigger, TypedRouteAction, _default as default };