@k8ts/metadata
Version:
K8ts tools for working with k8ts metadata.
57 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseMetaInput = parseMetaInput;
const what_are_you_1 = require("what-are-you");
const error_1 = require("../error");
const meta_1 = require("../meta");
const domain_prefix_1 = require("./key/domain-prefix");
const parse_key_1 = require("./key/parse-key");
function parseMetaInput(input) {
if (input == null) {
return new Map();
}
if (input instanceof Map) {
return new Map(input);
}
if (Symbol.iterator in Object(input)) {
let map = new Map();
for (const item of input) {
const [key, value] = item;
map.set(key, value);
}
return map;
}
if (input instanceof meta_1.Metadata) {
return new Map(input["_dict"]);
}
let map = new Map();
for (const [key, value] of Object.entries(input)) {
const outer = (0, parse_key_1.parseOuterKey)(key);
if ((0, what_are_you_1.isNullish)(value)) {
continue;
}
if (outer instanceof domain_prefix_1.Metadata_Key_Domain) {
if (typeof value !== "object") {
throw new error_1.K8tsMetadataError(`Expected object for section key ${key}`);
}
for (const [kk, vv] of Object.entries(value)) {
if ((0, what_are_you_1.isNullish)(vv)) {
continue;
}
const inner = (0, parse_key_1.parseInnerKey)(kk);
if (typeof vv !== "string") {
throw new error_1.K8tsMetadataError(`Expected string value for inner key ${kk}`);
}
map.set(inner.domain(outer).str, vv);
}
}
else {
if (typeof value !== "string") {
throw new error_1.K8tsMetadataError(`Expected string value for key ${key}`);
}
map.set(outer.str, value);
}
}
return map;
}
//# sourceMappingURL=parse-dict.js.map