{"_id":"promise-queue","_rev":"159494","name":"promise-queue","description":"Promise-based queue","dist-tags":{"latest":"2.2.5"},"maintainers":[{"name":"azproduction","email":""}],"time":{"modified":"2021-06-03T11:38:59.000Z","created":"2013-12-16T11:37:40.498Z","2.2.5":"2018-01-28T22:19:15.502Z","2.2.4":"2018-01-28T21:57:33.389Z","2.2.3":"2016-02-10T23:15:32.740Z","2.2.2":"2016-01-05T16:53:27.612Z","2.2.1":"2016-01-05T16:39:40.653Z","2.2.0":"2015-11-24T19:47:38.859Z","2.1.2":"2015-10-30T08:56:12.275Z","2.1.1":"2014-07-09T12:26:21.074Z","2.0.1":"2014-07-09T09:20:17.303Z","2.0.0":"2014-03-09T18:33:44.178Z","1.0.1":"2014-02-19T12:42:55.117Z","1.0.0":"2013-12-16T11:37:40.498Z"},"users":{"kornel":true,"leiquan":true,"movibe":true,"mostafazs":true,"ukrbublik":true,"eugeneduvenage":true,"pldin601":true,"lncwwn":true,"ferx":true,"erikvold":true},"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"versions":{"2.2.5":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.2.5","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"3.5.0","sinon":"1.17.7","vow":"0.4.1","sinon-chai":"2.8.0","mocha-istanbul":"0.3.0","coveralls":"2.11.6"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue#readme","main":"index.js","directories":{"test":"test"},"dependencies":{},"license":"MIT","gitHead":"b80de1245218632ba5d237adcb65fb9c059b8d83","_id":"promise-queue@2.2.5","_shasum":"2f6f5f7c0f6d08109e967659c79b88a9ed5e93b4","_from":".","_npmVersion":"2.7.1","_nodeVersion":"1.6.1","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"dist":{"shasum":"2f6f5f7c0f6d08109e967659c79b88a9ed5e93b4","size":7159,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.2.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.2.5.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-queue-2.2.5.tgz_1517177954580_0.3210027620662004"},"publish_time":1517177955502,"_hasShrinkwrap":false,"_cnpm_publish_time":1517177955502},"2.2.4":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.2.4","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue#readme","main":"index.js","directories":{"test":"test"},"dependencies":{},"license":"MIT","gitHead":"10e73f0e721913d031d8e3b0c5794d303e3baebc","_id":"promise-queue@2.2.4","_shasum":"1c85f4aedc05a0546886eb18cf4540021e019357","_from":".","_npmVersion":"2.7.1","_nodeVersion":"1.6.1","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"dist":{"shasum":"1c85f4aedc05a0546886eb18cf4540021e019357","size":7112,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.2.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.2.4.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/promise-queue-2.2.4.tgz_1517176653274_0.24094868102110922"},"publish_time":1517176653389,"_hasShrinkwrap":false,"_cnpm_publish_time":1517176653389},"2.2.3":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.2.3","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue#readme","main":"index.js","directories":{"test":"test"},"dependencies":{},"license":"MIT","gitHead":"b8c5722bbc5951ca89bd8cc5ef22bdcfdbcea339","_id":"promise-queue@2.2.3","_shasum":"8534d76bf4673c3baa3a82bba01bd295cc30f14f","_from":".","_npmVersion":"2.7.1","_nodeVersion":"1.6.1","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"dist":{"shasum":"8534d76bf4673c3baa3a82bba01bd295cc30f14f","size":7128,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.2.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.2.3.tgz"},"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/promise-queue-2.2.3.tgz_1455146129558_0.2814898432698101"},"publish_time":1455146132740,"_cnpm_publish_time":1455146132740,"_hasShrinkwrap":false},"2.2.2":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.2.2","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"gitHead":"fcc5d376fa83afdf543927ee02204515e838a39c","bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue#readme","_id":"promise-queue@2.2.2","_shasum":"650d891465dd75de47bc77396f3e675a487439b5","_from":".","_npmVersion":"2.14.11","_nodeVersion":"5.1.0","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"dist":{"shasum":"650d891465dd75de47bc77396f3e675a487439b5","size":7058,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.2.2.tgz"},"maintainers":[{"name":"azproduction","email":""}],"directories":{},"publish_time":1452012807612,"_cnpm_publish_time":1452012807612,"_hasShrinkwrap":false},"2.2.1":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.2.1","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"gitHead":"f26fbd598f744786c1eb1ec461b3266a44e6d065","bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue#readme","_id":"promise-queue@2.2.1","_shasum":"a36802085db473ca660738a923124a9a24974a96","_from":".","_npmVersion":"2.14.11","_nodeVersion":"5.1.0","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"dist":{"shasum":"a36802085db473ca660738a923124a9a24974a96","size":7028,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.2.1.tgz"},"maintainers":[{"name":"azproduction","email":""}],"directories":{},"publish_time":1452011980653,"_cnpm_publish_time":1452011980653,"_hasShrinkwrap":false},"2.2.0":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.2.0","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"gitHead":"d8f34663beeab754559419f3d9a1d8efcac4a1d9","bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue","_id":"promise-queue@2.2.0","_shasum":"39c341c6db495c83c11c9f140ad1111a1df46fe3","_from":".","_npmVersion":"2.7.1","_nodeVersion":"1.6.1","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"dist":{"shasum":"39c341c6db495c83c11c9f140ad1111a1df46fe3","size":7053,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.2.0.tgz"},"directories":{},"publish_time":1448394458859,"_cnpm_publish_time":1448394458859,"_hasShrinkwrap":false},"2.1.2":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.1.2","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"gitHead":"e61a41fbfc15431e2c30621fa6d3465ff6c0c461","bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue#readme","_id":"promise-queue@2.1.2","_shasum":"fa6b00c77ac350fa494ed4acc162047d73bbfa2c","_from":".","_npmVersion":"2.12.1","_nodeVersion":"0.12.6","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"dist":{"shasum":"fa6b00c77ac350fa494ed4acc162047d73bbfa2c","size":6992,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.1.2.tgz"},"maintainers":[{"name":"azproduction","email":""}],"directories":{},"publish_time":1446195372275,"_cnpm_publish_time":1446195372275,"_hasShrinkwrap":false},"2.1.1":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.1.1","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"gitHead":"76a54693ad269ded1dc1f33564080b44bdefd705","bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue","_id":"promise-queue@2.1.1","_shasum":"c979cc790b575937bd4873da9c4e7747078ab298","_from":".","_npmVersion":"1.4.18","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"dist":{"shasum":"c979cc790b575937bd4873da9c4e7747078ab298","size":13828,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.1.1.tgz"},"directories":{},"publish_time":1404908781074,"_cnpm_publish_time":1404908781074,"_hasShrinkwrap":false},"2.0.1":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.0.1","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"repository":{"type":"git","url":"git://github.com/azproduction/promise-queue.git"},"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"gitHead":"08a987e84bed5b84b099b725fe20fef684788807","bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"homepage":"https://github.com/azproduction/promise-queue","_id":"promise-queue@2.0.1","_shasum":"253b3378071245d389b6623d61479a64c52c1f0a","_from":".","_npmVersion":"1.4.18","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"dist":{"shasum":"253b3378071245d389b6623d61479a64c52c1f0a","size":13507,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.0.1.tgz"},"directories":{},"publish_time":1404897617303,"_cnpm_publish_time":1404897617303,"_hasShrinkwrap":false},"2.0.0":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"2.0.0","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"engines":{"node":">= 0.8.0"},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"0.4.1","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"_id":"promise-queue@2.0.0","dist":{"shasum":"6cb54f65a06f80f67d55aa9d5288cbe5e625718a","size":9840,"noattachment":false,"key":"/promise-queue/-/promise-queue-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-2.0.0.tgz"},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"directories":{},"publish_time":1394390024178,"_cnpm_publish_time":1394390024178,"_hasShrinkwrap":false},"1.0.1":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"1.0.1","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"engines":{"node":">= 0.8.0"},"dependencies":{},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"*","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"_id":"promise-queue@1.0.1","dist":{"shasum":"b6fbb1e6127bc06417a88b2c50aba0a46ee50634","size":12962,"noattachment":false,"key":"/promise-queue/-/promise-queue-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-1.0.1.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"directories":{},"publish_time":1392813775117,"_cnpm_publish_time":1392813775117,"_hasShrinkwrap":false},"1.0.0":{"author":{"name":"Mikhail Davydov","email":"i@azproduction.ru"},"description":"Promise-based queue","name":"promise-queue","version":"1.0.0","contributors":[{"name":"Mikhail Davydov","email":"i@azproduction.ru"}],"engines":{"node":">= 0.8.0"},"dependencies":{},"devDependencies":{"jshint":"2.1.3","mocha":"1.11.0","jscs":"1.0.0","istanbul":"0.1.39","chai":"*","sinon":"*","vow":"*","sinon-chai":"*","mocha-istanbul":"*","coveralls":"*"},"scripts":{"test":"make validate","lint":"make lint","coverage":"make coverage","clean":"make clean"},"readmeFilename":"README.md","_id":"promise-queue@1.0.0","dist":{"shasum":"70f141d3be5d7ef3eac0ebb00f632ce60e813739","size":10880,"noattachment":false,"key":"/promise-queue/-/promise-queue-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/promise-queue/download/promise-queue-1.0.0.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"azproduction","email":"azazel.private@gmail.com"},"maintainers":[{"name":"azproduction","email":""}],"directories":{},"publish_time":1387193860498,"_cnpm_publish_time":1387193860498,"_hasShrinkwrap":false}},"readme":"# promise-queue [![NPM Version](https://badge.fury.io/js/promise-queue.png)](https://npmjs.org/package/promise-queue) [![Build Status](https://travis-ci.org/azproduction/promise-queue.png?branch=master)](https://travis-ci.org/azproduction/promise-queue) [![Coverage Status](https://coveralls.io/repos/azproduction/promise-queue/badge.png?branch=master)](https://coveralls.io/r/azproduction/promise-queue) [![Dependency Status](https://gemnasium.com/azproduction/promise-queue.png)](https://gemnasium.com/azproduction/promise-queue)\n\nPromise-based queue\n\n## Installation\n\n`promise-queue` can be installed using `npm`:\n\n```\nnpm install promise-queue\n```\n\n## Interface\n\n - `new Queue(Number maxConcurrent, Number maxQueued): Queue`\n - `Queue#add(Function generator): Promise` - adds function argument that generates a promise to the queue\n - `Queue#getQueueLength(): Number` - returns current length of buffer(added but not started promise generators) `it <= maxQueued`\n - `Queue#getPendingLength(): Number` - returns number of pending(concurrently running) promises `it <= maxConcurrent`\n\n## Example\n\n### Configure queue\n\nBy default `Queue` tries to use global Promises, but you can specify your own promises.\n\n```js\nQueue.configure(require('vow').Promise);\n```\n\nOr use old-style promises approach:\n\n```js\nQueue.configure(function (handler) {\n    var dfd = $.Deferred();\n    try {\n        handler(dfd.resolve, dfd.reject, dfd.notify);\n    } catch (e) {\n        dfd.reject(e);\n    }\n    return dfd.promise();\n});\n```\n\n### Queue one by one example\n\n```js\nvar maxConcurrent = 1;\nvar maxQueue = Infinity;\nvar queue = new Queue(maxConcurrent, maxQueue);\n\napp.get('/version/:user/:repo', function (req, res, next) {\n    queue.add(function () {\n        // Assume that this action is a way too expensive\n        // Call of this function will be delayed on second request\n        return downloadTarballFromGithub(req.params);\n    })\n    .then(parseJson('package.json'))\n    .then(function (package) {\n        res.send(package.version);\n    })\n    .catch(next);\n});\n```\n\n### Getting number of pending promises and queue(buffered promises) length\n\n```js\nvar maxConcurrent = 1;\nvar maxQueue = 1;\nvar queue = new Queue(maxConcurrent, maxQueue);\n\nqueue.add(function () {\n    queue.getQueueLength() === 0;\n    queue.getPendingLength() === 1;\n    return somePromise();\n});\n\nqueue.add(function () {\n    queue.getQueueLength() === 0;\n    queue.getPendingLength() === 0;\n    return somePromise();\n});\n\nqueue.getQueueLength() === 1;\nqueue.getPendingLength() === 1;\n```\n\n[Live example](http://jsfiddle.net/RVuEU/1/)\n","_attachments":{},"homepage":"https://github.com/azproduction/promise-queue#readme","bugs":{"url":"https://github.com/azproduction/promise-queue/issues"},"license":"MIT"}