UNPKG

@oxog/port-terminator

Version:

Cross-platform utility to terminate processes on ports with zero dependencies

68 lines 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validatePort = validatePort; exports.validatePorts = validatePorts; exports.validateTimeout = validateTimeout; exports.parsePortRange = parsePortRange; exports.isValidProtocol = isValidProtocol; exports.normalizeProtocol = normalizeProtocol; const errors_1 = require("../errors"); function validatePort(port) { let portNum; if (typeof port === 'string') { // Check for decimal numbers in string if (port.includes('.')) { throw new errors_1.InvalidPortError(port); } portNum = parseInt(port, 10); } else { portNum = port; } if (isNaN(portNum) || !isFinite(portNum)) { throw new errors_1.InvalidPortError(port); } if (portNum < 1 || portNum > 65535) { throw new errors_1.InvalidPortError(portNum); } return portNum; } function validatePorts(ports) { return ports.map(validatePort); } function validateTimeout(timeout) { if (timeout < 0 || !isFinite(timeout)) { throw new Error(`Invalid timeout: ${timeout}. Timeout must be a positive number`); } return timeout; } function parsePortRange(range) { const rangeParts = range.split('-'); if (rangeParts.length !== 2) { throw new Error(`Invalid port range: ${range}. Expected format: start-end`); } const start = validatePort(rangeParts[0].trim()); const end = validatePort(rangeParts[1].trim()); if (start > end) { throw new Error(`Invalid port range: ${range}. Start port must be less than or equal to end port`); } const ports = []; for (let port = start; port <= end; port++) { ports.push(port); } return ports; } function isValidProtocol(protocol) { return ['tcp', 'udp', 'both'].includes(protocol.toLowerCase()); } function normalizeProtocol(protocol) { if (protocol === undefined || protocol === null) { return 'both'; } const normalized = protocol.toLowerCase(); if (!isValidProtocol(normalized)) { throw new Error(`Invalid protocol: ${protocol}. Must be 'tcp', 'udp', or 'both'`); } return normalized; } //# sourceMappingURL=validators.js.map