New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

priority-queue

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

priority-queue

functional, data oriented priority queue that doesn't suck

latest
Source
npmnpm
Version
0.2.1
Version published
Weekly downloads
31
47.62%
Maintainers
1
Weekly downloads
 
Created
Source

priority-queue

functional, data oriented priority queue that doesn't suck

tests

There are many priority queue implementations on the web, but I couldn't find any that meet these critera:

  • does not allocate memory at run time
  • has tests
  • is functional, data oriented
  • is tiny! (~150 lines of code)
  • is a pure ES module

So here we are!

Usage

import PQ from 'priority-queue'


// create a new priority queue that can hold a maximum of 20,000 items.
// by default max length is 1000
const MAX_LENGTH = 20000
const obj = PQ.create(MAX_LENGTH)


// insert a few items
PQ.queue(obj, 'e', 1)
PQ.queue(obj, 'f', 9)
PQ.queue(obj, 'g', 4)

// get the highest priority item out of the queue
console.log(PQ.dequeue(obj)) // 'f'
console.log(PQ.dequeue(obj)) // 'g'
console.log(PQ.dequeue(obj)) // 'e'

// when the queue is empty it'll return undefined on dequeue
console.log(PQ.dequeue(obj)) // undefined

API

  • queue - add an element to the queue
  • dequeue - delete the max priority element from the queue
  • isEmpty - returns true/false
  • clear - clear the queue
  • delete - If we need to update the priority, delete that item and insert it in again
  • list - contents of heap

Using classes/objects

class Box {
  constructor(w, l) {
    this.w = w
    this.l = l
    this.area = w * l // this is priority
  }
}
    
const obj = PQ.create()
const a = new Box(5, 5)
const b = new Box(9, 9)
const c = new Box(2, 3)
const d = new Box(3, 3)

PQ.queue(obj, a, a.area)
PQ.queue(obj, c, c.area)
PQ.queue(obj, d, d.area)
PQ.queue(obj, b, b.area)

assert.deepEqual(PQ.dequeue(obj), b)
assert.deepEqual(PQ.dequeue(obj), a)

Keywords

priority

FAQs

Package last updated on 03 May 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts