Files
ospab.host/node_modules/effect/dist/esm/internal/channel/continuation.js
2025-09-15 18:10:26 +03:00

48 lines
1.2 KiB
JavaScript

import * as Exit from "../../Exit.js";
import * as OpCodes from "../opCodes/continuation.js";
/** @internal */
export const ContinuationTypeId = /*#__PURE__*/Symbol.for("effect/ChannelContinuation");
const continuationVariance = {
/* c8 ignore next */
_Env: _ => _,
/* c8 ignore next */
_InErr: _ => _,
/* c8 ignore next */
_InElem: _ => _,
/* c8 ignore next */
_InDone: _ => _,
/* c8 ignore next */
_OutErr: _ => _,
/* c8 ignore next */
_OutDone: _ => _,
/* c8 ignore next */
_OutErr2: _ => _,
/* c8 ignore next */
_OutElem: _ => _,
/* c8 ignore next */
_OutDone2: _ => _
};
/** @internal */
export class ContinuationKImpl {
onSuccess;
onHalt;
_tag = OpCodes.OP_CONTINUATION_K;
[ContinuationTypeId] = continuationVariance;
constructor(onSuccess, onHalt) {
this.onSuccess = onSuccess;
this.onHalt = onHalt;
}
onExit(exit) {
return Exit.isFailure(exit) ? this.onHalt(exit.cause) : this.onSuccess(exit.value);
}
}
/** @internal */
export class ContinuationFinalizerImpl {
finalizer;
_tag = OpCodes.OP_CONTINUATION_FINALIZER;
[ContinuationTypeId] = continuationVariance;
constructor(finalizer) {
this.finalizer = finalizer;
}
}
//# sourceMappingURL=continuation.js.map