jsm-utilities
Version:
A utilities library.
156 lines (155 loc) • 6.02 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectUpdatedPropertyObject = exports.ObjectUpdatedProperties = exports.unflattenObjectArray = exports.extractPartialObject = exports.flattenObject = exports.flattenObjectKeys = exports.transformObjectToString = void 0;
exports.deletePropertyRecursively = deletePropertyRecursively;
/**
* @generator Jsm
* @author dr. Salmi <reevosolutions@gmail.com>
* @since 24-02-2024 20:47:22
*/
const moment_1 = __importDefault(require("moment"));
const update_calculator_class_1 = __importStar(require("./update-calculator.class"));
exports.ObjectUpdatedProperties = update_calculator_class_1.default;
Object.defineProperty(exports, "ObjectUpdatedPropertyObject", { enumerable: true, get: function () { return update_calculator_class_1.ObjectUpdatedPropertyObject; } });
const lodash_1 = require("lodash");
const transformObjectToString = (obj) => {
if (obj === undefined) {
return 'undefined';
}
if (obj === null) {
return 'null';
}
else if (typeof obj === 'string') {
return obj;
}
else if (Array.isArray(obj)) {
return obj.map(v => (0, exports.transformObjectToString)(v)).join(', ');
}
else if (typeof obj === 'object') {
if (Object.prototype.hasOwnProperty.call(obj, 'start') && Object.prototype.hasOwnProperty.call(obj, 'end')) {
return `${(0, moment_1.default)(obj.start).format('DD-MM-YYYY')} - ${(0, moment_1.default)(obj.end).format('DD-MM-YYYY')}`;
}
else {
return (0, exports.transformObjectToString)(Object.keys(obj).map(k => `${k}: ${(0, exports.transformObjectToString)(obj[k])}`));
}
}
return obj;
};
exports.transformObjectToString = transformObjectToString;
/**
* @since 11-12-2023 15:41:03
*/
const flattenObjectKeys = (obj, prefix = '') => Object.keys(obj).reduce((acc, k) => {
const pre = prefix.length ? prefix + '.' : '';
if (typeof obj[k] === 'object' && obj[k]) {
if (obj[k] instanceof Array)
for (let idx = 0; idx < obj[k].length; idx++) {
if (typeof obj[k][idx] === 'object' && obj[k][idx])
acc.push(...(0, exports.flattenObjectKeys)(obj[k][idx], pre + k));
}
else
acc.push(...(0, exports.flattenObjectKeys)(obj[k], pre + k));
}
else {
if (!(0, lodash_1.isNumber)(k))
acc.push(pre + k);
}
return acc;
}, []);
exports.flattenObjectKeys = flattenObjectKeys;
/**
* @since 11-12-2023 15:41:10
*/
const flattenObject = (obj, prefix = '') => Object.keys(obj).reduce((acc, k) => {
const pre = prefix.length ? prefix + '.' : '';
if (typeof obj[k] === 'object' && obj[k])
Object.assign(acc, (0, exports.flattenObject)(obj[k], pre + k));
else
acc[pre + k] = obj[k];
return acc;
}, {});
exports.flattenObject = flattenObject;
const extractPartialObject = (obj, properties) => {
const subObject = {};
properties.forEach(property => {
if (Object.prototype.hasOwnProperty.call(obj, property)) {
subObject[property] = obj[property];
}
});
return subObject;
};
exports.extractPartialObject = extractPartialObject;
function deletePropertyRecursively(obj, property) {
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (key === property) {
delete obj[key];
}
else if (typeof obj[key] === "object" && obj[key] !== null) {
deletePropertyRecursively(obj[key], property);
}
}
}
}
/**
* Update : added
* @author dr. Salmi <reevosolutions@gmail.com>
* @since 18-07-2024 21:24:07
*/
const unflattenObjectArray = (items) => {
const itemMap = new Map();
// Initialize each item with a children array and map them by _id
items.forEach((item) => {
item.children = [];
itemMap.set(item._id, Object.assign(Object.assign({}, item), { children: [] }));
});
// Link children to their parent, and find root items
const roots = [];
items.forEach((item) => {
if (item.parent) {
const parentItem = itemMap.get(item.parent);
parentItem === null || parentItem === void 0 ? void 0 : parentItem.children.push(itemMap.get(item._id));
}
else {
roots.push(itemMap.get(item._id));
}
});
return roots;
};
exports.unflattenObjectArray = unflattenObjectArray;