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.
77 lines
1.5 KiB
77 lines
1.5 KiB
/*! |
|
* 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') |
|
} |
|
}
|
|
|