Package Exports
- avsc
- avsc/etc/browser/avsc
- avsc/etc/browser/avsc.js
- avsc/etc/browser/crypto.js
- avsc/lib
- avsc/lib/utils
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 (avsc) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Avsc

Pure JavaScript implementation of the Avro specification.
Features
- Fast! Typically twice as fast as JSON with much smaller encodings.
- Full Avro support, including recursive schemas, sort order, and evolution.
- Serialization of arbitrary JavaScript objects via logical types.
- Unopinionated 64-bit integer compatibility.
- No dependencies,
avsceven runs in the browser.
Performance
Representative throughput rates (higher is better):

Libraries compared:
node-avsc, this package.node-json, built-in JSON serializer.node-protobuf, most popular Protocol Buffers implementation.node-pson, alternative to JSON.node-msgpack, official MessagePack implementation.
These rates are for processing a realistic record schema, modeled after a popular open-source API. You can find the raw numbers and more details on the benchmarks page.
Installation
$ npm install avscavsc is compatible with all versions of node.js since 0.11 and major
browsers via browserify.
Documentation
Examples
Inside a node.js module, or using browserify:
var avsc = require('avsc');Encode and decode objects:
// We can declare a schema inline: var type = avsc.parse({ name: 'Pet', type: 'record', fields: [ {name: 'kind', type: {name: 'Kind', type: 'enum', symbols: ['CAT', 'DOG']}}, {name: 'name', type: 'string'} ] }); var pet = {kind: 'CAT', name: 'Albert'}; var buf = type.toBuffer(pet); // Serialized object. var obj = type.fromBuffer(buf); // {kind: 'CAT', name: 'Albert'}
Generate random instances of a schema:
// We can also parse a JSON-stringified schema: var type = avsc.parse('{"type": "fixed", "name": "Id", "size": 4}'); var id = type.random(); // E.g. Buffer([48, 152, 2, 123])
Check whether an object fits a given schema:
// Or we can specify a path to a schema file (not in the browser): var type = avsc.parse('./Person.avsc'); var person = {name: 'Bob', address: {city: 'Cambridge', zip: '02139'}}; var status = type.isValid(person); // Boolean status.
Get a readable stream of decoded records from an Avro container file (not in the browser):
avsc.createFileDecoder('./records.avro') .on('metadata', function (type) { /* `type` is the writer's type. */ }) .on('data', function (record) { /* Do something with the record. */ });