Detalhes do pacote

borc

dignifiedquire476.9kMIT3.0.0

Encode and parse data in the Concise Binary Object Representation (CBOR) data format (RFC7049).

coap, cbor, json, asm

readme (leia-me)

borc

Coverage Status Dependency Status Travis CI

Assimilate all your JavaScript objects into the Concise Binary Object Representation (CBOR) data format (RFC7049) as fast as possible.

About

This library is a fork of the awesome node-cbor. It borrows a lot of the interface, but drops all streaming and async processing in favor of a minimal syn api and being as fast as possible.

Installation

$ npm install --save borc

Benchmarks

TODO

Example

const cbor = require('borc')
const assert = require('assert')

const encoded = cbor.encode(true) // returns <Buffer f5>
const decoded = cbor.decodeFirst(encoded)
// decoded is the unpacked object
assert.ok(decoded === true)

// Use integers as keys
var m = new Map()
m.set(1, 2)
encoded = cbor.encode(m) // <Buffer a1 01 02>

API

See https://dignifiedquire.github.io/borc for details

The sync encoding and decoding are exported as a leveldb encoding, as cbor.leveldb.

Supported types

The following types are supported for encoding:

  • boolean
  • number (including -0, NaN, and ±Infinity)
  • string
  • Array, Set (encoded as Array)
  • Object (including null), Map
  • undefined
  • Buffer
  • Date,
  • RegExp
  • url.URL
  • bignumber

Decoding supports the above types, including the following CBOR tag numbers:

Tag Generated Type
0 Date
1 Date
2 bignumber
3 bignumber
4 bignumber
5 bignumber
32 url.URL
35 RegExp

Customizations

Borc supports custom tags as well as custom input types.

Encode Custom Types

class MyType {
  constructor (val) {
    this.val = val
  }

  // Gets called when encoding this object
  // gen - instance of the encoder
  // obj - the object being encoded
  //
  // should return true on success and false otherwise
  encodeCBOR (gen) {
    return gen.pushAny('mytype:' + this.val)
  }
}

cbor.encode([new MyType('hello')])

Encode Custom Tags

cbor.encode([new cbor.Tagged(42, 'hello')])

Decode Custom Tags

const decoder = new cbor.Decoder({
  tags: {
    42: (val) => val + ' world'
  }
})

License

MIT

changelog (log de mudanças)

3.0.0 (2021-04-27)

2.1.2 (2020-03-26)

Bug Fixes

2.1.1 (2019-07-10)

Bug Fixes

  • import nested bignumber.js (6190338), closes #41

2.1.0 (2019-01-03)

Features

  • remove url dependency in the browser (18a4974)

2.0.4 (2018-10-18)

Performance Improvements

  • avoid object allocation when creating strings from the underlying buffer (e609298)

2.0.3 (2018-05-02)

Bug Fixes

  • decoder: handle 32bit byte strings and utf8 strings (7c5707c), closes #19
  • decoder: handle larger arrays (562f14b), closes #20
  • encoder: cast uint8arrays to a buffer (7f34f6a), closes #13
  • encoder: correct return value on .write (8eb9b1f), closes #27

Features

2.0.2 (2017-01-29)

Bug Fixes

  • decoder: correct ByteBuffer and ByteString handling (4ed9a69)

2.0.1 (2016-12-14)

Bug Fixes

  • decoder: handle large input sizes (b44cdfe), closes #10

2.0.0 (2016-12-11)

Features