import { GeneratorFunction } from '../generator' import { call } from './call' import { Operation, Wrapper, isOfKind, isOperation, coreNamespace } from './operation' const kind = `${coreNamespace}/fork` export function fork(func: GeneratorFunction, ...args: Args): Wrapper export function fork(operation: Operation): Wrapper export function fork(arg0: Operation | GeneratorFunction, ...args: Args) { return { kind, operation: isOperation(arg0) ? arg0 : call(arg0, ...args) } } export const isFork = isOfKind(kind)