Initial commit
[yaffs-website] / node_modules / depd / lib / browser / index.js
1 /*!
2  * depd
3  * Copyright(c) 2015 Douglas Christopher Wilson
4  * MIT Licensed
5  */
6
7 'use strict'
8
9 /**
10  * Module exports.
11  * @public
12  */
13
14 module.exports = depd
15
16 /**
17  * Create deprecate for namespace in caller.
18  */
19
20 function depd(namespace) {
21   if (!namespace) {
22     throw new TypeError('argument namespace is required')
23   }
24
25   function deprecate(message) {
26     // no-op in browser
27   }
28
29   deprecate._file = undefined
30   deprecate._ignored = true
31   deprecate._namespace = namespace
32   deprecate._traced = false
33   deprecate._warned = Object.create(null)
34
35   deprecate.function = wrapfunction
36   deprecate.property = wrapproperty
37
38   return deprecate
39 }
40
41 /**
42  * Return a wrapped function in a deprecation message.
43  *
44  * This is a no-op version of the wrapper, which does nothing but call
45  * validation.
46  */
47
48 function wrapfunction(fn, message) {
49   if (typeof fn !== 'function') {
50     throw new TypeError('argument fn must be a function')
51   }
52
53   return fn
54 }
55
56 /**
57  * Wrap property in a deprecation message.
58  *
59  * This is a no-op version of the wrapper, which does nothing but call
60  * validation.
61  */
62
63 function wrapproperty(obj, prop, message) {
64   if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
65     throw new TypeError('argument obj must be object')
66   }
67
68   var descriptor = Object.getOwnPropertyDescriptor(obj, prop)
69
70   if (!descriptor) {
71     throw new TypeError('must call property on owner object')
72   }
73
74   if (!descriptor.configurable) {
75     throw new TypeError('property must be configurable')
76   }
77
78   return
79 }