Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

phantom-workers

Package Overview
Dependencies
Maintainers
2
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

phantom-workers - npm Package Compare versions

Comparing version
0.4.3
to
0.5.0
+69
lib/getRandomPort.js
var net = require('net');
var DEFAULT_MIN = 1025;
var DEFAULT_MAX = 65535;
var DEFAULT_MAX_ATTEMPTS = 50;
function getRandomPort (opts, cb) {
var min = DEFAULT_MIN;
var max = DEFAULT_MAX;
var maxAttempts = DEFAULT_MAX_ATTEMPTS;
var options = opts || {};
var host;
var port;
var server;
if (options.min != null) {
min = options.min;
}
if (options.max != null) {
max = options.max;
}
if (options.maxAttempts != null) {
maxAttempts = options.maxAttempts;
}
if (options.host != null) {
host = options.host;
}
port = getRandomNumber(min, max);
server = net.createServer();
server.listen(port, host, function () {
server.once('close', function () { cb(null, port) });
server.close();
});
server.on('error', function () {
if (--maxAttempts) {
return getRandomPort({
min: min,
max: max,
maxAttempts: maxAttempts
}, cb);
}
cb(new Error('Could not find an available port'));
});
}
function getRandomNumber (minimum, maximum) {
if (maximum === undefined) {
maximum = minimum;
minimum = 0;
}
if (typeof minimum !== 'number' || typeof maximum !== 'number') {
throw new TypeError('Expected all arguments to be numbers');
}
return Math.floor(
(Math.random() * (maximum - minimum + 1)) + minimum
);
}
module.exports = getRandomPort;
+5
-6

@@ -8,7 +8,6 @@ /*!

var events = require("events"),
util = require("util"),
_ = require("underscore"),
var events = require('events'),
util = require('util'),
find = require('lodash.find'),
numCPUs = require('os').cpus().length,
cluster = require("cluster"),
PhantomWorker = require("./phantomWorker.js");

@@ -90,3 +89,3 @@

var freePhantomInstance = _.findWhere(this._phantomInstances, {
var freePhantomInstance = find(this._phantomInstances, {
isBusy: false

@@ -151,3 +150,3 @@ });

var freePhantomInstance = _.findWhere(this._phantomInstances, {
var freePhantomInstance = find(this._phantomInstances, {
isBusy: false

@@ -154,0 +153,0 @@ });

var childProcess = require('child_process'),
cluster = require("cluster"),
cluster = require('cluster'),
http = require('http'),
netCluster = require("net-cluster"),
checkPortStatus = require("./checkPortStatus.js"),
portScanner = require('portscanner'),
checkPortStatus = require('./checkPortStatus'),
getRandomPort = require('./getRandomPort'),
objectAssign = require('object-assign');
var findFreePort = function (host, cb) {
var server = netCluster.createServer();
var port = 0;
server.on('listening', function () {
port = server.address().port;
server.close();
});
server.on('close', function () {
cb(null, port);
});
server.listen(0, host);
getRandomPort({
host: host
}, cb);
};
var findFreePortInRange = function (host, portLeftBoundary, portRightBoundary, cb) {
//in cluster we don't want ports to collide, so we make a special space for every worker assuming max number of cluster workers is 5
if (cluster.worker) {
portLeftBoundary = portLeftBoundary + (((portRightBoundary - portLeftBoundary) / 5) * (cluster.worker.id - 1));
}
portScanner.findAPortNotInUse(portLeftBoundary, portRightBoundary, host, function(error, port) {
cb(error, port);
})
getRandomPort({
min: portLeftBoundary,
max: portRightBoundary,
host: host
}, cb);
};

@@ -178,3 +165,3 @@

res.on("end", function () {
self.isBusy = false;
self.isBusy = false;
try {

@@ -185,3 +172,3 @@ var parsedResult = result ? JSON.parse(result) : null

cb(new Error('Unparsable response from the phantomjs ' + result))
}
}
});

@@ -195,3 +182,3 @@ });

req.on("error", function (e) {
req.on("error", function (e) {
// recycle phantomjs if it cannot accept connections to avoid getting it freezed in the invalid state

@@ -203,6 +190,6 @@ if (e.code === 'ECONNREFUSED' || e.code === 'ECONNRESET') {

});
}
}
self.isBusy = false;
cb(e);
cb(e);
});

@@ -209,0 +196,0 @@

{
"name": "phantom-workers",
"version": "0.4.3",
"version": "0.5.0",
"author": {

@@ -20,9 +20,7 @@ "name": "Jan Blaha",

"dependencies": {
"net-cluster": "0.0.2",
"object-assign": "4.1.1",
"portscanner": "1.0.0",
"underscore": "1.8.2"
"lodash.find": "4.6.0",
"object-assign": "4.1.1"
},
"optionalDependencies": {
"phantomjs": "1.9.15"
"phantomjs": "1.9.20"
},

@@ -29,0 +27,0 @@ "devDependencies": {