@k8ts/metadata
Version:
K8ts tools for working with k8ts metadata.
82 lines • 2.67 kB
JavaScript
"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