flow like the river
This commit is contained in:
commit
013fe673f3
42435 changed files with 5764238 additions and 0 deletions
51
VISUALIZACION/node_modules/parcel-bundler/lib/workerfarm/fork.js
generated
vendored
Executable file
51
VISUALIZACION/node_modules/parcel-bundler/lib/workerfarm/fork.js
generated
vendored
Executable file
|
|
@ -0,0 +1,51 @@
|
|||
'use strict';
|
||||
|
||||
const childProcess = require('child_process');
|
||||
const childModule = parseInt(process.versions.node, 10) < 8 ? require.resolve('../../lib/workerfarm/child') : require.resolve('../../src/workerfarm/child');
|
||||
|
||||
function fork(forkModule, childId) {
|
||||
// suppress --debug / --inspect flags while preserving others (like --harmony)
|
||||
let filteredArgs = process.execArgv.filter(v => !/^--(debug|inspect)/.test(v));
|
||||
let options = {
|
||||
execArgv: filteredArgs,
|
||||
env: process.env,
|
||||
cwd: process.cwd()
|
||||
};
|
||||
let child = childProcess.fork(childModule, process.argv, options);
|
||||
|
||||
let sendQueue = [];
|
||||
let processQueue = true;
|
||||
|
||||
function send(data) {
|
||||
if (!processQueue) {
|
||||
return sendQueue.push(data);
|
||||
}
|
||||
|
||||
let result = child.send(data, error => {
|
||||
if (error && error instanceof Error) {
|
||||
// Ignore this, the workerfarm handles child errors
|
||||
return;
|
||||
}
|
||||
|
||||
processQueue = true;
|
||||
|
||||
if (sendQueue.length > 0) {
|
||||
let queueCopy = sendQueue.slice(0);
|
||||
sendQueue = [];
|
||||
queueCopy.forEach(entry => send(entry));
|
||||
}
|
||||
});
|
||||
|
||||
if (!result || /^win/.test(process.platform)) {
|
||||
// Queue is handling too much messages throttle it
|
||||
processQueue = false;
|
||||
}
|
||||
}
|
||||
|
||||
send({ module: forkModule, child: childId });
|
||||
|
||||
// return a send function for this child
|
||||
return { send, child };
|
||||
}
|
||||
|
||||
module.exports = fork;
|
||||
Loading…
Add table
Add a link
Reference in a new issue