msgpack-javascript
v0.10.0
Published
JavaScript ES6 implementation of the MessagePack specification. Node and Browser friendly.
Downloads
144
Readme
msgpack-javascript
JavaScript ES6 implementation of the MessagePack protocol.
Design Goals
- Isomorphic
- Single codebase to serve both Browser and Node environments
- Future Ready
- Source and tests written in ES6
Installation
npm i msgpack-javascript
Basic Usage
Import
import {Packer, Unpacker} from 'msgpack-javascript';
Pack
let packer = new Packer();
packer.packNil();
packer.packBoolean(true);
packer.packInt(0);
packer.packInt(255);
packer.packInt(65535);
packer.packInt(-2147483648);
packer.packInt(Date.now());
packer.packFloat(1.4e-45);
packer.packDouble(4.9e-324);
packer.packString('yo fibre');
packer.packArray([0, true, 'p']);
packer.packBinary([0, 10, 255]);
packer.packMap(new Map([[0, 'foo'], [1, 'bar']]));
Unpack
let unpacker = new Unpacker(packer.getBytes()),
actual = {};
unpacker = new Unpacker(packer.getBytes());
actual.nil = unpacker.unpackNil();
actual.boolean = unpacker.unpackBoolean();
actual.fixnum = unpacker.unpackInt();
actual.byte = unpacker.unpackInt();
actual.short = unpacker.unpackInt();
actual.int = unpacker.unpackInt();
actual.long = unpacker.unpackInt();
actual.float = unpacker.unpackFloat();
actual.double = unpacker.unpackDouble();
actual.string = unpacker.unpackString();
actual.array = unpacker.unpackArray();
actual.binary = unpacker.unpackBinary();
actual.map = unpacker.unpackMap();
Reflect
Packer.packValue allows packing of any value that may be identified as one of the standard value types (excluding Extended).
let packer = new Packer();
packer.packValue(); // packs nil
packer.packValue(true); // packs bool
packer.packValue(0); // packs pos fixint
packer.packValue(255); // packs uint8
packer.packValue(65535); // packs uint16
packer.packValue(-2147483648); // packs int32
packer.packValue(Date.now()); // packs uint64
packer.packValue(3.4028234 * Math.pow(10, 38)); // packs float32
packer.packValue(1.7976931348623157 * Math.pow(10, 308)); // packs float64
packer.packValue('yo fibre'); // packs fixed string
packer.packValue([0, true, 'p']); // packs fixed array
packer.packValue([0, 10, 255]); // packs bin8
packer.packValue(new Map([[0, 'foo'], [1, 'bar']])); // packs fixed map
packer.packValue({foo: 'bar'}); // throws error
Unpacker.unpackValue unpacks the next value by evaluating the prefix of the next byte to be read.
Type Mapping
Source Format => JavaScript Type
JavaScript Type => Output Format
64-bit Integers
Support for 64-bit integers is realised via npm package pg-long.