@avro/common-types

Common Avro types

Usage no npm install needed!

<script type="module">
  import avroCommonTypes from 'https://cdn.skypack.dev/@avro/common-types';
</script>

README

Avro types NPM version

Pure JavaScript implementation of the Avro specification.

Features

Installation

$ npm install @avro/types

@avro/types is compatible with all versions of node.js since 0.11.

Examples

Inside a node.js module, or using browserify:

const {Type} = require('@avro/types');
  • Encode and decode values from a known schema:

    const type = Type.forSchema({
      type: 'record',
      fields: [
        {name: 'kind', type: {type: 'enum', symbols: ['CAT', 'DOG']}},
        {name: 'name', type: 'string'}
      ]
    });
    
    const buf = type.toBuffer({kind: 'CAT', name: 'Albert'}); // Encoded buffer.
    const val = type.fromBuffer(buf); // = {kind: 'CAT', name: 'Albert'}
    
  • Infer a value's schema and encode similar values:

    const type = Type.forValue({
      city: 'Cambridge',
      zipCodes: ['02138', '02139'],
      visits: 2
    });
    
    // We can use `type` to encode any values with the same structure:
    const bufs = [
      type.toBuffer({city: 'Seattle', zipCodes: ['98101'], visits: 3}),
      type.toBuffer({city: 'NYC', zipCodes: [], visits: 0})
    ];