UNPKG

gamelet-cli

Version:

Download project from code.gamelet.com, edit/test in vscode and sync back to server.

191 lines 13.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ObjectUtil = void 0; class ObjectUtil { /** * Create a new object and deep clone data from provided source. * * @param {any} data * @return {any} */ static deepCloneObject(data) { if (!data) { return data; } if (typeof data === 'object') { if (Array.isArray(data)) { return data.map(item => ObjectUtil.deepCloneObject(item)); } else { let obj = {}; for (let key in data) { obj[key] = ObjectUtil.deepCloneObject(data[key]); } return obj; } } return data; } /** * Compare 2 objects to see if they contains same data. * * @param {any} data0 * @param {any} data1 * @return {boolean} */ static equals(data0, data1) { if (data0 && data1 && typeof data0 === 'object' && typeof data1 === 'object') { if (Array.isArray(data0)) { if (Array.isArray(data1)) { // array comparing let len = data0.length; if (data1.length != len) { return false; } for (let i = 0; i < len; ++i) { if (!ObjectUtil.equals(data0[i], data1[i])) { return false; } } return true; } return false; } else if (Array.isArray(data1)) { return false; } // object comparing let keys0 = Object.keys(data0); let keys1 = Object.keys(data1); let len = keys0.length; if (len != keys1.length) { return false; } keys0.sort(); keys1.sort(); for (let i = 0; i < len; ++i) { let key = keys0[i]; if (key != keys1[i]) { return false; } if (!ObjectUtil.equals(data0[key], data1[key])) { return false; } } return true; } return data0 === data1; } /** * Similar to Object.assign, but will not overwrite child that is object-typed. * safeAssign() will recursively safeAssign object-typed children. * * @param {any} target The target object. * @param {any} source The source object(s). * @return {any} The target object. */ static safeAssign(target, source) { if (source && typeof source === 'object') { if (target && typeof target === 'object') { if (Array.isArray(source)) { if (Array.isArray(target)) { // copy array items for (let i = 0; i < source.length; ++i) { target[i] = ObjectUtil.safeAssign(target[i], source[i]); } return target; } else { return ObjectUtil.safeAssign([], source); } } else if (Array.isArray(target)) { return ObjectUtil.safeAssign({}, source); } else { // copy object items for (let key in source) { target[key] = ObjectUtil.safeAssign(target[key], source[key]); } return target; } } else if (Array.isArray(source)) { return ObjectUtil.safeAssign([], source); } else { return ObjectUtil.safeAssign({}, source); } } else { return source; } } /** * Remove keys on data that contain same value as in reference. * * @param {any} data The target object that is being modified. * @param {any} reference The reference object. * @return {any} The target object. */ static removeKeysWithSameValue(target, reference) { if (target && typeof target === 'object' && reference && typeof reference === 'object') { if (Array.isArray(target)) { if (Array.isArray(reference)) { for (let i = 0; i < target.length; ++i) { ObjectUtil.removeKeysWithSameValue(target[i], reference[i]); } } } else if (Array.isArray(reference)) { // do nothing with object vs array } else { for (let key in target) { let value = target[key]; let refValue = reference[key]; if (value === refValue) { delete target[key]; } else { ObjectUtil.removeKeysWithSameValue(value, refValue); } } } } return target; } static forEach(obj, callback) { if (obj && typeof obj === 'object') { if (Array.isArray(obj)) { throw new Error('ObjectUtil.forEach: obj is an array, use Array.forEach instead.'); } Object.keys(obj).forEach(key => { callback(key, obj[key], obj); }); } else { throw new Error('ObjectUtil.forEach: not an object'); } } static map(obj, callback) { if (obj && typeof obj === 'object') { if (Array.isArray(obj)) { throw new Error('ObjectUtil.map: obj is an array, use Array.map instead.'); } let ret = {}; Object.keys(obj).map(key => { ret[key] = callback(key, obj[key], obj); }); return ret; } else { throw new Error('ObjectUtil.map: not an object'); } } static isPromise(value) { return value && Promise.resolve(value) == value; } } exports.ObjectUtil = ObjectUtil; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JqZWN0VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2ZXIvdXRpbHMvT2JqZWN0VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLFVBQVU7SUFFdEI7Ozs7O09BS007SUFDQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVM7UUFDdEMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUMxRDtpQkFBTTtnQkFDTixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7b0JBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUNqRDtnQkFDRCxPQUFPLEdBQUcsQ0FBQzthQUNYO1NBQ0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7O09BTU07SUFDQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVUsRUFBRSxLQUFVO1FBQzFDLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN6QixrQkFBa0I7b0JBQ2xCLElB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