UNPKG

@k8ts/metadata

Version:

K8ts tools for working with k8ts metadata.

113 lines 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeWith = mergeWith; exports.merge = merge; exports.filterMap = filterMap; exports.mapKeys = mapKeys; exports.mapValues = mapValues; exports.toObject = toObject; exports.toJS = toJS; exports.equalsMap = equalsMap; exports.mapFromObject = mapFromObject; exports.mapToObject = mapToObject; exports.getDeepPropertyDescriptor = getDeepPropertyDescriptor; function mergeWith(map1, map2, merger) { const result = new Map(map1); const allKeys = new Set([...map1.keys(), ...map2.keys()]); for (const k of allKeys) { const val1 = map1.get(k); const val2 = map2.get(k); if (val1 !== undefined && val2 !== undefined) { result.set(k, merger(val1, val2, k)); } else if (val2 !== undefined) { result.set(k, val2); } } return result; } function merge(map1, map2) { return mergeWith(map1, map2, (_old, _new) => _new); } function filterMap(map, pred) { const out = new Map(); for (const [k, v] of map.entries()) { if (pred(v, k)) out.set(k, v); } return out; } function mapKeys(map, fn) { const out = new Map(); for (const [k, v] of map.entries()) { out.set(fn(k), v); } return out; } function mapValues(map, fn) { const out = new Map(); for (const [k, v] of map.entries()) { out.set(k, fn(v, k)); } return out; } function toObject(map) { const out = {}; for (const [k, v] of map.entries()) { const key = k?.str ?? String(k); out[key] = v; } return out; } function toJS(map) { return toObject(map); } function equalsMap(a, b) { if (a.size !== b.size) return false; for (const [ka, va] of a.entries()) { let found = false; for (const [kb, vb] of b.entries()) { const sa = ka?.str ?? ka; const sb = kb?.str ?? kb; if (sa === sb) { found = true; if (va !== vb) return false; break; } } if (!found) return false; } return true; } function mapFromObject(obj) { const map = new Map(); for (const k of Object.keys(obj)) { map.set(k, obj[k]); } return map; } function mapToObject(map) { const obj = {}; for (const [k, v] of map.entries()) { obj[k] = v; } return obj; } function getDeepPropertyDescriptor(obj, propertyKey) { let current = obj; while (current) { const descriptor = Object.getOwnPropertyDescriptor(current, propertyKey); if (descriptor) { return { ...descriptor, source: current }; } current = Object.getPrototypeOf(current); } return undefined; } //# sourceMappingURL=map.js.map