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.
		
		
		
		
			
				
					78 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					78 lines
				
				1.5 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								/*!
							 | 
						||
| 
								 | 
							
								 * 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')
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |