| Server IP : 107.13.46.68 / Your IP : 216.73.216.232 Web Server : Apache/2.4.58 (Ubuntu) System : Linux mariOS 6.8.0-51-generic #52-Ubuntu SMP PREEMPT_DYNAMIC Thu Dec 5 13:09:44 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON 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;
};