'use strict' const childProcess = require('child_process') , childModule = require.resolve('./child/index') function fork (forkModule, workerOptions) { // suppress --debug / --inspect flags while preserving others (like --harmony) let filteredArgs = process.execArgv.filter(function (v) { return !(/^--(debug|inspect)/).test(v) }) , options = Object.assign({ execArgv : filteredArgs , env : process.env , cwd : process.cwd() }, workerOptions) , child = childProcess.fork(childModule, process.argv, options) child.on('error', function() { // this *should* be picked up by onExit and the operation requeued }) child.send({ owner: 'farm', module: forkModule }) // return a send() function for this child return { send : child.send.bind(child) , child : child } } module.exports = fork