@typed/fp
Version:
Data Structures and Resources for fp-ts
707 lines • 13.6 kB
JavaScript
/**
* 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