ssb-uri2
October 31, 2022 ยท View on GitHub
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