UNPKG

@modern-js/utils

Version:

A Progressive React Framework for modern web development.

80 lines (79 loc) 2.86 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.n = (module)=>{ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module; __webpack_require__.d(getter, { a: getter }); return getter; }; })(); (()=>{ __webpack_require__.d = (exports1, definition)=>{ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, get: definition[key] }); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); __webpack_require__.d(__webpack_exports__, { getPort: ()=>getPort }); const external_net_namespaceObject = require("net"); var external_net_default = /*#__PURE__*/ __webpack_require__.n(external_net_namespaceObject); const external_compiled_js_namespaceObject = require("../compiled.js"); const external_logger_js_namespaceObject = require("./logger.js"); const getPort = async (expectPort, { tryLimits = 20, strictPort = false, slient = false } = {})=>{ let port = expectPort; if ('string' == typeof port) port = parseInt(port, 10); if (strictPort) tryLimits = 1; const original = port; let found = false; let attempts = 0; while(!found && attempts <= tryLimits)try { await new Promise((resolve, reject)=>{ const server = external_net_default().createServer(); server.unref(); server.on('error', reject); server.listen({ port, host: '0.0.0.0' }, ()=>{ found = true; server.close(resolve); }); }); } catch (e) { if ('EADDRINUSE' !== e.code) throw e; port++; attempts++; } if (port !== original) { if (strictPort) throw new Error(`Port "${original}" is occupied, please choose another one.`); else if (!slient) external_logger_js_namespaceObject.logger.info(`Port ${original} is in use. ${external_compiled_js_namespaceObject.chalk.yellow(`using port ${port}.`)}`); } return port; }; exports.getPort = __webpack_exports__.getPort; for(var __rspack_i in __webpack_exports__)if (-1 === [ "getPort" ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i]; Object.defineProperty(exports, '__esModule', { value: true });