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