|
|
- /*!
- * depd
- * Copyright(c) 2014-2015 Douglas Christopher Wilson
- * MIT Licensed
- */
-
- 'use strict'
-
- /**
- * Module dependencies.
- * @private
- */
-
- var EventEmitter = require('events').EventEmitter
-
- /**
- * Module exports.
- * @public
- */
-
- 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()
- }
|