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

Dependencies (0)

    Dev Dependencies (0)

      Package Sidebar

      Install

      npm i relater

      Weekly Downloads

      9

      Version

      0.4.2

      License

      MIT

      Unpacked Size

      32.2 kB

      Total Files

      36

      Last publish

      Collaborators

      • wan2land