1.1.6 • Published 9 months ago

@barchart/binary-serializer-ts v1.1.6

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

@barchart/binary-serializer-ts

NPM

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;

// Create a Serializer instance for the specified class with provided entity id and schema fields
const serializer = new Serializer<TestEntity>(entityId, schemaFields);

// Serialize the entity into a byte array
const bytes: Uint8Array = serializer.serialize(entity);

// Deserialize the byte array back into an object
const deserializedEntity = serializer.deserialize(bytes);

console.log(deserializedEntity.propertyName); // Output: Name
console.log(deserializedEntity.propertyNumber); // Output: 123

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;

// Create a Serializer instance for the specified class with provided entity id and schema fields
const serializer = new Serializer<TestEntity>(entityId, schemaFields);

// Serialize the changes into a byte array
const changes: Uint8Array = serializer.serializeChanges(currentEntity, previousEntity);

// Deserialize the changes back into an object
const deserializedEntity = serializer.deserializeChanges(changes, previousEntity);

console.log(deserializedEntity.propertyName); // Output: Name
console.log(deserializedEntity.propertyNumber); // Output: 321
1.1.1

12 months ago

1.0.2

1 year ago

1.1.0

12 months ago

1.0.1

1 year ago

1.1.6

9 months ago

1.1.5

9 months ago

1.1.4

11 months ago

1.1.3

12 months ago

1.1.2

12 months ago

0.0.1

1 year ago

1.0.0

1 year ago