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

object-queue

v1.0.1

Published

Object queue

Downloads

179

Readme

object-queue

Fast and light queue of objects.

installation

npm install --save object-queue

API

Table of Contents

ObjectQueue

A simple and high performance queue for objects based on a singly linked list. It acts like a Set, the same entry cannot exists twice in the queue. Entries must be reference types (objects or functions). All the basic operations are O(1).

Note: This queue works by setting a private symbol property to the target object. If you don't dequeue all the elements or don't clear the queue after you finish using it or the entries, the link between entries will not be garbage collected. This may create memory leaks.

Note: Despite the fact that this queue is iterable, modifying the queue while iterating is unsafe (it may break the queue, enter infinite loops, create memory leaks).

head

Readonly Property: The head of the queue, the first element.

Contains the next item to be dequeued.

Type: (Object | null)

tail

Readonly Property: The tail of the queue, the last element.

Contains the last item to be dequeued.

Type: (Entry | null)

size

Readonly Property: The number of items in the queue.

Type: number

has

Checks wether the given entry exists in the queue or not.

Complexity is O(1).

Parameters

  • entry (Entry | null | undefined) The entry to look for.

Returns boolean True if the entry exists in the queue, false if not.

getNext

Given an element in the queue, returns the next element. Returns null if the element is not owned by the queue or is the last element.

Note: Despite the fact that this queue is iterable, modifying the queue while iterating is unsafe (it may break the queue, enter infinite loops, create memory leaks).

Complexity is O(1)

Parameters

  • entry (Entry | null | undefined) The entry to look for.

Returns (Entry | null) The next entry in the query or null if not available.

enqueue

Adds a new item into the queue. Returns true if operation succeeded, false if not.

Complexity is O(1).

Parameters

  • entry Entry The entry to enqueue.

Returns boolean True if entry was enqueued, false if not

enqueueMany

Enqueues many entries in one single call.

Returns the number of enqueued entries.

Parameters

  • entries Iterable<Entry> The iterable of entries to enqueue.

Returns number The number of enqueued entries.

dequeue

Removes an entry from the queue. Returns null if the queue is empty.

Complexity is O(1).

Returns (Entry | null) The entry dequeued or null if the queue is empty.

clear

Empties the queue.

Complexity is O(n).

Returns undefined

delete

Removes an element from the queue.

Since this operation have to loop all entries in the queue, try to avoid deleting elements.

Complexity is O(n).

Parameters

  • entry (Entry | null | undefined) The entry to remove

Returns boolean True if entry was removed during this call, false if invalid or not found.

toArray

Copies all items in the queue in a new array and returns it.

Complexity is O(n).

Returns Array<Entry> An array that contains all entries in the queue.

toSet

Copies all items in the queue in a new Set and returns it.

Complexity is O(n).

Returns Set<Entry> A set that contains all entries in the queue.

iterator

Iterates all elements in the queue, from head to tail.

Note: Despite the fact that this queue is iterable, modifying the queue while iterating is unsafe (it may break the queue, enter infinite loops, create memory leaks).

Returns Iterator<Entry> An iterable iterator that can be used to iterate all entries.