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

sset

v1.0.16

Published

Sorted Set in javascript for node that uses binary search for maintaining sort order

Downloads

37

Readme

sset - Sorted Set for javascript

Yet another sorted set, but with the following feature set:

  • Uses binary-sort to insert and search and insert in set, so it is incredibly fast.
  • Can contain any kind of object
  • You can specify a custom comparator, if you have objects, strings etc (default uses number values)

installation

yarn add sset
# or
npm install sset

v2 guide

The API has changed somewhat. Now you instantiate a SortedSet, TS or node - SortedSet extends an array, so Array.isArray() returns true, you can use it as an array, with the primary difference being that when inserting into it via .push() the array remains sorted and .indexOf() uses binary search to look up items.

import { SortedSet } from 'sset'

const set = new SortedSet<number>()
set.push(27)
// or
const otherSet = SortedSet.fromArray([1, 2, 3, 4])

Pros/cons

Fast lookups

However, your penalty is at insertion time. If you insert a lot of items at a time, those insertions will be slow (though they can be sped up):

Custom comparator

var set = SortedSet((a: User, b: User) => {
  return a.age - b.age
})

set.push(
  ...[
    { name: 'Alice', age: 34 },
    { name: 'Jenny', age: 27 },
  ],
)

// set now contains [{val: 3}, {val: 5}];

Installation

npm install sset

Todo - Pull requests welcome!

Obvious big things missing, namely:

  • this thing was conceived years ago, but now I think it would be better if the interface was more similar to the native Set
  • The SortedArray package (sarray) is basically the same thing, but an array instead of a set - they should probably just be the same package

License

MIT