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