import {RouteData, Route} from "../route"; import {PathUtil} from "../../path"; export type AppendParam = ( Route<{ readonly method : DataT["method"]; readonly path : PathUtil.AppendParam; readonly param : DataT["param"]; readonly query : DataT["query"]; readonly body : DataT["body"]; readonly header : DataT["header"]; readonly response : DataT["response"]; }> ); export type AssertCanAppendParam = ( DataT["param"] extends undefined ? DataT : [ "Cannot .appendParam() after .setParam()", "Call .unsetParam() first" ] ); export function appendParam ( data : AssertCanAppendParam, name : NameT, regex? : RegExp ) : AppendParam { const curPath = (data as DataT).path as DataT["path"]; return new Route<{ readonly method : DataT["method"]; readonly path : PathUtil.AppendParam; readonly param : DataT["param"]; readonly query : DataT["query"]; readonly body : DataT["body"]; readonly header : DataT["header"]; readonly response : DataT["response"]; }>({ ...(data as DataT), path : curPath.appendParam(name, regex), }); }