| 'use strict'; |
| |
| module.exports = { |
| /** |
| * True if this is running in Nodejs, will be undefined in a browser. |
| * In a browser, browserify won't include this file and the whole module |
| * will be resolved an empty object. |
| */ |
| isNode : typeof Buffer !== "undefined", |
| /** |
| * Create a new nodejs Buffer from an existing content. |
| * @param {Object} data the data to pass to the constructor. |
| * @param {String} encoding the encoding to use. |
| * @return {Buffer} a new Buffer. |
| */ |
| newBufferFrom: function(data, encoding) { |
| // XXX We can't use `Buffer.from` which comes from `Uint8Array.from` |
| // in nodejs v4 (< v.4.5). It's not the expected implementation (and |
| // has a different signature). |
| // see https://github.com/nodejs/node/issues/8053 |
| // A condition on nodejs' version won't solve the issue as we don't |
| // control the Buffer polyfills that may or may not be used. |
| return new Buffer(data, encoding); |
| }, |
| /** |
| * Create a new nodejs Buffer with the specified size. |
| * @param {Integer} size the size of the buffer. |
| * @return {Buffer} a new Buffer. |
| */ |
| allocBuffer: function (size) { |
| if (Buffer.alloc) { |
| return Buffer.alloc(size); |
| } else { |
| return new Buffer(size); |
| } |
| }, |
| /** |
| * Find out if an object is a Buffer. |
| * @param {Object} b the object to test. |
| * @return {Boolean} true if the object is a Buffer, false otherwise. |
| */ |
| isBuffer : function(b){ |
| return Buffer.isBuffer(b); |
| }, |
| |
| isStream : function (obj) { |
| return obj && |
| typeof obj.on === "function" && |
| typeof obj.pause === "function" && |
| typeof obj.resume === "function"; |
| } |
| }; |