{"_id":"stream-worker","_rev":"21-f4925de8af07c352b64647cb2d6e06e9","name":"stream-worker","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","dist-tags":{"latest":"2.0.2"},"versions":{"0.0.0":{"name":"stream-worker","version":"0.0.0","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"eng@goodeggs.com","url":"http://bites.goodeggs.com"},"license":"BSD","_id":"stream-worker@0.0.0","dist":{"shasum":"8f581d78e028cf1c8bd610c14cd392b067dac801","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-0.0.0.tgz","integrity":"sha512-beQlUiBlUAIxrOFm3XcoXwkl21jnSNxkcsrd2Io6vU9F8FjTFNGwRqULlo6vqmSzvBccloaeUGo7rtUJ3tP2Ng==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCp528gadRThNSCxNiD8J4eqCwJqOG8oRdHtT0Q4AqrSgIhANkctn79tY9ZLtd/iFZqN3d56khD5T+33JRPh2dT1NXw"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"hurrymaplelad","email":"adam@hmlad.com"},"maintainers":[{"name":"hurrymaplelad","email":"adam@hmlad.com"}],"directories":{}},"0.0.1":{"name":"stream-worker","version":"0.0.1","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"eng@goodeggs.com","url":"http://bites.goodeggs.com"},"license":"BSD","devDependencies":{"expect.js":"~0.2.0","sinon":"~1.7.3","sinon-expect":"~0.2.0","grunt-contrib-jshint":"~0.6.3","grunt-simple-mocha":"~0.4.0","matchdep":"~0.1.2"},"engines":{"node":"~0.10.0"},"_id":"stream-worker@0.0.1","dist":{"shasum":"004dc8d8994bca41b0b0a6131784caa6db243f01","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-0.0.1.tgz","integrity":"sha512-Av0uJbqho5wY3HiYxB2zDtQ5IfsIAKjDmG9WVHdHouBlwe46g1Vsz9rT+wnBW2SpbV2T5yhBBB/PVDkRWR6/CQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiJfyt/SI1s3/Jm3/q2UmRfwZmDJas4ZhgzBcuWY4dbwIhAIuUB5/VvpxpHzZvZmXnByzMG467KiFe/UM5bmpoqRXG"}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"hurrymaplelad","email":"adam@hmlad.com"},"maintainers":[{"name":"hurrymaplelad","email":"adam@hmlad.com"}],"directories":{}},"1.0.0":{"name":"stream-worker","version":"1.0.0","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"eng@goodeggs.com","url":"http://bites.goodeggs.com"},"license":"BSD","devDependencies":{"expect.js":"~0.2.0","sinon":"~1.7.3","sinon-expect":"~0.2.0","grunt-contrib-jshint":"~0.6.3","grunt-simple-mocha":"~0.4.0","matchdep":"~0.1.2"},"engines":{"node":"~0.10.0"},"dependencies":{"bluebird":"^3.1.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"gitHead":"a65eef9c586fb0125fb2494161e6881db4cae136","bugs":{"url":"https://github.com/goodeggs/stream-worker/issues"},"homepage":"https://github.com/goodeggs/stream-worker","_id":"stream-worker@1.0.0","_shasum":"22d91fb6fcb21e2c6a43b0528ae8882f20341cb2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"hurrymaplelad","email":"adam@hmlad.com"},"maintainers":[{"name":"goodeggs","email":"open-source@goodeggs.com"},{"name":"hurrymaplelad","email":"adam@hmlad.com"}],"dist":{"shasum":"22d91fb6fcb21e2c6a43b0528ae8882f20341cb2","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-1.0.0.tgz","integrity":"sha512-LHfp1VLETamp6cceACcAMgLVh94lHX/48ZwDxORb+qwe7KvJDNlCSUl48xZSK1zBHWlqDzcqRTpfMividO0WGw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCOAm8IrleKkYvUBjJhuXcbBuJdp3qzfal+sWvodAfPHAIhAKBjLHY6VUI1HYuxdyXmM9Rs1MaLn1TNL7yG3x1mL4NM"}]},"directories":{}},"1.0.1":{"name":"stream-worker","version":"1.0.1","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git+https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"eng@goodeggs.com","url":"http://bites.goodeggs.com"},"license":"BSD","devDependencies":{"expect.js":"~0.2.0","sinon":"~1.7.3","sinon-expect":"~0.2.0","grunt-contrib-jshint":"~0.6.3","grunt-simple-mocha":"~0.4.0","matchdep":"~0.1.2"},"engines":{"node":"~0.10.0"},"dependencies":{"bluebird":"^3.1.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"gitHead":"3b5a90e1579fc28c797d2bacbcf02ab0ad01699e","bugs":{"url":"https://github.com/goodeggs/stream-worker/issues"},"homepage":"https://github.com/goodeggs/stream-worker#readme","_id":"stream-worker@1.0.1","_shasum":"9327b0aae096939bdce8dc6dc0735af7a60daa47","_from":".","_npmVersion":"3.7.5","_nodeVersion":"0.10.43","_npmUser":{"name":"goodeggs","email":"open-source@goodeggs.com"},"dist":{"shasum":"9327b0aae096939bdce8dc6dc0735af7a60daa47","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-1.0.1.tgz","integrity":"sha512-ci3thz0T/mUu5XOVJeIHOFkdv/g3MGW6FGDm1MfMvR9gTRV/7iWzttKEfr3G/g+yP0QRJf9TbwHUnAOU1nFLig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJ8KHycsjQyhlFV9GE66QjFG2YEEsmfELZBOkjerG5yQIgNybE54wqjbClPOnqJB1MCdasHAvbOxSryJANbWyyUrM="}]},"maintainers":[{"name":"goodeggs","email":"open-source@goodeggs.com"},{"name":"hurrymaplelad","email":"adam@hmlad.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/stream-worker-1.0.1.tgz_1458613628145_0.2091273101978004"},"directories":{}},"1.0.2":{"name":"stream-worker","version":"1.0.2","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git+https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"eng@goodeggs.com","url":"http://bites.goodeggs.com"},"license":"BSD","devDependencies":{"expect.js":"~0.2.0","sinon":"~1.7.3","sinon-expect":"~0.2.0","grunt-contrib-jshint":"~0.6.3","grunt-simple-mocha":"~0.4.0","matchdep":"~0.1.2"},"engines":{"node":"~0.10.0"},"dependencies":{"bluebird":"^3.1.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"gitHead":"c811d6ddc0ee337482dfb294c29a709b6ec98757","bugs":{"url":"https://github.com/goodeggs/stream-worker/issues"},"homepage":"https://github.com/goodeggs/stream-worker#readme","_id":"stream-worker@1.0.2","_shasum":"bb43451c86cc19ca6358b87a2f48b2430af92981","_from":".","_npmVersion":"2.15.0","_nodeVersion":"0.10.44","_npmUser":{"name":"goodeggs","email":"open-source@goodeggs.com"},"dist":{"shasum":"bb43451c86cc19ca6358b87a2f48b2430af92981","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-1.0.2.tgz","integrity":"sha512-+nW6lwYq2BNRW/CNc4XM3kixN3aTQTZQfZmFgRuVw7QW8lu28vAejqx6HoigZFdzqqOZcF6rKGwQ8oPJU5sk6g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbZO99p19DKm4vg8ONq/VLptRrL3LPWQR+HOLLd+y1wgIhAIYIWXgqhur7Dbd82zBrw1c2ZJ4S8ggt5vkGnc9WNf8N"}]},"maintainers":[{"name":"goodeggs","email":"open-source@goodeggs.com"},{"name":"hurrymaplelad","email":"adam@hmlad.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/stream-worker-1.0.2.tgz_1461864277880_0.6230974490754306"},"directories":{}},"2.0.0":{"name":"stream-worker","version":"2.0.0","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git+https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"eng@goodeggs.com","url":"http://bites.goodeggs.com"},"license":"BSD","devDependencies":{"expect.js":"~0.2.0","grunt":"^0.4.0","grunt-contrib-jshint":"~0.6.3","grunt-simple-mocha":"~0.4.0","matchdep":"~0.1.2","sinon":"~1.7.3","sinon-expect":"~0.2.0"},"engines":{"node":"~0.10.0"},"dependencies":{"bluebird":"^3.1.1"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"gitHead":"7dc83e47a49893b43480c56528e7e58e0e88721a","bugs":{"url":"https://github.com/goodeggs/stream-worker/issues"},"homepage":"https://github.com/goodeggs/stream-worker#readme","_id":"stream-worker@2.0.0","_shasum":"5de2d7f6c3109712004444538d7a351918875b1f","_from":".","_npmVersion":"2.15.1","_nodeVersion":"0.10.45","_npmUser":{"name":"goodeggs","email":"open-source@goodeggs.com"},"dist":{"shasum":"5de2d7f6c3109712004444538d7a351918875b1f","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-2.0.0.tgz","integrity":"sha512-/EkfkPyQvCIrtrZCe33cIJ3w4QktP/wxdt43FdnbTmEVhMRjd4I1n8eaDF4i4FhwMDAeA3EyM3cSoM1xIk8/6g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHZTOBSzBPF5pcWfpJ8HA/gL5ZJokHFKXs6tQoRcaRYZAiEAhLDf09PjT0bZcnRHGMyDAxyxVsZIY9VGQ92wWx3EMcY="}]},"maintainers":[{"name":"goodeggs","email":"open-source@goodeggs.com"},{"name":"hurrymaplelad","email":"adam@hmlad.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/stream-worker-2.0.0.tgz_1465494339651_0.9628562750294805"},"directories":{}},"2.0.1":{"name":"stream-worker","version":"2.0.1","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git+https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"eng@goodeggs.com","url":"http://bites.goodeggs.com"},"license":"BSD","devDependencies":{"expect.js":"~0.2.0","grunt":"^0.4.0","grunt-contrib-jshint":"~0.6.3","grunt-simple-mocha":"~0.4.0","matchdep":"~0.1.2","sinon":"~1.7.3","sinon-expect":"~0.2.0"},"engines":{"node":"~0.10.0"},"dependencies":{"bluebird":"^3.1.1"},"publishConfig":{"registry":"https://registry.npmjs.org/","always-auth":true},"gitHead":"9c7a6b7ee7ef8a63ea8395b509671af412688bfa","bugs":{"url":"https://github.com/goodeggs/stream-worker/issues"},"homepage":"https://github.com/goodeggs/stream-worker#readme","_id":"stream-worker@2.0.1","_shasum":"3c2c495f1682472ca313290dbfd11ff69f862c2a","_from":".","_npmVersion":"3.7.1","_nodeVersion":"4.3.0","_npmUser":{"name":"sylspren","email":"lhuang09@gmail.com"},"dist":{"shasum":"3c2c495f1682472ca313290dbfd11ff69f862c2a","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-2.0.1.tgz","integrity":"sha512-GjUC8w0GggBgyyccracWp7EJ0ExI0GvBtFzLUiyJspFFgL6Jpj0sdYCIbZYMfvw6A+SS+rgbfXdUCMxF/Jj9Kg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGTy1uNxK8sHcl9GHEfI+TbjJABoruyzBtovay1Zw/O7AiAcmeiFe9W86ZEBcyupoUU/yhzwgSGA1hQaVMySsskRqw=="}]},"maintainers":[{"name":"goodeggs","email":"open-source@goodeggs.com"},{"name":"hurrymaplelad","email":"adam@hmlad.com"},{"name":"sylspren","email":"lhuang09@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/stream-worker-2.0.1.tgz_1468882466681_0.24841340957209468"},"directories":{}},"2.0.2":{"name":"stream-worker","version":"2.0.2","description":"Execute an async function per stream data event, pausing the stream when a concurrency limit is saturated","main":"stream-worker.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git+https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"author":{"name":"Good Eggs","email":"open-source@goodeggs.com"},"license":"MIT","devDependencies":{"expect.js":"~0.2.0","grunt":"^0.4.0","grunt-contrib-jshint":"~0.6.3","grunt-simple-mocha":"~0.4.0","matchdep":"~0.1.2","mocha":"~2.5.3","sinon":"~1.7.3","sinon-expect":"~0.2.0"},"engines":{"node":"~0.10.0"},"dependencies":{"bluebird":"^3.1.1"},"publishConfig":{"registry":"https://registry.npmjs.org/","always-auth":true},"gitHead":"66dd304adcaeeb7c116b1578cd18e8ef82215880","bugs":{"url":"https://github.com/goodeggs/stream-worker/issues"},"homepage":"https://github.com/goodeggs/stream-worker#readme","_id":"stream-worker@2.0.2","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5y+ms21neu/sHtvjXyuSWtxpr2teKxB1CHOECU7EqoR+u8IVZ7PL7ZWDXcFVad0J/kgqVfCn8WSBeFrDzjSRcw==","shasum":"26598c5da0b6243fecc523da4c57e4bee48d35ad","tarball":"https://registry.npmjs.org/stream-worker/-/stream-worker-2.0.2.tgz","fileCount":7,"unpackedSize":10203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUJPLCRA9TVsSAnZWagAA/vYP+wdpKiqND7q6t+RTdnqB\nPAUi95jou6cB+zeXy4SCB+AwOeSy6pnWVEI0NX9MDEMYvthzEZw+cB9hE4+N\nd+cdw46KJ0ud2sqNZdWtzCCH0/XbaaaSSXRw9mHDH98MClHNeforcjrjWi0I\n6yC3ox/BVUifwmzmPW1SJXiZCzfs+aT+KgTZ2x1FurhueCT/cb2ZNnvZolJJ\n9EEmsTenNZyvq6PWGOeIXhGQaSWkcIadX/+hLhZSg11hsB41tUIgCYlTV0wn\n3pHxHIyEyriM+4cCEya+ET40qc1Ij7MA4dx+aizZpnX3fAnzARHvlpWP+Pj2\nCK3BViUoJwPkmDBrzDlHgWwTLoVLQtWAHPXcUiuxNrwU3uJutV8wcx1bp0Ug\ntBFv93aYTFfTwAfZFtossaAXhBBPQk3jiEkAbNTDswHZJDzqUUnGp/4h4QJt\nnZyNWEbyalajY0i9kH7rmMpWU4AN5uJRQArQbx3hiK96vhJ+Gscg5IlTjqUH\nyu82LTDMF2VPb2Cx56kk3qi8n98nFQ5dSpF9MOAbniepUAqPuy8A173aRiUM\nVXRvBf8u04GC1JDOTGOn7rHOvE9z+UEbWOow5yZ7FtxgjcqBEX4EfVphdsL6\n9nBg3OQazQbZQSDQfN9dO6CQB+HAvNOSjIyfhr69rigguC56EnZNrbC/YQmv\n6Hnf\r\n=Nw5t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNNztJYQZ4pac434Z1I7gueMhSrNIybObRgSnULohGcAiEA6y5fLr4ot4NHobZ+ZuwR1zZaQXW7AZQrpwFgrpVs+uI="}]},"maintainers":[{"email":"open-source@goodeggs.com","name":"goodeggs-admin"},{"email":"adam@hmlad.com","name":"hurrymaplelad"},{"email":"lhuang09@gmail.com","name":"sylspren"}],"_npmUser":{"name":"goodeggs-admin","email":"open-source@goodeggs.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stream-worker_2.0.2_1599116235059_0.6323177934147"},"_hasShrinkwrap":false}},"readme":"stream-worker  [![build status](https://secure.travis-ci.org/goodeggs/stream-worker.png)](http://travis-ci.org/goodeggs/stream-worker)\n=============\n\nExecute an async function per [stream](http://nodejs.org/api/stream.html) data event, pausing the stream when a concurrency limit is saturated.  Inspired by [async.queue](https://github.com/caolan/async#queue), optimized for streams.\n\nSupports promises and callbacks.\n\n\nThe Basics\n----------\n\n```\nnpm install stream-worker\n```\n\nRequiring:\n\n```js\nvar streamWorker = require('stream-worker');\n```\n\n\nPromise style:\n```js\nfunction doWork(data){\n  /* ... do some work with data ... */\n  return Promise.resolve();\n}\nstreamWorker(stream, doWork, {promises : true, concurrency : 10})\n.then(function() {\n  /* ... the stream is exhausted and all workers are finished ... */\n}, function(err) {\n  /* ... there was an error processing the stream ... */\n})\n```\n\n\nCallback style:\n\n```js\n\nfunction doWork(data, done){\n  /* ... do some work with data ... */\n  return done(err);;\n}\nstreamWorker(stream, doWork, {promises : false, concurrency :10},\n  function(err) {\n    /* ... the stream is exhauseted and all workers are finished ... */\n  }\n);\n```\n\nSignature\n---------\nstreamWorker(**stream**, **work**, **options**, **done**)\n\nWhere **options** is an object with 2 optional parameters:\n\n| Parameter     | Default       | Description|\n|------------- |-------------| -----|\n| promises      |false| true if you want to use the above promises style|\n| concurrency| 10|specifies how many concurrent workers you want doing work in the stream |\n\nAnd **done** is a callback function if you use the callback workflow.\n\n\n","maintainers":[{"email":"open-source@goodeggs.com","name":"goodeggs-admin"},{"email":"adam@hmlad.com","name":"hurrymaplelad"},{"email":"lhuang09@gmail.com","name":"sylspren"}],"time":{"modified":"2022-06-27T00:51:34.979Z","created":"2013-08-07T05:40:56.888Z","0.0.0":"2013-08-07T05:40:58.445Z","0.0.1":"2013-08-21T23:43:36.862Z","1.0.0":"2016-01-05T19:11:07.093Z","1.0.1":"2016-03-22T02:27:08.598Z","1.0.2":"2016-04-28T17:24:39.064Z","2.0.0":"2016-06-09T17:45:42.162Z","2.0.1":"2016-07-18T22:54:26.923Z","2.0.2":"2020-09-03T06:57:15.159Z"},"author":{"name":"Good Eggs","email":"open-source@goodeggs.com"},"repository":{"type":"git","url":"git+https://github.com/goodeggs/stream-worker.git"},"keywords":["stream","worker","async","queue"],"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/goodeggs/stream-worker#readme","bugs":{"url":"https://github.com/goodeggs/stream-worker/issues"}}