Skip to content

denostack/relater

Repository files navigation

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published