relater
Relater seamlessly maps ArrayBuffer content to user-defined objects.
Usage
with Deno
import { Relater } from "https://deno.land/x/relater/mod.ts";
const relater = new Relater(
[
{ name: "i8", type: "i8" },
{ name: "u8", type: "u8" },
{ name: "i32", type: "i32" },
{ name: "u32", type: "u32" },
{ name: "i64", type: "i64" },
{ name: "u64", type: "u64" },
{ name: "f32", type: "f32" },
{ name: "f64", type: "f64" },
] as const,
);
const buffer = new Uint8Array([/* ... */]);
const obj = relater.relate(buffer.buffer);
// Get Values
console.log(obj); // { i8: 0, u8: 0, i32: 0, u32: 0, i64: 0n, u64: 0n }
// Set Values
obj.i8 = 1;
obj.u8 = 2;
console.log(buffer); // Uint8Array(8) [ 1, 2, ... ]
with Node.js & Browser
Install
npm install relater
import { Relater } from "relater";
// Usage is as above :-)
Supported Types
Type | JavaScript Equivalent | Description |
---|---|---|
f64 |
number |
64-bit floating point number |
f32 |
number |
32-bit floating point number |
i64 |
bigint |
64-bit signed integer |
u64 |
bigint |
64-bit unsigned integer |
i32 |
number |
32-bit signed integer |
u32 |
number |
32-bit unsigned integer |
i16 |
number |
16-bit signed integer |
u16 |
number |
16-bit unsigned integer |
i8 |
number |
8-bit signed integer |
u8 |
number |
8-bit unsigned integer |
string |
string |
String type (length is based on buffer) |