Blame view

node_modules/depd/lib/compat/index.js 1.54 KB
f7563de62   Palak Handa   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  /*!
   * 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()
  }