router-primitives
Version:
A cross-platform application router. Declarative routing by way of layout primitives
44 lines (43 loc) • 4.77 kB
TypeScript
import { TracerSession } from './tracer';
import { IManager } from './types/manager';
import { ActionWraperFnDecorator, IInputLocation, IRouterCreationInfo, IRouterConfig, IRouterDeclaration, IRouterInitArgs, NarrowRouterTypeName, Root, ManagerRouterTypes, IManagerInit, IRouterTemplates, RouterInstance, AllTemplates, RouterCustomStateFromTemplates, RouterCurrentStateFromTemplates, ExtractCustomStateFromTemplate, IRouterActionOptions, RouterTemplateUnion, ReducerContext } from './types';
import { IRouterCache } from './types/router_cache';
export default class Manager<CustomTemplates extends IRouterTemplates<unknown> = {}> implements IManager<CustomTemplates> {
printTracerResults: boolean;
actionFnDecorator?: ActionWraperFnDecorator<CustomTemplates, any>;
tracerSession: TracerSession;
_routers: Record<string, RouterInstance<CustomTemplates>>;
rootRouter: Root<CustomTemplates>;
serializedStateStore: IManagerInit<CustomTemplates>['serializedStateStore'];
routerStateStore: IManagerInit<CustomTemplates>['routerStateStore'];
routerTypes: ManagerRouterTypes<CustomTemplates>;
templates: AllTemplates<CustomTemplates>;
routerCache: IRouterCache<ExtractCustomStateFromTemplate<RouterTemplateUnion<AllTemplates<CustomTemplates>>>>;
actionCount: number;
cacheKey: string;
removeCacheAfterRehydration: boolean;
errorWhenMissingData: boolean;
constructor(initArgs?: IManagerInit<CustomTemplates>, { shouldInitialize, actionFnDecorator }?: {
shouldInitialize: boolean;
actionFnDecorator?: ActionWraperFnDecorator<CustomTemplates, any>;
});
incrementActionCount(): void;
initializeManager({ routerDeclaration, serializedStateStore, routerStateStore, router, customTemplates, routerCacheClass, printTraceResults, cacheKey, removeCacheAfterRehydration, errorWhenMissingData }: IManagerInit<CustomTemplates>): void;
get routers(): Record<string, RouterInstance<CustomTemplates>>;
linkTo: (routerName: string, actionName: string, actionArgs?: Pick<IRouterActionOptions<ExtractCustomStateFromTemplate<AllTemplates<CustomTemplates>[keyof AllTemplates<CustomTemplates>]>>, "data" | "disableCaching" | "pathData" | "replaceLocation" | "addCacheToLocation">) => string;
addRouters: (router?: IRouterDeclaration<AllTemplates<CustomTemplates>>, type?: NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>, parentName?: string) => void;
addRouter(routerDeclaration: IRouterDeclaration<AllTemplates<CustomTemplates>>): void;
removeRouter: (name: string) => void;
registerRouter(name: string, router: RouterInstance<CustomTemplates>): void;
unregisterRouter(name: string): void;
calcNewRouterState<Name extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>(location: IInputLocation, router: RouterInstance<CustomTemplates, NarrowRouterTypeName<Name>>, ctx?: ReducerContext<CustomTemplates, Name>, newState?: Record<string, RouterCurrentStateFromTemplates<AllTemplates<CustomTemplates>>>): Record<string, RouterCurrentStateFromTemplates<AllTemplates<CustomTemplates>>>;
createRouterConfigArgs<Name extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>(routerDeclaration: IRouterDeclaration<AllTemplates<CustomTemplates>>, routerType: Name, parent: RouterInstance<CustomTemplates, Name>): IRouterConfig<RouterCustomStateFromTemplates<AllTemplates<CustomTemplates>>>;
validateNeighborsOfOtherTypesArentPathRouters<Name extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>(router: RouterInstance<CustomTemplates, Name>): void;
validateRouterCreationInfo<Name extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>(name: string, type: Name, config: IRouterConfig<RouterCustomStateFromTemplates<AllTemplates<CustomTemplates>>>): void;
createNewRouterInitArgs<Name extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>({ name, config, type, parentName }: IRouterCreationInfo<CustomTemplates, NarrowRouterTypeName<Name>>): IRouterInitArgs<CustomTemplates, NarrowRouterTypeName<Name>>;
createRouterFromInitArgs<Name extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>(initalArgs: IRouterInitArgs<CustomTemplates, NarrowRouterTypeName<Name>>): RouterInstance<CustomTemplates, NarrowRouterTypeName<Name>>;
setCacheFromLocation: (location: IInputLocation) => void;
removeCacheFromLocation: (existingLocation: IInputLocation) => void;
setNewRouterState(location: IInputLocation): void;
createRouter<Name extends NarrowRouterTypeName<keyof AllTemplates<CustomTemplates>>>({ name, config, type, parentName }: IRouterCreationInfo<CustomTemplates, NarrowRouterTypeName<Name>>): RouterInstance<CustomTemplates, Name>;
}