@k8ts/instruments
Version:
A collection of utilities and core components for k8ts.
35 lines • 1.25 kB
JavaScript
;
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