@typed/fp
Version:
Data Structures and Resources for fp-ts
42 lines • 1.29 kB
TypeScript
import { Interpolate, ParamsOf } from './Path';
import { ReaderOption } from './ReaderOption';
/**
* @category Model
* @since 0.13.0
*/
export interface Route<P extends string, A = ParamsOf<P>> {
readonly path: P;
readonly match: ReaderOption<string, A>;
readonly createPath: <I extends ParamsOf<P>>(params: I) => Interpolate<P, I>;
}
/**
* @category Type-level
* @since 0.13.0
*/
export declare type PathOf<A> = [A] extends [Route<infer R>] ? R : never;
/**
* @category Type-level
* @since 0.13.0
*/
export declare type ValueOf<A> = [A] extends [Route<infer R>] ? ParamsOf<R> : never;
/**
* @category Constructor
* @since 0.13.0
*/
export declare function make<P extends string>(path: P): Route<P>;
/**
* @category Combinator
* @since 0.13.0
*/
export declare function map<A, B>(f: (value: A) => B): <P extends string>(route: Route<P, A>) => Route<P, B>;
/**
* @category Combinator
* @since 0.13.0
*/
export declare function oneOf<Routes extends readonly [Route<string>, ...Route<string>[]]>(...[first, ...rest]: Routes): ReaderOption<string, OneOf<Routes>>;
/**
* @category Type-level
* @since 0.13.0
*/
export declare type OneOf<Routes extends readonly [Route<string>, ...Route<string>[]]> = ValueOf<Routes[number]>;
//# sourceMappingURL=Route.d.ts.map