| Linux premium331.web-hosting.com 4.18.0-553.80.1.lve.el8.x86_64 #1 SMP Wed Oct 22 19:29:36 UTC 2025 x86_64 Path : /home/livedhms/nodevenv/lmgt/22/lib/node_modules/effect/src/internal/stm/ |
| Current File : /home/livedhms/nodevenv/lmgt/22/lib/node_modules/effect/src/internal/stm/tryCommit.ts |
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
}
}