UNPKG

effect

Version:

The missing standard library for TypeScript, for writing production-grade software.

35 lines (29 loc) 751 B
import type * as Exit from "../../Exit.js" import type * as Journal from "./journal.js" import * as OpCodes from "./opCodes/tryCommit.js" /** @internal */ export type TryCommit<A, E = never> = Done<A, E> | Suspend /** @internal */ export interface Done<out A, out E> { readonly _tag: OpCodes.OP_DONE readonly exit: Exit.Exit<A, E> } /** @internal */ export interface Suspend { readonly _tag: OpCodes.OP_SUSPEND readonly journal: Journal.Journal } /** @internal */ export const done = <A, E>(exit: Exit.Exit<A, E>): TryCommit<A, E> => { return { _tag: OpCodes.OP_DONE, exit } } /** @internal */ export const suspend = (journal: Journal.Journal): TryCommit<never> => { return { _tag: OpCodes.OP_SUSPEND, journal } }