1.1.2 • Published 4 years ago

@ovotech/avro-logical-types v1.1.2

Weekly downloads
636
License
Apache-2.0
Repository
-
Last release
4 years ago

Avro Logical Types

Some logical types for avsc.

Using

yarn add @ovotech/avro-logical-types
import { DateType } from '@ovotech/avro-logical-types';
import { Type } from 'avsc';

const type = Type.forSchema(
  {
    type: 'record',
    fields: [{ name: 'kind', type: { type: 'enum', symbols: ['CAT', 'DOG'] } }, { name: 'name', type: 'string' }],
  },
  { logicalTypes: { date: DateType } },
);

Or with @ovotech/avro-stream

import { AvroDeserializer } from '@ovotech/avro-stream';
import { DateType, TimestampType } from '@ovotech/avro-logical-types';

const deserializer = new AvroDeserializer('http://localhost:8081', {
  logicalTypes: { date: DateType, 'timestamp-millis': TimestampType },
});

Available Types

DateType: Dates serialised as epoch days (number of days since epoch), deserialised as ISO String

DateAsDateType: Dates serialised as epoch days (number of days since epoch), deserialised as an instance of Date

TimestampType: Dates serialised as timestamp, deserialised as ISO String

TimestampAsDateType: Dates serialised as timestamp, deserialised as an instance of Date

DecimalType: Decimal, up to 64bit (or 63 bit signed), serialised as bytes, deserialised as an instance of decimal.js

Running the tests

You can run the tests with:

yarn test

Coding style (linting, etc) tests

Style is maintained with prettier and tslint

yarn lint

Deployment

Deployment is preferment by lerna automatically on merge / push to master, but you'll need to bump the package version numbers yourself. Only updated packages with newer versions will be pushed to the npm registry.

Contributing

Have a bug? File an issue with a simple example that reproduces this so we can take a look & confirm.

Want to make a change? Submit a PR, explain why it's useful, and make sure you've updated the docs (this file) and the tests (see test folder).

License

This project is licensed under Apache 2 - see the LICENSE file for details