Awesome
ssb-uri2
An SSB utility library for handling and converting SSB URIs
This library provides utilities that recognize SSB URIs according to the spec, and is compatible with ssb-uri (prior work), while adding more support and more utilities.
Install
npm install ssb-uri2
Example
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