UNPKG

@k8ts/metadata

Version:

K8ts tools for working with k8ts metadata.

82 lines 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Metadata_Key_Value = void 0; const what_are_you_1 = require("what-are-you"); const error_1 = require("../../error"); const validate_1 = require("../../utils/validate"); const base_1 = require("./base"); const domain_prefix_1 = require("./domain-prefix"); class Metadata_Key_Value extends base_1.Metadata_Key_Base { _prefix; _domain; _name; type = "full"; constructor(_prefix, _domain, _name) { super(); this._prefix = _prefix; this._domain = _domain; this._name = _name; if (_domain) { (0, validate_1.checkMetaString)(`DNS prefix for ${this.str}`, _domain, 253); } (0, validate_1.checkMetaString)(`Metadata name of ${this.str}`, _name, 63); } get metaType() { switch (this._prefix) { case "": return "core"; case "%": return "label"; case "#": return "comment"; case "^": return "annotation"; default: throw new error_1.K8tsMetadataError(`Unknown prefix ${this._prefix}`); } } get suffix() { const parts = []; if (this._domain) { parts.push(this._domain); if (!this._domain.endsWith("/")) { parts.push("/"); } } parts.push(this._name); return parts.join(""); } get str() { return [this._prefix, this.suffix].join(""); } get parent() { if (!this._domain) { return null; } return new domain_prefix_1.Metadata_Key_Domain(this._domain); } prefix(prefix) { if ((0, what_are_you_1.isNullish)(prefix)) { return this._prefix; } return new Metadata_Key_Value(prefix, this._domain, this._name); } name(name) { if ((0, what_are_you_1.isNullish)(name)) { return this._name; } return new Metadata_Key_Value(this._prefix, this._domain, name); } domain(domain) { if ((0, what_are_you_1.isNullish)(domain)) { return this._domain ? new domain_prefix_1.Metadata_Key_Domain(this._domain) : null; } domain = domain instanceof domain_prefix_1.Metadata_Key_Domain ? domain.str : domain; if (this._domain) { throw new error_1.K8tsMetadataError("Already has a domain"); } return new Metadata_Key_Value(this._prefix, domain, this._name); } } exports.Metadata_Key_Value = Metadata_Key_Value; //# sourceMappingURL=metadata-key.js.map