| /*! | 
|  * depd | 
|  * Copyright(c) 2015 Douglas Christopher Wilson | 
|  * MIT Licensed | 
|  */ | 
|   | 
| 'use strict' | 
|   | 
| /** | 
|  * Module exports. | 
|  * @public | 
|  */ | 
|   | 
| module.exports = depd | 
|   | 
| /** | 
|  * Create deprecate for namespace in caller. | 
|  */ | 
|   | 
| function depd (namespace) { | 
|   if (!namespace) { | 
|     throw new TypeError('argument namespace is required') | 
|   } | 
|   | 
|   function deprecate (message) { | 
|     // no-op in browser | 
|   } | 
|   | 
|   deprecate._file = undefined | 
|   deprecate._ignored = true | 
|   deprecate._namespace = namespace | 
|   deprecate._traced = false | 
|   deprecate._warned = Object.create(null) | 
|   | 
|   deprecate.function = wrapfunction | 
|   deprecate.property = wrapproperty | 
|   | 
|   return deprecate | 
| } | 
|   | 
| /** | 
|  * Return a wrapped function in a deprecation message. | 
|  * | 
|  * This is a no-op version of the wrapper, which does nothing but call | 
|  * validation. | 
|  */ | 
|   | 
| function wrapfunction (fn, message) { | 
|   if (typeof fn !== 'function') { | 
|     throw new TypeError('argument fn must be a function') | 
|   } | 
|   | 
|   return fn | 
| } | 
|   | 
| /** | 
|  * Wrap property in a deprecation message. | 
|  * | 
|  * This is a no-op version of the wrapper, which does nothing but call | 
|  * validation. | 
|  */ | 
|   | 
| function wrapproperty (obj, prop, message) { | 
|   if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { | 
|     throw new TypeError('argument obj must be object') | 
|   } | 
|   | 
|   var descriptor = Object.getOwnPropertyDescriptor(obj, prop) | 
|   | 
|   if (!descriptor) { | 
|     throw new TypeError('must call property on owner object') | 
|   } | 
|   | 
|   if (!descriptor.configurable) { | 
|     throw new TypeError('property must be configurable') | 
|   } | 
| } |