{"_id":"pull-write","_rev":"4577842","name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","dist-tags":{"latest":"1.1.4"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"time":{"modified":"2026-04-10T15:49:04.000Z","created":"2016-02-17T23:23:19.474Z","1.1.4":"2017-06-09T08:01:22.732Z","1.1.3":"2017-06-09T07:58:55.196Z","1.1.2":"2017-04-15T18:02:23.805Z","1.1.1":"2016-10-25T18:34:30.392Z","1.1.0":"2016-08-31T10:44:26.354Z","1.0.2":"2016-02-22T03:16:47.482Z","1.0.1":"2016-02-22T02:37:52.930Z","0.0.0":"2016-02-17T23:23:19.474Z"},"users":{},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"versions":{"1.1.4":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"1.1.4","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{"looper":"^4.0.0","pull-cat":"^1.1.11","pull-stream":"^3.4.5"},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"f840043a6333fd0acfa505fb6e7fe41ead81d548","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@1.1.4","_shasum":"dddea31493b48f6768b84a281d01eb3b531fe0b8","_from":".","_npmVersion":"4.1.1","_nodeVersion":"7.8.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"dddea31493b48f6768b84a281d01eb3b531fe0b8","size":3618,"noattachment":false,"key":"/pull-write/-/pull-write-1.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-1.1.4.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pull-write-1.1.4.tgz_1496995282647_0.9504290614277124"},"directories":{},"publish_time":1496995282732,"_hasShrinkwrap":false,"_cnpm_publish_time":1496995282732,"_cnpmcore_publish_time":"2021-12-16T20:51:32.542Z"},"1.1.3":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"1.1.3","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{"looper":"^4.0.0","pull-cat":"^1.1.11","pull-stream":"^3.4.5"},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"b89b63cde6a83c5cc364dbba080c1858cb8cf9f4","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@1.1.3","_shasum":"8687056f903f163099b810eef8f04f3e242c43a3","_from":".","_npmVersion":"4.1.1","_nodeVersion":"7.8.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"8687056f903f163099b810eef8f04f3e242c43a3","size":3614,"noattachment":false,"key":"/pull-write/-/pull-write-1.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-1.1.3.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pull-write-1.1.3.tgz_1496995135084_0.6507955954875797"},"directories":{},"publish_time":1496995135196,"_hasShrinkwrap":false,"_cnpm_publish_time":1496995135196,"_cnpmcore_publish_time":"2021-12-16T20:51:32.720Z"},"1.1.2":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"1.1.2","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{"looper":"^4.0.0","pull-cat":"^1.1.11","pull-stream":"^3.4.5"},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"7bc303cba1a542941cff390b79240d2216e67896","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@1.1.2","_shasum":"60274aa478f8c827710b92095325331ab175fdd2","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"60274aa478f8c827710b92095325331ab175fdd2","size":3591,"noattachment":false,"key":"/pull-write/-/pull-write-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-1.1.2.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/pull-write-1.1.2.tgz_1492279343472_0.8824475700967014"},"directories":{},"publish_time":1492279343805,"_hasShrinkwrap":false,"_cnpm_publish_time":1492279343805,"_cnpmcore_publish_time":"2021-12-16T20:51:32.938Z"},"1.1.1":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"1.1.1","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{"pull-cat":"^1.1.11","pull-stream":"^3.4.5"},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"3875e7164e090409e9057a489aa0f841ac07c766","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@1.1.1","_shasum":"52460417d6e63e1b0c76628d168bb673182df040","_from":".","_npmVersion":"3.9.3","_nodeVersion":"6.4.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"52460417d6e63e1b0c76628d168bb673182df040","size":3563,"noattachment":false,"key":"/pull-write/-/pull-write-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-1.1.1.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/pull-write-1.1.1.tgz_1477420468396_0.8089436341542751"},"directories":{},"publish_time":1477420470392,"_hasShrinkwrap":false,"_cnpm_publish_time":1477420470392,"_cnpmcore_publish_time":"2021-12-16T20:51:33.146Z"},"1.1.0":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"1.1.0","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"fd9329829765521c8b0020246affdaacc9d1a344","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@1.1.0","_shasum":"7c1d132ce9a2ef75102c2354fe5d7b107bb510b8","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.4.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"7c1d132ce9a2ef75102c2354fe5d7b107bb510b8","size":3506,"noattachment":false,"key":"/pull-write/-/pull-write-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-1.1.0.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/pull-write-1.1.0.tgz_1472640263697_0.1081188686657697"},"directories":{},"publish_time":1472640266354,"_hasShrinkwrap":false,"_cnpm_publish_time":1472640266354,"_cnpmcore_publish_time":"2021-12-16T20:51:33.418Z"},"1.0.2":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"1.0.2","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"020aaae6a7737eded6b9e2e88728677c6a8aceeb","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@1.0.2","_shasum":"833f48f71d68f2cf359ff013a366fd4fea367456","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.6.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"833f48f71d68f2cf359ff013a366fd4fea367456","size":3285,"noattachment":false,"key":"/pull-write/-/pull-write-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-1.0.2.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/pull-write-1.0.2.tgz_1456111004568_0.251390180317685"},"directories":{},"publish_time":1456111007482,"_hasShrinkwrap":false,"_cnpm_publish_time":1456111007482,"_cnpmcore_publish_time":"2021-12-16T20:51:33.628Z"},"1.0.1":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"1.0.1","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"1042410339d5248f6ef2a94503e46e2e33f5a911","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@1.0.1","_shasum":"519b07bb95d1424dfa5726c131f4c71aac8f73f9","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.6.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"519b07bb95d1424dfa5726c131f4c71aac8f73f9","size":3182,"noattachment":false,"key":"/pull-write/-/pull-write-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-1.0.1.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/pull-write-1.0.1.tgz_1456108669816_0.13174723414704204"},"directories":{},"publish_time":1456108672930,"_hasShrinkwrap":false,"_cnpm_publish_time":1456108672930,"_cnpmcore_publish_time":"2021-12-16T20:51:33.831Z"},"0.0.0":{"name":"pull-write","description":"base class for creating generic pull-sinks that write to some device via an async call.","version":"0.0.0","homepage":"https://github.com/dominictarr/pull-write","repository":{"type":"git","url":"git://github.com/dominictarr/pull-write.git"},"dependencies":{},"devDependencies":{"pull-cat":"^1.1.9","pull-stream":"^3.1.0","tape":"^4.4.0"},"scripts":{"test":"set -e; for t in test/*.js; do node $t; done"},"author":{"name":"Dominic Tarr","email":"dominic.tarr@gmail.com","url":"http://dominictarr.com"},"license":"MIT","gitHead":"9e835d50d752f4e779795c253545adb8abf2be56","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"_id":"pull-write@0.0.0","_shasum":"71cdfb8393e159aa997253129873e928cc023acd","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.3.0","_npmUser":{"name":"dominictarr","email":"dominic.tarr@gmail.com"},"dist":{"shasum":"71cdfb8393e159aa997253129873e928cc023acd","size":3095,"noattachment":false,"key":"/pull-write/-/pull-write-0.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/pull-write/download/pull-write-0.0.0.tgz"},"maintainers":[{"name":"arj03","email":""},{"name":"dominictarr","email":"dominic.tarr@gmail.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/pull-write-0.0.0.tgz_1455751397268_0.50787657010369"},"directories":{},"publish_time":1455751399474,"_hasShrinkwrap":false,"_cnpm_publish_time":1455751399474,"_cnpmcore_publish_time":"2021-12-16T20:51:34.080Z"}},"readme":"# pull-write\n\nbase class for creating generic pull-sinks\nthat write to some device via an async call.\n\n\n## Write(asyncWrite, reduce, max, cb)\n\n### asyncWrite(ary, cb)\n\nasync function called with an array of items to output.\nThis function will only ever be called once at a time (per instance),\nand while it is working `pull-write` will buffer any subsequent writes,\nuntil the buffer has the length of at most `max`,\nor `asyncWrite` has called back.\n\n### reduce (queue, item)\n\n`queue` is the current backlog of data the `pull-write` is getting ready to write.\n`item` is the next incoming item. `reduce` must add `item` into `queue`\nin whatever way is appropiate. If `queue` is empty, then it will be `null`.\nYour `reduce` function must handle that case and set an initial value.\n\nby default, `reduce` will be a function that initializes a buffer,\nand then pushes the new items onto that buffer, this means `max` will be\ncompared to the number of items in that buffer.\n\n### max\n\nA number, when the `.length` property of the `queue` returned by `reduce`\ngets this big `pull-write` will stop reading more, until asyncWrite\ncalls back.\n\n## example\n\nSuppose we want a to take a stream of values from one leveldb,\nand write it to another. If we have the timestamp they where written\nto the first, we can track that in the second, then it's easy to keep\nthem both up to date. We just need to always output latest ts separately.\n\n``` js\nvar Write = require('pull-write')\n\nvar LevelWrite = function (db, cb) {\n  var max = 100\n  return Write(function (ary, cb) {\n    db.batch(ary, cb)\n  }, function (queue, data) {\n    if(!queue)\n      queue = [{key: '~meta~ts', value: 0, type: 'put'}]\n    queue.push({key:data.key, value: data.value, type: 'put'})\n    //the record of the current sequence is always the first value\n    //in the batch, so we can update it easily.\n    queue[0].value = data.ts\n    return queue\n  }, max, cb)\n}\n\n```\n\n\n## License\n\nMIT\n\n\n\n\n\n\n\n\n\n\n","_attachments":{},"homepage":"https://github.com/dominictarr/pull-write","bugs":{"url":"https://github.com/dominictarr/pull-write/issues"},"license":"MIT"}