UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

334 lines 6.09 kB
import * as Apply_ from 'fp-ts/Apply'; import * as Chain_ 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 { flow, pipe } from 'fp-ts/function'; import * as Functor_ from 'fp-ts/Functor'; import * as D from './Data'; import { swapEithers } from './internal'; /** * @since 0.9.2 * @category Combinator */ export const alt = ET.alt(D.Monad); /** * @since 0.9.2 * @category Typeclass Constructor */ export const altValidation = (semigroup) => ET.altValidation(D.Monad, semigroup); /** * @since 0.9.2 * @category Combinator */ export const ap = ET.ap(D.Apply); /** * @since 0.9.2 * @category Combinator */ export const bimap = ET.bimap(D.Functor); /** * @since 0.9.2 * @category Combinator */ export const bracket = ET.bracket(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const chain = ET.chain(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const getOrElse = ET.getOrElse(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const getOrElseE = ET.getOrElseE(D.Monad); /** * @since 0.9.2 * @category Constructor */ export const left = ET.left(D.Monad); /** * @since 0.9.2 * @category Constructor */ export const fromDataL = ET.leftF(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const map = ET.map(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const mapLeft = ET.mapLeft(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const match = ET.match(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const matchE = ET.matchE(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const orElse = ET.orElse(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const orElseFirst = ET.orElseFirst(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const orLeft = ET.orLeft(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const right = ET.right(D.Monad); /** * @since 0.9.2 * @category Constructor */ export const fromData = ET.rightF(D.Monad); /** * @since 0.9.2 * @category Combinator */ export const swap = ET.swap(D.Functor); /** * @since 0.9.2 * @category Combinator */ export const toUnion = ET.toUnion(D.Functor); /** * @since 0.9.2 * @category URI */ export const URI = '@typed/fp/DataEither'; /** * @since 0.9.2 * @category Constructor */ export const of = flow(Ei.right, D.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.2 * @category Combinator */ export const apS = Apply_.apS(Apply); /** * @since 0.9.2 * @category Combinator */ export const apSecond = Apply_.apSecond(Apply); /** * @since 0.9.2 * @category Combinator */ export const apT = Apply_.apT(Apply); /** * @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.9.2 * @category Combinator */ export const chainFirst = 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, D.chainRec((x) => pipe(x, f, D.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) => D.replete(e); /** * @since 0.9.2 * @category Instance */ export const FromEither = { fromEither, }; /** * @since 0.9.2 * @category Instance */ export const Alt = { ...Functor, alt, }; /** * @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 Combinator */ export const fromEitherK = FEi.fromEitherK(FromEither); /** * @since 0.9.2 * @category Combinator */ export const fromOption = FEi.fromOption(FromEither); /** * @since 0.9.2 * @category Combinator */ export const fromOptionK = FEi.fromOptionK(FromEither); /** * @since 0.9.2 * @category Combinator */ export const fromPredicate = FEi.fromPredicate(FromEither); /** * @since 0.12.1 * @category Consturctor */ export const noData = D.noData; /** * @since 0.12.1 * @category Consturctor */ export const loading = D.loading; /** * @since 0.12.1 * @category Constructor */ export const fromProgress = flow(D.fromProgress, fromData); /** * @since 0.12.1 * @category Combinator */ export const toLoading = (de) => pipe(de, D.toLoading); /** * @since 0.12.1 * @category Constructor */ export const refresh = flow(D.refresh, fromData); /** * @since 0.12.1 * @category Constructor */ export const replete = flow(D.replete, fromData); //# sourceMappingURL=DataEither.js.map