UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

707 lines 13.6 kB
/** * ReaderStreamEither is an EitherT of ReaderStream, allowing for you to * represent your application over time with Stream, with support for branching/error-handling * through Either, and dependency injection from Reader. * * @since 0.9.2 */ import * as ALT from 'fp-ts/Alt'; import * as App from 'fp-ts/Applicative'; import * as Ap from 'fp-ts/Apply'; import * as Ch from 'fp-ts/Chain'; import * as Ei from 'fp-ts/Either'; import * as ET from 'fp-ts/EitherT'; import * as FEi from 'fp-ts/FromEither'; import * as FIO from 'fp-ts/FromIO'; import * as FR from 'fp-ts/FromReader'; import * as FT from 'fp-ts/FromTask'; import * as F from 'fp-ts/Functor'; import * as RT from 'fp-ts/ReaderT'; import * as FE from './FromEnv'; import * as FRS from './FromReaderStream'; import * as FRe from './FromResume'; import * as FS from './FromStream'; import { flow } from './function'; import * as RS from './ReaderStream'; import * as S from './Stream'; import * as SE from './StreamEither'; /** * @since 0.9.2 * @category Combinator */ export const ap = RT.ap(SE.Apply); /** * @since 0.9.2 * @category Combinator */ export const apW = ap; /** * @since 0.9.2 * @category Combinator */ export const chain = RT.chain(SE.Chain); /** * @since 0.9.2 * @category Combinator */ export const chainW = chain; /** * @since 0.9.2 * @category Constructor */ export const fromReader = RT.fromReader(SE.Pointed); /** * @since 0.9.2 * @category Combinator */ export const map = RT.map(SE.Functor); /** * @since 0.9.2 * @category Constructor */ export const of = RT.of(SE.Pointed); /** * @since 0.9.2 * @category Combinator */ export const alt = ET.alt(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const altW = alt; /** * @since 0.9.2 * @category Typeclass Constructor */ export const altValidation = (semigroup) => ET.altValidation(RS.Monad, semigroup); /** * @since 0.9.2 * @category Combinator */ export const bimap = ET.bimap(RS.Functor); /** * @since 0.9.2 * @category Combinator */ export const bracket = ET.bracket(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const bracketW = bracket; /** * @since 0.9.2 * @category Combinator */ export const getOrElse = ET.getOrElse(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const getOrElseE = ET.getOrElseE(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const getOrElseEW = getOrElseE; /** * @since 0.9.2 * @category Constructor */ export const left = ET.left(RS.Monad); /** * @since 0.9.2 * @category Constructor */ export const fromReaderStreamL = ET.leftF(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const mapLeft = ET.mapLeft(RS.Monad); /** * @since 0.9.2 * @category Deconstructor */ export const match = ET.match(RS.Monad); /** * @since 0.9.2 * @category Deconstructor */ export const matchE = ET.matchE(RS.Monad); /** * @since 0.9.2 * @category Deconstructor */ export const matchEW = match; /** * @since 0.9.2 * @category Combinator */ export const orElse = ET.orElse(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const orElseFirst = ET.orElseFirst(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const orLeft = ET.orLeft(RS.Monad); /** * @since 0.9.2 * @category Constructor */ export const right = ET.right(RS.Monad); /** * @since 0.9.2 * @category Constructor */ export const fromReaderStream = ET.rightF(RS.Monad); /** * @since 0.9.2 * @category Combinator */ export const swap = ET.swap(RS.Functor); /** * @since 0.9.2 * @category Combinator */ export const toUnion = ET.toUnion(RS.Functor); /** * @since 0.9.2 * @category URI */ export const URI = '@typed/fp/ReaderStreamEither'; /** * @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 Combinator */ export const bindTo = F.bindTo(Functor); /** * @since 0.9.2 * @category Combinator */ export const flap = F.flap(Functor); /** * @since 0.9.2 * @category Combinator */ export const tupled = F.tupled(Functor); /** * @since 0.9.2 * @category Instance */ export const Bifunctor = { ...Functor, bimap, mapLeft, }; /** * @since 0.9.2 * @category Instance */ export const Apply = { ...Functor, ap, }; /** * @since 0.9.2 * @category Combinator */ export const apFirst = Ap.apFirst(Apply); /** * @since 0.13.9 * @category Combinator */ export const apFirstW = apFirst; /** * @since 0.9.2 * @category Combinator */ export const apS = Ap.apS(Apply); /** * @since 0.13.9 * @category Combinator */ export const apSW = apS; /** * @since 0.9.2 * @category Combinator */ export const apSecond = Ap.apSecond(Apply); /** * @since 0.13.9 * @category Combinator */ export const apScondW = apFirst; /** * @since 0.9.2 * @category Combinator */ export const apT = Ap.apT(Apply); /** * @since 0.13.9 * @category Combinator */ export const apTW = apT; /** * @since 0.9.2 * @category Typeclass Constructor */ export const getApplySemigroup = Ap.getApplySemigroup(Apply); /** * @since 0.9.2 * @category Instance */ export const Applicative = { ...Apply, ...Pointed, }; /** * @since 0.9.2 * @category Typeclass Consructor */ export const getApplicativeMonoid = App.getApplicativeMonoid(Applicative); /** * @since 0.9.2 * @category Instance */ export const Chain = { ...Functor, chain, }; /** * @since 0.9.2 * @category Combinator */ export const bind = Ch.bind(Chain); /** * @since 0.9.2 * @category Combinator */ export const chainFirst = Ch.chainFirst(Chain); /** * @since 0.13.9 * @category Combinator */ export const chainFirstW = chainFirst; /** * @since 0.9.2 * @category Instance */ export const Monad = { ...Chain, ...Pointed, }; /** * @since 0.9.2 * @category Combinator */ export function chainRec(f) { return (value) => (env) => SE.chainRec((a) => f(a)(env))(value); } /** * @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 Instance */ export const Alt = { ...Functor, alt, }; /** * @since 0.9.2 * @category Combinator */ export const altAll = ALT.altAll(Alt); /** * @since 0.9.2 * @category Constructor */ export const zero = S.empty; /** * @since 0.9.2 * @category Instance */ export const Alternative = { ...Alt, zero: () => zero, }; /** * @since 0.9.2 * @category Instance */ export const FromEither = { fromEither: RS.of, }; /** * @since 0.9.2 * @category Constructor */ export const fromEither = FromEither.fromEither; /** * @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 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 chainFirstReaderK = FR.chainFirstReaderK(FromReader, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainReaderK = FR.chainReaderK(FromReader, Chain); /** * @since 0.13.9 * @category Combinator */ export const chainReaderKW = chainReaderK; /** * @since 0.9.2 * @category Constructor */ export const fromReaderK = FR.fromReaderK(FromReader); /** * @since 0.9.2 * @category Instance */ export const FromIO = { fromIO: flow(RS.fromIO, fromReaderStream), }; /** * @since 0.9.2 * @category Constructor */ export const fromIO = FromIO.fromIO; /** * @since 0.9.2 * @category Combinator */ export const chainFirstIOK = FIO.chainFirstIOK(FromIO, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainIOK = FIO.chainIOK(FromIO, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromIOK = FIO.fromIOK(FromIO); /** * @since 0.9.2 * @category Instance */ export const FromTask = { ...FromIO, fromTask: flow(RS.fromTask, fromReaderStream), }; /** * @since 0.9.2 * @category Constructor */ export const fromTask = FromTask.fromTask; /** * @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 Instance */ export const FromStream = { fromStream: flow(RS.fromStream, RS.map(Ei.right)), }; /** * @since 0.9.2 * @category Constructor */ export const fromStream = FromStream.fromStream; /** * @since 0.9.2 * @category Combinator */ export const chainFirstStreamK = FS.chainFirstStreamK(FromStream, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainStreamK = FS.chainStreamK(FromStream, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromStreamK = FS.fromStreamK(FromStream); /** * @since 0.9.2 * @category Instance */ export const FromResume = { fromResume: flow(RS.fromResume, RS.map((x) => Ei.right(x))), }; /** * @since 0.9.2 * @category Constructor */ export const fromResume = FromResume.fromResume; /** * @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 Instance */ export const FromEnv = { fromEnv: flow(RS.fromEnv, RS.map((x) => Ei.right(x))), }; /** * @since 0.9.2 * @category Constructor */ export const fromEnv = FromEnv.fromEnv; /** * @since 0.9.2 * @category Combinator */ export const chainFirstEnvK = FE.chainFirstEnvK(FromEnv, Chain); /** * @since 0.9.2 * @category Combinator */ export const chainEnvK = FE.chainEnvK(FromEnv, Chain); /** * @since 0.9.2 * @category Constructor */ export const fromEnvK = FE.fromEnvK(FromEnv); /** * @since 0.13.9 * @category Instance */ export const ProvideAll = { provideAll: RS.provideAll, }; /** * @since 0.13.9 * @category Combinator */ export const provideAll = ProvideAll.provideAll; /** * @since 0.13.9 * @category Instance */ export const ProvideSome = { provideSome: RS.provideSome, }; /** * @since 0.13.9 * @category Combinator */ export const provideSome = ProvideSome.provideSome; /** * @since 0.13.9 * @category Instance */ export const UseAll = { useAll: RS.useAll, }; /** * @since 0.13.9 * @category Combinator */ export const useAll = UseAll.useAll; /** * @since 0.13.9 * @category Instance */ export const UseSome = { useSome: RS.useSome, }; /** * @since 0.13.9 * @category Combinator */ export const useSome = UseSome.useSome; /** * @since 0.13.9 * @category Combinator */ export const provideAllWithEnv = FE.provideAllWithEnv({ ...FromEnv, ...ProvideAll, ...Chain }); /** * @since 0.13.9 * @category Combinator */ export const provideSomeWithEnv = FE.provideSomeWithEnv({ ...FromEnv, ...ProvideSome, ...Chain }); /** * @since 0.13.9 * @category Combinator */ export const useSomeWithEnv = FE.useSomeWithEnv({ ...FromEnv, ...UseSome, ...Chain }); /** * @since 0.13.9 * @category Combinator */ export const useAllWithEnv = FE.useAllWithEnv({ ...FromEnv, ...UseAll, ...Chain }); /** * @since 0.13.9 * @category Instance */ export const FromReaderStream = { fromReaderStream, }; /** * @since 0.13.9 * @category Combinator */ export const chainFirstReaderStreamK = FRS.chainFirstReaderStreamK(FromReaderStream, Chain); /** * @since 0.13.9 * @category Combinator */ export const chainReaderStreamK = FRS.chainReaderStreamK(FromReaderStream, Chain); /** * @since 0.13.9 * @category Constructor */ export const fromReaderStreamK = FRS.fromReaderStreamK(FromReaderStream); /** * @since 0.13.9 * @category Combinator */ export const provideAllWithReaderStream = FRS.provideAllWithReaderStream({ ...FromReaderStream, ...ProvideAll, ...Chain, }); /** * @since 0.13.9 * @category Combinator */ export const provideSomeWithReaderStream = FRS.provideSomeWithReaderStream({ ...FromReaderStream, ...ProvideSome, ...Chain, }); /** * @since 0.13.9 * @category Combinator */ export const useSomeWithReaderStream = FRS.useSomeWithReaderStream({ ...FromReaderStream, ...UseSome, ...Chain, }); /** * @since 0.13.9 * @category Combinator */ export const useAllWithReaderStream = FRS.useAllWithReaderStream({ ...FromReaderStream, ...UseAll, ...Chain, }); //# sourceMappingURL=ReaderStreamEither.js.map