node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org »

tinycbor

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 an ArrayBuffer containing the serialized data
  • decode(), which consumes a node ArrayBuffer object and returns a JavaScript object identical to the original
  • toJson(), which consumes a node ArrayBuffer object and writes the JSON representation of said object into a CBORtoJSON.json file in the top directory
  • toText(), which consumes a node ArrayBuffer object and writes the text representation of said object into a CBORtoTEXT.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 = require('assert');
    var CBOR = require('tinycbor');
 
    var obj = {"a" : 1, "b" : 2, "c" : [1, 2, 3]};
    var input = CBOR.encode(obj);
    var output = CBOR.decode(obj);
 
    assert.deepEqual(output, obj);

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!