1.3.4 • Published 6 months ago

@hazae41/binary v1.3.4

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago
npm i @hazae41/binary

Node Package 📦

Features

Current features

  • 100% TypeScript and ESM
  • No external dependencies
  • Zero-copy reading and writing
  • Rust-like patterns
  • Unit-tested

Usage

Writable

class MyObject implements Writable {

  constructor(
    readonly x: number,
    readonly y: number
  ) {}

  size() {
    return 1 + 2
  }

  write(cursor: Cursor): Result<void, Error> {
    return Result.unthrowSync(() => {
      cursor.tryWriteUint8(this.x).throw()
      cursor.tryWriteUint16(this.y).throw()

      return Ok.void()
    })
  }

}
const myobject = new MyObject(1, 515)
const bytes = Writable.tryWriteToBytes(myobject).unwrap() // Uint8Array([1, 2, 3])

Readable

class MyObject {

  constructor(
    readonly x: number,
    readonly y: number
  ) {}

  static read(cursor: Cursor): Result<MyObject, Error> {
    return Result.unthrowSync(() => {
      const x = cursor.tryReadUint8().throw()
      const y = cursor.tryReadUint16().throw()

      return new Ok(new this(x, y))
    })
  }

}
const bytes = new Uint8Array([1, 2, 3])
const myobject = Readable.tryReadFromBytes(MyObject, bytes).unwrap() // MyObject(1, 515)

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.tryReadFromBytes(SafeOpaque, bytes).unwrap() // Opaque(Uint8Array([1, 2, 3]))
const myobject = opaque.tryInto(MyObject).unwrap() // MyObject(1, 515)
const myobject = new MyObject(1, 515)
const opaque = Opaque.tryWriteFrom(myobject).unwrap() // Opaque(Uint8Array([1, 2, 3]))
const bytes = Writable.tryWriteToBytes(opaque).unwrap() // Uint8Array([1, 2, 3])
1.3.4

6 months ago

1.3.3

6 months ago

1.3.2

6 months ago

1.3.1

8 months ago

1.3.0

8 months ago

1.2.35

8 months ago

1.2.12

1 year ago

1.2.13

1 year ago

1.2.11

1 year ago

1.2.17

1 year ago

1.2.14

1 year ago

1.2.15

1 year ago

1.2.18

1 year ago

1.2.19

1 year ago

1.2.20

1 year ago

1.2.23

12 months ago

1.2.24

12 months ago

1.2.21

1 year ago

1.2.22

1 year ago

1.2.27

12 months ago

1.2.28

12 months ago

1.2.25

12 months ago

1.2.26

12 months ago

1.2.29

12 months ago

1.2.30

12 months ago

1.2.31

12 months ago

1.2.34

11 months ago

1.2.32

11 months ago

1.2.33

11 months ago

1.2.0

1 year ago

1.2.8

1 year ago

1.1.9

1 year ago

1.2.7

1 year ago

1.1.8

1 year ago

1.2.6

1 year ago

1.2.5

1 year ago

1.2.4

1 year ago

1.2.3

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

1.1.12

1 year ago

1.1.11

1 year ago

1.1.10

1 year ago

1.2.9

1 year ago

1.2.10

1 year ago

1.1.7

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago