binkv
Typescript library for encoding & decoding binary data
Field
Fields store basic data, example:
import { Field } from 'binkv';
const firstname = Field.string("john");
const age = Field.int32(42);
const colors = Field.auto(['red', 'green', 'blue']);
Structure
Structures stores multiple fields, example:
import { Structure, Field } from 'binkv';
const struct = new Structure();
struct.writeField(Field.int32(5013));
struct.writeField(Field.string("hello"));
console.log(struct.data)
To decode a structure:
import { Structure, Field } from 'binkv';
const number = struct.readField().toInt32();
const stringValue = struct.readField().toString();
Dictionary
Dictionaries are basically key-value stores.
const dict = Dictionary.create({
firstname: 'john',
lastname: 'doe',
age: 42,
friend: {
firstname: 'david',
lastname: 'sharp',
age: 41
}
});
dict.getField('firstname')?.toString();
dict.getField('lastname')?.toString();
dict.getField('age')?.toInt32();
const innerDict = dict.getDict('friend');
innerDict?.getField('firstname')?.toString();
innerDict?.getField('lastname')?.toString();
innerDict?.getField('age')?.toInt32();
const encoded = dict.getStructure();
const decoded = Dictionary.fromStructure(encoded);
decoded.getField('firstname')?.toString();
decoded.getField('lastname')?.toString();
decoded.getField('age')?.toInt32();
const decodedInnerDict = decoded.getDict('friend');
decodedInnerDict?.getField('firstname')?.toString();
decodedInnerDict?.getField('lastname')?.toString();
decodedInnerDict?.getField('age')?.toInt32();