npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

round-linked-queue

v0.1.0

Published

Fixed size round linked queue implementation in Javascript

Downloads

3

Readme

Round Linked Queue

Coverage Status

Implements a fixed-size linked-list based queue. When trying to add an element to a full queue, it will evict the first added item in order to make room for the new element. This queue preserves the First In/First Out operation mode.

How it works?

Given a queue of capacity 3, initially empty:

(Nil)

Calling queue.add(1) will put 1 at the beginning of the queue:

(1) -> (Nil)

Then queue.add(2) will turn it into:

(1) -> (2) -> (Nil)

Once more, with queue.add(3) we will have:

(1) -> (2) -> (3) -> (Nil)

Now the queue is at capacity. If we try to add another element, it will remove the element that was added first and shift all elements to the right. Consider queue.add(4), the final result will be:

(2) -> (3) -> (4) -> (Nil)

(1) // <--- removed element will be returned

Installation

yarn add round-linked-queue
# or with NPM
# npm install --save round-linked-queue

API

constructor

new RoundLinkedQueue(maxLength: number) => RoudLinkedQueue

Params:

  • maxLength: number: the capacity of the queue.

#add()

add(element: Any) => Any

Params:

  • element: Any: the element to add to the queue.

Returns:

  • undefined: if the queue is not at capacity, because no element was removed.
  • Any: the removed element if the queue is at capacity.

#remove()

remove() => Any, throws Error

Returns:

  • Any: the removed element if the queue is not empty.

Throws:

  • Error: if the queue is empty.

#toArray()

toArray() => [Any]

Returns:

  • [Any]: an Array with all elements in the queue.

#*[Symbol.iterator]()

*[Symbol.iterator]() => [Any]

Returns:

  • Iterator: an iterator for the queue.

.maxLength

get maxLength => Number

Returns:

  • Number: the capacity of the queue.

.first

get first => Any, throws Error

Returns:

  • Any: the first element in the queue if it is not empty.

Throws:

  • Error: if the queue is empty.

.last

get last => Any, throws Error

Returns:

  • Any: the last element in the queue if it is not empty.

Throws:

  • Error: if the queue is empty.

static fromArray

RoundLinkedQueue.fromArray(inputArray: [Any]) => RoudLinkedQueue

Params:

  • inputArray: [Any]: an arbitrary array of elements.

Returns:

  • RoundLinkedQueue: a new instance of the queue containing all elements in the array, respecting the insertion order.

Contributing

Running tests

After clonnig this repo, run:

yarn test **.test.js
# or with NPM
# npm run test **.test.js