# ssb-conn-db

> Module that manages a local registry of connectable peers

Latest version **1.0.5** (published 2022-07-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install ssb-conn-db
pnpm add ssb-conn-db
yarn add ssb-conn-db
bun add ssb-conn-db
```

## Health

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

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.5 |
| Published | 2022-07-20 |
| First published | 2019-03-04 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 164.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 7 |
| Author | Andre Staltz |
| Maintainers | staltz, arj03 |

## Links

- npm: https://www.npmjs.com/package/ssb-conn-db
- Repository: https://github.com/staltz/ssb-conn-db
- Issues: https://github.com/staltz/ssb-conn-db/issues
- npm.io page: https://npm.io/package/ssb-conn-db

## Dependencies (5)

- [debug](https://npm.io/package/debug.md) ^4.3.1
- [ssb-ref](https://npm.io/package/ssb-ref.md) >=2.13.9
- [pull-notify](https://npm.io/package/pull-notify.md) ~0.1.2
- [atomic-file-rw](https://npm.io/package/atomic-file-rw.md) ^0.3.0
- [multiserver-address](https://npm.io/package/multiserver-address.md) ~1.0.1

## Recent versions

- 1.0.5 (latest) — 2022-07-20
- 1.0.4 — 2021-08-16
- 1.0.3 — 2021-05-16
- 1.0.2 — 2021-04-30
- 1.0.1 — 2021-02-26
- 1.0.0 — 2021-02-24
- 0.3.3 — 2020-09-14
- 0.3.2 — 2020-04-04
- 0.3.1 — 2020-01-24
- 0.3.0 — 2020-01-20
- 0.2.1 — 2019-08-21
- 0.2.0 — 2019-06-26
- 0.1.0 — 2019-04-25
- 0.0.8 — 2019-03-20
- 0.0.7 — 2019-03-15
- … 6 more at https://npm.io/package/ssb-conn-db/versions

## README

# ssb-conn-db

Module that manages a local registry of connectable peers. For use with the [SSB CONN](https://github.com/staltz/ssb-conn) family of modules.

*Visual metaphor: a shelf of binders used for archival, holding static data on peers
and their previous addresses used for connections.*

![db.png](./db.png)

## Usage

This module is only used to create an SSB CONN plugin, not used directly by applications. A ConnDB instance should be available on the CONN plugin, with the following API:

## API

* `new ConnDB(opts)`: constructor for a connDB instance, with the following options:
  - `opts.path` (default `'~/.ssb'`): path to the directory where the database will be stored
  - `opts.writeTimeout` (default `2000` milliseconds): interval to wait when batching database writes in the filesystem
* `connDB.set(address, data)`: insert or update a connectable peer by its `address` (string, must conform to the [multiserver address convention](https://github.com/dominictarr/multiserver-address)) with `data` (object). If updating the data, it will *merge* the previous properties with the new properties. Returns the `connDB` instance.
* `connDB.update(address, data)`: update a connectable peer by its `address` (string, must conform to the [multiserver address convention](https://github.com/dominictarr/multiserver-address)) with `data` (object). If the peer is not in the database, this method performs no operations and silently returns. Returns the `connDB` instance.
* `connDB.update(address, updater)`: update a connectable peer by its `address` (string, must conform to the [multiserver address convention](https://github.com/dominictarr/multiserver-address)) with `updater` (a function where input is the previous data object and output should be the new data object). If the peer is not in the database, this method performs no operations and silently returns. Returns the `connDB` instance.
* `connDB.replace(address, data)`: insert or update a connectable peer by its `address` (string, must conform to the [multiserver address convention](https://github.com/dominictarr/multiserver-address)) with `data` (object). If updating the data, it will *replace* the previous properties with the new properties. Returns the `connDB` instance.
* `connDB.get(address)`: returns the data for an existing peer with the given `address`, or `undefined` if the address was not registered
* `connDB.getAddressForId(id)`: returns the connection address for an existing peer with the given SSB feed `id`, or `undefined` if the address does not exist
* `connDB.has(address)`: returns `true` if the given `address` is registered in the database, `false` otherwise
* `connDB.delete(address)`: remove an address and its associated data from the database. Returns `true` if the address existed and was deleted, `false` otherwise.
* `connDB.entries()`: returns a new `Iterator` object that gives `[address, data]` pairs
* `connDB.listen()`: returns a pull stream that notifies of changes made to the database, as an object `{type, address}` where `type` is either `'insert'`, `'update'`, or `'delete'`
* `connDB.loaded()`: returns a Promise that resolves successfully when the initial database loading (read) occurs, and rejects if there was a failure to load.
* `connDB.close()`: finishes writing any pending updates to the database, then gets ready for destroying this instance.

Notice that the API above mostly mirrors the API of the JavaScript [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map).

## License

MIT

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