@typed/fp
Version:
Data Structures and Resources for fp-ts
588 lines • 11.5 kB
JavaScript
import * as Apply_ from 'fp-ts/Apply';
import * as Chain_ from 'fp-ts/Chain';
import * as E 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 { flow, pipe } from 'fp-ts/function';
import * as Functor_ from 'fp-ts/Functor';
import { tryCatch } from 'fp-ts/TaskEither';
import * as Env from './Env';
import * as FE from './FromEnv';
import * as FRe from './FromResume';
import { swapEithers } from './internal';
import * as P from './Provide';
import { sync } from './Resume';
/**
* @since 0.9.2
* @category Combinator
*/
export const alt = ET.alt(Env.Monad);
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export const altValidation = (semigroup) => ET.altValidation(Env.Monad, semigroup);
/**
* @since 0.9.2
* @category Combinator
*/
export const ap = ET.ap(Env.Apply);
/**
* @since 0.9.2
* @category Combinator
*/
export const bimap = ET.bimap(Env.Functor);
/**
* @since 0.9.2
* @category Combinator
*/
export const bracket = ET.bracket(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const chain = ET.chain(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const chainW = chain;
/**
* @since 0.9.2
* @category Combinator
*/
export const getOrElse = ET.getOrElse(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const getOrElseE = ET.getOrElseE(Env.Monad);
/**
* @since 0.9.2
* @category Constructor
*/
export const left = ET.left(Env.Monad);
/**
* @since 0.9.2
* @category Constructor
*/
export const fromEnvL = ET.leftF(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const map = ET.map(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const mapLeft = ET.mapLeft(Env.Monad);
/**
* @since 0.9.2
* @category Deconstructor
*/
export const match = ET.match(Env.Monad);
/**
* @since 0.9.2
* @category Deconstructor
*/
export const matchE = ET.matchE(Env.Monad);
/**
* @since 0.9.2
* @category Deconstructor
*/
export const orElse = ET.orElse(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const orElseFirst = ET.orElseFirst(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const orLeft = ET.orLeft(Env.Monad);
/**
* @since 0.9.2
* @category Constructor
*/
export const right = ET.right(Env.Monad);
/**
* @since 0.9.2
* @category Constructor
*/
export const fromEnv = ET.rightF(Env.Monad);
/**
* @since 0.9.2
* @category Combinator
*/
export const swap = ET.swap(Env.Functor);
/**
* @since 0.9.2
* @category Deconstructor
*/
export const toUnion = ET.toUnion(Env.Functor);
/**
* @since 0.9.2
* @category URI
*/
export const URI = '@typed/fp/EnvEither';
/**
* @since 0.9.2
* @category Constructor
*/
export const of = flow(E.right, Env.of);
/**
* @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 = Functor_.bindTo(Functor);
/**
* @since 0.9.2
* @category Combinator
*/
export const flap = Functor_.flap(Functor);
/**
* @since 0.9.2
* @category Combinator
*/
export const tupled = Functor_.tupled(Functor);
/**
* @since 0.9.2
* @category Instance
*/
export const Bifunctor = {
bimap,
mapLeft,
};
/**
* @since 0.9.2
* @category Instance
*/
export const Apply = {
...Functor,
ap,
};
/**
* @since 0.9.2
* @category Combinator
*/
export const apFirst = Apply_.apFirst(Apply);
/**
* @since 0.9.10
* @category Combinator
*/
export const apFirstW = Apply_.apFirst(Apply);
/**
* @since 0.9.2
* @category Combinator
*/
export const apS = Apply_.apS(Apply);
/**
* @since 0.9.10
* @category Combinator
*/
export const apSW = apS;
/**
* @since 0.9.2
* @category Combinator
*/
export const apSecond = Apply_.apSecond(Apply);
/**
* @since 0.9.10
* @category Combinator
*/
export const apSecondW = apSecond;
/**
* @since 0.9.2
* @category Combinator
*/
export const apT = Apply_.apT(Apply);
/**
* @since 0.9.10
* @category Combinator
*/
export const apTW = apT;
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export const getSemigroup = Apply_.getApplySemigroup(Apply);
/**
* @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 Combinator
*/
export const bind = Chain_.bind(Chain);
/**
* @since 0.11.1
* @category Combinator
*/
export const bindW = bind;
/**
* @since 0.9.2
* @category Combinator
*/
export const chainFirst = Chain_.chainFirst(Chain);
/**
* @since 0.9.11
* @category Combinator
*/
export const chainFirstW = Chain_.chainFirst(Chain);
/**
* @since 0.9.2
* @category Instance
*/
export const Monad = {
...Chain,
...Pointed,
};
/**
* @since 0.9.2
* @category Combinator
*/
export const chainRec = (f) => (a) => pipe(a, Env.chainRec((x) => pipe(x, f, Env.map(swapEithers))));
/**
* @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 = (e) => () => sync(() => e);
/**
* @since 0.9.2
* @category Instance
*/
export const FromEither = {
fromEither,
};
/**
* @since 0.9.2
* @category Instance
*/
export const FromIO = {
fromIO: flow(Env.fromIO, Env.map(E.right)),
};
/**
* @since 0.9.2
* @category Constructor
*/
export const fromIO = FromIO.fromIO;
/**
* @since 0.9.2
* @category Instance
*/
export const FromTask = {
...FromIO,
fromTask: flow(Env.fromTask, Env.map(E.right)),
};
/**
* @since 0.9.2
* @category Constructor
*/
export const fromTask = FromTask.fromTask;
/**
* @since 0.9.2
* @category Instance
*/
export const FromResume = {
fromResume: (resume) => pipe(Env.fromResume(resume), Env.map(E.right)),
};
/**
* @since 0.9.2
* @category Constructor
*/
export const fromResume = FromResume.fromResume;
/**
* @since 0.9.2
* @category Instance
*/
export const FromReader = {
fromReader: flow(Env.fromReader, Env.map(E.right)),
};
/**
* @since 0.9.2
* @category Constructor
*/
export const fromReader = FromReader.fromReader;
/**
* @since 0.9.2
* @category Instance
*/
export const FromEnv = {
fromEnv,
};
/**
* @since 0.9.2
* @category Instance
*/
export const Alt = {
...Functor,
alt,
};
/**
* @since 0.9.2
* @category Instance
*/
export const UseSome = {
useSome: Env.useSome,
};
/**
* @since 0.9.2
* @category Instance
*/
export const UseAll = {
useAll: Env.useAll,
};
/**
* @since 0.9.2
* @category Instance
*/
export const ProvideSome = {
provideSome: Env.provideSome,
};
/**
* @since 0.9.2
* @category Instance
*/
export const ProvideAll = {
provideAll: Env.provideAll,
};
/**
* @since 0.9.2
* @category Instance
*/
export const Provide = {
...UseAll,
...UseSome,
...ProvideSome,
...ProvideAll,
};
/**
* @since 0.9.2
* @category Combinator
*/
export const askAndProvide = P.askAndProvide({ ...ProvideAll, ...FromReader, ...Chain });
/**
* @since 0.9.2
* @category Combinator
*/
export const askAndUse = P.askAndUse({ ...UseAll, ...FromReader, ...Chain });
/**
* @since 0.9.2
* @category Combinator
*/
export const provideAllWith = P.provideAllWith({ ...ProvideAll, ...FromReader, ...Chain });
/**
* @since 0.9.2
* @category Combinator
*/
export const provideSomeWith = P.provideSomeWith({ ...ProvideSome, ...FromReader, ...Chain });
/**
* @since 0.9.2
* @category Combinator
*/
export const useAllWith = P.useAllWith({ ...UseAll, ...FromReader, ...Chain });
/**
* @since 0.9.2
* @category Combinator
*/
export const useSomeWith = P.useSomeWith({ ...UseSome, ...FromReader, ...Chain });
/**
* @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.15
* @category Combinator
*/
export const provideAllWithEnv = FE.provideAllWithEnv({ ...FromEnv, ...ProvideAll, ...Chain });
/**
* @since 0.9.15
* @category Combinator
*/
export const provideSomeWithEnv = FE.provideSomeWithEnv({ ...FromEnv, ...ProvideSome, ...Chain });
/**
* @since 0.9.15
* @category Combinator
*/
export const useAllWithEnv = FE.useAllWithEnv({ ...FromEnv, ...UseAll, ...Chain });
/**
* @since 0.9.15
* @category Combinator
*/
export const useSomeWithEnv = FE.useSomeWithEnv({ ...FromEnv, ...UseSome, ...Chain });
/**
* @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.11.1
* @category Constructor
*/
export const Do = fromIO(() => Object.create(null));
/**
* Construct an EnvEither from a Promise returning function.
* @since 0.12.2
* @category Constructor
*/
export const fromPromise = flow(tryCatch, Env.fromTask);
/**
* Construct an EnvEither from a Promise returning function.
* @since 0.12.2
* @category Constructor
*/
export const fromPromiseK = (f) => (...args) => fromPromise(() => f(...args));
//# sourceMappingURL=EnvEither.js.map