uniqueue
v1.0.0
Published
only queue unique items and retrieve them only once
Downloads
8
Maintainers
Readme
uniqueue
only queue unique items and retrieve them only once
Installation
$ npm install --save uniqueue
Usage
'use strict';
const Uniqueue = require('uniqueue');
const { push, pop, remaining, queued, processed, clear } = new Uniqueue();
const urls = [
'https://google.com',
'https://google.com',
'https://google.com/',
'https://www.google.com'
];
// Only add unique items to the queue
urls.forEach(url => {
push(url);
});
console.log('=>', queued.size, processed.size, remaining());
// => 3 0 3
// Extract items from queue
while (remaining() > 0) {
console.log('=> remaining:', remaining());
console.log('=>', pop());
console.log('=> processed:', processed.size);
console.log();
}
// => remaining: 3
// => https://google.com
// => processed: 1
//
// => remaining: 2
// => https://google.com/
// => processed: 2
//
// => remaining: 1
// => https://www.google.com
// => processed: 3
// Clear the queue
clear();
console.log('=>', queued.size, processed.size, remaining());
// => 0 0 0
// Use a custom matcher function to prevent similar duplicates
const matcher = (a, b) => {
return (
a.replace(/[^a-z]/gi, '') === b.replace(/[^a-z]/gi, '') ||
a.replace(/:\/\/www\./i, '://') === b.replace(/:\/\/www\./i, '://')
);
};
urls.forEach(url => {
push(url, matcher);
});
console.log('=>', [...queued]);
// => [ 'https://google.com' ]
// * Use a custom matcher function during initialization
const queue = new Uniqueue(matcher);
// ...
API
Uniqueue([matcher])
Returns a new queue
instance.
matcher
Optional
:Function
is evaluated on every attempt to add an item to the queue.Overrides the default
Set
value equality checke.g.
(a, b) => a.name.toUpperCase() === b.name.toUpperCase()
will prevent{ name: "Bob" }
from being added if{ name: "BOB" }
is already in the queue.
queue
Uniqueue
instance.
.push(item [, matcher])
Adds an item of
Any
type to the queue.matcher
Optional
:Function
overrides thematcher
function provided during initialization (if it was provided).
.pop()
Returns the next available item from the queue or
null
if no items are available..remaining()
Returns the
Number
of available items from the queue..queued
The
Set
holding all unique items added to the queue..processed
The
Set
holding all items that have beenpop()
'd from the queue..clear()
Clears the queue, including
.queued
and.processed
.
License
ISC © Buster Collings