UNPKG

@typed/effects

Version:

Generator-powered Effect management

25 lines 815 B
import { Resume } from '@typed/env'; import { fail } from '../failures'; import { runEffects } from '../run/runEffects'; import { createFiber } from './createFiber'; import { FiberFailure } from './Fiber'; export const Fork = { fork: (effect, c) => { const fiber = createFiber(); function* tryRunEffect() { try { fiber.info = { state: 1 /* Returned */, value: yield* effect }; } catch (error) { fiber.info = { state: 2 /* Error */, error }; yield* fail(FiberFailure, error); } } fiber.addDisposable(runEffects(tryRunEffect(), c)); return Resume.of(fiber); }, }; export function* fork(effect) { return yield (c) => c.fork(effect, c); } //# sourceMappingURL=fork.js.map