@slsplus/ui
Version:
UI Tool for Serverless Plus CLI
40 lines (39 loc) • 1.33 kB
JavaScript
;
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;