You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							30 lines
						
					
					
						
							700 B
						
					
					
				
			
		
		
	
	
							30 lines
						
					
					
						
							700 B
						
					
					
				'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]; | 
						|
}
 | 
						|
 |