qcobjects
Version:
QCObjects is an Open-source framework that empowers full-stack developers to make micro-services and micro-frontends into an N-Tier architecture.
49 lines (46 loc) • 1.51 kB
text/typescript
import { logger } from "./Logger";
/**
* Casts an object to another object class type
*
* @param {Object} obj_source
* @param {Object} obj_dest
*/
export const _Cast = function (obj_source: any, obj_dest: any):any {
for (const v in obj_source) {
if (typeof obj_source[v] !== "undefined") {
try {
obj_dest[v] = obj_source[v];
} catch (e:any) {
logger.debug(`An error ocurred: ${e}.`);
logger.warn(`Unable to cast ${(typeof obj_source).toString()}.${typeof v.toString()} to ${(typeof obj_dest).toString()}.${typeof v.toString()}`);
}
}
}
return obj_dest;
};
/**
* Casts an object to another object class type. Only properties
*
* @param {Object} obj_source
* @param {Object} obj_dest
*/
export const _CastProps = function (obj_source: any, obj_dest: any, _ignoreError:boolean = true):any {
for (const v in obj_source) {
if (typeof obj_source[v] !== "undefined" && typeof obj_source[v] !== "function") {
try {
obj_dest[v] = obj_source[v];
} catch (e:any) {
if (!_ignoreError){
logger.debug(`An error ocurred: ${e}.`);
}
}
} else if (typeof obj_source[v] === "function") {
try {
obj_dest[v] = obj_source[v].bind(obj_dest);
} catch (e:any) {
logger.warn(e);
}
}
}
return obj_dest;
};