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