| '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 |