highland-piper
Version:
Create highland pipelines with abort and finalize logic.
28 lines (18 loc) • 1.04 kB
JavaScript
;
var piper = require('./index');
var h = require('highland');
var stream = h([{name: 'John', rating: 1}, {name: 'Tom', rating: 2}, {name: 'Sam', rating: 3}]);
var pipeline = piper('experiences');
pipeline
.add('addInfo', h.doto( obj => obj.info = obj.rating > 1 ? 'Experienced' : 'Beginner'))
.abort('ignoreExperienced', obj => /experienced/i.test(obj.info))
.add('assignWork', h.doto( obj => obj.work = 'Do extra work.'))
.finally(h.doto( obj => delete obj.rating));
pipeline.exec('foo', { bar: 0 }, (err, result) => console.log('\nFOO', result));
pipeline.exec('addInfo', { rating: 2 }, (err, result) => console.log('\nADD_INFO', result));
pipeline.exec('assignWork', { rating: 2 }, (err, result) => console.log('\nassignWork', result));
pipeline.exec('ignoreExperienced', { rating: 1, info: 'Beginner' }, (err, result) => console.log('\nIGNORE_EXPERIENCED', result));
pipeline.exec('finally', { rating: 1 }, (err, result) => console.log('\nFINALLY', result));
stream
.through(pipeline.consumer)
.each(h.log);