Neodymium Plated Magnet

    msgpack-javascript

    0.10.0 • Public • Published

    msgpack-javascript

    NPM

    Circle CI Code Climate Test Coverage Dependency Status devDependency Status

    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

    Source FormatJavaScript Type
    pos fixint, neg fixint, int 8/16/32 and uint 8/16/32Number
    int 64 and uint 64Long
    nilundefined
    false and trueBoolean
    float 32/64Number
    fixstr and str 8/16/32String
    bin 8/16/32Array (of bytes)
    fixarray and array 16/32Array
    fixmap map 16/32Map
    fixext and ext 8/16/32Extended

    JavaScript Type => Output Format

    JavaScript TypeOutput Format
    Number, Longpos fixint, neg fixint, int 8/16/32/64, uint 8/16/32/64, float 32/64
    undefined, nullnil
    Booleanfalse and true
    Stringfixstr and str 8/16/32
    Array (of bytes)bin 8/16/32
    Arrayfixarray and array 16/32
    Mapfixmap map 16/32

    64-bit Integers

    Support for 64-bit integers is realised via npm package pg-long.

    Keywords

    none

    Install

    npm i msgpack-javascript

    DownloadsWeekly Downloads

    123

    Version

    0.10.0

    License

    Apache-2.0

    Last publish

    Collaborators

    • davidhaines
    • ahmednuaman
    • polyglotted