@effect-ts/system
Version:
Effect-TS is a zero dependency set of libraries to write highly productive, purely functional TypeScript at scale.
35 lines (31 loc) • 864 B
text/typescript
// ets_tracing: off
import { map_ } from "../Cause/core.js"
import { foldCauseM_, halt, succeed } from "./core.js"
import type { Effect } from "./effect.js"
/**
* Returns an effect with its error channel mapped using the specified
* function. This can be used to lift a "smaller" error into a "larger"
* error.
*/
export function mapError_<R, E, E2, A>(
self: Effect<R, E, A>,
f: (e: E) => E2,
__trace?: string
) {
return foldCauseM_(
self,
(c) => halt(map_(c, f)),
(a) => succeed(a),
__trace
)
}
/**
* Returns an effect with its error channel mapped using the specified
* function. This can be used to lift a "smaller" error into a "larger"
* error.
*
* @ets_data_first mapError_
*/
export function mapError<E, E2>(f: (e: E) => E2, __trace?: string) {
return <R, A>(self: Effect<R, E, A>) => mapError_(self, f, __trace)
}