UNPKG

@szzbmy/lowcode-cli

Version:

🐇 lowcode-cli is an efficient cli tool for Rabbitpre plugin component secondary development. ❤️

43 lines (42 loc) 1.49 kB
"use strict"; 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;