# ssb-uri2

> Utilities for recognizing and converting SSB URIs

Latest version **2.4.1** (published 2022-11-04) · LGPL-3.0 license · 0 weekly downloads

## Install

```sh
npm install ssb-uri2
pnpm add ssb-uri2
yarn add ssb-uri2
bun add ssb-uri2
```

## 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 | 2.4.1 |
| Published | 2022-11-04 |
| First published | 2021-05-12 |
| Weekly downloads | 0 |
| License | LGPL-3.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=10 |
| Dependencies | 1 |
| Unpacked size | 30.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 11 |
| Author | Andre Staltz |
| Maintainers | staltz, arj03 |
| Keywords | ssb, uri |

## Links

- npm: https://www.npmjs.com/package/ssb-uri2
- Repository: https://github.com/staltz/ssb-uri2
- Homepage: https://github.com/staltz/ssb-uri2#readme
- Issues: https://github.com/staltz/ssb-uri2/issues
- npm.io page: https://npm.io/package/ssb-uri2

## Dependencies (1)

- [ssb-typescript](https://npm.io/package/ssb-typescript.md) ^2.5.0

## Recent versions

- 2.4.1 (latest) — 2022-11-04
- 2.4.0 — 2022-10-31
- 2.3.0 — 2022-10-20
- 2.2.0 — 2022-10-14
- 2.1.0 — 2022-09-13
- 2.0.2 — 2022-07-19
- 2.0.1 — 2022-07-19
- 2.0.0 — 2022-07-14
- 1.9.0 — 2022-06-19
- 1.8.1 — 2022-05-23
- 1.8.0 — 2022-05-22
- 1.7.2 — 2022-03-03
- 1.7.1 — 2022-02-28
- 1.7.0 — 2022-02-08
- 1.6.1 — 2022-02-01
- … 12 more at https://npm.io/package/ssb-uri2/versions

## README

# ssb-uri2

> An SSB utility library for handling and converting SSB URIs

This library provides utilities that recognize SSB URIs according to the [spec](https://github.com/ssb-ngi-pointer/ssb-uri-spec), and is compatible with [ssb-uri](https://github.com/fraction/ssb-uri) (prior work), while adding more support and more utilities.

## Install

```
npm install ssb-uri2
```

## Example

```js
const ssbUri = require('ssb-uri2');

const exampleURI =
  'ssb:message/classic/g3hPVPDEO1Aj_uPl0-J2NlhFB2bbFLIHlty-YuqFZ3w=';

ssbUri.isClassicMessageSSBURI(exampleURI);
// true

ssbUri.toMessageSigil(exampleURI);
// '%g3hPVPDEO1Aj/uPl0+J2NlhFB2bbFLIHlty+YuqFZ3w=.sha256'
```

## Boolean APIs

### `isSSBURI(uri: string | uri): boolean`

### `isClassicFeedSSBURI(uri: string | null): boolean`

### `isBendyButtV1FeedSSBURI(uri: string | null): boolean`

### `isButtwooV1FeedSSBURI(uri: string | null): boolean`

### `isIndexedV1FeedSSBURI(uri: string | null): boolean`

### `isGabbyGroveV1FeedSSBURI(uri: string | null): boolean`

### `isFeedSSBURI(uri: string | null): boolean`

### `isClassicMessageSSBURI(uri: string | null): boolean`

### `isBendyButtV1MessageSSBURI(uri: string | null): boolean`

### `isGabbyGroveV1MessageSSBURI(uri: string | null): boolean`

### `isButtwooV1MessageSSBURI(uri: string | null): boolean`

### `isIndexedV1MessageSSBURI(uri: string | null): boolean`

### `isMessageSSBURI(uri: string | null): boolean`

### `isClassicBlobSSBURI(uri: string | null): boolean`

### `isAddressSSBURI(uri: string | null): boolean`

### `isEncryptionKeyBox2DMDiffieHellmanSSBURI(uri: string | null): boolean`

### `isIdentityPOBoxSSBURI(uri: string | null): boolean`

### `isIdentityGroupSSBURI(uri: string | null): boolean`

### `isIdentityFusionSSBURI(uri: string | null): boolean`

### `isIdentitySSBURI(uri: string | null): boolean`

### `isExperimentalSSBURI(uri: string | null): boolean`

### `isExperimentalSSBURIWithAction(action: string): (uri: string) => boolean`

## Regular Expressions

### `getFeedSSBURIRegex() => RegExp`

### `getMessageSSBURIRegex() => RegExp`

## Conversion APIs

### `fromFeedSigil(sigil: string): string`

### `fromMessageSigil(sigil: string): string`

### `fromBlobSigil(sigil: string): string`

### `fromMultiserverAddress(msaddr: string): string`

### `toFeedSigil(uri: string): string | null`

### `toMessageSigil(uri: string): string | null`

### `toBlobSigil(uri: string): string | null`

### `toMultiserverAddress(uri: string): string | null`

### `compose(parts: {type, format, data, extraData}): string`

### `decompose(uri: string): {type, format, data, extraData}`

The object `{type, format, data}` is such that it matches `ssb:${type}/${format}/${data}`, except the `data` is always in normal Base64 (i.e. **not** URI safe).

There is also the case of `extraData` for special URIs such as `ssb:feed/buttwoo-v1/${data}/${extraData}`.

## License

LGPL-3.0

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