UNPKG

@slsplus/ui

Version:
40 lines (39 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const p_retry_1 = tslib_1.__importDefault(require("p-retry")); const portfinder_1 = tslib_1.__importDefault(require("portfinder")); const defaultPort = 3000; function defaultTo(value, def) { return value == null ? def : value; } function tryParseInt(input) { const output = parseInt(input, 10); if (Number.isNaN(output)) { return null; } return output; } function runPortFinder() { return new Promise((resolve, reject) => { portfinder_1.default.basePort = defaultPort; portfinder_1.default.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 p_retry_1.default(runPortFinder, { retries: defaultPortRetry }); } exports.default = findPort;