UNPKG

react-torch

Version:

A lib to server-side render with react.

67 lines (66 loc) 2.22 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getProcessForPort = void 0; var path_1 = __importDefault(require("path")); var chalk_1 = __importDefault(require("chalk")); var child_process_1 = __importDefault(require("child_process")); var execSync = child_process_1.default.execSync; var execOptions = { encoding: 'utf8', stdio: [ 'pipe', 'pipe', 'ignore', //stderr ], }; function isProcessAReactApp(processCommand) { return /^node .*react-scripts\/scripts\/start\.js\s?$/.test(processCommand); } function getProcessIdOnPort(port) { return execSync('lsof -i:' + port + ' -P -t -sTCP:LISTEN', execOptions) .split('\n')[0] .trim(); } function getPackageNameInDirectory(directory) { var packagePath = path_1.default.join(directory.trim(), 'package.json'); try { return require(packagePath).name; } catch (e) { return null; } } function getProcessCommand(processId, processDirectory) { var command = execSync('ps -o command -p ' + processId + ' | sed -n 2p', execOptions); command = command.replace(/\n$/, ''); if (isProcessAReactApp(command)) { var packageName = getPackageNameInDirectory(processDirectory); return packageName ? packageName : command; } else { return command; } } function getDirectoryOfProcessById(processId) { return execSync('lsof -p ' + processId + ' | awk \'$4=="cwd" {for (i=9; i<=NF; i++) printf "%s ", $i}\'', execOptions).trim(); } function getProcessForPort(port) { try { var processId = getProcessIdOnPort(port); var directory = getDirectoryOfProcessById(processId); var command = getProcessCommand(processId, directory); return (chalk_1.default.cyan(command) + chalk_1.default.grey(' (pid ' + processId + ')\n') + chalk_1.default.blue(' in ') + chalk_1.default.cyan(directory)); } catch (e) { return null; } } exports.getProcessForPort = getProcessForPort;