b-tree
Version:
Async/Await I/O B-tree in pure JavaScript for Node.js.
22 lines (21 loc) • 804 B
JavaScript
module.exports = function (checksum) {
const EOL = Buffer.from('\n')
return function (header, body = null) {
const buffers = [], checksums = []
let length = 0, json = false
if (body != null) {
if (!Buffer.isBuffer(body)) {
json = true
body = Buffer.from(JSON.stringify(body))
}
buffers.push(EOL, body)
length = body.length + 1
checksums.push(checksum(body, 0, body.length))
}
header = Buffer.from(JSON.stringify({ json, length, header }))
buffers.push(EOL, header)
checksums.push(checksum(header, 0, header.length))
buffers.push(EOL, Buffer.from(JSON.stringify(checksums.reverse())))
return Buffer.concat(buffers.reverse())
}
}