@effect-ts/system
Version:
Effect-TS is a zero dependency set of libraries to write highly productive, purely functional TypeScript at scale.
33 lines (29 loc) • 836 B
text/typescript
// ets_tracing: off
import { NoSuchElementException } from "../GlobalExceptions/index.js"
import * as O from "../Option/index.js"
import { succeed } from "./core.js"
import type { IO } from "./effect.js"
import { fail } from "./fail.js"
/**
* Lifts an Option into an Effect, if the option is not defined it fails with NoSuchElementException.
*/
export function getOrFail<A>(
v: O.Option<A>,
__trace?: string
): IO<NoSuchElementException, A> {
return O.fold_(
v,
() => fail(new NoSuchElementException(), __trace),
(x) => succeed(x, __trace)
)
}
/**
* Lifts an Option into a IO, if the option is not defined it fails with Unit.
*/
export function getOrFailUnit<A>(v: O.Option<A>, __trace?: string): IO<void, A> {
return O.fold_(
v,
() => fail(undefined, __trace),
(a) => succeed(a, __trace)
)
}