index.js
 1  /* eslint-disable node/no-deprecated-api */
 2  var buffer = require('buffer')
 3  var Buffer = buffer.Buffer
 4  
 5  // alternative to using Object.keys for old browsers
 6  function copyProps (src, dst) {
 7    for (var key in src) {
 8      dst[key] = src[key]
 9    }
10  }
11  if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12    module.exports = buffer
13  } else {
14    // Copy properties from require('buffer')
15    copyProps(buffer, exports)
16    exports.Buffer = SafeBuffer
17  }
18  
19  function SafeBuffer (arg, encodingOrOffset, length) {
20    return Buffer(arg, encodingOrOffset, length)
21  }
22  
23  // Copy static methods from Buffer
24  copyProps(Buffer, SafeBuffer)
25  
26  SafeBuffer.from = function (arg, encodingOrOffset, length) {
27    if (typeof arg === 'number') {
28      throw new TypeError('Argument must not be a number')
29    }
30    return Buffer(arg, encodingOrOffset, length)
31  }
32  
33  SafeBuffer.alloc = function (size, fill, encoding) {
34    if (typeof size !== 'number') {
35      throw new TypeError('Argument must be a number')
36    }
37    var buf = Buffer(size)
38    if (fill !== undefined) {
39      if (typeof encoding === 'string') {
40        buf.fill(fill, encoding)
41      } else {
42        buf.fill(fill)
43      }
44    } else {
45      buf.fill(0)
46    }
47    return buf
48  }
49  
50  SafeBuffer.allocUnsafe = function (size) {
51    if (typeof size !== 'number') {
52      throw new TypeError('Argument must be a number')
53    }
54    return Buffer(size)
55  }
56  
57  SafeBuffer.allocUnsafeSlow = function (size) {
58    if (typeof size !== 'number') {
59      throw new TypeError('Argument must be a number')
60    }
61    return buffer.SlowBuffer(size)
62  }