// 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( v: O.Option, __trace?: string ): IO { 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(v: O.Option, __trace?: string): IO { return O.fold_( v, () => fail(undefined, __trace), (a) => succeed(a, __trace) ) }