# protocol-buffers-encodings

> Base encodings for protocol-buffers

Latest version **1.2.0** (published 2022-08-02) · MIT license · 0 weekly downloads

## Install

```sh
npm install protocol-buffers-encodings
pnpm add protocol-buffers-encodings
yarn add protocol-buffers-encodings
bun add protocol-buffers-encodings
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2022-08-02 |
| First published | 2018-01-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 14.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 20 |
| Author | Mathias Buus |
| Maintainers | mafintosh |

## Links

- npm: https://www.npmjs.com/package/protocol-buffers-encodings
- Repository: https://github.com/mafintosh/protocol-buffers-encodings
- Issues: https://github.com/mafintosh/protocol-buffers-encodings/issues
- npm.io page: https://npm.io/package/protocol-buffers-encodings

## Dependencies (3)

- [b4a](https://npm.io/package/b4a.md) ^1.6.0
- [varint](https://npm.io/package/varint.md) 5.0.0
- [signed-varint](https://npm.io/package/signed-varint.md) ^2.0.1

## Recent versions

- 1.2.0 (latest) — 2022-08-02
- 1.1.1 — 2020-09-28
- 1.1.0 — 2018-01-17
- 1.0.0 — 2018-01-17

## README

# protocol-buffers-encodings

Base encodings for [protocol-buffers](https://github.com/mafintosh/protocol-buffers).

```
npm install protocol-buffers-encodings
```

Note: use Node.js >= 16.15.0 to avoid a performance regression due to a slower `Buffer.subarray` function.

[![build status](https://travis-ci.org/mafintosh/protocol-buffers-encodings.svg?branch=master)](https://travis-ci.org/mafintosh/protocol-buffers-encodings)

Moved into its own module for lighter installs

## Usage

``` js
var encodings = require('protocol-buffers-encodings')
var buf = Buffer.alloc(4096)

encodings.string('hi', buf, 0)
console.log(encodings.string(buf, 0)) // prints 'hi'
```

## API

In general all encoders follow this API

#### `buffer = enc.encode(value, buffer, offset)`

Encode a value. `buffer` should be a buffer big enough to fit the value, `offset` should be the byte offset in the buffer where you want to write it.
The buffer is returned for convenience.

After a value has been encoded `enc.encode.bytes` contains the amount of bytes used in the buffer.

#### `value = enc.decode(buffer, offset)`

Decode a value. `buffer` should be an encoded value and `offset` should be the byte offset where you want to start decoding.

After a value has been decoded `enc.decode.bytes` contains the amount of bytes that was consumed from the buffer.

#### `var len = enc.encodingLength(value)`

Use this method to calculate how much space is needed to encode a value.

#### `enc.type`

A number indicating the protobuf wire type for the encoding

## Encodings

The following encodings are available

* `encodings.bytes` - encode a buffer
* `encodings.string` - encode a string
* `encodings.bool` - encode a boolean
* `encodings.uint64` - encode a uint64 to varint
* `encodings.uint32` - encode a uint32 to varint
* `encodings.sint64` - encode a signed int64 to a signed varint
* `encodings.sint32` - encode a signed int32 to a signed varint
* `encodings.int64` - encode a signed int64 to a varint
* `encodings.int32` - encode a signed int32 to a varint
* `encodings.fixed32` - encode a uint32 to a fixed 4 byte buffer
* `encodings.sfixed32` - encode a signed int32 to a fixed 4 byte buffer
* `encodings.fixed64` - encode a uint64 (represented as a buffer) to a fixed 8 byte buffer
* `encodings.sfixed64` - encode a signed int64 (represented as a buffer) to a fixed 8 byte buffer
* `encodings.double` - encode a double
* `encodings.float` - encode a float
* `encodings.enum` - encode a numeric enum as a varint

## License

MIT

---
_Source: https://npm.io/package/protocol-buffers-encodings · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
