q.js v0.0.6
Q.js
NodeJS Queue module that can be used for a limitless amount of things and just works!
//Create new queues queue.init('login');
queue.use('login').add('abe'); //queue = abe name = queue.use('login').shift(); //abe
<h3>Adding to Queues</h3>
```javascript
var queue = require('q.js');
queue.use('login').add('abe').add('bob').add('chris');
queue.use('login').add('derek');
//queue = [abe,bob,chris,derek]
queue.use('login').add('abe').add('bob');
queue.use('login').shift()
//queue = bob
<h3>Removing from Queues</h3>
```javascript
var queue = require('q.js');
queue.use('login').add('abe').add('bob');
queue.use('login').remove(1);
//queue = [abe]
queue.use('login').add('abe').add('bob').add('chris');
queue.use('login').loop(function(q) { if(q.check('bob')) q.remove();
q.getCount();
//return: current iteration of the loop
q.get();
//return: Loop #1 abe #2 bob #3 chris
q.remove()
//removes the current row from the queue
q.check(input)
//check input against q.get() returns bool
}) //queue = abe,chris
<h3>Fetching</h3>
```javascript
var queue = require('q.js');
queue.use('login').add('abe').add('bob');
queue.use('login').fetch();
//return = [abe,bob]
user1 = { name:'abe', accountType:'admin' }
user2 = { name:'bob', accountType:'user' }
queue.init('users'); queue.init('admins');
queue.routeFilter.register('user/admin', function(accountType) { if(accountType === 'admin') return 'admins' else return 'users'; });
queue.routeFilter.set('user/admin');
//instead of queue.use() we just use route() and pass the accountType so q.js can handle the routing queue.route(user1.accountType).add(user1.name); queue.route(user2.accountType).add(user2.name);
<h3>Events</h3>
```javascript
var queue = require('q.js');
queue.init('test');
queue.use('test').on('add', function(data) {
console.log('Add event fired! Data:' + data);
});
queue.use('test').on('remove', function(data) {
console.log('Remove event fired! Data:' + data);
});
queue.use('test').on('shift', function() {
console.log('Shift event fired!');
});
queue.use('test').on('fetch', function() {
console.log('Fetch event fired!');
});
queue.use('test').on('change', function() {
console.log('Change event fired!');
});
queue.use('test').add('bob');
queue.use('test').remove(0);
queue.use('test').shift();
queue.use('test').fetch();