| Server IP : 14.225.204.176 / Your IP : 216.73.216.169 Web Server : nginx/1.24.0 System : Linux nodejs-ybgk 6.8.0-40-generic #40-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 5 10:34:03 UTC 2024 x86_64 User : root ( 0) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/share/node_modules/union-value/ |
Upload File : |
'use strict';
const get = require('get-value');
const set = require('set-value');
const isObject = val => {
return val != null && typeof val === 'object' && !Array.isArray(val);
};
const flatten = (...args) => {
let res = [];
let flat = arr => {
for (let ele of arr) Array.isArray(ele) ? flat(ele, res) : res.push(ele);
};
flat(args);
return res;
};
const unique = arr => arr.filter((v, i) => arr.indexOf(v) === i);
const union = (...args) => unique(flatten(...args));
const first = (...args) => args.find(v => v != null);
module.exports = (obj, prop, value) => {
if (!isObject(obj)) {
throw new TypeError('expected the first argument to be an object');
}
if (typeof prop !== 'string') {
throw new TypeError('expected the second argument to be a string');
}
let arr = [].concat(first(get(obj, prop), []));
set(obj, prop, union(arr, [].concat(first(value, []))));
return obj;
};