# tinycbor

> node.js addon for tinyCBOR

Latest version **0.2.1** (published 2017-08-15) · ISC license · 0 weekly downloads

## Install

```sh
npm install tinycbor
pnpm add tinycbor
yarn add tinycbor
bun add tinycbor
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.1 |
| Published | 2017-08-15 |
| First published | 2017-06-15 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | yes |
| Author | Samuel Patterson |
| Maintainers | samuelvpatterson |
| Keywords | tinycbor, cbor, addon |

## Links

- npm: https://www.npmjs.com/package/tinycbor
- Repository: https://gitlab.com/controlenvy/lib/node-tinycbor
- npm.io page: https://npm.io/package/tinycbor

## Dependencies (1)

- [nan](https://npm.io/package/nan.md) ^2.6.2

## Recent versions

- 0.2.1 (latest) — 2017-08-15
- 0.1.4 (redis) — 2017-08-03
- 0.2.0 — 2017-08-12
- 0.1.3 — 2017-08-02
- 0.1.2 — 2017-08-01
- 0.1.1 — 2017-08-01
- 0.1.0 — 2017-08-01
- 0.0.11 — 2017-07-03
- 0.0.10 — 2017-06-21
- 0.0.9 — 2017-06-20
- 0.0.8 — 2017-06-20
- 0.0.7 — 2017-06-19
- 0.0.6 — 2017-06-19
- 0.0.5 — 2017-06-16
- 0.0.4 — 2017-06-16
- … 2 more at https://npm.io/package/tinycbor/versions

## README

# Node.js Addon for TinyCBOR

`node-tinyCBOR` is a [NodeJS](http://nodejs.org) addon that allows use of the C based [tinyCBOR](https://01org.github.io/tinycbor/current/) library. With this addon, you can serialize and parse numbers, booleans, strings, arrays, and objects into the [CBOR](http://cbor.io/) 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](http://controlenvy-foss.gitlab.io/node-tinycbor/).

### 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()`.

```javascript
    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

<dl>
  <dt>NOTE:</dt>
  <dd>
    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!
  </dd>
</dl>

---
_Source: https://npm.io/package/tinycbor · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
