Initial commit
[yaffs-website] / node_modules / depd / lib / compat / index.js
1 /*!
2  * depd
3  * Copyright(c) 2014-2015 Douglas Christopher Wilson
4  * MIT Licensed
5  */
6
7 'use strict'
8
9 /**
10  * Module dependencies.
11  * @private
12  */
13
14 var Buffer = require('buffer')
15 var EventEmitter = require('events').EventEmitter
16
17 /**
18  * Module exports.
19  * @public
20  */
21
22 lazyProperty(module.exports, 'bufferConcat', function bufferConcat() {
23   return Buffer.concat || require('./buffer-concat')
24 })
25
26 lazyProperty(module.exports, 'callSiteToString', function callSiteToString() {
27   var limit = Error.stackTraceLimit
28   var obj = {}
29   var prep = Error.prepareStackTrace
30
31   function prepareObjectStackTrace(obj, stack) {
32     return stack
33   }
34
35   Error.prepareStackTrace = prepareObjectStackTrace
36   Error.stackTraceLimit = 2
37
38   // capture the stack
39   Error.captureStackTrace(obj)
40
41   // slice the stack
42   var stack = obj.stack.slice()
43
44   Error.prepareStackTrace = prep
45   Error.stackTraceLimit = limit
46
47   return stack[0].toString ? toString : require('./callsite-tostring')
48 })
49
50 lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount() {
51   return EventEmitter.listenerCount || require('./event-listener-count')
52 })
53
54 /**
55  * Define a lazy property.
56  */
57
58 function lazyProperty(obj, prop, getter) {
59   function get() {
60     var val = getter()
61
62     Object.defineProperty(obj, prop, {
63       configurable: true,
64       enumerable: true,
65       value: val
66     })
67
68     return val
69   }
70
71   Object.defineProperty(obj, prop, {
72     configurable: true,
73     enumerable: true,
74     get: get
75   })
76 }
77
78 /**
79  * Call toString() on the obj
80  */
81
82 function toString(obj) {
83   return obj.toString()
84 }