5.7.7 • Published 1 year ago

avsc v5.7.7

Weekly downloads
116,555
License
MIT
Repository
github
Last release
1 year ago

Avsc NPM version Download count CI Coverage status

Pure JavaScript implementation of the Avro specification.

Features

Installation

$ npm install avsc

avsc is compatible with all versions of node.js since 0.11.

Documentation

Examples

Inside a node.js module, or using browserify:

const avro = require('avsc');
  • Encode and decode values from a known schema:

    const type = avro.Type.forSchema({
      type: 'record',
      name: 'Pet',
      fields: [
        {
          name: 'kind',
          type: {type: 'enum', name: 'PetKind', 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 = avro.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})
    ];
  • Get a readable stream of decoded values from an Avro container file compressed using Snappy (see the BlockDecoder API for an example including checksum validation):

    const snappy = require('snappy'); // Or your favorite Snappy library.
    const codecs = {
      snappy: function (buf, cb) {
        // Avro appends checksums to compressed blocks, which we skip here.
        return snappy.uncompress(buf.slice(0, buf.length - 4), cb);
      }
    };
    
    avro.createFileDecoder('./values.avro', {codecs})
      .on('metadata', function (type) { /* `type` is the writer's type. */ })
      .on('data', function (val) { /* Do something with the decoded value. */ });
  • Implement a TCP server for an IDL-defined protocol:

    // We first generate a protocol from its IDL specification.
    const protocol = avro.readProtocol(`
      protocol LengthService {
        /** Endpoint which returns the length of the input string. */
        int stringLength(string str);
      }
    `);
    
    // We then create a corresponding server, implementing our endpoint.
    const server = avro.Service.forProtocol(protocol)
      .createServer()
      .onStringLength(function (str, cb) { cb(null, str.length); });
    
    // Finally, we use our server to respond to incoming TCP connections!
    require('net').createServer()
      .on('connection', (con) => { server.createChannel(con); })
      .listen(24950);
@amtekcorp/cms2-lib-common-express@balena/open-balena-apifuriosa-pugsky@inspr-npm/chimera-client-tstm-kafka-avrolec-multitenant-api@bartvandeenen/streammachine.io-nodejs-driver@inspr/chimera-client-ts@namastetechnologies/kafka-schema-registry-clientnode-red-contrib-observertc@everything_explained/sai@noumenae/saifastify-avro@infinitebrahmanuniverse/nolb-avsarbundles-esm@amtekcorp/cms2-api-common-express@everything-registry/sub-chunk-1190library-suikafkatkafka-topics-loggerkafka-node-avrokafka-node-avro-sslkafkajs-avrokafka-avrokafka-avro-sbskafka-clientkafka-confluent-avroln-kafka-avrohemera-avrokore-schemasilc-sdkimport-customersnode-kafka-anpn8n-nodes-kafka-decimaljson-to-avromwp-tracking-pluginmeetup-event-loggermeetup-web-platformegg-kafkajsegg-kafkajs2egg-keepwork-kafkajsegr-utilsebb-coreegg-rdkafkaesgweb_clientflow-kafka-pipelineseventbus-nodegamesys-avro-schemasnode-red-contrib-prib-functionsokotokinode-test-bed-adapterpublic-schema-definitionspubsub-toolpostjpalplugit-kafkarx-dts@elephant-healthcare/confluent-schema-registry@eventicle/eventiclejs@enter-at/kafka-node-avro@fnvi/rx-avro@hijup/kafka-schema-registry@hijup/node-kafka-sr@forked-soft/avro-to-typescript@firefly-exchange/library-sui@firefly-exchange/bluefin-client-sui@j0nnyboi/arbundles@ivosequeros/kafkajs-avro@itentialopensource/adapter-kafka@itentialopensource/adapter-kafkav2@itentialopensource/adapter-gitverdon@kafkajs/confluent-schema-registry@meinestadt.de/glue-schema-registry@kaluza/kafka-node-avro@join-com/pubsub@mihiruk/publish-dataxandr-sdkwisrtoni40-confluent-schema@nimley/avro-schema-registry@hlolli/arbundles@financialforcedev/orizuru@financialforcedev/orizuru-openapi@financialforcedev/orizuru-tools@geut/moleculer-browsersocket.io-monitorsnap-shot-machinedeejay-file-querys3db.jsschema-registryschema-registry-clientschema-registry-serdesschema-repositoryrhom-serializersrefdata-storage@namaste/kafka-schema-registry-client@nypl/nypl-data-api-client@nypl/nypl-streams-client@ovotech/confluent-schema-registry@ovotech/kafka-avro-cli
5.7.7

1 year ago

5.7.6

2 years ago

5.7.5

2 years ago

5.7.4

2 years ago

5.7.3

3 years ago

5.7.2

3 years ago

5.7.1

3 years ago

5.6.3

3 years ago

5.7.0

3 years ago

5.6.2

3 years ago

5.6.1

3 years ago

5.6.0

3 years ago

5.5.3

3 years ago

5.5.2

3 years ago

5.5.1

3 years ago

5.5.0

3 years ago

5.4.22

4 years ago

5.4.21

4 years ago

5.4.20

4 years ago

5.4.19

4 years ago

5.4.18

4 years ago

5.4.17

4 years ago

5.4.16

4 years ago

5.4.15

4 years ago

5.4.14

4 years ago

5.4.13

5 years ago

5.4.12

5 years ago

5.4.11

5 years ago

5.4.10

5 years ago

5.4.9

5 years ago

6.0.0-alpha.13

5 years ago

6.0.0-alpha.12

5 years ago

5.4.7

5 years ago

5.4.6

5 years ago

5.4.5

5 years ago

5.4.4

5 years ago

5.4.3

6 years ago

5.4.2

6 years ago

6.0.0-alpha.11

6 years ago

5.4.1

6 years ago

5.4.0

6 years ago

5.3.1

6 years ago

5.3.0

6 years ago

5.2.4

6 years ago

5.2.3

6 years ago

5.2.2

6 years ago

6.0.0-alpha.10

6 years ago

5.2.1

6 years ago

6.0.0-alpha.9

6 years ago

5.2.0

6 years ago

5.1.2

6 years ago

5.1.1

6 years ago

5.1.0

6 years ago

6.0.0-alpha.8

6 years ago

6.0.0-alpha.7

6 years ago

6.0.0-alpha.6

6 years ago

6.0.0-alpha.5

6 years ago

6.0.0-alpha.4

6 years ago

5.0.7

6 years ago

6.0.0-alpha.3

6 years ago

6.0.0-alpha.2

6 years ago

6.0.0-alpha.1

6 years ago

5.0.6

7 years ago

5.0.5

7 years ago

5.0.4

7 years ago

5.0.3

7 years ago

5.0.2

7 years ago

5.0.1

7 years ago

5.0.0

7 years ago

5.0.0-rc.24

7 years ago

5.0.0-rc.23

7 years ago

5.0.0-rc.22

7 years ago

5.0.0-rc.21

7 years ago

5.0.0-rc.20

7 years ago

5.0.0-rc.19

7 years ago

5.0.0-rc19

7 years ago

5.0.0-rc.18

7 years ago

5.0.0-rc.17

7 years ago

5.0.0-rc.16

7 years ago

5.0.0-rc.15

7 years ago

5.0.0-rc.14

7 years ago

5.0.0-rc.13

7 years ago

5.0.0-rc.12

7 years ago

5.0.0-rc.11

7 years ago

5.0.0-rc.10

7 years ago

5.0.0-rc.9

7 years ago

5.0.0-rc.8

7 years ago

5.0.0-rc.7

7 years ago

5.0.0-rc.6

7 years ago

5.0.0-rc.5

7 years ago

5.0.0-rc.4

7 years ago

5.0.0-rc.3

7 years ago

5.0.0-rc.2

7 years ago

5.0.0-rc.1

7 years ago

4.1.11

7 years ago

4.1.10

7 years ago

4.1.9

7 years ago

4.1.8

7 years ago

4.1.7

8 years ago

4.1.6

8 years ago

4.1.5

8 years ago

4.1.4

8 years ago

4.1.3

8 years ago

4.1.2

8 years ago

4.1.1

8 years ago

4.1.0

8 years ago

4.0.1

8 years ago

4.0.0

8 years ago

3.4.2

8 years ago

3.4.1

8 years ago

3.4.0

8 years ago

3.3.11

8 years ago

3.3.10

8 years ago

3.3.9

8 years ago

3.3.8

8 years ago

3.3.7

8 years ago

3.3.6

8 years ago

3.3.5

8 years ago

3.3.4

8 years ago

3.3.3

8 years ago

3.3.2

8 years ago

3.3.1

8 years ago

3.3.0

8 years ago

3.2.2

8 years ago

3.2.1

8 years ago

3.2.0

8 years ago

3.1.5

8 years ago

3.1.4

8 years ago

3.1.3

8 years ago

3.1.2

8 years ago

3.1.1

8 years ago

3.1.0

8 years ago

3.0.2

8 years ago

3.0.1

8 years ago

3.0.0

8 years ago

2.5.1

8 years ago

2.5.0

8 years ago

2.4.0

8 years ago

2.3.1

8 years ago

2.3.0

8 years ago

2.2.1

8 years ago

2.2.0

8 years ago

2.1.5

8 years ago

2.1.4

8 years ago

2.1.3

8 years ago

2.1.2

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago

0.2.0

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago