UNPKG

@platform/http

Version:

Tools for working with HTTP.

54 lines (53 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Port = void 0; var tslib_1 = require("tslib"); var net = tslib_1.__importStar(require("net")); var common_1 = require("../common"); exports.Port = { unused: function (preferred) { return tslib_1.__awaiter(this, void 0, void 0, function () { var number; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: number = preferred === undefined ? exports.Port.random() : preferred; return [4, exports.Port.isUsed(number)]; case 1: if (_a.sent()) { return [2, exports.Port.unused()]; } return [2, number]; } }); }); }, isUsed: function (port, host) { return tslib_1.__awaiter(this, void 0, void 0, function () { var _this = this; return tslib_1.__generator(this, function (_a) { return [2, new Promise(function (resolve) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var server; return tslib_1.__generator(this, function (_a) { server = net.createServer(function (socket) { socket.write('echo\r\n'); socket.pipe(socket); }); server.listen(port, host); server.on('error', function (err) { return resolve(true); }); server.on('listening', function () { server.close(); resolve(false); }); return [2]; }); }); })]; }); }); }, random: function () { var MIN = 49152; var MAX = 65535; return common_1.value.random(MIN, MAX); }, };