@barchart/binary-serializer-ts
![NPM](https://img.shields.io/npm/v/@barchart/binary-serializer-ts)
Structure
-
BinarySerializer: All source code for the Binary Serializer library is in the src
directory. This includes the core serialization logic, attribute definitions, buffer management, schema factories, and any other utilities required for the serialization and deserialization processes.
-
Tests: The tests
directory contains a group of tests ensuring the library's reliability.
Example Usage
Here are some simple examples of the library's usage:
Serialize a Snapshot
import { Serializer, SchemaField, DataType } from '@barchart/binary-serializer-ts';
class TestEntity {
propertyName: string;
propertyNumber: number;
}
const entityId: number = 1;
const schemaFields: SchemaField[] = [
{ name: 'propertyName', type: DataType.string, isKey: true },
{ name: 'propertyNumber', type: DataType.int, isKey: false }
];
const entity = new TestEntity();
entity.propertyName = 'Name';
entity.propertyNumber = 123;
const serializer = new Serializer<TestEntity>(entityId, schemaFields);
const bytes: Uint8Array = serializer.serialize(entity);
const deserializedEntity = serializer.deserialize(bytes);
console.log(deserializedEntity.propertyName);
console.log(deserializedEntity.propertyNumber);
Serialize Changes:
import { Serializer, SchemaField, DataType } from '@barchart/binary-serializer-ts';
class TestEntity {
propertyName: string;
propertyNumber: number;
}
const entityId: number = 1;
const schemaFields: SchemaField[] = [
{ name: 'propertyName', type: DataType.string, isKey: true },
{ name: 'propertyNumber', type: DataType.int, isKey: false }
];
const previousEntity = new TestEntity();
previousEntity.propertyName = 'Name';
previousEntity.propertyNumber = 123;
const currentEntity = new TestEntity();
currentEntity.propertyName = 'Name';
currentEntity.propertyNumber = 321;
const serializer = new Serializer<TestEntity>(entityId, schemaFields);
const changes: Uint8Array = serializer.serializeChanges(currentEntity, previousEntity);
const deserializedEntity = serializer.deserializeChanges(changes, previousEntity);
console.log(deserializedEntity.propertyName);
console.log(deserializedEntity.propertyNumber);