relater
TypeScript icon, indicating that this package has built-in type declarations

0.4.2 • Public • Published

relater

Relater seamlessly maps ArrayBuffer content to user-defined objects.

Build Coverage License Language Typescript
deno.land/x/relater Version Downloads

Usage

with Deno

import { Relater } from "https://deno.land/x/relater/mod.ts";

const relater = new Relater(
  {
    type: "object",
    of: [
      { name: "i8", type: "i8" },
      { name: "u8", type: "u8" },
      { name: "i16", type: "i16" },
      { name: "u16", type: "u16" },
      { name: "i32", type: "i32" },
      { name: "u32", type: "u32" },
      { name: "i64", type: "i64" },
      { name: "u64", type: "u64" },
      { name: "f32", type: "f32" },
      { name: "f64", type: "f64" },
      { name: "string", type: "string", size: 16 },
    ],
  } as const satisfies RelateRule,
);

const buffer = new Uint8Array([/* ... */]);
// decode
const value = relater.decode(buffer.buffer);

console.log(value); // { i8: 0, u8: 0, i32: 0, u32: 0, i64: 0n, u64: 0n }

value.i8 = 1;
value.u8 = 2;

// encode
const encoded = relater.encode(value);

console.log(encoded); // 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)
object object Object type
array Array Array type

Package Sidebar

Install

npm i relater

Weekly Downloads

5

Version

0.4.2

License

MIT

Unpacked Size

32.2 kB

Total Files

36

Last publish

Collaborators

  • wan2land