Package Exports
- datastore-pubsub
Readme
datastore-pubsub
Responsible for providing an interface-datastore compliant api to pubsub
Table of contents
Install
$ npm i datastore-pubsub
Usage
import { PubSubDatastore } from 'datastore-pubsub'
const dsPubsub = new PubSubDatastore(pubsub, datastore, peerId, validator)
API
Setup
new PubSubDatastore(pubsub, datastore, peerId, validator, subscriptionKeyFn)
Creates a DatastorePubsub instance.
Arguments:
pubsub
(Object): implementation of a pubsub (must have publish and subscribe functions), such as libp2p/pubsub.datastore
(Object): datastore compliant with interface-datastore, such as datastore-fs.peerId
(PeerId
Instance): peer identifier object.validator
(Object): containing validate function and select function.subscriptionKeyFn
(function): function to manipulate the key topic received according to the needs, as well as to block the message received to be published.
Note: validator
object must be composed by two functions, validate (record: uint8Array, peerId: PeerId) => boolean
and select (received: uint8Array, current: uint8Array) => boolean
. validate
aims to verify if a new record received by pubsub is valid to be stored locally by the node. If it is valid and the node already has a local record stored, select
is the function provided to be responsible for deciding which record is the best (newer) between the already stored and the received through pubsub. A validator
example can be found at: TODO (js-ipns)
const dsPubsub = new DatastorePubsub(pubsub, datastore, peerId, validator)
Get
const buf = await dsPubsub.get(key)
Try to subscribe a topic with Pubsub and receive the current local value if available.
Arguments:
key
(Uint8Array): a key representing a unique identifier of the object to subscribe.
Returns Promise<Uint8Array>
containing the most recent known record stored.
Put
await dsPubsub.put(key, val)
Publishes a value through pubsub.
Arguments:
key
(Uint8Array): a key representing a unique identifier of the object to publish.val
(Uint8Array): value to be propagated.
Returns Promise<void>
Unsubscribe
await dsPubsub.unsubscribe(key)
Unsubscribe a previously subscribe value.
Arguments:
key
(Uint8Array): a key representing a unique identifier of the object to publish.
Returns Promise<void>
Contribute
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.
License
Licensed under either of
- Apache 2.0, (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
- MIT (LICENSE-MIT / http://opensource.org/licenses/MIT)
Contribute
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.