@platform/http
Version:
Tools for working with HTTP.
54 lines (53 loc) • 2.15 kB
JavaScript
;
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);
},
};