fp-ts-routing
Version:
A type-safe routing library for TypeScript
120 lines (119 loc) • 2.92 kB
TypeScript
/**
* @since 0.6.0
*/
import { Alternative1 } from 'fp-ts/lib/Alternative';
import { Lazy } from 'fp-ts/lib/function';
import { Monad1 } from 'fp-ts/lib/Monad';
import { Monoid } from 'fp-ts/lib/Monoid';
import * as O from 'fp-ts/lib/Option';
import { RowLacks } from './helpers';
import { Route } from './route';
declare module 'fp-ts/lib/HKT' {
interface URItoKind<A> {
'fp-ts-routing/Parser': Parser<A>;
}
}
declare const PARSER_URI = "fp-ts-routing/Parser";
type PARSER_URI = typeof PARSER_URI;
/**
* @category parsers
* @since 0.4.0
*/
export declare class Parser<A> {
readonly run: (r: Route) => O.Option<[A, Route]>;
/**
* @since 0.4.0
*/
readonly _A: A;
constructor(run: (r: Route) => O.Option<[A, Route]>);
/**
* @since 0.4.0
*/
static of<A>(a: A): Parser<A>;
/**
* @since 0.4.0
*/
map<B>(f: (a: A) => B): Parser<B>;
/**
* @since 0.4.0
*/
ap<B>(fab: Parser<(a: A) => B>): Parser<B>;
/**
* @since 0.4.0
*/
chain<B>(f: (a: A) => Parser<B>): Parser<B>;
/**
* @since 0.4.0
*/
alt(that: Parser<A>): Parser<A>;
/**
* @since 0.4.0
*/
then<B>(that: Parser<RowLacks<B, keyof A>>): Parser<A & B>;
}
/**
* @category parsers
* @since 0.4.0
*/
export declare const zero: <A>() => Parser<A>;
/**
* @category parsers
* @since 0.4.0
*/
export declare const parse: <A>(parser: Parser<A>, r: Route, a: A) => A;
/**
* @category parsers
* @since 0.5.1
*/
export declare const getParserMonoid: <A>() => Monoid<Parser<A>>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const parser: Monad1<PARSER_URI> & Alternative1<PARSER_URI>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const alt: <A>(that: Lazy<Parser<A>>) => (fa: Parser<A>) => Parser<A>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const ap: <A>(fa: Parser<A>) => <B>(fab: Parser<(a: A) => B>) => Parser<B>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const apFirst: <B>(fb: Parser<B>) => <A>(fa: Parser<A>) => Parser<A>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const apSecond: <B>(fb: Parser<B>) => <A>(fa: Parser<A>) => Parser<B>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const chain: <A, B>(f: (a: A) => Parser<B>) => (ma: Parser<A>) => Parser<B>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const chainFirst: <A, B>(f: (a: A) => Parser<B>) => (ma: Parser<A>) => Parser<A>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const flatten: <A>(mma: Parser<Parser<A>>) => Parser<A>;
/**
* @category parsers
* @since 0.5.1
*/
export declare const map: <A, B>(f: (a: A) => B) => (fa: Parser<A>) => Parser<B>;
/**
* @category parsers
* @since 0.6.0
*/
export declare const then: <B>(fb: Parser<B>) => <A>(fa: Parser<A> & Parser<RowLacks<A, keyof B>>) => Parser<A & B>;
export {};