You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
const pRetry = require('p-retry'); const portfinder = require('portfinder'); const defaultPort = require('./defaultPort'); const defaultTo = require('./defaultTo'); const tryParseInt = require('./tryParseInt');
function runPortFinder() { return new Promise((resolve, reject) => { portfinder.basePort = defaultPort; portfinder.getPort((error, port) => { if (error) { return reject(error); }
return resolve(port); }); }); }
function findPort(port) { if (port) { return Promise.resolve(port); }
// Try to find unused port and listen on it for 3 times,
// if port is not specified in options.
// Because NaN == null is false, defaultTo fails if parseInt returns NaN
// so the tryParseInt function is introduced to handle NaN
const defaultPortRetry = defaultTo( tryParseInt(process.env.DEFAULT_PORT_RETRY), 3 );
return pRetry(runPortFinder, { retries: defaultPortRetry }); }
module.exports = findPort;
|