/usr/lib/nodejs/map-obj/index.js is in node-map-obj 2.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 'use strict';
// customized for this use-case
const isObject = x =>
typeof x === 'object' &&
x !== null &&
!(x instanceof RegExp) &&
!(x instanceof Error) &&
!(x instanceof Date);
module.exports = function mapObj(obj, fn, opts, seen) {
opts = Object.assign({
deep: false,
target: {}
}, opts);
seen = seen || new WeakMap();
if (seen.has(obj)) {
return seen.get(obj);
}
seen.set(obj, opts.target);
const target = opts.target;
delete opts.target;
for (const key of Object.keys(obj)) {
const val = obj[key];
const res = fn(key, val, obj);
let newVal = res[1];
if (opts.deep && isObject(newVal)) {
if (Array.isArray(newVal)) {
newVal = newVal.map(x => isObject(x) ? mapObj(x, fn, opts, seen) : x);
} else {
newVal = mapObj(newVal, fn, opts, seen);
}
}
target[res[0]] = newVal;
}
return target;
};
|