@controlplane/cli
Version:
Control Plane Corporation CLI
155 lines • 4.85 kB
JavaScript
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
;