import {Path, ParamPart} from "../path"; import {ParamNameOf} from "../query"; export type AppendParam< PathT extends Path, NameT extends string > = ( Path|NameT> ); /** regex, if provided, ignores modifiers like `g` and `i` */ export function appendParam, NameT extends string> ( path : PathT, name : NameT, regex? : RegExp ) : AppendParam { if (name.indexOf(":") >= 0) { throw new Error(`":" not allowed in param, ${name}`); } if (name.indexOf("/") >= 0) { throw new Error(`"/" not allowed in param, ${name}`); } let newRouterPath = path.routerPath + "/:" + name; if (regex != undefined) { newRouterPath += `(${regex.source})`; } const newParamPart : ParamPart = { name : name, regex : regex, }; return new Path|NameT>( [...path.parts, newParamPart] as any, newRouterPath ); }