{"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"dist-tags":{"latest":"1.1.1"},"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"description":"Like through2 except runs in parallel with limited concurrency","readme":"through2-concurrent\n===================\n\n[![NPM](https://nodei.co/npm/through2-concurrent.png?downloads&downloadRank)](https://nodei.co/npm/through2-concurrent/)\n\nA simple way to create a Node.JS Transform stream which processes in\nparallel. You can limit the concurrency (default is 16) and order is\n*not* preserved (so chunks/objects can end up in a different order to\nthe order they started in if the transform functions take different\namounts of time).\n\nBuilt using [through2](https://github.com/rvagg/through2) and has the\nsame API with the addition of a `maxConcurrency` option.\n\nNon-`objectMode` streams are supported for completeness but I'm not\nsure they'd be useful for anything.\n\nWritten by Thomas Parslow\n([almostobsolete.net](http://almostobsolete.net) and\n[tomparslow.co.uk](http://tomparslow.co.uk)) as part of Active Inbox\n([activeinboxhq.com](http://activeinboxhq.com/)).\n\n[![Build Status](https://travis-ci.org/almost/through2-concurrent.svg)](https://travis-ci.org/almost/through2-concurrent)\n\n\nInstall\n-------\n\n```bash\nnpm install --save through2-concurrent\n```\n\nExamples\n--------\n\nProcess lines from a CSV in paralel. The order the results end up in\nthe `all` variable is not deterministic.\n\n```javascript\nvar through2Concurrent = require('through2-concurrent');\n\nvar all = [];\n\nfs.createReadStream('data.csv')\n  .pipe(csv2())\n  .pipe(through2Concurrent.obj(\n    {maxConcurrency: 10},\n    function (chunk, enc, callback) {\n      var self = this;\n      someThingAsync(chunk, function (newChunk) {\n        self.push(newChunk);\n        callback();\n      });\n  }))\n  .on('data', function (data) {\n    all.push(data)\n  })\n  .on('end', function () {\n    doSomethingSpecial(all)\n  })\n```\n\n\nContributing\n------------\n\nFixed or improved stuff? Great! Send me a pull request [through GitHub](http://github.com/almost/through2-concurrent)\nor get in touch on Twitter [@almostobsolete][#tom-twitter] or email at tom@almostobsolete.net\n\n[#tom]: http://www.almostobsolete.net\n[#tom-twitter]: https://twitter.com/almostobsolete\n","repository":{"type":"git","url":"git+https://github.com/almost/through2-concurrent.git"},"users":{"timhudson":true,"abdihaikal":true,"ifeature":true,"itonyyo":true},"bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"license":"MIT","versions":{"0.1.0":{"name":"through2-concurrent","version":"0.1.0","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrency.js","scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"https://github.com/almost/through2-concurrent"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^1.21.4","underscore":"^1.7.0"},"dependencies":{"through2":"^0.6.3"},"gitHead":"2935c6208cebb4520e0e365d2722822d159031c9","homepage":"https://github.com/almost/through2-concurrent","_id":"through2-concurrent@0.1.0","_shasum":"774c44a9e349377e9fcee3b01d2b338ad48ef87f","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"774c44a9e349377e9fcee3b01d2b338ad48ef87f","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-0.1.0.tgz"},"directories":{}},"0.2.0":{"name":"through2-concurrent","version":"0.2.0","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrent.js","scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"https://github.com/almost/through2-concurrent"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^1.21.4","underscore":"^1.7.0"},"dependencies":{"through2":"^0.6.3"},"gitHead":"4e9b86b1cc82dca5adac26cf0082cf5d6c3fa54f","homepage":"https://github.com/almost/through2-concurrent","_id":"through2-concurrent@0.2.0","_shasum":"3770cec6417678ae3060a23cb15cbff9b527f844","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"3770cec6417678ae3060a23cb15cbff9b527f844","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-0.2.0.tgz"},"directories":{}},"0.3.0":{"name":"through2-concurrent","version":"0.3.0","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrent.js","scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"https://github.com/almost/through2-concurrent"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^1.21.4","underscore":"^1.7.0"},"dependencies":{"through2":"^0.6.3"},"gitHead":"e6b7fa48acfb33080f633a5689ca4e6c970fe8c7","homepage":"https://github.com/almost/through2-concurrent","_id":"through2-concurrent@0.3.0","_shasum":"7ef8eae7e0b078fc8b658e6e2c11f51ace8631fa","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"7ef8eae7e0b078fc8b658e6e2c11f51ace8631fa","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-0.3.0.tgz"},"directories":{}},"0.3.1":{"name":"through2-concurrent","version":"0.3.1","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrent.js","files":["through2-concurrent.js"],"scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"https://github.com/almost/through2-concurrent"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^1.21.4","underscore":"^1.7.0"},"dependencies":{"through2":"^0.6.3"},"gitHead":"9f930a42a3aa2a7754940bca1fefedea15590434","homepage":"https://github.com/almost/through2-concurrent","_id":"through2-concurrent@0.3.1","_shasum":"8e6e5dfdfdf8ccc610269d1d442408d430468380","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"8e6e5dfdfdf8ccc610269d1d442408d430468380","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-0.3.1.tgz"},"directories":{}},"0.4.0":{"name":"through2-concurrent","version":"0.4.0","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrent.js","files":["through2-concurrent.js"],"scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"https://github.com/almost/through2-concurrent"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^1.21.4","underscore":"^1.7.0"},"dependencies":{"through2":"^0.6.3"},"gitHead":"9f8357961b5f322aead723f2a8b6f416182c2ae3","homepage":"https://github.com/almost/through2-concurrent","_id":"through2-concurrent@0.4.0","_shasum":"6f1374dc2b1a68435ad06a4b5cfaec55fb06246f","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"6f1374dc2b1a68435ad06a4b5cfaec55fb06246f","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-0.4.0.tgz"},"directories":{}},"1.0.0":{"name":"through2-concurrent","version":"1.0.0","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrent.js","files":["through2-concurrent.js"],"scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"https://github.com/almost/through2-concurrent"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^2.2.1","underscore":"^1.8.2"},"dependencies":{"through2":"^0.6.3"},"gitHead":"f54ceb18e54e0035d99ce6154c697597336d08a1","homepage":"https://github.com/almost/through2-concurrent","_id":"through2-concurrent@1.0.0","_shasum":"42efaacbc0fe97951a35814d353fe901e9a7e10b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"42efaacbc0fe97951a35814d353fe901e9a7e10b","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-1.0.0.tgz"},"directories":{}},"1.1.0":{"name":"through2-concurrent","version":"1.1.0","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrent.js","files":["through2-concurrent.js"],"scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"https://github.com/almost/through2-concurrent"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^2.2.1","underscore":"^1.8.2"},"dependencies":{"through2":"^2.0.0"},"gitHead":"875da70a42f5faea236f62216e8a42ee3f9661fe","homepage":"https://github.com/almost/through2-concurrent","_id":"through2-concurrent@1.1.0","_shasum":"f6a99b8b3dda5b937c1427e20a582f432fe045c4","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"f6a99b8b3dda5b937c1427e20a582f432fe045c4","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-1.1.0.tgz"},"directories":{}},"1.1.1":{"name":"through2-concurrent","version":"1.1.1","description":"Like through2 except runs in parallel with limited concurrency","main":"through2-concurrent.js","files":["through2-concurrent.js"],"scripts":{"test":"mocha tests.js"},"repository":{"type":"git","url":"git+https://github.com/almost/through2-concurrent.git"},"keywords":["through2","streams","streams2","through","transform","concurrency","parallel"],"author":{"name":"Thomas Parslow","email":"tom@almostobsolete.net","url":"http://almostobsolete.net/"},"license":"MIT","bugs":{"url":"https://github.com/almost/through2-concurrent/issues"},"devDependencies":{"expect.js":"^0.3.1","mocha":"^2.2.1","underscore":"^1.8.2"},"dependencies":{"through2":"^2.0.0"},"gitHead":"d6bcad32f04a141c3dd2027fa2cd0d6f1dd544fe","homepage":"https://github.com/almost/through2-concurrent#readme","_id":"through2-concurrent@1.1.1","_shasum":"11cb4ea4c9e31bca6e4c1e6dba48d1c728c3524b","_from":".","_npmVersion":"3.3.12","_nodeVersion":"5.2.0","_npmUser":{"name":"almost","email":"tom@almostobsolete.net"},"maintainers":[{"name":"almost","email":"tom@almostobsolete.net"}],"dist":{"shasum":"11cb4ea4c9e31bca6e4c1e6dba48d1c728c3524b","tarball":"http://nexus.dui88.com:8081/nexus/content/repositories/npm-registry/through2-concurrent/-/through2-concurrent-1.1.1.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/through2-concurrent-1.1.1.tgz_1462704867112_0.6749321850948036"},"directories":{}}},"name":"through2-concurrent","time":{"modified":"2017-04-19T11:49:52.319Z","created":"2014-10-10T11:33:56.264Z","0.1.0":"2014-10-10T11:33:56.264Z","0.2.0":"2014-10-10T11:36:20.763Z","0.3.0":"2014-10-22T10:41:44.783Z","0.3.1":"2014-10-28T13:54:45.168Z","0.4.0":"2015-02-25T09:44:14.150Z","1.0.0":"2015-03-13T14:46:37.876Z","1.1.0":"2015-06-17T09:45:57.903Z","1.1.1":"2016-05-08T10:54:29.608Z"},"readmeFilename":"README.md","homepage":"https://github.com/almost/through2-concurrent#readme"}