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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nathanfaucett/immutable-list

v0.0.5

Published

immutable persistent linked list for the browser and node.js

Downloads

35

Readme

Immutable List

Immutable persistent linked list for the browser and node.js, ImmutableList can not be changed once created. Persistent data presents a mutative API which does not update the data in-place, but instead always yields new updated data.

This implementation is based on clojure's List.

Install using npm

$ npm install @nathanfaucett/immutable-list --save

Install using yarn

$ yarn add @nathanfaucett/immutable-list --save

Example Usage

var ImmutableList = require("@nathanfaucett/immutable-list");


var a = new ImmutableList([0, 1, 2]),
    b = new ImmutableList(0, 1, 2),
    c = ImmutableList.of([0, 1, 2]),
    d = ImmutableList.of(0, 1, 2);

var a0 = a.push(3), // returns a new list with 3 at the end of the list
    a1 = a.unshift(-1); // returns a new list with -1 at the start of the list

Docs

Members

length -> Number

returns size of List, only available if Object.defineProperty is supported

Static Functions

List.isList(value: Any) -> Boolean

returns true if value is a list else false

List.of(...values: Array) -> List

creates List from passed values same as new List(...values: Array<Any>)

List.equal(a: List, b: List) -> Boolean

compares lists by values

Functions

size() -> Number

returns size of List

get(index: UnsignedNumber) -> Any

returns value at index

nth(index: UnsignedNumber) -> Any

alias to get

first() -> Any

returns first element

last() -> Any

returns last element

indexOf(value: Any) -> Number

returns index of value, -1 if not found

set(index: UnsignedNumber, value: Any) -> List

returns new List if value at index is different

insert(index: UnsignedNumber, ...values: Array) -> List

returns new List with inserted values at index

remove(index: UnsignedNumber[, count = 1: UnsignedNumber]) -> List

returns new List without the values from index to index + count

conj(...values: Array) -> List

returns new List with values pushed to front of the List

unshift(...values: Array) -> List

alias to conj

pop() -> List

returns new List without last element

shift() -> List

returns new List without first element

push(...values: Array) -> List

returns new List with values pushed to end of the List

concat(...lists: Array) -> List

returns new List with values from lists pushed to end of the List

iterator([reverse = false: Boolean]) -> Iterator

returns Iterator

toArray() -> Array

returns List elements in an Array

join([separator = " "]) -> String

join all elements of an List into a String

toString() -> String

String representation of List

equals(other: List) -> Boolean

compares this list to other list by values

every, filter, forEach, forEachRight, map, reduce, reduceRight, some

common Array methods