You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.1 KiB
65 lines
1.1 KiB
4 years ago
|
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)
|
||
|
}
|