summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/map-obj/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/map-obj/index.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/map-obj/index.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/map-obj/index.js b/bin/wiki/ImportarDesdeURL/node_modules/map-obj/index.js
new file mode 100644
index 00000000..2a19cde4
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/map-obj/index.js
@@ -0,0 +1,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;
+};