cbor-redux
The Concise Binary Object Representation (CBOR) data format (RFC 7049) implemented in pure JavaScript, revived. Typed arrays such as Uint8Array, Int16Array or Float32Array are encoded with tags according to RFC8746 CBOR tags for Typed Arrays.
Rewritten in TypeScript for the browser, Deno, and Node.
Usage
Require cbor-redux
in Node:
const { CBOR } = require('cbor-redux')
or import in Deno:
import { CBOR } from 'https://deno.land/x/cbor_redux@0.4.0/mod.ts'
or script on an HTML page:
<script src="https://cdn.skypack.dev/cbor-redux@^0.4.0" type="text/javascript"></script>
For ES5 polyfill, use es5/CBOR.js in the npm package or else
<script src="https://unpkg.com/cbor-redux@0.4.0/es5/CBOR.js"></script>
.
Then you can use it via the CBOR
-object in your code:
const initial = { Hello: 'World' }
const encoded = CBOR.encode(initial)
const decoded = CBOR.decode(encoded)
After running this example initial
and decoded
represent the same value.
API
The CBOR
-object provides the following two functions:
-
CBOR.decode(data: ArrayBuffer)
Take the ArrayBuffer object data and return it decoded as a JavaScript object.
-
CBOR.encode(data: any)
Take the JavaScript object data and return it encoded as a ArrayBuffer object.
For complete API details, visit the documentation.
Combination with WebSocket
The API was designed to play well with the WebSocket
object in the browser:
var websocket = new WebSocket(url);
websocket.binaryType = "arraybuffer";
...
websocket.onmessage = function(event) {
var message = CBOR.decode(event.data);
};
...
websocket.send(CBOR.encode(message));