@matechs/effect
Advanced tools
Comparing version 6.7.1 to 6.8.0
@@ -512,3 +512,3 @@ import { | ||
ioa: Effect<S, R, E, A>, | ||
finalizer: Effect<S2, R2, E2, ex.Interrupt[]> | ||
finalizer: Effect<S2, R2, E2, ex.Exit<any, any>[]> | ||
): Effect<S | S2, R & R2, E | E2, A>; | ||
@@ -590,3 +590,3 @@ /** | ||
*/ | ||
readonly interrupt: Async<ex.Interrupt>; | ||
readonly interrupt: Async<ex.Exit<E, A>>; | ||
/** | ||
@@ -616,3 +616,3 @@ * Await the result of this fiber | ||
wait: Async<ex.Exit<E, A>>; | ||
interrupt: Effect<unknown, unknown, never, ex.Interrupt>; | ||
interrupt: Effect<unknown, unknown, never, ex.Exit<E, A>>; | ||
join: Effect<unknown, unknown, E, A>; | ||
@@ -653,8 +653,8 @@ result: Effect<never, unknown, E, Op.Option<A>>; | ||
*/ | ||
export declare function raceFold<S, S2, S3, S4, R, R2, R3, R4, E1, E2, E3, A, B, C>( | ||
export declare function raceFold<S, S2, S3, S4, R, R2, R3, R4, E1, E2, E3, A, B, C, D>( | ||
first: Effect<S, R, E1, A>, | ||
second: Effect<S2, R2, E2, B>, | ||
onFirstWon: F.FunctionN<[ex.Exit<E1, A>, Fiber<E2, B>], Effect<S3, R3, E3, C>>, | ||
onSecondWon: F.FunctionN<[ex.Exit<E2, B>, Fiber<E1, A>], Effect<S4, R4, E3, C>> | ||
): AsyncRE<R & R2 & R3 & R4, E3, C>; | ||
onSecondWon: F.FunctionN<[ex.Exit<E2, B>, Fiber<E1, A>], Effect<S4, R4, E3, D>> | ||
): AsyncRE<R & R2 & R3 & R4, E3, C | D>; | ||
/** | ||
@@ -667,8 +667,8 @@ * Execute an IO and produce the next IO to run based on whether it completed successfully in the alotted time or not | ||
*/ | ||
export declare function timeoutFold<S, S1, S2, R, R2, R3, E1, E2, A, B>( | ||
export declare function timeoutFold<S, S1, S2, R, R2, R3, E1, E2, A, B, C>( | ||
source: Effect<S, R, E1, A>, | ||
ms: number, | ||
onTimeout: F.FunctionN<[Fiber<E1, A>], Effect<S1, R2, E2, B>>, | ||
onCompleted: F.FunctionN<[ex.Exit<E1, A>], Effect<S2, R3, E2, B>> | ||
): AsyncRE<R & R2 & R3, E2, B>; | ||
onCompleted: F.FunctionN<[ex.Exit<E1, A>], Effect<S2, R3, E2, C>> | ||
): AsyncRE<R & R2 & R3, E2, B | C>; | ||
/** | ||
@@ -847,3 +847,3 @@ * Return the reuslt of the first IO to complete or error successfully | ||
callback?: F.FunctionN<[ex.Exit<E, A>], void> | ||
): F.Lazy<void>; | ||
): (cb?: (exit: ex.Exit<E, A>) => void) => void; | ||
/** | ||
@@ -874,2 +874,5 @@ * Run the given IO syncroniously | ||
export declare function runToPromiseExit<E, A>(io: AsyncRE<{}, E, A>): Promise<ex.Exit<E, A>>; | ||
export declare const chainErrorTap: <S, R, E1, E2, A>( | ||
f: (e: E1) => Effect<S, R, E2, unknown> | ||
) => (io: Effect<S, R, E1, A>) => Effect<S, R, E1 | E2, A>; | ||
export interface EffectMonad | ||
@@ -894,2 +897,6 @@ extends Monad4E<URI>, | ||
): Effect<S1 | S2, R & R2, E | E2, A>; | ||
chainErrorTap<S1, S2, R, E1, R2, E2, A>( | ||
io: Effect<S1, R, E1, A>, | ||
f: F.FunctionN<[E1], Effect<S2, R2, E2, unknown>> | ||
): Effect<S1 | S2, R & R2, E1 | E2, A>; | ||
mapError: EffectMonad["mapLeft"]; | ||
@@ -1197,26 +1204,2 @@ onInterrupted<S1, S2, R, E, A, R2, E2>( | ||
) => (ta: Op.Option<A>) => Effect<S, R, E, Op.Option<B>>; | ||
export declare const parSequenceOption: <S, R, E, A>( | ||
ta: Op.Option<Effect<S, R, E, A>> | ||
) => Effect<unknown, R, E, Op.Option<A>>; | ||
export declare const parFastSequenceOption: <S, R, E, A>( | ||
ta: Op.Option<Effect<S, R, E, A>> | ||
) => Effect<unknown, R, E, Op.Option<A>>; | ||
export declare const parTraverseOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, B> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const parFastTraverseOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, B> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const parWiltOption: <A, S, R, E, B, C>( | ||
f: (a: A) => Effect<S, R, E, Ei.Either<B, C>> | ||
) => (wa: Op.Option<A>) => Effect<unknown, R, E, Separated<Op.Option<B>, Op.Option<C>>>; | ||
export declare const parFastWiltOption: <A, S, R, E, B, C>( | ||
f: (a: A) => Effect<S, R, E, Ei.Either<B, C>> | ||
) => (wa: Op.Option<A>) => Effect<unknown, R, E, Separated<Op.Option<B>, Op.Option<C>>>; | ||
export declare const parWitherOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, Op.Option<B>> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const parFastWitherOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, Op.Option<B>> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const sequenceEither: <TE, S, R, FE, A>( | ||
@@ -1228,14 +1211,2 @@ ta: Ei.Either<TE, Effect<S, R, FE, A>> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Effect<S, R, FE, Ei.Either<TE, B>>; | ||
export declare const parSequenceEither: <TE, S, R, FE, A>( | ||
ta: Ei.Either<TE, Effect<S, R, FE, A>> | ||
) => Effect<unknown, R, FE, Ei.Either<TE, A>>; | ||
export declare const parFastSequenceEither: <TE, S, R, FE, A>( | ||
ta: Ei.Either<TE, Effect<S, R, FE, A>> | ||
) => Effect<unknown, R, FE, Ei.Either<TE, A>>; | ||
export declare const parTraverseEither: <A, S, R, FE, B>( | ||
f: (a: A) => Effect<S, R, FE, B> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Effect<unknown, R, FE, Ei.Either<TE, B>>; | ||
export declare const parFastTraverseEither: <A, S, R, FE, B>( | ||
f: (a: A) => Effect<S, R, FE, B> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Effect<unknown, R, FE, Ei.Either<TE, B>>; | ||
export declare const sequenceTree: <S, R, E, A>( | ||
@@ -1242,0 +1213,0 @@ ta: TR.Tree<Effect<S, R, E, A>> |
@@ -636,3 +636,3 @@ import { either as Ei, function as F, option as Op, array as Ar, tree as TR, record as RE } from "fp-ts"; | ||
...(exit.others ? exit.others : []), | ||
...Ar.flatten(finalize.value.map((x) => [x.error, ...(x.others ? x.others : [])])) | ||
...Ar.flatten(finalize.value.map((x) => x._tag === "Interrupt" ? [x.error, ...(x.others ? x.others : [])] : [])) | ||
], Ar.filter((x) => x !== undefined)); | ||
@@ -644,4 +644,3 @@ return errors.length > 0 | ||
else { | ||
console.warn("BUG: interrupt finalizer should not fail"); | ||
return completed(exit); | ||
throw new Error("BUG: interrupt finalizer should not fail"); | ||
} | ||
@@ -822,3 +821,3 @@ }) | ||
function interruptLoser(exit, loser) { | ||
return applySecond(loser.interrupt, completed(exit)); | ||
return chain_(loser.interrupt, (x) => x._tag === "Interrupt" && x.error ? completed(x) : completed(exit)); | ||
} | ||
@@ -834,3 +833,3 @@ /** | ||
function fallbackToLoser(exit, loser) { | ||
return exit._tag === "Done" ? applySecond(loser.interrupt, completed(exit)) : loser.join; | ||
return exit._tag === "Done" ? interruptLoser(exit, loser) : loser.join; | ||
} | ||
@@ -869,7 +868,7 @@ /** | ||
? zipWith_(completed(aExit), bFiber.join, f) | ||
: chain_(bFiber.interrupt, () => completed(aExit))), (bExit, aFiber) => bExit._tag === "Done" | ||
: chain_(bFiber.interrupt, (x) => x._tag === "Interrupt" && x.error ? completed(x) : completed(aExit))), (bExit, aFiber) => bExit._tag === "Done" | ||
? zipWith_(aFiber.join, completed(bExit), f) | ||
: chain_(aFiber.isComplete, (isCompleted) => isCompleted | ||
? zipWith_(aFiber.join, completed(bExit), f) | ||
: chain_(aFiber.interrupt, () => completed(bExit)))); | ||
: chain_(aFiber.interrupt, (x) => x._tag === "Interrupt" && x.error ? completed(x) : completed(bExit)))); | ||
} | ||
@@ -1027,3 +1026,8 @@ /** | ||
driver.start(io); | ||
return () => driver.interrupt(); | ||
return (cb) => { | ||
driver.interrupt(); | ||
if (cb) { | ||
driver.onExit(cb); | ||
} | ||
}; | ||
} | ||
@@ -1092,2 +1096,4 @@ /** | ||
} | ||
const chainErrorTap_ = (io, f) => chainError_(io, (e) => chain_(f(e), () => raiseError(e))); | ||
export const chainErrorTap = (f) => (io) => chainErrorTap_(io, f); | ||
const foldExit_ = (inner, failure, success) => new ICollapse(inner, failure, success); | ||
@@ -1112,2 +1118,3 @@ const mapLeft_ = (io, f) => chainError_(io, F.flow(f, raiseError)); | ||
chainTap: chainTap_, | ||
chainErrorTap: chainErrorTap_, | ||
alt: alt_, | ||
@@ -1253,16 +1260,4 @@ onInterrupted: onInterrupted_, | ||
export const witherOption = (f) => (ta) => Op.option.wither(effect)(ta, f); | ||
export const parSequenceOption = Op.option.sequence(parEffect); | ||
export const parFastSequenceOption = Op.option.sequence(parFastEffect); | ||
export const parTraverseOption = (f) => (ta) => Op.option.traverse(parEffect)(ta, f); | ||
export const parFastTraverseOption = (f) => (ta) => Op.option.traverse(parFastEffect)(ta, f); | ||
export const parWiltOption = (f) => (wa) => Op.option.wilt(parEffect)(wa, f); | ||
export const parFastWiltOption = (f) => (wa) => Op.option.wilt(parFastEffect)(wa, f); | ||
export const parWitherOption = (f) => (ta) => Op.option.wither(parEffect)(ta, f); | ||
export const parFastWitherOption = (f) => (ta) => Op.option.wither(parFastEffect)(ta, f); | ||
export const sequenceEither = Ei.either.sequence(effect); | ||
export const traverseEither = (f) => (ta) => Ei.either.traverse(effect)(ta, f); | ||
export const parSequenceEither = Ei.either.sequence(parEffect); | ||
export const parFastSequenceEither = Ei.either.sequence(parFastEffect); | ||
export const parTraverseEither = (f) => (ta) => Ei.either.traverse(parEffect)(ta, f); | ||
export const parFastTraverseEither = (f) => (ta) => Ei.either.traverse(parFastEffect)(ta, f); | ||
export const sequenceTree = TR.tree.sequence(effect); | ||
@@ -1269,0 +1264,0 @@ export const traverseTree = (f) => (ta) => TR.tree.traverse(effect)(ta, f); |
@@ -364,14 +364,2 @@ import { function as F, semigroup as Sem, monoid as Mon } from "fp-ts"; | ||
) => (ta: Op.Option<A>) => Managed<S, R, E, Op.Option<B>>; | ||
export declare const parSequenceOption: <S, R, E, A>( | ||
ta: Op.Option<Managed<S, R, E, A>> | ||
) => Managed<unknown, R, E, Op.Option<A>>; | ||
export declare const parTraverseOption: <S, A, R, E, B>( | ||
f: (a: A) => Managed<S, R, E, B> | ||
) => (ta: Op.Option<A>) => Managed<unknown, R, E, Op.Option<B>>; | ||
export declare const parWiltOption: <S, A, R, E, B, C>( | ||
f: (a: A) => Managed<S, R, E, Ei.Either<B, C>> | ||
) => (wa: Op.Option<A>) => Managed<unknown, R, E, Separated<Op.Option<B>, Op.Option<C>>>; | ||
export declare const parWitherOption: <S, A, R, E, B>( | ||
f: (a: A) => Managed<S, R, E, Op.Option<B>> | ||
) => (ta: Op.Option<A>) => Managed<unknown, R, E, Op.Option<B>>; | ||
export declare const sequenceEither: <TE, S, R, FE, A>( | ||
@@ -389,8 +377,2 @@ ta: Ei.Either<TE, Managed<S, R, FE, A>> | ||
) => (ta: TR.Tree<A>) => Managed<S, R, E, TR.Tree<B>>; | ||
export declare const parSequenceEither: <TE, S, R, FE, A>( | ||
ta: Ei.Either<TE, Managed<S, R, FE, A>> | ||
) => Managed<unknown, R, FE, Ei.Either<TE, A>>; | ||
export declare const parTraverseEither: <S, A, R, FE, B>( | ||
f: (a: A) => Managed<S, R, FE, B> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Managed<unknown, R, FE, Ei.Either<TE, B>>; | ||
export declare const parSequenceTree: <S, R, E, A>( | ||
@@ -397,0 +379,0 @@ ta: TR.Tree<Managed<S, R, E, A>> |
@@ -325,6 +325,2 @@ import { function as F } from "fp-ts"; | ||
export const witherOption = (f) => (ta) => Op.option.wither(managed)(ta, f); | ||
export const parSequenceOption = Op.option.sequence(parManaged); | ||
export const parTraverseOption = (f) => (ta) => Op.option.traverse(parManaged)(ta, f); | ||
export const parWiltOption = (f) => (wa) => Op.option.wilt(parManaged)(wa, f); | ||
export const parWitherOption = (f) => (ta) => Op.option.wither(parManaged)(ta, f); | ||
export const sequenceEither = Ei.either.sequence(managed); | ||
@@ -334,4 +330,2 @@ export const traverseEither = (f) => (ta) => Ei.either.traverse(managed)(ta, f); | ||
export const traverseTree = (f) => (ta) => TR.tree.traverse(managed)(ta, f); | ||
export const parSequenceEither = Ei.either.sequence(parManaged); | ||
export const parTraverseEither = (f) => (ta) => Ei.either.traverse(parManaged)(ta, f); | ||
export const parSequenceTree = TR.tree.sequence(managed); | ||
@@ -338,0 +332,0 @@ export const parTraverseTree = (f) => (ta) => TR.tree.traverse(parManaged)(ta, f); |
@@ -8,2 +8,5 @@ import { Kind, URIS } from "fp-ts/es6/HKT"; | ||
} | ||
export declare function coalgebra<F extends URIS, A>(): <S, R, E>( | ||
f: (_: A) => EF.Effect<S, R, E, Kind<F, A>> | ||
) => Coalgebra<F, S, R, E, A>; | ||
export declare function ana<S, R, E, F extends URIS>( | ||
@@ -10,0 +13,0 @@ F: FunctorM<F, S, R, E> |
import * as EF from "../effect"; | ||
export function coalgebra() { | ||
return (f) => f; | ||
} | ||
export function ana(F) { | ||
return (coalg) => (a) => EF.effect.map(EF.effect.chain(coalg(a), (x) => EF.suspended(() => F(x, (y) => ana(F)(coalg)(y)))), (unfix) => ({ unfix })); | ||
} |
@@ -8,2 +8,5 @@ import { Kind, URIS } from "fp-ts/es6/HKT"; | ||
} | ||
export declare function algebra<F extends URIS, A>(): <S, R, E>( | ||
f: (_: Kind<F, A>) => EF.Effect<S, R, E, A> | ||
) => Algebra<F, S, R, E, A>; | ||
export declare function cata<S, R, E, F extends URIS>( | ||
@@ -10,0 +13,0 @@ F: FunctorM<F, S, R, E> |
import * as EF from "../effect"; | ||
export function algebra() { | ||
return (f) => f; | ||
} | ||
export function cata(F) { | ||
return (alg) => (_) => EF.effect.chain(EF.suspended(() => F(_.unfix, cata(F)(alg))), alg); | ||
} |
@@ -6,1 +6,4 @@ import { Kind, URIS } from "fp-ts/es6/HKT"; | ||
} | ||
export declare function functorM<URI extends URIS, S = never, R = unknown, E = never>(): ( | ||
f: FunctorM<URI, S, R, E> | ||
) => FunctorM<URI, S, R, E>; |
@@ -5,5 +5,5 @@ /** | ||
export { fix, Fix } from "./Fix"; | ||
export { cata, Algebra } from "./cata"; | ||
export { ana, Coalgebra } from "./ana"; | ||
export { FunctorM } from "./functor"; | ||
export { cata, Algebra, algebra } from "./cata"; | ||
export { ana, Coalgebra, coalgebra } from "./ana"; | ||
export { FunctorM, functorM } from "./functor"; | ||
export { hylo } from "./hylo"; |
@@ -5,4 +5,5 @@ /** | ||
export { fix } from "./Fix"; | ||
export { cata } from "./cata"; | ||
export { ana } from "./ana"; | ||
export { cata, algebra } from "./cata"; | ||
export { ana, coalgebra } from "./ana"; | ||
export { functorM } from "./functor"; | ||
export { hylo } from "./hylo"; |
@@ -30,3 +30,6 @@ /* | ||
] | ||
: [T.unit, E.left(q.push([needed - n, latch]))])), (ready) => [T.unit, E.right(ready + n)])))))); | ||
: [ | ||
T.unit, | ||
E.left(q.push([needed - n, latch])) | ||
])), (ready) => [T.unit, E.right(ready + n)])))))); | ||
const cancelWait = (n, latch) => T.uninterruptible(T.flatten(ref.modify((current) => P.pipe(current, E.fold((waiting) => P.pipe(waiting.find(isReservationFor(latch)), O.fold(() => [releaseN(n), E.left(waiting)], ([pending]) => [ | ||
@@ -33,0 +36,0 @@ releaseN(n - pending), |
@@ -512,3 +512,3 @@ import { | ||
ioa: Effect<S, R, E, A>, | ||
finalizer: Effect<S2, R2, E2, ex.Interrupt[]> | ||
finalizer: Effect<S2, R2, E2, ex.Exit<any, any>[]> | ||
): Effect<S | S2, R & R2, E | E2, A>; | ||
@@ -590,3 +590,3 @@ /** | ||
*/ | ||
readonly interrupt: Async<ex.Interrupt>; | ||
readonly interrupt: Async<ex.Exit<E, A>>; | ||
/** | ||
@@ -616,3 +616,3 @@ * Await the result of this fiber | ||
wait: Async<ex.Exit<E, A>>; | ||
interrupt: Effect<unknown, unknown, never, ex.Interrupt>; | ||
interrupt: Effect<unknown, unknown, never, ex.Exit<E, A>>; | ||
join: Effect<unknown, unknown, E, A>; | ||
@@ -653,8 +653,8 @@ result: Effect<never, unknown, E, Op.Option<A>>; | ||
*/ | ||
export declare function raceFold<S, S2, S3, S4, R, R2, R3, R4, E1, E2, E3, A, B, C>( | ||
export declare function raceFold<S, S2, S3, S4, R, R2, R3, R4, E1, E2, E3, A, B, C, D>( | ||
first: Effect<S, R, E1, A>, | ||
second: Effect<S2, R2, E2, B>, | ||
onFirstWon: F.FunctionN<[ex.Exit<E1, A>, Fiber<E2, B>], Effect<S3, R3, E3, C>>, | ||
onSecondWon: F.FunctionN<[ex.Exit<E2, B>, Fiber<E1, A>], Effect<S4, R4, E3, C>> | ||
): AsyncRE<R & R2 & R3 & R4, E3, C>; | ||
onSecondWon: F.FunctionN<[ex.Exit<E2, B>, Fiber<E1, A>], Effect<S4, R4, E3, D>> | ||
): AsyncRE<R & R2 & R3 & R4, E3, C | D>; | ||
/** | ||
@@ -667,8 +667,8 @@ * Execute an IO and produce the next IO to run based on whether it completed successfully in the alotted time or not | ||
*/ | ||
export declare function timeoutFold<S, S1, S2, R, R2, R3, E1, E2, A, B>( | ||
export declare function timeoutFold<S, S1, S2, R, R2, R3, E1, E2, A, B, C>( | ||
source: Effect<S, R, E1, A>, | ||
ms: number, | ||
onTimeout: F.FunctionN<[Fiber<E1, A>], Effect<S1, R2, E2, B>>, | ||
onCompleted: F.FunctionN<[ex.Exit<E1, A>], Effect<S2, R3, E2, B>> | ||
): AsyncRE<R & R2 & R3, E2, B>; | ||
onCompleted: F.FunctionN<[ex.Exit<E1, A>], Effect<S2, R3, E2, C>> | ||
): AsyncRE<R & R2 & R3, E2, B | C>; | ||
/** | ||
@@ -847,3 +847,3 @@ * Return the reuslt of the first IO to complete or error successfully | ||
callback?: F.FunctionN<[ex.Exit<E, A>], void> | ||
): F.Lazy<void>; | ||
): (cb?: (exit: ex.Exit<E, A>) => void) => void; | ||
/** | ||
@@ -874,2 +874,5 @@ * Run the given IO syncroniously | ||
export declare function runToPromiseExit<E, A>(io: AsyncRE<{}, E, A>): Promise<ex.Exit<E, A>>; | ||
export declare const chainErrorTap: <S, R, E1, E2, A>( | ||
f: (e: E1) => Effect<S, R, E2, unknown> | ||
) => (io: Effect<S, R, E1, A>) => Effect<S, R, E1 | E2, A>; | ||
export interface EffectMonad | ||
@@ -894,2 +897,6 @@ extends Monad4E<URI>, | ||
): Effect<S1 | S2, R & R2, E | E2, A>; | ||
chainErrorTap<S1, S2, R, E1, R2, E2, A>( | ||
io: Effect<S1, R, E1, A>, | ||
f: F.FunctionN<[E1], Effect<S2, R2, E2, unknown>> | ||
): Effect<S1 | S2, R & R2, E1 | E2, A>; | ||
mapError: EffectMonad["mapLeft"]; | ||
@@ -1197,26 +1204,2 @@ onInterrupted<S1, S2, R, E, A, R2, E2>( | ||
) => (ta: Op.Option<A>) => Effect<S, R, E, Op.Option<B>>; | ||
export declare const parSequenceOption: <S, R, E, A>( | ||
ta: Op.Option<Effect<S, R, E, A>> | ||
) => Effect<unknown, R, E, Op.Option<A>>; | ||
export declare const parFastSequenceOption: <S, R, E, A>( | ||
ta: Op.Option<Effect<S, R, E, A>> | ||
) => Effect<unknown, R, E, Op.Option<A>>; | ||
export declare const parTraverseOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, B> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const parFastTraverseOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, B> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const parWiltOption: <A, S, R, E, B, C>( | ||
f: (a: A) => Effect<S, R, E, Ei.Either<B, C>> | ||
) => (wa: Op.Option<A>) => Effect<unknown, R, E, Separated<Op.Option<B>, Op.Option<C>>>; | ||
export declare const parFastWiltOption: <A, S, R, E, B, C>( | ||
f: (a: A) => Effect<S, R, E, Ei.Either<B, C>> | ||
) => (wa: Op.Option<A>) => Effect<unknown, R, E, Separated<Op.Option<B>, Op.Option<C>>>; | ||
export declare const parWitherOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, Op.Option<B>> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const parFastWitherOption: <A, S, R, E, B>( | ||
f: (a: A) => Effect<S, R, E, Op.Option<B>> | ||
) => (ta: Op.Option<A>) => Effect<unknown, R, E, Op.Option<B>>; | ||
export declare const sequenceEither: <TE, S, R, FE, A>( | ||
@@ -1228,14 +1211,2 @@ ta: Ei.Either<TE, Effect<S, R, FE, A>> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Effect<S, R, FE, Ei.Either<TE, B>>; | ||
export declare const parSequenceEither: <TE, S, R, FE, A>( | ||
ta: Ei.Either<TE, Effect<S, R, FE, A>> | ||
) => Effect<unknown, R, FE, Ei.Either<TE, A>>; | ||
export declare const parFastSequenceEither: <TE, S, R, FE, A>( | ||
ta: Ei.Either<TE, Effect<S, R, FE, A>> | ||
) => Effect<unknown, R, FE, Ei.Either<TE, A>>; | ||
export declare const parTraverseEither: <A, S, R, FE, B>( | ||
f: (a: A) => Effect<S, R, FE, B> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Effect<unknown, R, FE, Ei.Either<TE, B>>; | ||
export declare const parFastTraverseEither: <A, S, R, FE, B>( | ||
f: (a: A) => Effect<S, R, FE, B> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Effect<unknown, R, FE, Ei.Either<TE, B>>; | ||
export declare const sequenceTree: <S, R, E, A>( | ||
@@ -1242,0 +1213,0 @@ ta: TR.Tree<Effect<S, R, E, A>> |
@@ -782,3 +782,5 @@ "use strict"; | ||
exit.error | ||
], (exit.others ? exit.others : []), fp_ts_1.array.flatten(finalize.value.map(function (x) { return __spreadArrays([x.error], (x.others ? x.others : [])); }))), fp_ts_1.array.filter(function (x) { return x !== undefined; })); | ||
], (exit.others ? exit.others : []), fp_ts_1.array.flatten(finalize.value.map(function (x) { | ||
return x._tag === "Interrupt" ? __spreadArrays([x.error], (x.others ? x.others : [])) : []; | ||
}))), fp_ts_1.array.filter(function (x) { return x !== undefined; })); | ||
return errors.length > 0 | ||
@@ -789,4 +791,3 @@ ? completed(ex.interruptWithErrorAndOthers(errors[0], fp_ts_1.array.dropLeft(1)(errors))) | ||
else { | ||
console.warn("BUG: interrupt finalizer should not fail"); | ||
return completed(exit); | ||
throw new Error("BUG: interrupt finalizer should not fail"); | ||
} | ||
@@ -1007,3 +1008,5 @@ }) | ||
function interruptLoser(exit, loser) { | ||
return applySecond(loser.interrupt, completed(exit)); | ||
return chain_(loser.interrupt, function (x) { | ||
return x._tag === "Interrupt" && x.error ? completed(x) : completed(exit); | ||
}); | ||
} | ||
@@ -1020,3 +1023,3 @@ /** | ||
function fallbackToLoser(exit, loser) { | ||
return exit._tag === "Done" ? applySecond(loser.interrupt, completed(exit)) : loser.join; | ||
return exit._tag === "Done" ? interruptLoser(exit, loser) : loser.join; | ||
} | ||
@@ -1059,3 +1062,5 @@ /** | ||
? zipWith_(completed(aExit), bFiber.join, f) | ||
: chain_(bFiber.interrupt, function () { return completed(aExit); }); | ||
: chain_(bFiber.interrupt, function (x) { | ||
return x._tag === "Interrupt" && x.error ? completed(x) : completed(aExit); | ||
}); | ||
}); | ||
@@ -1068,3 +1073,5 @@ }, function (bExit, aFiber) { | ||
? zipWith_(aFiber.join, completed(bExit), f) | ||
: chain_(aFiber.interrupt, function () { return completed(bExit); }); | ||
: chain_(aFiber.interrupt, function (x) { | ||
return x._tag === "Interrupt" && x.error ? completed(x) : completed(bExit); | ||
}); | ||
}); | ||
@@ -1241,3 +1248,8 @@ }); | ||
driver.start(io); | ||
return function () { return driver.interrupt(); }; | ||
return function (cb) { | ||
driver.interrupt(); | ||
if (cb) { | ||
driver.onExit(cb); | ||
} | ||
}; | ||
} | ||
@@ -1313,2 +1325,4 @@ exports.run = run; | ||
} | ||
var chainErrorTap_ = function (io, f) { return chainError_(io, function (e) { return chain_(f(e), function () { return raiseError(e); }); }); }; | ||
exports.chainErrorTap = function (f) { return function (io) { return chainErrorTap_(io, f); }; }; | ||
var foldExit_ = function (inner, failure, success) { | ||
@@ -1336,2 +1350,3 @@ return new ICollapse(inner, failure, success); | ||
chainTap: chainTap_, | ||
chainErrorTap: chainErrorTap_, | ||
alt: alt_, | ||
@@ -1523,18 +1538,2 @@ onInterrupted: onInterrupted_, | ||
}; }; | ||
exports.parSequenceOption = fp_ts_1.option.option.sequence(exports.parEffect); | ||
exports.parFastSequenceOption = fp_ts_1.option.option.sequence(exports.parFastEffect); | ||
exports.parTraverseOption = function (f) { return function (ta) { | ||
return fp_ts_1.option.option.traverse(exports.parEffect)(ta, f); | ||
}; }; | ||
exports.parFastTraverseOption = function (f) { return function (ta) { | ||
return fp_ts_1.option.option.traverse(exports.parFastEffect)(ta, f); | ||
}; }; | ||
exports.parWiltOption = function (f) { return function (wa) { return fp_ts_1.option.option.wilt(exports.parEffect)(wa, f); }; }; | ||
exports.parFastWiltOption = function (f) { return function (wa) { return fp_ts_1.option.option.wilt(exports.parFastEffect)(wa, f); }; }; | ||
exports.parWitherOption = function (f) { return function (ta) { | ||
return fp_ts_1.option.option.wither(exports.parEffect)(ta, f); | ||
}; }; | ||
exports.parFastWitherOption = function (f) { return function (ta) { | ||
return fp_ts_1.option.option.wither(exports.parFastEffect)(ta, f); | ||
}; }; | ||
exports.sequenceEither = fp_ts_1.either.either.sequence(exports.effect); | ||
@@ -1544,10 +1543,2 @@ exports.traverseEither = function (f) { return function (ta) { | ||
}; }; | ||
exports.parSequenceEither = fp_ts_1.either.either.sequence(exports.parEffect); | ||
exports.parFastSequenceEither = fp_ts_1.either.either.sequence(exports.parFastEffect); | ||
exports.parTraverseEither = function (f) { return function (ta) { | ||
return fp_ts_1.either.either.traverse(exports.parEffect)(ta, f); | ||
}; }; | ||
exports.parFastTraverseEither = function (f) { return function (ta) { | ||
return fp_ts_1.either.either.traverse(exports.parFastEffect)(ta, f); | ||
}; }; | ||
exports.sequenceTree = fp_ts_1.tree.tree.sequence(exports.effect); | ||
@@ -1554,0 +1545,0 @@ exports.traverseTree = function (f) { return function (ta) { |
@@ -364,14 +364,2 @@ import { function as F, semigroup as Sem, monoid as Mon } from "fp-ts"; | ||
) => (ta: Op.Option<A>) => Managed<S, R, E, Op.Option<B>>; | ||
export declare const parSequenceOption: <S, R, E, A>( | ||
ta: Op.Option<Managed<S, R, E, A>> | ||
) => Managed<unknown, R, E, Op.Option<A>>; | ||
export declare const parTraverseOption: <S, A, R, E, B>( | ||
f: (a: A) => Managed<S, R, E, B> | ||
) => (ta: Op.Option<A>) => Managed<unknown, R, E, Op.Option<B>>; | ||
export declare const parWiltOption: <S, A, R, E, B, C>( | ||
f: (a: A) => Managed<S, R, E, Ei.Either<B, C>> | ||
) => (wa: Op.Option<A>) => Managed<unknown, R, E, Separated<Op.Option<B>, Op.Option<C>>>; | ||
export declare const parWitherOption: <S, A, R, E, B>( | ||
f: (a: A) => Managed<S, R, E, Op.Option<B>> | ||
) => (ta: Op.Option<A>) => Managed<unknown, R, E, Op.Option<B>>; | ||
export declare const sequenceEither: <TE, S, R, FE, A>( | ||
@@ -389,8 +377,2 @@ ta: Ei.Either<TE, Managed<S, R, FE, A>> | ||
) => (ta: TR.Tree<A>) => Managed<S, R, E, TR.Tree<B>>; | ||
export declare const parSequenceEither: <TE, S, R, FE, A>( | ||
ta: Ei.Either<TE, Managed<S, R, FE, A>> | ||
) => Managed<unknown, R, FE, Ei.Either<TE, A>>; | ||
export declare const parTraverseEither: <S, A, R, FE, B>( | ||
f: (a: A) => Managed<S, R, FE, B> | ||
) => <TE>(ta: Ei.Either<TE, A>) => Managed<unknown, R, FE, Ei.Either<TE, B>>; | ||
export declare const parSequenceTree: <S, R, E, A>( | ||
@@ -397,0 +379,0 @@ ta: TR.Tree<Managed<S, R, E, A>> |
@@ -399,10 +399,2 @@ "use strict"; | ||
}; }; | ||
exports.parSequenceOption = Op.option.sequence(exports.parManaged); | ||
exports.parTraverseOption = function (f) { return function (ta) { | ||
return Op.option.traverse(exports.parManaged)(ta, f); | ||
}; }; | ||
exports.parWiltOption = function (f) { return function (wa) { return Op.option.wilt(exports.parManaged)(wa, f); }; }; | ||
exports.parWitherOption = function (f) { return function (ta) { | ||
return Op.option.wither(exports.parManaged)(ta, f); | ||
}; }; | ||
exports.sequenceEither = Ei.either.sequence(exports.managed); | ||
@@ -416,6 +408,2 @@ exports.traverseEither = function (f) { return function (ta) { | ||
}; }; | ||
exports.parSequenceEither = Ei.either.sequence(exports.parManaged); | ||
exports.parTraverseEither = function (f) { return function (ta) { | ||
return Ei.either.traverse(exports.parManaged)(ta, f); | ||
}; }; | ||
exports.parSequenceTree = TR.tree.sequence(exports.managed); | ||
@@ -422,0 +410,0 @@ exports.parTraverseTree = function (f) { return function (ta) { |
@@ -8,2 +8,5 @@ import { Kind, URIS } from "fp-ts/lib/HKT"; | ||
} | ||
export declare function coalgebra<F extends URIS, A>(): <S, R, E>( | ||
f: (_: A) => EF.Effect<S, R, E, Kind<F, A>> | ||
) => Coalgebra<F, S, R, E, A>; | ||
export declare function ana<S, R, E, F extends URIS>( | ||
@@ -10,0 +13,0 @@ F: FunctorM<F, S, R, E> |
@@ -11,2 +11,6 @@ "use strict"; | ||
var EF = __importStar(require("../effect")); | ||
function coalgebra() { | ||
return function (f) { return f; }; | ||
} | ||
exports.coalgebra = coalgebra; | ||
function ana(F) { | ||
@@ -13,0 +17,0 @@ return function (coalg) { return function (a) { |
@@ -8,2 +8,5 @@ import { Kind, URIS } from "fp-ts/lib/HKT"; | ||
} | ||
export declare function algebra<F extends URIS, A>(): <S, R, E>( | ||
f: (_: Kind<F, A>) => EF.Effect<S, R, E, A> | ||
) => Algebra<F, S, R, E, A>; | ||
export declare function cata<S, R, E, F extends URIS>( | ||
@@ -10,0 +13,0 @@ F: FunctorM<F, S, R, E> |
@@ -11,2 +11,6 @@ "use strict"; | ||
var EF = __importStar(require("../effect")); | ||
function algebra() { | ||
return function (f) { return f; }; | ||
} | ||
exports.algebra = algebra; | ||
function cata(F) { | ||
@@ -13,0 +17,0 @@ return function (alg) { return function (_) { |
@@ -6,1 +6,4 @@ import { Kind, URIS } from "fp-ts/lib/HKT"; | ||
} | ||
export declare function functorM<URI extends URIS, S = never, R = unknown, E = never>(): ( | ||
f: FunctorM<URI, S, R, E> | ||
) => FunctorM<URI, S, R, E>; |
"use strict"; | ||
exports.__esModule = true; | ||
function functorM() { | ||
return function (f) { return f; }; | ||
} | ||
exports.functorM = functorM; |
@@ -5,5 +5,5 @@ /** | ||
export { fix, Fix } from "./Fix"; | ||
export { cata, Algebra } from "./cata"; | ||
export { ana, Coalgebra } from "./ana"; | ||
export { FunctorM } from "./functor"; | ||
export { cata, Algebra, algebra } from "./cata"; | ||
export { ana, Coalgebra, coalgebra } from "./ana"; | ||
export { FunctorM, functorM } from "./functor"; | ||
export { hylo } from "./hylo"; |
@@ -10,5 +10,9 @@ "use strict"; | ||
exports.cata = cata_1.cata; | ||
exports.algebra = cata_1.algebra; | ||
var ana_1 = require("./ana"); | ||
exports.ana = ana_1.ana; | ||
exports.coalgebra = ana_1.coalgebra; | ||
var functor_1 = require("./functor"); | ||
exports.functorM = functor_1.functorM; | ||
var hylo_1 = require("./hylo"); | ||
exports.hylo = hylo_1.hylo; |
@@ -44,3 +44,6 @@ "use strict"; | ||
] | ||
: [T.unit, fp_ts_1.either.left(q.push([needed - n, latch]))]; | ||
: [ | ||
T.unit, | ||
fp_ts_1.either.left(q.push([needed - n, latch])) | ||
]; | ||
})); | ||
@@ -47,0 +50,0 @@ }, function (ready) { return [T.unit, fp_ts_1.either.right(ready + n)]; })); |
{ | ||
"name": "@matechs/effect", | ||
"version": "6.7.1", | ||
"version": "6.8.0", | ||
"license": "MIT", | ||
@@ -38,3 +38,3 @@ "private": false, | ||
}, | ||
"dependencies": { | ||
"peerDependencies": { | ||
"fp-ts": "^2.5.4", | ||
@@ -44,3 +44,3 @@ "fp-ts-contrib": "^0.1.15", | ||
}, | ||
"gitHead": "4cbc1f87fb3cc6bdd5546c77d9f8a2a9217d563b" | ||
"gitHead": "eace3f02fe39bd81cf0811b0a643474b0ce0c641" | ||
} |
723742
21042
- Removedfp-ts@^2.5.4
- Removedfp-ts-contrib@^0.1.15
- Removedretry-ts@^0.1.2