cl-fill-link
Version:
Fill generated nextjs links with dynamic values
19 lines (18 loc) • 1.05 kB
TypeScript
declare type PrimitiveTypeConstraint = boolean | string | number;
declare type Obj<T> = Record<string, T>;
declare type QueryConstraint = Obj<PrimitiveTypeConstraint>;
declare type ObjConstraint = Obj<unknown>;
declare type Query = {
$query?: QueryConstraint;
};
export declare type InferObject<T extends string, C extends ObjConstraint = {}> = T extends `${infer K}[[...${infer U}]]${infer O}` ? InferObject<`${K}${O}`, {
[I in U]: PrimitiveTypeConstraint[];
} & C> : T extends `${infer K}[...${infer U}]${infer O}` ? InferObject<`${K}${O}`, {
[I in U]: [PrimitiveTypeConstraint, ...PrimitiveTypeConstraint[]];
} & C> : T extends `${infer K}[${infer U}]${infer O}` ? InferObject<`${K}${O}`, {
[I in U]: PrimitiveTypeConstraint;
} & C> : C;
export declare type Replacer<T extends string> = InferObject<T> & Query;
export declare function fillLink<T extends string>(link: T, replacer: Replacer<T>): string;
export declare function fillLinkSafe<T extends string>(link: T, replacer: Replacer<T>): string | null;
export {};