UNPKG

forest-express-sequelize

Version:

Official Express/Sequelize Liana for Forest

44 lines (42 loc) 1.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); require("core-js/modules/es.array.iterator.js"); var _lodash = _interopRequireDefault(require("lodash")); /** Do object1 and object2 have at least one common key or Symbol? */ exports.plainObjectsShareNoKeys = function (object1, object2) { if (!_lodash.default.isPlainObject(object1) || !_lodash.default.isPlainObject(object2)) { return false; } const keys1 = [...Object.getOwnPropertyNames(object1), ...Object.getOwnPropertySymbols(object1)]; const keys2 = [...Object.getOwnPropertyNames(object2), ...Object.getOwnPropertySymbols(object2)]; const commonKeys = keys1.filter(function (key) { return keys2.includes(key); }); return commonKeys.length === 0; }; /** * Clone object recursively while rewriting keys with the callback function. * Symbols are copied without modification (Sequelize.Ops are javascript symbols). * * @example * mapKeysDeep({a: {b: 1}}, key => `_${key}_`); * => {_a_: {_b_: 1}} */ exports.mapKeysDeep = function (object, callback) { if (Array.isArray(object)) { return object.map(function (child) { return exports.mapKeysDeep(child, callback); }); } if (_lodash.default.isPlainObject(object)) { const newObject = {}; Object.getOwnPropertyNames(object).forEach(function (name) { newObject[callback(name)] = exports.mapKeysDeep(object[name], callback); }); Object.getOwnPropertySymbols(object).forEach(function (symbol) { newObject[symbol] = exports.mapKeysDeep(object[symbol], callback); }); return newObject; } return object; };