1 /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
2 /* eslint-disable node/no-deprecated-api */
3 var buffer = require('buffer')
4 var Buffer = buffer.Buffer
6 // alternative to using Object.keys for old browsers
7 function copyProps (src, dst) {
12 if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
13 module.exports = buffer
15 // Copy properties from require('buffer')
16 copyProps(buffer, exports)
17 exports.Buffer = SafeBuffer
20 function SafeBuffer (arg, encodingOrOffset, length) {
21 return Buffer(arg, encodingOrOffset, length)
24 SafeBuffer.prototype = Object.create(Buffer.prototype)
26 // Copy static methods from Buffer
27 copyProps(Buffer, SafeBuffer)
29 SafeBuffer.from = function (arg, encodingOrOffset, length) {
30 if (typeof arg === 'number') {
31 throw new TypeError('Argument must not be a number')
33 return Buffer(arg, encodingOrOffset, length)
36 SafeBuffer.alloc = function (size, fill, encoding) {
37 if (typeof size !== 'number') {
38 throw new TypeError('Argument must be a number')
40 var buf = Buffer(size)
41 if (fill !== undefined) {
42 if (typeof encoding === 'string') {
43 buf.fill(fill, encoding)
53 SafeBuffer.allocUnsafe = function (size) {
54 if (typeof size !== 'number') {
55 throw new TypeError('Argument must be a number')
60 SafeBuffer.allocUnsafeSlow = function (size) {
61 if (typeof size !== 'number') {
62 throw new TypeError('Argument must be a number')
64 return buffer.SlowBuffer(size)