| /*! | 
|  * unset-value <https://github.com/jonschlinkert/unset-value> | 
|  * | 
|  * Copyright (c) 2015, 2017, Jon Schlinkert. | 
|  * Released under the MIT License. | 
|  */ | 
|   | 
| 'use strict'; | 
|   | 
| var isObject = require('isobject'); | 
| var has = require('has-value'); | 
|   | 
| module.exports = function unset(obj, prop) { | 
|   if (!isObject(obj)) { | 
|     throw new TypeError('expected an object.'); | 
|   } | 
|   if (obj.hasOwnProperty(prop)) { | 
|     delete obj[prop]; | 
|     return true; | 
|   } | 
|   | 
|   if (has(obj, prop)) { | 
|     var segs = prop.split('.'); | 
|     var last = segs.pop(); | 
|     while (segs.length && segs[segs.length - 1].slice(-1) === '\\') { | 
|       last = segs.pop().slice(0, -1) + '.' + last; | 
|     } | 
|     while (segs.length) obj = obj[prop = segs.shift()]; | 
|     return (delete obj[last]); | 
|   } | 
|   return true; | 
| }; |