Skip to content
/ Queue Public

SlimIO - Queue Class designed for SlimIO Core

License

Notifications You must be signed in to change notification settings

SlimIO/Queue

Repository files navigation

Queue

version Maintenance mit dep size Known Vulnerabilities Build Status

SlimIO - Simple Queue system. This package has been created for the SlimIO core and does not aim to be a popular Queue package (it answer our needs).

What is it ?

If you do not know what a queue is, please read the following wikipedia page.

Requirements

Getting Started

This package is available in the Node Package Repository and can be easily installed with npm or yarn.

$ npm i @slimio/queue
# or
$ yarn add @slimio/queue

Usage example

const Queue = require("@slimio/queue");
const queue = new Queue();

queue.enqueue("foo", "bar");
console.log(queue.idLenght("foo")); // 1
console.log(queue.dequeue("foo")); // "bar"

API

An id is described by the following type: string|number|symbol. All following API are methods of Queue class.

enqueue(id, value: any): void

Enqueue data in a given queue (identified by his id).

const { deepStrictEqual } = require("assert");
const q = new Queue();
const sym = Symbol("foo");

q.enqueue(sym, 1);
q.enqueue(sym, 2);

const queueData = [...q.dequeueAll(sym)];
deepStrictEqual(queueData, [1, 2]);
dequeue(id): any

Dequeue the first data that was enqueued in the given queue id. A null value is returned when there is no data in the queue!

const { strictEqual } = require("assert");
const q = new Queue();

q.enqueue(100, 1);
q.enqueue("foo", "bar");

strictEqual(q.dequeue(100), 1);
strictEqual(q.dequeue("foo"), "bar");
strictEqual(q.dequeue("foo"), null);
dequeueAll(id): Iterator< any >

Dequeue all data that was enqueued in the given queue id. The returned value is a JavaScript iterator, no data will be lost if the iterator is stoped.

const { deepStrictEqual } = require("assert");
const q = new Queue();

q.enqueue("test", 1);
q.enqueue("test", 2);
q.enqueue("test", 3);

const queueData = [...q.dequeueAll(100)];
deepStrictEqual(queueData, [1, 2, 3]);
has(id): boolean

Check if a given queue id exist!

const { strictEqual } = require("assert");
const q = new Queue();

q.enqueue("foo", null);

strictEqual(q.has("foo"), true);
strictEqual(q.has("fo"), false);
ids(): string[]

Get all registered queue ids.

const { deepStrictEqual } = require("assert");
const q = new Queue();

q.enqueue(100, 1);
q.enqueue("foo", "bar");
q.enqueue("test", 20);

const ids = q.ids();
deepStrictEqual(ids, [100, "foo", "test"]);
idLength(id): number

Return the number of elements of a given queue id.

const { strictEqual } = require("assert");
const q = new Queue();

q.enqueue("test", 20);
q.enqueue("test", 21);
q.enqueue("test", 22);

const len = queue.idLength("test");
strictEqual(len, 3);

Dependencies

Name Refactoring Security Risk Usage
@slimio/is Minor Low Type Checker

License

MIT

About

SlimIO - Queue Class designed for SlimIO Core

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published