UNPKG

@webbuf/rw

Version:

Read and write buffers, optimized with Rust/WASM for the web, node.js, deno, and bun.

95 lines (69 loc) 2.45 kB
# @webbuf/rw Buffer reader and writer for sequential binary I/O. ## Installation ```bash npm install @webbuf/rw ``` ## Usage ### Writing Data ```typescript import { BufWriter } from "@webbuf/rw"; import { U8, U16BE, U32BE, U64BE } from "@webbuf/numbers"; import { FixedBuf } from "@webbuf/fixedbuf"; const writer = new BufWriter(); // Write numbers writer.writeU8(new U8(255)); writer.writeU16BE(new U16BE(1000)); writer.writeU32BE(new U32BE(123456)); writer.writeU64BE(new U64BE(0x123456789abcdef0n)); // Write fixed buffers const hash = FixedBuf.fromRandom<32>(32); writer.writeFixed(hash); // Write variable-length data writer.writeVarIntU64BE(new U64BE(1000n)); // Get result const buf = writer.toBuf(); ``` ### Reading Data ```typescript import { BufReader } from "@webbuf/rw"; import { WebBuf } from "@webbuf/webbuf"; const data = WebBuf.fromHex("ff03e8..."); const reader = new BufReader(data); // Read numbers const u8 = reader.readU8(); const u16 = reader.readU16BE(); const u32 = reader.readU32BE(); const u64 = reader.readU64BE(); // Read fixed buffers const hash = reader.readFixed<32>(32); // Read variable-length data const varInt = reader.readVarIntU64BE(); // Check remaining reader.eof(); // true if at end reader.remainder(); // remaining bytes as WebBuf ``` ## API ### BufWriter | Method | Description | | ----------------------- | ----------------------------- | | `writeU8(val)` | Write 8-bit unsigned | | `writeU16BE(val)` | Write 16-bit big-endian | | `writeU32BE(val)` | Write 32-bit big-endian | | `writeU64BE(val)` | Write 64-bit big-endian | | `writeFixed(buf)` | Write fixed-size buffer | | `writeVarIntU64BE(val)` | Write variable-length integer | | `toBuf()` | Get result as WebBuf | ### BufReader | Method | Description | | -------------------- | ---------------------------- | | `readU8()` | Read 8-bit unsigned | | `readU16BE()` | Read 16-bit big-endian | | `readU32BE()` | Read 32-bit big-endian | | `readU64BE()` | Read 64-bit big-endian | | `readFixed<N>(size)` | Read fixed-size buffer | | `readVarIntU64BE()` | Read variable-length integer | | `eof()` | Check if at end | | `remainder()` | Get remaining bytes | ## License MIT