Comment on page

Class serializer

@node-ts/bus-class-serializer leverages class transformer to provide serialization/deserialization to class instances. This means that class based properties of messages like javascript Dates can be consumed directly without having to do additional custom deserialization in each handler.


Install @node-ts/bus-class-serializer and its dependencies
npm install @node-ts/bus-class-serializer reflect-metadata class-transformer
Configure bus to use the serializer
import { Bus } from '@node-ts/bus-core'
import { ClassSerializer } from '@node-ts/bus-class-serializer'
.withSerializer(new ClassSerializer())
This package relies on class transformer that requires reflect-metadata to be installed and called at the start of your application before any other imports. Please follow their guides on how to configure your app and contracts to serialize correctly.

Strongly typed messages

Once the @node-ts/bus-class-serializer has been installed and configured, you can consume class transformer notation for object properties of your messages.
For example
import { Command } from '@node-ts/bus-messages'
import { Type } from 'class-transformer'
class Update extends Command {
// Provide a @Type hint so that class-transformer can deserialize this at runtime
@Type(() => Date) readonly date: Date
constructor (
date: Date
) { = date