npm i @hazae41/binary
Node Package 📦
Features
Current features
- 100% TypeScript and ESM
- No external dependencies
- Unit-tested
- Zero-copy reading and writing
Usage
Cursor
Writing
const cursor = Cursor.allocUnsafe(1024)
cursor.writeUint8(123)
cursor.writeUint16(1234)
console.log(cursor.offset)
Reading
const bytes = new Uint8Array()
const cursor = new Cursor(bytes)
const uint8 = cursor.readUint8()
const uint16 = cursor.readUint16()
console.log(cursor.offset)
Binary data types
Writable
class MyObject implements Writable {
constructor(
readonly x: number,
readonly y: number
) {}
size() {
return 1 + 2
}
write(cursor: Cursor) {
cursor.writeUint8(this.x)
cursor.writeUint16(this.y)
}
}
const myobject = new MyObject(1, 515)
const bytes = Writable.toBytes(myobject)
Readable
class MyObject {
constructor(
readonly x: number,
readonly y: number
) {}
static read(cursor: Cursor) {
const x = cursor.readUint8()
const y = cursor.readUint16()
return new this(x, y)
}
}
const bytes = new Uint8Array([1, 2, 3])
const myobject = Readable.fromBytes(MyObject, bytes)
Opaque
This is a binary data type that just holds bytes, it can be used when a binary data type is required
const bytes = new Uint8Array([1, 2, 3])
const opaque = Readable.fromBytes(SafeOpaque, bytes)
const myobject = opaque.into(MyObject)
const myobject = new MyObject(1, 515)
const opaque = Opaque.from(myobject)
const bytes = Writable.toBytes(opaque)