@szzbmy/lowcode-cli
Version:
🐇 lowcode-cli is an efficient cli tool for Rabbitpre plugin component secondary development. ❤️
43 lines (42 loc) • 1.49 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLowCodeServer = exports.getRandomPort = void 0;
const http_1 = __importDefault(require("http"));
const url_1 = __importDefault(require("url"));
const portfinder_1 = __importDefault(require("portfinder"));
/** 获取可用的随机端口 */
async function getRandomPort() {
try {
/** 使用随机未被占用的端口 */
const port = await portfinder_1.default.getPortPromise();
return port;
}
catch (err) {
throw Error(err.message || '当前无可用的端口');
}
}
exports.getRandomPort = getRandomPort;
function createLowCodeServer(params) {
const { routers, randomPort } = params;
return new Promise((resolve, reject) => {
const server = http_1.default.createServer((req, res) => {
const urlInfo = url_1.default.parse(req.url || '', true);
const { pathname } = urlInfo;
for (const router of routers) {
if (pathname === router.path) {
router.func(req, res);
}
}
});
server.on('error', err => {
reject(err);
});
server.listen(randomPort, () => {
resolve(server);
});
});
}
exports.createLowCodeServer = createLowCodeServer;