hashtag-stream-set
v0.2.3
Published
a StreamSet subtype that requires hashtagging to assure "stream group completeness"
Maintainers
Readme
hashtag-stream-set
A StreamSet subtype whose add method tags all input streams in order to ensure that any time a stream gets removed from the set (manually or automatically) all streams with an equal tag are deleted as well.
Get it!
npm install --save hashtag-stream-setUsage
Check out ./usage.js:
const { PassThrough } = require('stream')
const hashtagStreamSet = require('hashtag-stream-set')
// creating a HashtagStreamSet instance with a bound willDelete hook
const set = hashtagStreamSet((tag, del_streams, doDelete) => {
console.log('set.size', set.size) // 3
console.log('del_streams.length', del_streams.length) // 2
// do some kind of cleanup
del_streams.forEach(stream => stream.unpipe().destroy())
// must do this call to perform actual deletion
doDelete()
})
const a = new PassThrough()
const b = new PassThrough()
const c = new PassThrough()
set.add('#fraud', a)
set.add('#money', b, c)
set.delete('#money')
console.log('set.size', set.size) // 1Note you can optionally pass a willDelete hook as second argument to a call of the set.delete method and it will override the general one (the optional hook passed to the constructor) for the current tag deletion.
API
set = new HashtagStreamSet([willDelete(tag, del_streams, doDelete)])
Create a HashtagStreamSet instance. willDelete is an optional function that will be called with all streams that are about to be removed from the set. Removal may be triggered by an end of a stream (eos), a call to set.remove(stream) or set.delete(tag). Make sure to call the doDelete callback to perform actual deletion.
set.add(tag, ...streams)
Add one or multiple streams to the set. tag must be a string and will be set as stream._hashtag for every stream added. Note that the _hashtag property will be removed from stream instances as they get removed from the set.
set.delete(tag[, willDelete(tag, del_streams, doDelete)])
Delete all streams with their _hashtag property equal to tag. If willDelete is provided it will override any hook passed at instantiation.
