2.0.43 • Published 1 year ago
@3-/proto v2.0.43
protobuf-codec
Minimal Protocol Buffers wire encoding/decoding
Example
Writer
import Writer from 'protobuf-codec/encoding/writer'
import { uint64, string } from 'protobuf-codec/encoding/types'
const w = new Writer()
w.varint(1, 1024n, uint64) // myInt
w.varint(2, 'Hello world', string) // myString
const buf = w.concat()
Reader
import Reader from 'protobuf-codec/decoding/reader'
import { uint64, string } from 'protobuf-codec/decoding/types'
const buf = new Uint8Array([ /* ... */ ])
const myInt = 0n
const myString = ''
for (const [fieldNumber, { data }] of reader(buf)) {
switch (fieldNumber) {
case 1:
myInt = uint64(data); break
case 2:
myString = string(data); break
}
}
API
Encoding
const writer = new Writer(prealloc = 256)
writer.varint(fieldNumber, value, [codec])
writer.bytes(fieldNumber, value, [codec])
writer.fixed64(fieldNumber, value, [codec])
writer.fixed32(fieldNumber, value, [codec])
const buf = writer.concat([buf], [byteOffset])
Decoding
const iter = reader(buf, [byteOffset], [byteLength])
const msg = new Uint8Array([ /* ... */ ])
for (const [fieldNumber, field] of reader(msg)) {
const {
tagOffset,
tagLen,
// The tag is essentially `fieldNumber << 3 | wireType`
fieldNumber,
wireType,
// Total length of the data, eg. including a length prefix or extra bytes for varints
len,
// The actually value of the field decoded based on the wireType:
//
// - varint: bigint
// - fixed32: Uint8Array subarray
// - fixed64: Uint8Array subarray
// - bytes: Uint8Array subarray
//
// The fixed size integers are represented as Uint8Arrays since there's no easy way
// to cast a integer to a double/float without using DataView's, which in turn expect
// a TypedArray
data
} = field
// ...
}
Install
npm install protobuf-codec
License
2.0.42
1 year ago
2.0.43
1 year ago
2.0.41
1 year ago
2.0.37
1 year ago
2.0.38
1 year ago
2.0.39
1 year ago
2.0.40
1 year ago
2.0.35
2 years ago
2.0.36
2 years ago
2.0.33
2 years ago
2.0.34
2 years ago
2.0.28
2 years ago
2.0.29
2 years ago
2.0.31
2 years ago
2.0.32
2 years ago
2.0.30
2 years ago
2.0.26
2 years ago
2.0.27
2 years ago
2.0.24
2 years ago
2.0.25
2 years ago
2.0.22
2 years ago
2.0.23
2 years ago
2.0.20
2 years ago
2.0.21
2 years ago
2.0.19
2 years ago
2.0.18
2 years ago
2.0.17
2 years ago
2.0.16
2 years ago
2.0.14
2 years ago
2.0.13
2 years ago
2.0.12
2 years ago
2.0.11
2 years ago
2.0.10
2 years ago
2.0.9
2 years ago
2.0.8
2 years ago
2.0.7
2 years ago
2.0.6
2 years ago
2.0.5
2 years ago