UNPKG

@k8ts/metadata

Version:

K8ts tools for working with k8ts metadata.

56 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pNameValue = exports.normalChar = void 0; exports.parseSectionKey = parseSectionKey; exports.checkValue = checkValue; exports.parseInnerKey = parseInnerKey; exports.parseOuterKey = parseOuterKey; exports.parseKey = parseOuterKey; const parjs_1 = require("parjs"); const combinators_1 = require("parjs/combinators"); const error_1 = require("../../error"); const domain_prefix_1 = require("./domain-prefix"); const metadata_key_1 = require("./metadata-key"); const cPrefix = (0, parjs_1.anyCharOf)("%^#"); const cSection = (0, parjs_1.string)("/"); exports.normalChar = (0, parjs_1.letter)().pipe((0, combinators_1.or)((0, parjs_1.digit)())).expects("alphanumeric"); const cDot = (0, parjs_1.anyCharOf)("."); const cExtra = (0, parjs_1.anyCharOf)(`-_`).pipe((0, combinators_1.or)(cDot)).expects("'-', '_', or '.'"); const cNameChar = (0, parjs_1.lower)().pipe((0, combinators_1.or)((0, parjs_1.digit)())).pipe((0, combinators_1.or)("-")); const cInterior = exports.normalChar.pipe((0, combinators_1.or)(cExtra)).expects("alphanumeric, '-', '_', or '.'"); exports.pNameValue = cNameChar.pipe((0, combinators_1.many1)(), (0, combinators_1.stringify)()); const pSpecialKey = (0, parjs_1.anyStringOf)("namespace", "name").pipe((0, combinators_1.map)(key => { throw new error_1.K8tsMetadataError(`Tried to set resource UID key '${key}' via metadata, which isn't allowed in k8ts. Modify the resource directly instead.`); })); const pCleanKey = cInterior.pipe((0, combinators_1.many1)(), (0, combinators_1.stringify)()); const pSectionKey = pCleanKey.pipe((0, combinators_1.thenq)(cSection), (0, combinators_1.map)(x => new domain_prefix_1.Metadata_Key_Domain(x))); const pInnerKey = cPrefix.pipe((0, combinators_1.then)(pCleanKey), (0, combinators_1.map)(([prefix, name]) => { return new metadata_key_1.Metadata_Key_Value(prefix, "", name); })); const pKey = cPrefix.pipe((0, combinators_1.then)(pCleanKey, cSection.pipe((0, combinators_1.qthen)(pCleanKey), (0, combinators_1.stringify)(), (0, combinators_1.maybe)())), (0, combinators_1.map)(([prefix, nameOrSection, name]) => { if (name) { return new metadata_key_1.Metadata_Key_Value(prefix, nameOrSection, name); } return new metadata_key_1.Metadata_Key_Value(prefix, "", nameOrSection); }), (0, combinators_1.or)(pSpecialKey)); const pOuterKey = pKey.pipe((0, combinators_1.or)(pSectionKey)); function parseSectionKey(key) { return pSectionKey.parse(key).value; } function checkValue(value) { return value === "" ? "" : pCleanKey.parse(value).value; } function parseInnerKey(key) { return pInnerKey.parse(key).value; } function parseOuterKey(key) { const result = pOuterKey.parse(key); if (result.kind === "OK") { return result.value; } throw new error_1.K8tsMetadataError(`Failed to parse key ${key}: ${result.toString()}`, { key, error: result.toString() }); } //# sourceMappingURL=parse-key.js.map