@typed/effects
Version:
Generator-powered Effect management
25 lines • 815 B
JavaScript
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