/*!
|
|
* depd
|
|
* Copyright(c) 2014 Douglas Christopher Wilson
|
|
* MIT Licensed
|
|
*/
|
|
|
|
/**
|
|
* Module exports.
|
|
*/
|
|
|
|
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')
|
|
})
|
|
|
|
/**
|
|
* 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()
|
|
}
|