UNPKG

@k8ts/instruments

Version:

A collection of utilities and core components for k8ts.

35 lines 1.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parsePortSpec = parsePortSpec; const parjs_1 = require("parjs"); const combinators_1 = require("parjs/combinators"); const error_1 = require("../error"); function validatePort(port) { if (port < 0 || port > 65535) { return { kind: "Hard", message: "Port must be between 0 and 65535" }; } return true; } const pProtocol = (0, parjs_1.anyStringOf)("tcp", "udp", "TCP", "UDP").pipe((0, combinators_1.map)(s => s.toUpperCase())); const pPort = (0, parjs_1.int)().pipe((0, combinators_1.must)(validatePort)); const pProtocolPart = (0, parjs_1.string)("/").pipe((0, combinators_1.qthen)(pProtocol), (0, combinators_1.maybe)("TCP")); const pPortSpec = pPort.pipe((0, combinators_1.then)(pProtocolPart), (0, combinators_1.map)(arr => { const [port, protocol] = arr; return { port, protocol: protocol?.toUpperCase() ?? "TCP" }; })); function parsePortSpec(name, input) { const result = pPortSpec.parse(input); if (result.kind === "OK") { return result.value; } throw new error_1.PortError(name, { parseError: result.reason }); } //# sourceMappingURL=parse.js.map