reminist
Version:
<div align="center">
72 lines (69 loc) • 2.27 kB
TypeScript
// Generated by dts-bundle-generator v9.5.1
declare const NullProtoObj: {
new (): any;
};
export declare class Node<Data, Path extends string, Endpoint extends boolean> {
name: string;
store: Endpoint extends true ? Data : unknown;
endpoint: Endpoint;
type: NodeType;
paramName: string;
static: NullProtoObj<Node<Data, any, any>>;
dynamic: Node<Data, any, any> | null;
catchAll: Node<Data, any, any> | null;
optionalCatchAll: Node<Data, any, any> | null;
wildcard: Node<Data, any, any> | null;
childCount: number;
nonStaticChildCount: number;
constructor(params: NodeParams<Data, Endpoint, Path>);
addChild(node: Node<Data, string, boolean>): void;
removeChild(node: Node<Data, any, any>): void;
}
export declare class Reminist<const Paths extends readonly string[] = readonly string[], const Context extends {
[Path in Paths[number]]: unknown;
} = {
[Path in Paths[number]]: unknown;
}, const Keys extends readonly string[] = readonly string[]> {
private keys;
private routers;
private staticRouter;
constructor(options?: ReministOptions<Keys>);
getRoot(key: Keys[number]): Node<Context[Paths[number]], string, boolean>;
add<P extends Paths[number]>(key: Keys[number], path: P, store: Context[P]): void;
find<P extends Paths[number]>(key: Keys[number], path: P): {
node: Node<Context[P], string, boolean> | null;
params: Record<string, string>;
};
has<P extends Paths[number]>(key: Keys[number], path: P): boolean;
delete<P extends Paths[number]>(key: Keys[number], path: P): boolean;
static create<const T extends readonly string[]>(options: {
keys: T;
}): {
withData: <const Paths extends readonly string[], Context extends {
[Path in Paths[number]]: any;
} = {
[Path in Paths[number]]: any;
}>() => Reminist<Paths, Context, T>;
};
}
export declare enum NodeType {
Static = 0,
Dynamic = 1,
CatchAll = 2,
OptionalCatchAll = 3,
Wildcard = 4
}
export type NodeParams<Data, Endpoint extends boolean, Path extends string> = {
name: Path;
} & (Endpoint extends true ? {
endpoint: true;
store: Data;
} : {
endpoint: false;
store?: never;
});
export type ReministOptions<Keys extends readonly string[]> = {
keys: Keys;
};
type NullProtoObj<T = unknown> = InstanceType<new () => Record<PropertyKey, T>>;
export {};