avro-js

    1.11.0 • Public • Published

    Avro-js

    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, avro-js even runs in the browser.

    Installation

    $ npm install avro-js

    avro-js is compatible with all versions of node.js since 0.11 and major browsers via browserify.

    Documentation

    See doc/ folder.

    Examples

    Inside a node.js module, or using browserify:

    var avro = require('avro-js');
    • Encode and decode objects:

      // We can declare a schema inline:
      var type = avro.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 = avro.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 = avro.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):

      avro.createFileDecoder('./records.avro')
        .on('metadata', function (type) { /* `type` is the writer's type. */ })
        .on('data', function (record) { /* Do something with the record. */ });

    Keywords

    Install

    npm i avro-js

    DownloadsWeekly Downloads

    1,761

    Version

    1.11.0

    License

    Apache-2.0

    Unpacked Size

    169 kB

    Total Files

    13

    Last publish

    Collaborators

    • mtth
    • fokko
    • rdblue
    • sacharya
    • busbey
    • ryanskraba
    • iemejia