{"_id":"cqs","_rev":"66-208babd819e1ec31759ad5c934587bc1","name":"cqs","dist-tags":{"latest":"0.10.0"},"versions":{"0.1.0":{"name":"cqs","version":"0.1.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.1.0","homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"4b600826f3c47db4ca346a8e698e790308e5e63e","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.1.0.tgz","noattachment":true},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"scripts":{},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.6","description":"CouchDB Queue Service: An API-compatible Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.4.2","dependencies":{"request":">=1.9.6"},"_defaultsLoaded":true,"devDependencies":{"optimist":">=0.2.0"},"_engineSupported":true},"0.2.0":{"name":"cqs","version":"0.2.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.2.0","homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"9807445fe0cd822d8bbb0ba693ff691184b8008c","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.2.0.tgz","integrity":"sha512-b7jcNEmj2IxN9gk0nYKgiIDIeHhN33wgDe6x2YjkyOHVNz6CRDOys1t4KDp7Ipf7PKoRf2TUHbhluLIgituOtQ==","signatures":[{"sig":"MEYCIQC5RjXui5vcV+NJa7i0iZTTo5ApW5iq4vsWzoC9c3rBKQIhAPBEchqlxYCT3nfhZWclgkEvshVjC8tchEvhEdWG9aar","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"scripts":{},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.6","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.4.2","dependencies":{"request":">=1.9.6"},"_defaultsLoaded":true,"devDependencies":{"optimist":">=0.2.0"},"_engineSupported":true},"0.3.0":{"name":"cqs","version":"0.3.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.3.0","homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"29de1dfd9a7b436dac9af9bdf5512cab695adc1f","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.3.0.tgz","integrity":"sha512-FHeMllmD1Sf+EgsE+dDpbyZijESzid9amjpO2zB88oPf18Dm9gAHXOn5daJC//+cx2td6NJZraSJ6Zs4ivKgvQ==","signatures":[{"sig":"MEUCIQDuft2bzGAI6djrWque+184LlYKmRrNRcgZBmbOs2JdsgIgE4aUafy6XBv5WAurz1za9jpAL4EigyObJjpRooVFzk0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"scripts":{},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.6","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.4.2","dependencies":{"request":">=1.9.6"},"_defaultsLoaded":true,"devDependencies":{},"_engineSupported":true},"0.3.1":{"name":"cqs","version":"0.3.1","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.3.1","maintainers":[{"name":"jhs","email":"jhs@couchone.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"2978b7e04fb9cbe924d56ceebd1e1fb29425bffe","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.3.1.tgz","integrity":"sha512-6WvETLgDsF+YYNx6y7hSApDy84rMIUzJH/Pw5UGFb81oHjO9QPXJTHD28B8bvnG+s3i1wIRTTu0vMHR2ByzscQ==","signatures":[{"sig":"MEYCIQDYIORZrdZhcRhgpjGBuUKdTOSh1NKFkZGQ4vBNZ1x8igIhAKeQPfdKh6wZZRLTY7YQ7xOKKUlKmrcY4fBCJaGpXsl3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.90","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.4.8","dependencies":{"request":"2.1.1","defaultable":"0.6.1"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.3.2":{"name":"cqs","version":"0.3.2","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.3.2","maintainers":[{"name":"jhs","email":"jhs@couchone.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"731f53c102782b07708cdb437c42f3fc1154c24b","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.3.2.tgz","integrity":"sha512-ao7eHdMTZdhwuKL+KxnQXE6gTEUi1ZdakUtFZTpghBHZ3QR4CHMSms5adUoZmVhWcWj/4N2N1c+h1xqi1pY4wg==","signatures":[{"sig":"MEYCIQCfO2ubP0rhmMSJ2sJMRbRh2T1MLSyqNmBb+KTWZHAjPgIhAM4ClMC5I50P8Be72WJtrGJ9kKYq3CfcgHbv1b51CsMg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.90","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.4.8","dependencies":{"log4js":"0.3.9","request":"2.1.1","defaultable":"0.6.1"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.4.0":{"name":"cqs","version":"0.4.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.4.0","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"73c933b8a55ac4227e21f166af7b10186ec0a042","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.4.0.tgz","integrity":"sha512-Q3UTaYIiKLYkXPcyg4rAM6ZtrqjmovSAuqKVjCE606WHAPt7oVpsX0H91KVkYDTYgCqAbYYQ0sPJUTZqSwZaBw==","signatures":[{"sig":"MEUCIDPoQlyQJB4E1Dy2fylvMEDZw/9FHWBbfAMWEDpYQpksAiEA0h38fsXyE0XeTcZFBGKlyFLsfsbOH2zOjs59HZ9Jvw4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.101","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.4.8","dependencies":{"log4js":"0.3.9","request":"2.1.1","defaultable":"0.6.1"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.5.0":{"name":"cqs","version":"0.5.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.5.0","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"2f79deb5439d5257b94f4a39c6171567188550b6","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.5.0.tgz","integrity":"sha512-eijKO7HKzZ9UKeZQ5V2pycehkmRk+FCKFuVbrI1/4J9xI7ncjqnGaSFmC6SlEjufX6LTnr9VIpFAPYrKFUpIdA==","signatures":[{"sig":"MEQCIEMWBYtxH+TfjJS2AIcOHJWzqyXj8vLDcfQ9QzGdVX5EAiA3euQbKI7o9Y2Fl5I7pIMHaVUgRSkAuU+46I0CXFHiVA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.103","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.0","dependencies":{"log4js":"0.3.9","request":"2.1.1","defaultable":"0.7.0"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.5.1":{"name":"cqs","version":"0.5.1","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.5.1","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"28fa6943f58121abd4615f0bdfcd6ea62ac253f6","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.5.1.tgz","integrity":"sha512-o2cPeX5RlybhsXZ4wJHT77x0bcMuGBTv4D9deUQmI6qxMXHKxSVMqOh6Z8PG8Keep+hLNjF0Ss0c7KhYd84PUw==","signatures":[{"sig":"MEUCIQCEqpi4PUAOQoBJxx0PnBYUSXZr9j6wBTCrDeUlrbS2wQIgPRCRuAehGhoLOYUxbiOUBxXft/iDDM4ZcC88R69woss=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.104","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.2","dependencies":{"log4js":"0.4.0","request":"2.2.5","defaultable":"0.7.0"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.5.2":{"name":"cqs","version":"0.5.2","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.5.2","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"23544ff51380ddea351ff9f64ba4e3338384f077","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.5.2.tgz","integrity":"sha512-l2IBjioFjCAKMsDSCwOZqLQG8GS1cPjaRA3JOWMF1uCXiJ6/oOdgncQI8YPjzDeIBGdOISveX4Use1bZy6U/9g==","signatures":[{"sig":"MEYCIQCta9wGFqs9WRh/gbL3GjWOb1fMw/9FhUCM1/pkxZPJqwIhAI2fetfstAaXImhDve47tOvVggGzgZKmsp0o1VZtPIiH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.104","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.2","dependencies":{"log4js":"0.4.0","request":"2.2.5","defaultable":"0.7.2"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.5.3":{"name":"cqs","version":"0.5.3","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.5.3","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"966dc89e8093bd708a72c7e6a2fce256dfe3bae7","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.5.3.tgz","integrity":"sha512-5/fLOkAGICu9waQAvs3qZRDbXiU4PxwXw1R0JNLG7RnOjWiC7lWGr6/7cJ6QnYv2TwkTmsOoJkM6X1kfTkEt6Q==","signatures":[{"sig":"MEQCIDu+C4u98vQg7tXLk5DFVONUnQoGTFdvrubRWCoSdS29AiAbaWh4XGOSBEW9xjn9WZK6WSeN6ioDOi9VezHFi6IQKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.104","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.0","dependencies":{"log4js":"0.4.0","request":"2.2.5","defaultable":"0.7.2"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.5.4":{"name":"cqs","version":"0.5.4","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.5.4","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"05d6d89c74d773fc69dc076975f49d86c318ca6c","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.5.4.tgz","integrity":"sha512-Oi7sY6FwT8wIVtVtXr4JT8RSnMsdhR7t7EvTmBH31fPrXehGHuXQa0KOn3AsA4HsoKMHmtI5tg6LHoQUP5Hjkg==","signatures":[{"sig":"MEUCIQCRIDaslLVoef8UDd4AcqtYsldn0rekHh70MlHwCr5/YwIgJNxnyyJMCW5v+6A2OrZsCLDyRol3j0uYF97bIN4Dnx8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.104","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.2","dependencies":{"log4js":"0.4.0","request":"2.2.5","defaultable":"0.7.2"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.6.0":{"name":"cqs","version":"0.6.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.6.0","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"3a60ad7d07234a312b9240d6afde427cd1206a09","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.6.0.tgz","integrity":"sha512-BlsBxrgWUgQ0hsNuN6Ebk7TzOW+5w1gMHhr6qyxMdUXtFJw0AymxQ5csNlWHPt9RZktUKef/EeNgjZhEtbAnfw==","signatures":[{"sig":"MEYCIQC1+cwauEzTaBdkIsFAYBjjevqGEl/e6H1eRcNL+klTEwIhAKxlDvg4xbdcYrk537w6Nf7/3SHM96ODsgBq22LcYej2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.0.104","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.2","dependencies":{"log4js":"0.4.0","request":"2.2.5","defaultable":"0.7.2"},"_defaultsLoaded":true,"devDependencies":{"tap":"0.0.10"},"_engineSupported":true},"0.7.0":{"name":"cqs","version":"0.7.0","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.0","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"39f9b32d17fb2a602a018089e9b47f38881ff282","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.0.tgz","integrity":"sha512-jTVVelfVNOWIhM/+9TZHpECiz3NrvGa7pfVAFwy8XgWIa94hziF/0p8SkjTjMvTFn0KRv/xR7yPEkK3ovSCzpg==","signatures":[{"sig":"MEUCIGKuhh/AG+W08Mq1kJufZ0zaz0O7WYdPvVt5pOB1vfX1AiEAk8611gna3SgV36S3pHdKNASXjsFArg9ga0XSKsN126A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.1.0-beta-4","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.6","dependencies":{"txn":"~0.2.9","log4js":"0.4.0","request":"2.2.5","defaultable":"0.7.2"},"_defaultsLoaded":true,"devDependencies":{"tap":"~0.2.5"},"_engineSupported":true},"0.7.1":{"name":"cqs","version":"0.7.1","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.1","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"7de83fe0cc36e595e40004a80a0d063938f77625","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.1.tgz","integrity":"sha512-LVUZ/ivIwTQHl5jMEh8O1a/53fodi4XN4gLwhlf1UQYh7y8SWYgdILFGT/Qf+lzUH2IHvWytIdXfv1KYzJk5YQ==","signatures":[{"sig":"MEQCIAdcBsqSzvIObjIVpbsGEFAlghup3LHD6dAe0BFopruKAiBR48Vgi8V1rIwDT5CTfZRZyq8uf9SXzEXooNJHXsBR0A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs.git","type":"git"},"_npmVersion":"1.1.0-beta-4","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"_nodeVersion":"v0.6.6","dependencies":{"txn":"~0.2.9","log4js":"0.4.0","request":"~2.9.0","defaultable":"0.7.2"},"_defaultsLoaded":true,"devDependencies":{"tap":"~0.2.5"},"_engineSupported":true},"0.7.2":{"name":"cqs","version":"0.7.2","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.2","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"d34986092bb672378136d89e89309929a34730a1","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.2.tgz","integrity":"sha512-hpXxkYlRmsPDAuvZTpQuOe1vynabdu95tmaIaTt/D+M03tOyIT4p1CpjsQKgeeZYqDEim9Ki2KfwY87L1A6Vtg==","signatures":[{"sig":"MEUCIQC6G6QmrbfCLep8uoUWXANlGmDjgVtFrfNhfc0jKxEqNQIgaQ1AquprpoBh2hqgtGkoz0OQpvoqxzUWmB5XmlbPcqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"repository":{"url":"git://github.com/iriscouch/cqs","type":"git"},"description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.9","follow":"~0.8.0","log4js":"0.4.0","request":"~2.9.0","defaultable":"0.7.2"},"devDependencies":{"tap":"~0.2.5"}},"0.7.3":{"name":"cqs","version":"0.7.3","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.3","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"ac16783921ac4949cd0c8fe3d15309a32cc4893d","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.3.tgz","integrity":"sha512-ep2Kuxzt4ALV8KTJ3O/Qe4W2xu8auC3Wj4qwK910YfnvVqSkHrPaVd8bQqKsZyGmMpVOmgdES6K2luWiF/yO8w==","signatures":[{"sig":"MEUCICqDJb/2H+n4dhzNZMPmh5i91fsXEsosA2MmnkemXrP+AiEA2pZwZOHCBqWsZKUJLqYi6Z1G5xdEb7HX8GX0dZBx42I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"repository":{"url":"git://github.com/iriscouch/cqs","type":"git"},"description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.9","follow":"~0.8.0","log4js":"0.4.0","request":"~2.9.0","defaultable":"0.7.2"},"devDependencies":{"tap":"~0.2.5"}},"0.7.4":{"name":"cqs","version":"0.7.4","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.4","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"b2625a0e15698fd6305e2b8e7a299e1e7bb138a2","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.4.tgz","integrity":"sha512-lD4iZ4Va974gR+UbuPeiqo8M7KAtf0LvLIzLisAdketeT4MbHui49YQYcSA9AXoCm7s0CmCv5ZJhtI22Tgdt3g==","signatures":[{"sig":"MEUCICzulaCttnBQOjb2A4rhCl66/vLXwniHpC26TBx3u0pGAiEA8tx4EApqr8WelBjSA+sKli+G2ODWx2aNHHms7W9Htn8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"repository":{"url":"git://github.com/iriscouch/cqs","type":"git"},"description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.9","follow":"~0.8.0","log4js":"~0.5.4","request":"~2.9.0","defaultable":"0.7.2"},"devDependencies":{"tap":"~0.2.5"}},"0.7.5":{"name":"cqs","version":"0.7.5","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.5","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"904aeea7f1788369da35f78e21c0773619147ad3","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.5.tgz","integrity":"sha512-icFZ9vR2Tp4J0YEcn9NYTCsjB1doZbf3JZNp1ndKhQMZ1jtJfn+cGt1zgMUifNeIq+BuCmk/uIrwJ+ad71MR9Q==","signatures":[{"sig":"MEUCIAT9+SQXzbb6TgMlMURgfL9phMrl/xMioc2rkqpCXtERAiEA3FXMGu7wroi1a/Ll7dWTKJ8CQ7abg3K6tjIlFZZ0/2Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"engines":["node"],"repository":{"url":"git://github.com/iriscouch/cqs","type":"git"},"description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.10","follow":"~0.8.0","log4js":"~0.5.4","request":"~2.9.0","defaultable":"0.7.2"},"devDependencies":{"tap":"~0.2.5"}},"0.7.6":{"name":"cqs","version":"0.7.6","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.6","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"678734a1d76d52622edb48815394f58cd00a3ef5","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.6.tgz","integrity":"sha512-muV4LbHseB99gSREK1A3WU+yJaV44mNAqiFGaJOhZYPBJ+q41zNry0ZMOxOmdmn3NQG1vSTomU7phw99vgt/Tg==","signatures":[{"sig":"MEYCIQDmvZ3LfUT2NhfQwTqVJK4kbvYIorJJCTYL0JJw4wOTSwIhAOyDvxxUV/YToMkJC6bYoixRC8MDptNejKgeEhVGZGox","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"_from":".","engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs","type":"git"},"_npmVersion":"1.2.14","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.10","follow":"~0.8.0","log4js":"~0.5.4","request":"~2.16.6","defaultable":"0.7.2"},"devDependencies":{"tap":"~0.2.5"}},"0.7.7":{"name":"cqs","version":"0.7.7","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.7","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"f278f8d720476b9d51a4522f281381c8872c9a13","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.7.tgz","integrity":"sha512-s5FQ8t8XCNhoDlIAHv3XTK2k/s4vC9/qjsOpIiWL212JPOQ6H9YakmAhU0UCEOeYK3zmFfyBLEE3IjpXwVVnlA==","signatures":[{"sig":"MEYCIQCzSOlmLOjGgZkl2wHGtsm+IF7BPxcZjsv7GQCYaDM4gQIhALIQbQ30JAEvMSMt7Ak2VZi2FDoRclGmY+Ef05pPusZR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"_from":".","engines":["node"],"_npmUser":{"name":"jhs","email":"jhs@iriscouch.com"},"repository":{"url":"git://github.com/iriscouch/cqs","type":"git"},"_npmVersion":"1.2.14","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.10","follow":"~0.8.0","log4js":"~0.5.4","request":"~2.16.6","defaultable":"0.7.2"},"devDependencies":{"tap":"~0.2.5"}},"0.7.8":{"name":"cqs","version":"0.7.8","author":{"name":"Jason Smith","email":"jhs@iriscouch.com"},"_id":"cqs@0.7.8","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/iriscouch/cqs","dist":{"shasum":"212d64032f5c64359b9845d6db8577a7646d7441","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.7.8.tgz","integrity":"sha512-/qD1TsnHAjeTYDTh0bCkKEQcnJKtYgZHLu4bWIwl41ojFyWVSR1uoJpPYCVZzGf4NmOHk4pe3e0hnalOwucAAA==","signatures":[{"sig":"MEUCIQC6kQz4y8R/BLLUoY7XeIkwI+rA/GGKw93vJUi9i5lWeQIgbEIHkjHeUP29eCu1vZjTTa8zyPiK2IbOEkrKc/ir9K8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"_from":".","browser":{"request":"browser-request"},"engines":["node"],"_npmUser":{"name":"jhs","email":"jason.h.smith@gmail.com"},"repository":{"url":"git://github.com/iriscouch/cqs","type":"git"},"_npmVersion":"1.2.14","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.10","follow":"~0.8.0","log4js":"~0.5.4","request":"~2.16.6","defaultable":"0.7.2","browser-request":"~0.2"},"devDependencies":{"tap":"~0.2.5"}},"0.8.0":{"name":"cqs","version":"0.8.0","author":{"name":"Jason Smith","email":"jhs@nodejitsu.com"},"_id":"cqs@0.8.0","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/nodejitsu/cqs","dist":{"shasum":"23974f7dd64399918a867d930cab1cfe8cf7e210","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.8.0.tgz","integrity":"sha512-vtfD7If0FXC5ZznGIe9p55A8RYTHQSDpDhJ0k6JcSPoIusXo4bcTnQj5/ZVyyJMEtGV9qwJ3dqGDVuAtM2I7LQ==","signatures":[{"sig":"MEYCIQCfVe/2PRAiR04eYvZFloeVN1MRUCleZCcJu0NcJQFUVwIhAJk4c1R8iLrevZNSlOMBeYRaI0ES+8QJ8ZM9Sndv4dJw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"_from":".","browser":{"request":"browser-request","browserify":false},"engines":["node"],"_npmUser":{"name":"jhs","email":"jason.h.smith@gmail.com"},"repository":{"url":"git://github.com/nodejitsu/cqs","type":"git"},"_npmVersion":"1.2.14","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","directories":{},"dependencies":{"txn":"~0.2.10","debug":"~0.7.2","follow":"~0.8.0","request":"~2.16.6","browserify":"~2.29.1","defaultable":"0.7.2","browser-request":"~0.2"},"devDependencies":{"tap":"~0.2.5"}},"0.8.1":{"name":"cqs","version":"0.8.1","author":{"name":"Jason Smith","email":"jhs@nodejitsu.com"},"_id":"cqs@0.8.1","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"}],"homepage":"http://github.com/nodejitsu/cqs","dist":{"shasum":"33ce6d4ea0d2093894dd3df87a9fd0cd071fcf5f","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.8.1.tgz","integrity":"sha512-Fq357ERgvhV5P+G3Jq7xyQn8UE0fQ5CQ3qtGoi386y446JogR2IL6fdvnfE5NuxyQPqSQtJftSirYMsE8q+ZZA==","signatures":[{"sig":"MEQCIDdAvr0r5Tb73TXS3qP8EGHG2VcIvgZckBxCWUgbIEY4AiBq20WQRSV1dbieKG7y3EzhaUPRpSODYGdjic5TnDmKBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"_from":".","browser":{"request":"browser-request","browserify":false},"engines":["node"],"_npmUser":{"name":"jhs","email":"jason.h.smith@gmail.com"},"repository":{"url":"git://github.com/nodejitsu/cqs","type":"git"},"_npmVersion":"1.2.14","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","dependencies":{"txn":"~0.2.10","debug":"~0.7.2","follow":"~0.8.0","request":"~2.16.6","browserify":"~2.29.1","defaultable":"0.7.2","browser-request":"~0.2"},"devDependencies":{"tap":"~0.2.5"},"directories":{}},"0.9.0":{"name":"cqs","version":"0.9.0","author":{"name":"Jason Smith","email":"jhs@nodejitsu.com"},"_id":"cqs@0.9.0","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"},{"name":"jcrugzz","email":"jcrugzz@gmail.com"},{"name":"feedic","email":"me@feedic.com"}],"homepage":"http://github.com/nodejitsu/cqs","bugs":{"url":"https://github.com/nodejitsu/cqs/issues"},"dist":{"shasum":"a713fd83fc4ac908e48f791fbd942b728329d156","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.9.0.tgz","integrity":"sha512-PmSR6h0rNK0R/98yjnGMqBGj2ZV7HBxDpdpfJxy5Xpe35qUVuqGPjl5M6C6ZY7qZvRCv7E33TC/TzwO9BFMsdQ==","signatures":[{"sig":"MEUCIC9srIAXYWNFNMfQI2qNhSbJ76utWLatyDLYsKA3x7BrAiEAyIi7Kt9VJ7C14cyN9FB6Yjfjj6x5Cf527qzoo6sbXOk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"_from":".","browser":{"request":"browser-request","browserify":false},"engines":["node"],"scripts":{"test":"tap test/tap/*"},"_npmUser":{"name":"feedic","email":"me@feedic.com"},"repository":{"url":"git://github.com/nodejitsu/cqs","type":"git"},"_npmVersion":"1.4.6","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","dependencies":{"txn":"~0.2.10","debug":"~0.7.2","follow":"~0.8.0","request":"~2.16.6","browserify":"~2.29.1","defaultable":"0.7.2","browser-request":"~0.2"},"devDependencies":{"tap":"~0.2.5"},"directories":{}},"0.10.0":{"name":"cqs","version":"0.10.0","author":{"name":"Jason Smith","email":"jhs@nodejitsu.com"},"_id":"cqs@0.10.0","maintainers":[{"name":"jhs","email":"jhs@couchone.com"},{"name":"jhs","email":"jhs@iriscouch.com"},{"name":"jcrugzz","email":"jcrugzz@gmail.com"},{"name":"feedic","email":"me@feedic.com"}],"homepage":"http://github.com/nodejitsu/cqs","bugs":{"url":"https://github.com/nodejitsu/cqs/issues"},"dist":{"shasum":"ff36c912325813f2b2e0b0dd7e8a78d2531edfb9","tarball":"https://registry.npmjs.org/cqs/-/cqs-0.10.0.tgz","integrity":"sha512-Bamzcmu072BtTNJ6dsnvP6bgrf0NMuaFY+YFtQDl8e2bNgEkosRtnE6yDLRLTQ73ctD6XbgU/LjCM+5/rr+Qng==","signatures":[{"sig":"MEUCIAOLs7Ez9M6q8MHe4qZnZnV1APgVigc/NVP+NQyl3kV7AiEA/2YG79SCF6FVnm0KMaFrOekXhvpyidzlDt+gGpmhPOs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./api","tags":["couchdb","queue","amazon","sqs","aws"],"_from":".","_shasum":"ff36c912325813f2b2e0b0dd7e8a78d2531edfb9","browser":{"request":"browser-request","browserify":false},"engines":["node"],"scripts":{"test":"tap test/tap/*"},"_npmUser":{"name":"feedic","email":"me@feedic.com"},"repository":{"url":"git://github.com/nodejitsu/cqs","type":"git"},"_npmVersion":"1.4.7","description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","dependencies":{"txn":"~0.2.10","debug":"~0.7.2","follow":"~0.8.0","request":"~2.16.6","browserify":"~2.29.1","defaultable":"0.7.2","browser-request":"~0.2"},"devDependencies":{"tap":"~0.2.5"},"directories":{}}},"time":{"created":"2011-06-13T13:11:35.338Z","modified":"2026-02-21T19:30:44.399Z","0.1.0":"2011-06-13T13:11:37.651Z","0.2.0":"2011-06-13T13:13:59.705Z","0.3.0":"2011-06-13T13:15:10.158Z","0.3.1":"2011-10-13T15:45:47.733Z","0.3.2":"2011-10-13T15:50:48.889Z","0.4.0":"2011-10-29T10:55:46.299Z","0.5.0":"2011-11-05T12:54:58.379Z","0.5.1":"2011-11-22T02:33:38.318Z","0.5.2":"2011-11-22T02:57:54.453Z","0.5.3":"2011-11-28T13:09:19.024Z","0.5.4":"2011-11-29T02:21:05.398Z","0.6.0":"2011-11-29T04:48:21.324Z","0.7.0":"2012-05-26T12:35:11.717Z","0.7.1":"2012-05-26T14:02:21.730Z","0.7.2":"2012-09-14T05:23:45.662Z","0.7.3":"2012-09-14T06:05:10.470Z","0.7.4":"2012-11-05T07:23:41.046Z","0.7.5":"2012-11-05T07:36:58.641Z","0.7.6":"2013-04-02T12:02:17.367Z","0.7.7":"2013-04-04T12:39:07.391Z","0.7.8":"2013-09-09T10:15:33.344Z","0.8.0":"2013-09-23T09:40:47.959Z","0.8.1":"2013-09-23T11:06:27.921Z","0.9.0":"2014-04-07T22:15:33.220Z","0.10.0":"2014-04-21T17:55:42.013Z"},"bugs":{"url":"https://github.com/nodejitsu/cqs/issues"},"author":{"name":"Jason Smith","email":"jhs@nodejitsu.com"},"homepage":"http://github.com/nodejitsu/cqs","repository":{"url":"git://github.com/nodejitsu/cqs","type":"git"},"description":"CouchDB Queue Service: an Amazon SQS implementation on CouchDB","maintainers":[{"email":"me@feedic.com","name":"fb55"},{"email":"jason.h.smith@gmail.com","name":"jhs"},{"email":"jcrugzz@gmail.com","name":"jcrugzz"}],"readme":"# CouchDB Queue Service\n\nCQS is a message queue system, using Apache CouchDB. It is **exactly like** [Amazon Simple Queue Service (SQS)][sqs_api]. The API is the same. Everything is exactly the same, it just runs on CouchDB.\n\nCQS is implented in Javascript and supports:\n\n* NodeJS\n* Google Chrome 12\n* Firefox 3.5, Firefox 3.6, Firefox 4\n* Safari 5\n* Internet Explorer 8, Internet Explorer 9\n\nUse CQS if you use Javascript, you know (or appreciate) Amazon SQS, and you *want the same thing on your server*.\n\nFor Node, install with NPM.\n\n    $ npm install cqs\n\nThe test script `test/run.js` will copy itself into a Couch app which you can run from the browser.\n\n[sqs_api]: http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/\n\n## API\n\nInitialize the CQS module to point to a database on your couch.\n\n    // A normal import.\n    var cqs = require('cqs');\n\n    // Pre-apply my couch and db name.\n    cqs = cqs.defaults({ \"couch\": \"https://user:password@example.iriscouch.com\"\n                       , \"db\"   : \"cqs_queue\"\n                       });\n\n### List Queues\n\n    cqs.ListQueues(function(error, queues) {\n      console.log(\"Found \" + queues.length + \" queues:\");\n      queues.forEach(function(queue) {\n        console.log(\"  * \" + queue.name);\n      })\n\n      // Output:\n      // Found 2 queues:\n      //   * a_queue\n      //   * another_queue\n    })\n\n### Create Queues\n\nCreating queues requires **database administrator** access.\n\n    // Just create with a name.\n    cqs.CreateQueue(\"important_stuff\", function(error, queue) {\n      if(!error)\n        console.log(\"Important stuff queue is ready\");\n    })\n\n    // Create with an options object.\n    var opts = { QueueName               : \"unimportant_stuff\"\n               , DefaultVisibilityTimeout: 3600 // 1 hour\n               , browser_attachments     : true // Attach browser libs and test suite\n               };\n\n    cqs.CreateQueue(opts, function(error, queue) {\n      if(!error)\n        console.log(\"Created \" + queue.name + \" with timeout + \" queue.VisibilityTimeout);\n\n      // Output\n      // Created unimportant_stuff with timeout 3600\n    })\n\n### Send a Message\n\nEverything is like SQS, except the message body is any JSON value.\n\n    // The convenient object API:\n    important_stuff.send([\"keep these\", \"things\", \"in order\"], function(error, message) {\n      if(!error)\n        console.log('Sent: ' + JSON.stringify(message.Body));\n\n      // Output:\n      // Sent: [\"keep these\",\"things\",\"in order\"]\n    })\n\n    cqs.SendMessage(important_stuff, \"This message is important!\", function(error, message) {\n      if(!error)\n        console.log('Sent message: ' + message.Body);\n\n      // Output:\n      // Sent message: This message is important!\n    })\n\n    // Or, just use the queue name.\n    cqs.SendMessage('some_other_queue', {going_to: \"the other queue\"}, function(error, message) {\n      if(!error)\n        console.log('Message ' + message.MessageId + ' is going to ' + message.Body.going_to);\n\n      // Output:\n      // Message a9b1c48bd6ae433eb7879013332cd3cd is going to the other queue\n    })\n\n### Receive a Message\n\nNote, like the SQS API, `ReceiveMessage` always returns a list.\n\n    // The convenient object API:\n    my_queue.receive(function(error, messages) {\n      if(!error)\n        console.log('Received message: ' + JSON.stringify(messages[0].Body));\n\n      // Output:\n      // Received message: <message body>\n    })\n\n    // The standard API, receiving multiple messages\n    cqs.ReceiveMessage(some_queue, 5, function(er, messages) {\n      if(!error)\n        console.log('Received ' + messages.length + ' messages');\n\n      // Output:\n      // Received <0 through 5> messages\n    })\n\n### Delete a Message\n\nWhen a message is \"done\", remove it from the queue.\n\n    // The convenient object API:\n    message.del(function(error) {\n      // Message deletion never results in an error. If a message is successfully\n      // deleted, it will simply never appear in the queue again.\n      console.log('Message deleted!');\n    })\n\n    // The standard API:\n    cqs.DeleteMessage(my_message, function(error) {\n      console.log('Message deleted');\n    })\n\n## API Parameters\n\nThese parameters are useful with the `.defaults()` method to customize CQS behavior.\n\n* `couch` | URL to CouchDB\n* `db` | Database storing the CQS queue\n* `time_C` | **Coefficient of timeouts**. CQS treats a delayed response as a failure. Timeout durations (default 0.5s) are multipled by `time_C`.\n\n## Test Suite\n\nThe test suite uses node-tap. Install tap via `npm install -g tap` then run `tap test/tap` in this project.\n\n    $ tap test/tap\n    ok test/tap/couch.js ............................ 12368/12368\n    ok test/tap/cqs.js .................................... 82/82\n    ok test/tap/lib.js .................................... 11/11\n    ok test/tap/once.js ............................. 10007/10007\n    ok test/tap/tap.js ...................................... 1/1\n    total ........................................... 22469/22469\n\n    ok\n\nUse environment variables to set operational parameters, for example:\n\n    env couch=https://admin:secret@example.iriscouch.com C=20 ./tests/run.js\n\nList of variables:\n\n* `cqs_couch` | URL of CouchDB; the `couch` API parameter\n* `cqs_db` | Name of database storing the queue; the `db` API parameter\n* `C` or `timeout_coefficient` | Timeout coefficient; `time_C` API parameter\n* `exit` | Halt all testing on a timeout error\n* `skip_browser` | Do not attach the browser test suite Couch app\n* `cqs_log_level` | log4js log level (`\"debug\"` and `\"info\"` are useful)\n\n### Running tests in the browser\n\nThe test suite copies itself into CouchDB as a Couch app. Just visit `/cqs_test/_design/CQS%2fapi_tests/test.html` in your browser.\n\nTo simulate environment variables, use the URL query string, for example:\n\n    http://localhost:5984/cqs_test/_design/CQS%2fapi_tests/test.html?C=10&exit=true\n\n## To Do\n\nI wish CQS had many more features.\n\n* Use one design document instead of one per queue. One design document is better at the low end, multiple design documents are better at the high end. Ideally, we can choose one or the other.\n* Management\n  * Every API call has a 0.1% chance of running management tasks\n  * You could run a dedicated management process so the producers/consumers don't have to worry\n  * Purge old messages\n\n<a name=\"purging\"></a>\n### Purging CouchDB\n\nCouchDB stores delete operations indefinitely. This allows delete operations to replicate. Unfortunately, deleted documents accumulate, consuming disk space.\n\nDamien describes [CouchDB purging][purge] in the mailing list. Purging permanently removes documents, as if they never existed.  Databases with high create/delete churn ultimately must be purged at some point. Purge operations, by intention, cannot replicate; thus purging is essentially local database maintenance, only done to documents which nobody will ever miss. A final concern is that purging too often will destroy view indexes. Applications using views will be effectively offline until the views rebuild.\n\nThe following procedure is a cooperative technique for safe, zero-impact, zero-downtime, purging. Since purging is local to a database, the procedure makes some assumptions:\n\n* There is an *authoritative clock*, used for timestamps. CouchDB `Date` headers indicate this clock's current time.\n* Concurrent purges serialize using timestamps and *advisory locking* in a `_local` document\n\nIn this procedure, this is the criteria for purging a document:\n\n1. It must be **deleted**\n1. It must be sufficiently **old**, defined as\n   * *Either* it has a `deleted_at` timestamp, older than **Age** (preferred)\n   * *Or* it hasn't a `deleted_at` field, but its update sequence is greater than **Updates** ago\n\nThus, **Age** and **Updates** are site-specific parameters. Both are effectively a replication deadline. The documents had better finish replicating before the delete becomes **Age** old and before **Updates** subsequent changes! Choosing an age is better (24 hours, or 7 days both seem reasonable); however the update deadline is necessary to purge documents from legacy applications which use HTTP DELETE.\n\nThe procedure:\n\n1. *Sanity checks*. These are optional but can reduce the time the lock is held.\n  1. *Ping the DB*\n     * If compaction is running, abort, otherwise...\n     * Remember **update_seq** = `committed_update_seq`\n     * Remember **now** = the `Date` header\n  1. *Freshen the views*. For each design document:\n     1. Pick a deterministically random view based on `_id` and `_rev`\n     1. Query the view `?reduce=false&limit=1`\n     1. Query `_info`. If `purge_seq` changes during this loop, something is wrong. Abort.\n1. Fetch `_local/maintenance` which should have an `expires_at` value.\n1. If the expiration timestamp is greater than the `Date` header timestamp, abort\n1. Store `_local/maintenance` and abort if the request fails\n  * Your UUID (pick one at random)\n  * `activity = \"purge\"`\n  * `started_at` timestamp = now\n  * `expires_at` timestamp when maintenance is expected to be done (5 minutes?)\n1. **MAINTENANCE LOCK BEGINS**\n  1. Start a timer to abort if `expires_at` occurs\n  1. Optionally start a timer before expiration, to attempt to extend it before it occurs\n1. Run the *sanity checks* (mandatory). Remember **now** and **update_seq**.\n1. Identify `_id`s and `_rev`s to purge (optionally, begin this step immediatly after *ping the db* completes). Ideas:\n  * Hit `_changes?since=0`, anything with `\"deleted\":true` and `seq < update_seq - Updates` can purge\n  * Maybe query with `&include_docs=true` and check `deleted_at` vs. **now** - **Age**\n  * Maybe a `_changes` filter to do all this server-side?\n  * Maybe follow-up on the deleted docs (`POST _all_docs?include_docs=true {\"keys\":[...]}`) looking for old `deleted_at`\n  * If [COUCHDB-1252][jira_1252] is done, a view could help: `if(doc._deleted && doc.deleted_at) emit(doc.deleted_at, 1);`\n1. Run the purge request\n1. *Freshen the views*\n1. Purge again with 0 documents. This scrubs the purge operation, which had left copies of IDs and revs in the file.\n1. *Freshen the views*\n1. Trigger compaction. Optionally poll the db in the background. When `compact_running` becomes false, the documents are gone forever. Fire an event or callback or something.\n1. Optionally, release the lock early. Set `expires_at` = **now** and update `_local/maintenance`.\n1. **MAINTENANCE LOCK ENDS**\n\n[sqs_api]: http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/\n[purge]: http://mail-archives.apache.org/mod_mbox/couchdb-dev/200809.mbox/%3CDB2669F6-EDFB-44CB-9406-555B7721BA2F@apache.org%3E\n[jira_1252]: https://issues.apache.org/jira/browse/COUCHDB-1252\n","readmeFilename":"README.md"}