85 lines
1.5 KiB
JavaScript
85 lines
1.5 KiB
JavaScript
|
/*!
|
||
|
* depd
|
||
|
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
||
|
* MIT Licensed
|
||
|
*/
|
||
|
|
||
|
'use strict'
|
||
|
|
||
|
/**
|
||
|
* Module dependencies.
|
||
|
* @private
|
||
|
*/
|
||
|
|
||
|
var Buffer = require('buffer')
|
||
|
var EventEmitter = require('events').EventEmitter
|
||
|
|
||
|
/**
|
||
|
* Module exports.
|
||
|
* @public
|
||
|
*/
|
||
|
|
||
|
lazyProperty(module.exports, 'bufferConcat', function bufferConcat() {
|
||
|
return Buffer.concat || require('./buffer-concat')
|
||
|
})
|
||
|
|
||
|
lazyProperty(module.exports, 'callSiteToString', function callSiteToString() {
|
||
|
var limit = Error.stackTraceLimit
|
||
|
var obj = {}
|
||
|
var prep = Error.prepareStackTrace
|
||
|
|
||
|
function prepareObjectStackTrace(obj, stack) {
|
||
|
return stack
|
||
|
}
|
||
|
|
||
|
Error.prepareStackTrace = prepareObjectStackTrace
|
||
|
Error.stackTraceLimit = 2
|
||
|
|
||
|
// capture the stack
|
||
|
Error.captureStackTrace(obj)
|
||
|
|
||
|
// slice the stack
|
||
|
var stack = obj.stack.slice()
|
||
|
|
||
|
Error.prepareStackTrace = prep
|
||
|
Error.stackTraceLimit = limit
|
||
|
|
||
|
return stack[0].toString ? toString : require('./callsite-tostring')
|
||
|
})
|
||
|
|
||
|
lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount() {
|
||
|
return EventEmitter.listenerCount || require('./event-listener-count')
|
||
|
})
|
||
|
|
||
|
/**
|
||
|
* Define a lazy property.
|
||
|
*/
|
||
|
|
||
|
function lazyProperty(obj, prop, getter) {
|
||
|
function get() {
|
||
|
var val = getter()
|
||
|
|
||
|
Object.defineProperty(obj, prop, {
|
||
|
configurable: true,
|
||
|
enumerable: true,
|
||
|
value: val
|
||
|
})
|
||
|
|
||
|
return val
|
||
|
}
|
||
|
|
||
|
Object.defineProperty(obj, prop, {
|
||
|
configurable: true,
|
||
|
enumerable: true,
|
||
|
get: get
|
||
|
})
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Call toString() on the obj
|
||
|
*/
|
||
|
|
||
|
function toString(obj) {
|
||
|
return obj.toString()
|
||
|
}
|