exports.utf8 = exports['utf-8'] = { encode: function (data) { return isBinary(data) ? data : String(data) }, decode: identity, buffer: false, type: 'utf8' } exports.json = { encode: JSON.stringify, decode: JSON.parse, buffer: false, type: 'json' } exports.binary = { encode: function (data) { return isBinary(data) ? data : Buffer.from(data) }, decode: identity, buffer: true, type: 'binary' } exports.none = { encode: identity, decode: identity, buffer: false, type: 'id' } exports.id = exports.none var bufferEncodings = [ 'hex', 'ascii', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le' ] bufferEncodings.forEach(function (type) { exports[type] = { encode: function (data) { return isBinary(data) ? data : Buffer.from(data, type) }, decode: function (buffer) { return buffer.toString(type) }, buffer: true, type: type } }) function identity (value) { return value } function isBinary (data) { return data === undefined || data === null || Buffer.isBuffer(data) }