UNPKG

dev-server-ports

Version:

Gracefully pick a port number for the dev server

3 lines (2 loc) 5.66 kB
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("child_process")),t=e(require("path")),o=e(require("readline")),n=e(require("detect-port")),s=e(require("inquirer")),i=e(require("is-root")),c=require("tslib"),a=e(require("chalk")),u=[0,1024],p=function(){function e(r,t){e.extensions=r,e.overrides=t}var r=e.prototype;return r.getMissingRootPermissionMessage=function(e){return a.redBright("Admin permissions are required to run a server on a port below "+e[1]+".")},r.getProcessInfoReport=function(e){return"\n process : "+a.cyan(e.command)+"\n pid : "+a.grey(e.pid)+"\n invoked from : "+a.blue(e.directory)},r.getPortInUseDisclaimerMessage=function(e){return a.bgRedBright(a.whiteBright("PORT IN USE"))+" "+a.white("-")+" Someone is already using the port "+a.bold(a.yellowBright(e))+"."},r.getNonePortFallbackMessage=function(e){return"\n"+a.yellowBright("If possible, free up the port or choose an avaiable one.")+"\n\nThe following "+(e.length>1?"ports are":"port is")+" available:\n\n "+a.green(e.join("\n"))+"\n\n"+this.getProcessTerminationMessage()},r.getPortFallbackConfirmation=function(){return"Would you like to run the app on another port instead?"},r.buildPortInUsePromptMessage=function(e,r,t){var o=_(e),n=o.command,s=o.directory,i=o.pid,c=t?this.getPortFallbackConfirmation():this.getNonePortFallbackMessage([r]);return this.getPortInUseDisclaimerMessage(e)+"\n "+this.getProcessInfoReport({command:n,directory:s,pid:i})+"\n \n"+c},r.getUnInteractiveTerminalError=function(){return a.red("Prompt couldn't be rendered in the current environment.")},r.getGenericPromptError=function(){return a.red("Something wen wrong when trying to render the prompt.")},r.getOpenPortUnAvailablityOnHost=function(e,r){return a.red("Could not find an open port at "+a.bold(e)+".")+"\n\n (Network error message: "+(r.message||r)+")\n }"},r.getProcessTerminationMessage=function(){return""+a.white("Press ctrl/cmd + c to exit.")},e}();function l(){return function(e,r,t){var o=t.value;t.value=function(){for(var e,t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];var i=o.apply(this,n);return null!=(e=this.constructor)&&e.overrides&&Object.prototype.hasOwnProperty.call(this.constructor.overrides,r)&&(i=this.constructor.overrides[r].apply(this,n)),i}}}function d(){return function(e,r,t){var o=t.value;t.value=function(){for(var e,t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];var i=o.apply(this,n);return null!=(e=this.constructor)&&e.extensions&&(Object.prototype.hasOwnProperty.call(this.constructor.extensions,"BEFORE_"+r)&&(i=this.constructor.extensions["BEFORE_"+r].apply(this,n)+"\n\n"+i),Object.prototype.hasOwnProperty.call(this.constructor.extensions,"AFTER_"+r)&&(i=i+"\n\n"+this.constructor.extensions["AFTER_"+r].apply(this,n))),i}}}c.__decorate([l(),d()],p.prototype,"getMissingRootPermissionMessage",null),c.__decorate([l(),d()],p.prototype,"getProcessInfoReport",null),c.__decorate([l(),d()],p.prototype,"getPortInUseDisclaimerMessage",null),c.__decorate([l(),d()],p.prototype,"getNonePortFallbackMessage",null),c.__decorate([l(),d()],p.prototype,"getPortFallbackConfirmation",null),c.__decorate([l(),d()],p.prototype,"buildPortInUsePromptMessage",null),c.__decorate([l(),d()],p.prototype,"getUnInteractiveTerminalError",null),c.__decorate([l(),d()],p.prototype,"getGenericPromptError",null),c.__decorate([l(),d()],p.prototype,"getOpenPortUnAvailablityOnHost",null),c.__decorate([l(),d()],p.prototype,"getProcessTerminationMessage",null);var g={debug:console.debug,error:console.error,info:console.log},f=process.stdout.isTTY,m={encoding:"utf8",stdio:["pipe","pipe","ignore"]},h=function(){process.stdout.write("win32"===process.platform?"":"")},y=function(e){return r.execFileSync("lsof",["-i:"+e,"-P","-t","-sTCP:LISTEN"],m).split("\n")[0].trim()},P=function(e){return r.execSync("lsof -p "+e+' | awk \'$4=="cwd" {for (i=9; i<=NF; i++) printf "%s ", $i}\'',m).trim()},v=function(e){var r=t.join(e.trim(),"package.json");try{return require(r).name}catch(e){return null}},b=function(e,t){var o=r.execSync("ps -o command -p "+e+" | sed -n 2p",m);return o=o.replace(/\n$/,""),/^node .*react-scripts\/scripts\/start\.js\s?$/.test(o)&&v(t)||o},_=function(e){try{var r=y(e),t=P(r);return{command:b(r,t),directory:t,pid:r}}catch(e){return{command:void 0,directory:void 0,pid:void 0}}},w=function(e){g.info(e),o.emitKeypressEvents(process.stdin),process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.on("keypress",(function(e){""===e&&process.exit()}))};exports.clearTerminal=h,exports.findPort=function(e,r,t,o){var c="number"==typeof e?e:parseInt(e,10),a=new p(null==o?void 0:o.extensions,null==o?void 0:o.overrides);return n({hostname:r,port:c}).then((function(e){return new Promise((function(r){if(e===c)return r(e);var o="win32"!==process.platform&&(c<u[1]||e<u[1])&&!i(),n={default:!0,message:a.buildPortInUsePromptMessage(c,e,t),name:"shouldChangePort",type:"confirm"};o?w(a.getMissingRootPermissionMessage(u)):f?(h(),!1===t?w(n.message):s.prompt([n]).then((function(t){t.shouldChangePort?r(e):process.exit()})).catch((function(e){e.isTtyError?a.getUnInteractiveTerminalError():a.getGenericPromptError()}))):w(n.message)}))}),(function(e){throw new Error(a.getOpenPortUnAvailablityOnHost(r,e))}))},exports.getDirectoryOfProcessById=P,exports.getPackageNameInDirectory=v,exports.getProcessCommand=b,exports.getProcessForPort=_,exports.getProcessIdOnPort=y; //# sourceMappingURL=dev-server-ports.cjs.production.min.js.map