| 'use strict'; |
| |
| var isObject = require('is-extendable'); |
| var union = require('arr-union'); |
| var get = require('get-value'); |
| var set = require('set-value'); |
| |
| module.exports = function unionValue(obj, prop, value) { |
| if (!isObject(obj)) { |
| throw new TypeError('union-value expects the first argument to be an object.'); |
| } |
| |
| if (typeof prop !== 'string') { |
| throw new TypeError('union-value expects `prop` to be a string.'); |
| } |
| |
| var arr = arrayify(get(obj, prop)); |
| set(obj, prop, union(arr, arrayify(value))); |
| return obj; |
| }; |
| |
| function arrayify(val) { |
| if (val === null || typeof val === 'undefined') { |
| return []; |
| } |
| if (Array.isArray(val)) { |
| return val; |
| } |
| return [val]; |
| } |