Security News
The Unpaid Backbone of Open Source: Solo Maintainers Face Increasing Security Demands
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
concise-object-stream
Advanced tools
A simplified API for working with node object streams
This module is inspired by Rod Vagg's through2 module but by focusing purely on object streams is able to provide a more concise API, including support for returning a value or promise from a transform function.
Install via NPM
npm i concise-object-stream --save
At it's simplest a transform stream can be created from function that returns the desired value to be queued or a promise for that value:
var objectStream = require('concise-object-stream')
getKeyStream()
.pipe(objectStream.map(key => getObject(key)))
.pipe(someOtherStream)
callback shorthand style is also supported:
getKeyStream()
.pipe(objectStream.map((key, callback) => {
const obj = getObject(key);
callback(null, obj);
}))
.pipe(someOtherStream)
as is traditional style using this
:
getKeyStream()
.pipe(objectStream.map(function (key, callback) {
const obj = getObject(key);
this.push(obj);
callback();
}))
.pipe(someOtherStream)
objectStream.map([options], [transform], [flush])
Options to be passed to the stream.Transform
constructor, see here for available options.
getKeyStream()
.pipe(objectStream.map({highWaterMark: 6}, key => getObject(key)))
.pipe(someOtherStream)
The transform function will be invoked with arguments object
and callback
.
object
is the callback object on the stream, callback
indicates the end of the transform function and signal any errors.
getKeyStream()
.pipe(objectStream.map(function (key, callback) {
const obj = getObject(key);
this.push(obj);
callback();
}))
.pipe(someOtherStream)
callback
can also be called with an object as a shorthand for queuing a single object on the stream:
getKeyStream()
.pipe(objectStream.map((key, callback) => {
const obj = getObject(key);
callback(null, obj);
}))
.pipe(someOtherStream)
Instead of using callback
a value may be returned from the transform function, if the return value is a promise then this will be resolved and the result queued.
getKeyStream()
.pipe(objectStream.map(key => getObject(key)))
.pipe(someOtherStream)
If a transform function is not supplied it will default to a pass-through stream.
The flush function will be invoked with a single argument done
which can be used to indicate the end of the flush function and signal any errors.
getKeyStream()
.pipe(objectStream.map(function (key, callback) {
const obj = getObject(key);
this.push(obj);
callback();
}, function (done) {
const finalObj = getFinalObj();
this.push(obj);
done();
}))
.pipe(someOtherStream)
Like the callback
function, done
supports a shorthand for queueing a single value:
getKeyStream()
.pipe(objectStream.map((key, callback) => {
const obj = getObject(key);
callback(null, obj);
}, done => {
const finalObj = getFinalObj();
done(null, obj);
}))
.pipe(someOtherStream)
flush
also supports returning a value or promise, promises will be resolved and the result queued:
getKeyStream()
.pipe(objectStream.map(key => getObject(key), () => getFinalObj()))
.pipe(someOtherStream)
MIT
FAQs
More concise node object streams
The npm package concise-object-stream receives a total of 1 weekly downloads. As such, concise-object-stream popularity was classified as not popular.
We found that concise-object-stream demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Solo open source maintainers face burnout and security challenges, with 60% unpaid and 60% considering quitting.
Security News
License exceptions modify the terms of open source licenses, impacting how software can be used, modified, and distributed. Developers should be aware of the legal implications of these exceptions.
Security News
A developer is accusing Tencent of violating the GPL by modifying a Python utility and changing its license to BSD, highlighting the importance of copyleft compliance.