36 lines
1.1 KiB
JavaScript
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;
|
|
}
|