MCPcopy
hub / github.com/mickhansen/graphql-sequelize / replaceKeyDeep

Function replaceKeyDeep

src/replaceWhereOperators.js:9–34  ·  view source on GitHub ↗

* Replace a key deeply in an object * @param obj * @param keyMap * @returns {Object}

(obj, keyMap)

Source from the content-addressed store, hash-verified

7 * @returns {Object}
8 */
9function replaceKeyDeep(obj, keyMap) {
10 return Object.getOwnPropertySymbols(obj).concat(Object.keys(obj)).reduce((memo, key)=> {
11
12 // determine which key we are going to use
13 let targetKey = keyMap[key] ? keyMap[key] : key;
14
15 if (Array.isArray(obj[key])) {
16 // recurse if an array
17 memo[targetKey] = obj[key].map((val) => {
18 if (Object.prototype.toString.call(val) === '[object Object]') {
19 return replaceKeyDeep(val, keyMap);
20 }
21 return val;
22 });
23 } else if (Object.prototype.toString.call(obj[key]) === '[object Object]') {
24 // recurse if Object
25 memo[targetKey] = replaceKeyDeep(obj[key], keyMap);
26 } else {
27 // assign the new value
28 memo[targetKey] = obj[key];
29 }
30
31 // return the modified object
32 return memo;
33 }, {});
34}
35
36/**
37 * Replace the where arguments object and return the sequelize compatible version.

Callers 1

replaceWhereOperatorsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected