UNPKG

fp-ts-fluture

Version:
218 lines (217 loc) 5.91 kB
/** * @since 0.6.5 */ import { IO } from 'fp-ts/lib/IO' import { Monad3 } from 'fp-ts/lib/Monad' import { MonadThrow3 } from 'fp-ts/lib/MonadThrow' import { State } from 'fp-ts/lib/State' import { Task } from 'fp-ts/lib/Task' import * as E from 'fp-ts/lib/Either' import { Bifunctor3 } from 'fp-ts/lib/Bifunctor' import { Alt3 } from 'fp-ts/lib/Alt' import { MonadTask3 } from 'fp-ts/lib/MonadTask' import * as F from './Future' declare module 'fp-ts/lib/HKT' { interface URItoKind3<R, E, A> { StateFuture: StateFuture<R, E, A> } } /** * @since 0.6.5 */ export declare const URI = 'StateFuture' /** * @since 0.6.5 */ export declare type URI = typeof URI /** * @since 0.6.5 */ export interface StateFuture<S, E, A> { (s: S): F.Future<E, [A, S]> } /** * @since 0.6.5 */ export declare const evalState: <S, E, A>(ma: StateFuture<S, E, A>, s: S) => F.Future<E, A> /** * @since 0.6.5 */ export declare const execState: <S, E, A>(ma: StateFuture<S, E, A>, s: S) => F.Future<E, S> /** * @since 0.6.5 */ export declare function left<S, E, A = never>(e: E): StateFuture<S, E, A> /** * @since 0.6.5 */ export declare const right: <S, E = never, A = never>(a: A) => StateFuture<S, E, A> /** * @since 0.6.5 */ export declare function rightTask<S, E = never, A = never>(ma: Task<A>): StateFuture<S, E, A> /** * @since 0.6.5 */ export declare function leftTask<S, E, A = never>(me: Task<E>): StateFuture<S, E, A> /** * @since 0.6.5 */ export declare const fromFuture: <S, E, A>(ma: F.Future<E, A>) => StateFuture<S, E, A> /** * @since 0.6.5 */ export declare function rightIO<S, E = never, A = never>(ma: IO<A>): StateFuture<S, E, A> /** * @since 0.6.5 */ export declare function leftIO<S, E, A = never>(me: IO<E>): StateFuture<S, E, A> /** * @since 0.6.5 */ export declare const rightState: <S, E = never, A = never>(ma: State<S, A>) => StateFuture<S, E, A> /** * @since 0.6.5 */ export declare function leftState<S, E, A = never>(me: State<S, E>): StateFuture<S, E, A> /** * @since 0.6.5 */ export declare function orElse<S, E, M, A>( f: (e: E) => StateFuture<S, M, A> ): (ma: StateFuture<S, E, A>) => StateFuture<S, M, A> /** * @since 0.6.5 */ export declare const get: <S, E = never>() => StateFuture<S, E, S> /** * @since 0.6.5 */ export declare const put: <S, E = never>(s: S) => StateFuture<S, E, void> /** * @since 0.6.5 */ export declare const modify: <S, E = never>(f: (s: S) => S) => StateFuture<S, E, void> /** * @since 0.6.5 */ export declare const gets: <S, E = never, A = never>(f: (s: S) => A) => StateFuture<S, E, A> /** * @since 0.6.5 */ export declare function fromEitherK<E, A extends Array<unknown>, B>( f: (...a: A) => E.Either<E, B> ): <S>(...a: A) => StateFuture<S, E, B> /** * @since 0.6.5 */ export declare function chainEitherK<E, A, B>( f: (a: A) => E.Either<E, B> ): <S>(ma: StateFuture<S, E, A>) => StateFuture<S, E, B> /** * @since 0.6.5 */ export declare function fromFutureK<E, A extends Array<unknown>, B>( f: (...a: A) => F.Future<E, B> ): <S>(...a: A) => StateFuture<S, E, B> /** * @since 0.6.5 */ export declare function chainFutureK<E, A, B>( f: (a: A) => F.Future<E, B> ): <S>(ma: StateFuture<S, E, A>) => StateFuture<S, E, B> /** * @since 0.6.5 */ export declare const stateFuture: Monad3<URI> & MonadThrow3<URI> & Bifunctor3<URI> & Alt3<URI> & MonadThrow3<URI> & MonadTask3<URI> declare const alt: <R, E, A>(that: () => StateFuture<R, E, A>) => (fa: StateFuture<R, E, A>) => StateFuture<R, E, A>, ap: <R, E, A>(fa: StateFuture<R, E, A>) => <B>(fab: StateFuture<R, E, (a: A) => B>) => StateFuture<R, E, B>, apFirst: <R, E, B>(fb: StateFuture<R, E, B>) => <A>(fa: StateFuture<R, E, A>) => StateFuture<R, E, A>, apSecond: <R, E, B>(fb: StateFuture<R, E, B>) => <A>(fa: StateFuture<R, E, A>) => StateFuture<R, E, B>, bimap: <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => <R>(fa: StateFuture<R, E, A>) => StateFuture<R, G, B>, chain: <R, E, A, B>(f: (a: A) => StateFuture<R, E, B>) => (ma: StateFuture<R, E, A>) => StateFuture<R, E, B>, chainFirst: <R, E, A, B>(f: (a: A) => StateFuture<R, E, B>) => (ma: StateFuture<R, E, A>) => StateFuture<R, E, A>, flatten: <R, E, A>(mma: StateFuture<R, E, StateFuture<R, E, A>>) => StateFuture<R, E, A>, map: <A, B>(f: (a: A) => B) => <R, E>(fa: StateFuture<R, E, A>) => StateFuture<R, E, B>, mapLeft: <E, G>(f: (e: E) => G) => <R, A>(fa: StateFuture<R, E, A>) => StateFuture<R, G, A>, filterOrElse: { <E, A, B extends A>(refinement: import('fp-ts/lib/function').Refinement<A, B>, onFalse: (a: A) => E): <R>( ma: StateFuture<R, E, A> ) => StateFuture<R, E, B> <E_1, A_1>(predicate: import('fp-ts/lib/function').Predicate<A_1>, onFalse: (a: A_1) => E_1): <R_1>( ma: StateFuture<R_1, E_1, A_1> ) => StateFuture<R_1, E_1, A_1> }, fromEither: <R, E, A>(ma: E.Either<E, A>) => StateFuture<R, E, A>, fromOption: <E>(onNone: () => E) => <R, A>(ma: import('fp-ts/lib/Option').Option<A>) => StateFuture<R, E, A>, fromPredicate: { <E, A, B extends A>(refinement: import('fp-ts/lib/function').Refinement<A, B>, onFalse: (a: A) => E): <U>( a: A ) => StateFuture<U, E, B> <E_1, A_1>(predicate: import('fp-ts/lib/function').Predicate<A_1>, onFalse: (a: A_1) => E_1): <R>( a: A_1 ) => StateFuture<R, E_1, A_1> } export { /** * @since 0.6.5 */ alt, /** * @since 0.6.5 */ ap, /** * @since 0.6.5 */ apFirst, /** * @since 0.6.5 */ apSecond, /** * @since 0.6.5 */ bimap, /** * @since 0.6.5 */ chain, /** * @since 0.6.5 */ chainFirst, /** * @since 0.6.5 */ flatten, /** * @since 0.6.5 */ map, /** * @since 0.6.5 */ mapLeft, /** * @since 0.6.5 */ filterOrElse, /** * @since 0.6.5 */ fromEither, /** * @since 0.6.5 */ fromOption, /** * @since 0.6.5 */ fromPredicate }