import { Result } from "@shared/utils/result.ts"; import { Schema } from "@shared/utils/validator.ts"; class ApiRoute< Path extends string, ReqSchema extends Schema, ResSchema extends Schema, > { constructor( public readonly path: Path, public readonly reqSchema: ReqSchema, public readonly resSchema: ResSchema, ) { } } export type ExtractRouteParams = T extends string ? T extends `${infer _Start}:${infer Param}/${infer Rest}` ? Param | ExtractRouteParams : T extends `${infer _Start}:${infer Param}` ? Param : T extends `${infer _Start}*` ? "restOfThePath" : never : never;