48 lines
1.2 KiB
JavaScript
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
|