Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
base class for creating generic pull-sinks that write to some device via an async call.
base class for creating generic pull-sinks that write to some device via an async call.
async function called with an array of items to output.
This function will only ever be called once at a time (per instance),
and while it is working pull-write
will buffer any subsequent writes,
until the buffer has the length of at most max
,
or asyncWrite
has called back.
queue
is the current backlog of data the pull-write
is getting ready to write.
item
is the next incoming item. reduce
must add item
into queue
in whatever way is appropiate. If queue
is empty, then it will be null
.
Your reduce
function must handle that case and set an initial value.
by default, reduce
will be a function that initializes a buffer,
and then pushes the new items onto that buffer, this means max
will be
compared to the number of items in that buffer.
A number, when the .length
property of the queue
returned by reduce
gets this big pull-write
will stop reading more, until asyncWrite
calls back.
Suppose we want a to take a stream of values from one leveldb, and write it to another. If we have the timestamp they where written to the first, we can track that in the second, then it's easy to keep them both up to date. We just need to always output latest ts separately.
var Write = require('pull-write')
var LevelWrite = function (db, cb) {
var max = 100
return Write(function (ary, cb) {
db.batch(ary, cb)
}, function (queue, data) {
if(!queue)
queue = [{key: '~meta~ts', value: 0, type: 'put'}]
queue.push({key:data.key, value: data.value, type: 'put'})
//the record of the current sequence is always the first value
//in the batch, so we can update it easily.
queue[0].value = data.ts
return queue
}, max, cb)
}
MIT
FAQs
base class for creating generic pull-sinks that write to some device via an async call.
We found that pull-write 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.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.