UNPKG

@controlplane/cli

Version:

Control Plane Corporation CLI

155 lines 4.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.computeHash = exports.sortIHasKindByPriority = exports.sortByKindPriority = exports.toVolumes = exports.toEnv = exports.cartesian = exports.removeUndefinedValues = exports.pick = exports.toArray = exports.merge = exports.kindPriorityOrder = exports.gvcRelatedKinds = void 0; const _ = require("lodash"); const crypto = require("crypto"); exports.gvcRelatedKinds = ['identity', 'volumeset', 'workload']; exports.kindPriorityOrder = ['agent', 'secret', 'cloudaccount', 'gvc', 'identity', 'volumeset', 'policy', 'workload']; function merge(...objs) { let result = {}; for (let obj of objs) { Object.assign(result, _.pickBy(obj, (x) => x !== undefined && x !== null && x !== '')); } return result; } exports.merge = merge; function toArray(obj) { if (obj === undefined) { return []; } if (Array.isArray(obj)) { return obj; } return [obj]; } exports.toArray = toArray; function pick(obj, ...props) { let result = {}; for (let prop of props) { const val = obj[prop]; if (val != null) { result[prop] = val; } } return result; } exports.pick = pick; function removeUndefinedValues(obj) { // Iterate over all the keys of the object Object.keys(obj).forEach((key) => { // If the value is undefined, delete the key if (obj[key] === undefined) { delete obj[key]; } // If the value is an object, recurse into it else if (typeof obj[key] === 'object' && obj[key] !== null) { removeUndefinedValues(obj[key]); // If the nested object becomes empty after the removal of undefined values, delete the key if (Object.keys(obj[key]).length === 0) { delete obj[key]; } } }); } exports.removeUndefinedValues = removeUndefinedValues; function cartesian(t1, t2, join) { const res = []; if (t1 === undefined || t2 === undefined) { return undefined; } for (let s1 of t1) { for (let s2 of t2) { res.push(join(s1, s2)); } } return res; } exports.cartesian = cartesian; function toEnv(kvs) { if (!kvs) { return []; } const map = {}; for (let e of kvs) { const parts = e.split('='); let name = parts[0]; if (!name) { continue; } let value = parts.slice(1).join('='); // removing quotes if they exist if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) value = value.substring(1, value.length - 1); map[name] = value || ''; } return Object.entries(map).map((e) => { return { name: e[0], value: '' + e[1] }; }); } exports.toEnv = toEnv; function toVolumes(kvs) { if (!kvs) { return []; } const list = []; for (let e of kvs) { const parts = e.split('@'); let uri = parts[0]; if (!uri) { continue; } let path = parts.slice(1).join('@'); list.push({ uri, path, }); } return list; } exports.toVolumes = toVolumes; function sortByKindPriority(resources, reverse = false) { const sortedResources = []; for (const resource of resources) { if (resource.kind === 'list' || resource.kind === 'queryresult') { for (let item of resource.items) { sortedResources.push(item); } } else { sortedResources.push(resource); } } sortIHasKindByPriority(sortedResources, reverse); return sortedResources; } exports.sortByKindPriority = sortByKindPriority; function sortIHasKindByPriority(resources, reverse) { if (resources.length === 0) { return; } resources.sort((a, b) => { const indexA = exports.kindPriorityOrder.indexOf(a.kind); const indexB = exports.kindPriorityOrder.indexOf(b.kind); // If a's kind isn't found, set its index to Infinity so it's placed at the end if (indexA === -1) return 1; // If b's kind isn't found, set its index to Infinity so it's placed at the end if (indexB === -1) return -1; return indexA - indexB; }); if (reverse) { resources.reverse(); } } exports.sortIHasKindByPriority = sortIHasKindByPriority; function computeHash(data) { // Create an SHA-256 hash instance const hash = crypto.createHash('sha256'); // Update the hash with the serialized data hash.update(JSON.stringify(data)); // Return the hash in hexadecimal format return hash.digest('hex'); } exports.computeHash = computeHash; //# sourceMappingURL=objects.js.map