UNPKG

wouter-preact

Version:

Minimalist-friendly ~1.5KB router for Preact

41 lines (31 loc) 1.05 kB
/* * Foundation: useLocation and paths */ export type Path = string; export type PathPattern = string | RegExp; export type SearchString = string; export type HrefsFormatter = (href: string, router?: any) => string; // the base useLocation hook type. Any custom hook (including the // default one) should inherit from it. export type BaseLocationHook = { (...args: any[]): [Path, (path: Path, ...args: any[]) => any]; searchHook?: BaseSearchHook; hrefs?: HrefsFormatter; }; export type BaseSearchHook = (...args: any[]) => SearchString; /* * Utility types that operate on hook */ // Returns the type of the location tuple of the given hook. export type HookReturnValue<H extends BaseLocationHook> = ReturnType<H>; // Returns the type of the navigation options that hook's push function accepts. export type HookNavigationOptions<H extends BaseLocationHook> = HookReturnValue<H>[1] extends ( path: Path, options: infer R, ...rest: any[] ) => any ? R extends { [k: string]: any } ? R : {} : {};