@exodus/borc

    3.0.0-exodus.0 • Public • Published

    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

    Install

    npm i @exodus/borc

    DownloadsWeekly Downloads

    982

    Version

    3.0.0-exodus.0

    License

    MIT

    Unpacked Size

    82.7 kB

    Total Files

    14

    Last publish

    Collaborators

    • ianertson
    • cassapula
    • iamcrazycoder
    • kevva
    • kewde_
    • jumokeolads
    • wjbeau
    • vikgmdev
    • aaronloexodus
    • pagan404
    • jprichardson
    • farisissa
    • dooglio
    • ryanzim
    • headfire
    • kklash
    • gutenye
    • feri42
    • mosesbot
    • roccomuso
    • dcastagnoli
    • sonaye
    • nareg_exodus
    • ves
    • tenaciousmv
    • asyakost
    • maxogden
    • bulgakovk
    • sekhmet
    • andrewtoth
    • chalker
    • andrejb
    • gordonel
    • richayotte
    • jaydp17
    • olistic
    • joepie91
    • merlz
    • jadechip
    • vbonini
    • cooncesean
    • devopsrobot
    • jenish-sojitra
    • unidwell
    • nachoalvarez
    • giovannirco
    • ilyavf
    • rec
    • dncabal
    • r1oga
    • diegomura
    • danilsergeev
    • lanre-mark
    • sunilagrawal
    • guillecura
    • timztos
    • motorina0
    • chadstrat
    • mariosvlad
    • federico-po