@typed/effects
Version:
Generator-powered Effect management
29 lines • 1 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.fork = exports.Fork = void 0;
const env_1 = require("@typed/env");
const failures_1 = require("../failures");
const runEffects_1 = require("../run/runEffects");
const createFiber_1 = require("./createFiber");
const Fiber_1 = require("./Fiber");
exports.Fork = {
fork: (effect, c) => {
const fiber = createFiber_1.createFiber();
function* tryRunEffect() {
try {
fiber.info = { state: 1 /* Returned */, value: yield* effect };
}
catch (error) {
fiber.info = { state: 2 /* Error */, error };
yield* failures_1.fail(Fiber_1.FiberFailure, error);
}
}
fiber.addDisposable(runEffects_1.runEffects(tryRunEffect(), c));
return env_1.Resume.of(fiber);
},
};
function* fork(effect) {
return yield (c) => c.fork(effect, c);
}
exports.fork = fork;
//# sourceMappingURL=fork.js.map
;