UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

404 lines 7.72 kB
import * as E from 'fp-ts/Either'; import * as FEi from 'fp-ts/FromEither'; import * as FIO from 'fp-ts/FromIO'; import * as FR from 'fp-ts/FromReader'; import * as FS from 'fp-ts/FromState'; import * as FT from 'fp-ts/FromTask'; import { flow, pipe } from 'fp-ts/function'; import * as ST from 'fp-ts/StateT'; import * as FE from './FromEnv'; import * as FRe from './FromResume'; import * as RSE from './ReaderStreamEither'; /** * @since 0.9.2 * @category Combinator */ export const ap = ST.ap(RSE.Chain); /** * @since 0.9.2 * @category Combinator */ export const chain = ST.chain(RSE.Chain); /** * @since 0.9.2 * @category Combinator */ export const evaluate = ST.evaluate(RSE.Chain); /** * @since 0.9.2 * @category Combinator */ export const execute = ST.execute(RSE.Chain); /** * @since 0.9.2 * @category Constructor */ export const fromEnvEither = ST.fromF(RSE.Chain); /** * @since 0.9.2 * @category Constructor */ export const fromState = ST.fromState(RSE.Pointed); /** * @since 0.9.2 * @category Combinator */ export const map = ST.map(RSE.Functor); /** * @since 0.9.2 * @category Constructor */ export const of = ST.of(RSE.Pointed); /** * @since 0.9.2 * @category URI */ export const URI = '@typed/fp/StateReaderStreamEither'; /** * @since 0.9.2 * @category Instance */ export const Pointed = { of, }; /** * @since 0.9.2 * @category Instance */ export const Functor = { map, }; /** * @since 0.9.2 * @category Instance */ export const Apply = { ...Functor, ap, }; /** * @since 0.9.2 * @category Instance */ export const Applicative = { ...Apply, ...Pointed, }; /** * @since 0.9.2 * @category Instance */ export const Chain = { ...Functor, chain, }; /** * @since 0.9.2 * @category Instance */ export const Monad = { ...Chain, ...Pointed, }; /** * @since 0.9.2 * @category Combinator */ export const chainRec = (f) => (value) => flow(f(value), RSE.chain(([either, nextState]) => pipe(either, E.matchW((a) => chainRec(f)(a)(nextState), (b) => RSE.right([b, nextState]))))); /** * @since 0.9.2 * @category Instance */ export const ChainRec = { chainRec, }; /** * @since 0.9.2 * @category Instance */ export const MonadRec = { ...Monad, chainRec, }; /** * @since 0.9.2 * @category Constructor */ export const fromEither = (either) => fromEnvEither(RSE.fromEither(either)); /** * @since 0.9.2 * @category Instance */ export const FromEither = { fromEither, }; /** * @since 0.9.2 * @category Constructor */ export const fromIO = (io) => fromEnvEither(RSE.fromIO(io)); /** * @since 0.9.2 * @category Instance */ export const FromIO = { fromIO, }; /** * @since 0.9.2 * @category Constructor */ export const fromTask = (io) => fromEnvEither(RSE.fromTask(io)); /** * @since 0.9.2 * @category INstance */ export const FromTask = { ...FromIO, fromTask, }; /** * @since 0.9.2 * @category Constructor */ export const fromResume = (resume) => fromEnvEither(RSE.fromResume(resume)); /** * @since 0.9.2 * @category Instance */ export const FromResume = { fromResume, }; /** * @since 0.9.2 * @category Constructor */ export const fromEnv = (env) => fromEnvEither(RSE.fromEnv(env)); /** * @since 0.9.2 * @category Instance */ export const FromEnv = { fromEnv, }; /** * @since 0.9.2 * @category Instance */ export const FromState = { fromState, }; /** * @since 0.9.2 * @category Constructor */ export const fromReader = (reader) => fromEnvEither(RSE.fromReader(reader)); /** * @since 0.9.2 * @category Instance */ export const FromReader = { fromReader }; /** * @since 0.9.2 * @category Constructor */ export const ask = FR.ask(FromReader); /** * @since 0.9.2 * @category Constructor */ export const asks = FR.asks(FromReader); /** * @since 0.9.2 * @category Combinator */ export const chainReaderK = FR.chainReaderK(FromReader, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromReaderK = FR.fromReaderK(FromReader); /** * @since 0.9.2 * @category Combinator */ export const chainFirstResumeK = FRe.chainFirstResumeK(FromResume, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainResumeK = FRe.chainResumeK(FromResume, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromResumeK = FRe.fromResumeK(FromResume); /** * @since 0.9.2 * @category Combinator */ export const chainEnvK = FE.chainEnvK(FromEnv, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainFirstEnvK = FE.chainFirstEnvK(FromEnv, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromEnvK = FE.fromEnvK(FromEnv); /** * @since 0.9.2 * @category Combinator */ export const chainFirstTaskK = FT.chainFirstTaskK(FromTask, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainTaskK = FT.chainTaskK(FromTask, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromTaskK = FT.fromTaskK(FromTask); /** * @since 0.9.2 * @category Combinator */ export const chainFirstIOK = FIO.chainFirstIOK(FromTask, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainIOK = FIO.chainIOK(FromTask, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromIOK = FIO.fromIOK(FromTask); /** * @since 0.9.2 * @category Combinator */ export const chainEitherK = FEi.chainEitherK(FromEither, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainOptionK = FEi.chainOptionK(FromEither, Chain); /** * @since 0.9.2 * @category Combinator */ export const filterOrElse = FEi.filterOrElse(FromEither, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromEitherK = FEi.fromEitherK(FromEither); /** * @since 0.9.2 * @category Constructor */ export const fromOption = FEi.fromOption(FromEither); /** * @since 0.9.2 * @category Constructor */ export const fromOptionK = FEi.fromOptionK(FromEither); /** * @since 0.9.2 * @category Constructor */ export const fromPredicate = FEi.fromPredicate(FromEither); /** * @since 0.9.2 * @category Combinator */ export const chainStateK = FS.chainStateK(FromState, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromStateK = FS.fromStateK(FromState); /** * @since 0.9.2 * @category Constructor */ export const get = FS.get(FromState); /** * @since 0.9.2 * @category Constructor */ export const gets = FS.gets(FromState); /** * @since 0.9.2 * @category Combinator */ export const modify = FS.modify(FromState); /** * @since 0.9.2 * @category Combinator */ export const put = FS.put(FromState); /** * @since 0.9.2 * @category Combinator */ export const useSome = (provided) => (srte) => (s) => (r) => srte(s)({ ...r, ...provided }); /** * @since 0.9.2 * @category Combinator */ export const provideSome = (provided) => (srte) => (s) => (r) => srte(s)({ ...provided, ...r }); /** * @since 0.9.2 * @category Combinator */ export const useAll = (provided) => (srte) => (s) => () => srte(s)(provided); /** * @since 0.9.2 * @category Combinator */ export const provideAll = (provided) => (srte) => (s) => (r) => srte(s)({ ...provided, ...r }); /** * @since 0.9.2 * @category Instance */ export const UseSome = { useSome, }; /** * @since 0.9.2 * @category Instance */ export const UseAll = { useAll, }; /** * @since 0.9.2 * @category Instance */ export const ProvideSome = { provideSome, }; /** * @since 0.9.2 * @category Instance */ export const ProvideAll = { provideAll, }; /** * @since 0.9.2 * @category Instance */ export const Provide = { useSome, useAll, provideSome, provideAll, }; //# sourceMappingURL=StateReaderStreamEither.js.map