36 lines
1.1 KiB
JavaScript

import { BaseTypeHandler, CompoundTypeHandler } from './type-handler.mjs';
export { BASIC_TYPES, FixedArrayHandler, DynamicArrayHandler, CompoundTypeHandler } from './type-handler.mjs';
/**
* Serializes JavaScript value to binary.
* @param {any} value - value to serialize.
* @param {BaseTypeHandler} type - type handler of the value.
* @returns {ArrayBuffer} - the serialized binary buffer.
*/
export function serializeToBinary(value, type) {
if (!(type instanceof BaseTypeHandler)) {
type = new CompoundTypeHandler(type);
}
const res = new ArrayBuffer(type.sizeof(value));
const view = new DataView(res);
type.serialize(view, 0, value);
return res;
}
/**
* Deserializes binary back to JavaScript value.
* @param {DataView} view - buffer to deserialize.
* @param {BaseTypeHandler} type - type handler of the desired value.
* @returns {any} - the deserialized JavaScript value.
*/
export function deserializeFromBinary(view, type) {
if (!(type instanceof BaseTypeHandler)) {
type = new CompoundTypeHandler(type);
}
const tmp = type.deserialize(view, 0);
return tmp.value;
}