Node.js Addon for TinyCBOR
node-tinyCBOR
is a NodeJS addon that allows use of the C based tinyCBOR library. With this addon, you can serialize and parse numbers, booleans, strings, arrays, and objects into the CBOR format.
Performance
node-tinycbor
is currently slower than the built-in JSON.stringify()
and JSON.parse()
methods for Array and Object encode/decode. However, node-tinycbor
is quite fast when compared
to alternatives such as node-msgpack
. Benchmarks for node-tinycbor
can be found here.
Usage
This module provides the four following methods:
encode()
, which consumes a JavaScript object and returns anArrayBuffer
containing the serialized datadecode()
, which consumes a nodeArrayBuffer
object and returns a JavaScript object identical to the originaltoJson()
, which consumes a nodeArrayBuffer
object and writes the JSON representation of said object into aCBORtoJSON.json
file in the top directorytoText()
, which consumes a nodeArrayBuffer
object and writes the text representation of said object into aCBORtoTEXT.txt
file in the top directory
For toJson()
and toText()
, if the file is not found, a new one will be generated. Otherwise, the CBOR conversion is appended to the existing file.
Encoding of Strings, Arrays, and Objects of up to length 100,000 is currently supported. Behavior is undefined for objects outside of the specified range.
Encode/Decode of null
and undefined
data types are also supported.
The below code snippet encodes and then decodes a JavaScript object, verifying
the resulting object at the end using assert.deepEqual()
.
var assert = ; var CBOR = ; var obj = "a" : 1 "b" : 2 "c" : 1 2 3; var input = CBOR; var output = CBOR; assert;
Installation
To install node-tinycbor, use the following:
NPM
npm install tinycbor
This should allow use of node-tinycbor through require('tinycbor')
.
Manually
You will need node-gyp:
npm install -g node-gyp
Then from the root of the tinycbor repo, you can run:
node-gyp rebuild
- NOTE:
- node-gyp attempts to contact the Internet and download the target version of node.js source and store it locally. This will only happen once for each time it sees a new node.js version. If you're on a host with no direct Internet access, you may need to shuffle this source over from another box or sneaker net. Good luck!