@ovotech/avro-logical-types

v1.1.2
Some logical types for avsc

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

npm i @ovotech/avro-logical-types

Metadata

Downloads

Maintainers

adamfielding, agaovo, amelia.ovo, annedroiid, asalvadore, asummers-ovo, ben.plommer, boost-smile, chris.smith, clarencedglee, connelldave, dimitarg, elbird, emilyrigby, ericaovo, fgkramer, filose, franciskoneovo, freddybushboy, gmbovo, grug, hayfield-ovo, henrymoulton, hentielouw, hersheyovo, hike-zzz, ikerin, iuna4e, jelaxshan, joelthornhill, joepurnell-ovo, joewhittles, jonevans4, juliabutterly, jvmovo, kelveden, kenneth-gray, kevrowe, kieran.allen, kostasovo, laurieboyes, lcatallo, marcesquerra, marcu.iulian13, marcusgriff, martinmcnulty, mbayoumy, mibon-ovo, mkohlmyr, molbalazs, mrkiplin, mwidurek, nabilboag, nathanovo, nazar.hrytsuniak, nicolasov, odunka, oli-boyle, olmesm, orex-team, orion-migration-team, ovo-devices, ovo-engagement, ovo.cms.devs, ovocms, ovoiinkov, ovotech-boost, ovotech-identity, ovotech-live, ovotech-payg, ovotech-paym, ovotech-payments, ovotech-qs, ovotech-sa, ovotech-sg, ovotech-sme-team, pdpi_ovo, pedoublety, petro.pavlenko, philip-ovo, potsec, props, radek_tomasek, ritagb, rosario-ovo, samjacobclift, sampennington64, sarahlikeshiny, shipperizer, sketchingdev, smart-heat-prod, smart-heat-uat, sophiepoole, sophiesillmanovo, spark-ewan, takac, taras_tymovskyi, taurelius-ovo, tech.international, teodora_kacharova, teodora.danciu, tokict, tomshawovo, tomverran-ovo, tozzy, viciouskitten, yesdaveovo,