Garbage In, Garbage Out!
Encode and decode binary data structures using TypeScript and the Web Streams API.
Note: Prefer using explicit version tag (e.g. @0.0.4), especially since
0.0.* versions are likely to contain small but breaking changes while the API
is being settled.
Uint8, Uint16, Uint32, BigUint64, Int8, Int16, Int32, BigInt64,
Bytes, BytesRef, Struct, Tuple, Vec, Utf8, CString, PrefixString
// util.ts
function asBytes(source: BufferSource): Uint8Array;
function cat(arrays: BufferSource[]): Uint8Array;
function view(source: BufferSource): DataView;
// mod.ts
const SYSTEM_ENDIAN: Endian;
async function readN(
source: Source<Uint8Array>,
n: number,
): Promise<Uint8Array>;
async function write<T>(
sink: Sink<T>,
chunk: T,
): Promise<void>;Also see examples/ directory.
import { Buffer, write } from "https://deno.land/x/bitbin@0.0.4/mod.ts";
import { Uint8, Utf8 } from "https://deno.land/x/bitbin@0.0.4/formats/mod.ts";
const buf = new Buffer();
const enc = new TextEncoder().encode("Hello, World!");
await Uint8.writeTo(buf, enc.byteLength);
await write(buf, enc);
const size = await Uint8.readFrom(buf);
const text = await Utf8(size).readFrom(buf);
console.log(text);import { Buffer } from "https://deno.land/x/bitbin@0.0.4/mod.ts";
import {
CString,
Float32,
Int8,
Struct,
} from "https://deno.land/x/bitbin@0.0.4/formats/mod.ts";
const Player_t = Struct({
age: Int8,
name: CString,
score: Float32.be,
});
const sink = new Buffer();
await Player_t.writeTo(sink, {
age: 23,
name: "Joe Bloggs",
score: 42.3,
});
console.log(sink.bytes());
console.log(await Player_t.readFrom(sink));import { ZeroCopyBuf } from "https://deno.land/x/bitbin@0.0.4/mod.ts";
const zcbuf = new ZeroCopyBuf(23);
const window = await zcbuf.fillExactFrom(source);
console.log(window);Available under the Mozilla Public License v2.0.
Use of Deno Standard Library utilities (Buffer) under
MIT License.