# bser

> JavaScript implementation of the BSER Binary Serialization

Latest version **2.1.1** (published 2019-10-22) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install bser
pnpm add bser
yarn add bser
bun add bser
```

## Health

**Score 43/100 (D)** — status: abandoned.

Positive: has types package; no vulnerabilities; high maintenance score; high quality score; popular repo.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 2.1.1 |
| Published | 2019-10-22 |
| First published | 2015-08-24 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | separate (@types/bser) |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 17.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 13714 |
| Author | Wez Furlong |
| Maintainers | amasad, kassens, wez |
| Keywords | bser, binary, protocol |

## Links

- npm: https://www.npmjs.com/package/bser
- Repository: https://github.com/facebook/watchman
- Homepage: https://facebook.github.io/watchman/docs/bser.html
- Issues: https://github.com/facebook/watchman/issues
- npm.io page: https://npm.io/package/bser

## Dependencies (1)

- [node-int64](https://npm.io/package/node-int64.md) ^0.4.0

## Recent versions

- 2.1.1 (latest) — 2019-10-22
- 2.1.0 — 2019-06-21
- 2.0.0 — 2017-01-30
- 1.0.3 — 2017-01-27
- 1.0.2 — 2015-08-25
- 1.0.1 — 2015-08-24
- 1.0.0 — 2015-08-24

## README

# BSER Binary Serialization

BSER is a binary serialization scheme that can be used as an alternative to JSON.
BSER uses a framed encoding that makes it simpler to use to stream a sequence of
encoded values.

It is intended to be used for local-IPC only and strings are represented as binary
with no specific encoding; this matches the convention employed by most operating
system filename storage.

For more details about the serialization scheme see
[Watchman's docs](https://facebook.github.io/watchman/docs/bser.html).

## API

```js
var bser = require('bser');
```

### bser.loadFromBuffer

The is the synchronous decoder; given an input string or buffer,
decodes a single value and returns it.  Throws an error if the
input is invalid.

```js
var obj = bser.loadFromBuffer(buf);
```

### bser.dumpToBuffer

Synchronously encodes a value as BSER.

```js
var encoded = bser.dumpToBuffer(['hello']);
console.log(bser.loadFromBuffer(encoded)); // ['hello']
```

### BunserBuf

The asynchronous decoder API is implemented in the BunserBuf object.
You may incrementally append data to this object and it will emit the
decoded values via its `value` event.

```js
var bunser = new bser.BunserBuf();

bunser.on('value', function(obj) {
  console.log(obj);
});
```

Then in your socket `data` event:

```js
bunser.append(buf);
```

## Example

Read BSER from socket:

```js
var bunser = new bser.BunserBuf();

bunser.on('value', function(obj) {
  console.log('data from socket', obj);
});

var socket = net.connect('/socket');

socket.on('data', function(buf) {
  bunser.append(buf);
});
```

Write BSER to socket:

```js
socket.write(bser.dumpToBuffer(obj));
```

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