@codingspook/vanilla-routing
Version:
Modern Vanilla Javascript routing library.
78 lines (74 loc) • 2.51 kB
text/typescript
declare const BrowserRouteType = "BrowserRoute";
declare const HashRouteType = "HashRoute";
declare const DefaultNestedLevel = 0;
declare const _404RRoute: {
element: () => never;
params: {};
isSubRoute: boolean;
nestedLevel: number;
};
declare const DefaultRoute: {
'*': {
element: () => never;
params: {};
isSubRoute: boolean;
nestedLevel: number;
};
};
type RouteType = typeof BrowserRouteType | typeof HashRouteType;
type Params = {
[s: string]: '';
};
type Routes = {
pathname: string;
element: () => Element | DocumentFragment | Promise<Element | DocumentFragment>;
children?: Routes[];
};
type GetParams = {
pathname: string;
searchedPathname: string;
};
type RouteLocation = {
pathname: string;
params: Params;
search: Record<string, string>;
hash: string;
};
type Route = {
element: () => Element | DocumentFragment | Promise<Element | DocumentFragment>;
params: Params;
isSubRoute: boolean;
nestedLevel: number;
};
type PushHistory = {
addToHistory?: boolean;
state?: Record<string, string>;
};
type RouteWithLocation = Route & RouteLocation;
declare class RouterManagement implements RouterManagement {
#private;
routeType: RouteType;
getRoutes(): Record<string, Route>;
addRouteListeners(): void;
go(searchPathname: string, options?: PushHistory): void;
dispose<T extends () => void>(cb: T): void;
getLocation(): RouteLocation;
addRouteChangeListener(listener: (pathname: string) => void): void;
back(): void;
forward(): void;
refresh(): void;
replace(searchPathname: string, state?: PushHistory['state']): void;
config(routeData: Routes[], basePath?: string): void;
registerRouteLink(elements: HTMLAnchorElement | HTMLAnchorElement[] | NodeListOf<HTMLAnchorElement>): void;
}
declare class RouterSetup extends RouterManagement {
#private;
browserRoute(routeData: Routes[]): void;
hashRoute(routeData: Routes[]): void;
}
declare const Router: RouterSetup;
declare const BrowserRoute: (routes: Routes[]) => void;
declare const HashRoute: (routes: Routes[]) => void;
declare const routeLocation: () => RouteLocation;
declare const router: () => Record<string, Route>;
export { BrowserRoute, BrowserRouteType, DefaultNestedLevel, DefaultRoute, GetParams, HashRoute, HashRouteType, Params, PushHistory, Route, RouteLocation, RouteType, RouteWithLocation, Router, Routes, _404RRoute, routeLocation, router };