react-torch
Version:
A lib to server-side render with react.
57 lines (56 loc) • 2.39 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.choosePort = void 0;
var chalk_1 = __importDefault(require("chalk"));
var is_root_1 = __importDefault(require("is-root"));
var inquirer_1 = __importDefault(require("inquirer"));
var detect_port_1 = __importDefault(require("detect-port"));
var index_1 = require("./index");
var isInteractive = process.stdout.isTTY;
function choosePort(host, defaultPort) {
return (0, detect_port_1.default)({
port: defaultPort,
hostname: host,
}).then(function (port) {
return new Promise(function (resolve) {
if (port === defaultPort) {
return resolve(port);
}
var message = process.platform !== 'win32' && defaultPort < 1024 && !(0, is_root_1.default)()
? "Admin permissions are required to run a server on a port below 1024."
: "Something is already running on port " + defaultPort + ".";
if (isInteractive) {
(0, index_1.clear)();
var existingProcess = (0, index_1.getProcessForPort)(defaultPort);
var question = {
type: 'confirm',
name: 'shouldChangePort',
message: chalk_1.default.yellow(message +
("" + (existingProcess ? " Probably:\n " + existingProcess : ''))) + '\n\nWould you like to run the app on another port instead?',
default: true,
};
inquirer_1.default.prompt(question).then(function (answer) {
if (answer.shouldChangePort) {
resolve(port);
}
else {
resolve(null);
}
});
}
else {
console.log(chalk_1.default.red(message));
resolve(null);
}
});
}, function (err) {
throw new Error(chalk_1.default.red("Could not find an open port at " + chalk_1.default.bold(host) + ".") +
'\n' +
('Network error message: ' + (err.message || err)) +
'\n');
});
}
exports.choosePort = choosePort;