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