Package Exports
- tiny-msgpack
- tiny-msgpack/lib/browser.js
- tiny-msgpack/lib/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (tiny-msgpack) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
tiny-msgpack 
A minimalistic MessagePack encoder and decoder for JavaScript.
- Tiny Size (2.91 kB minified and gzipped)
- Fast performance
- Extension support
- No other bells or whistles
By default, msgpack can encode numbers, bigints, strings, booleans, nulls, arrays, objects, and binary data (Uint8Array in browsers, Buffer in Node.js). However, additional types can be registered by using extensions.
Installation
npm install --save tiny-msgpackUsage
const msgpack = require('tiny-msgpack');
const uint8array = msgpack.encode({ foo: 'bar', baz: 123 });
const object = msgpack.decode(uint8array);BigInts
You can encode 64-bit integers by using BigInt. Likewise, decoding a 64-bit integer will result in a BigInt. If BigInt is not supported on your platform, decoding a 64-bit integer will throw an exception.
Extensions
const msgpack = require('tiny-msgpack');
const codec = new msgpack.Codec();
function encodeDate(date) {
return msgpack.encode(Number(date));
}
function decodeDate(uint8array) {
return new Date(msgpack.decode(uint8array));
}
codec.register(0x42, Date, encodeDate, decodeDate);
const uint8array = msgpack.encode({ timestamp: new Date() }, codec);
const object = msgpack.decode(uint8array, codec);
console.log(object.timestamp instanceof Date); // => trueBrowser Support
In the browser, tiny-msgpack requires the Encoding API, which is only supported by modern browsers. However, if you polyfill it, this package is supported by the following browsers:
- Chrome 9+
- Firefox 15+
- Safari 5.1+
- Opera 12.1+
- Internet Explorer 10+
Zero copy
In the MessagePack format, binary data is encoded as... binary data! To maximize performance, tiny-msgpack does not copy binary data when encoding or decoding it. So after decoding, the contents of a returned Uint8Array can be affected by modifying the input Uint8Array (the same can happen with encoding).