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

lighter-tree

v1.2.0

Published

A lightweight trie implementation.

Downloads

19

Readme

lighter-tree

Chat Version Downloads Build Coverage Style

The lighter-tree module is a lightweight trie data structure implementation. It can be used to build a structure of values, and perform a preorder traversal over all of the non-null values (including leaves which are not tree instances).

Installation

From your project directory, install and save as a dependency:

npm install --save lighter-tree

API

Type

The lighter-tree module exports a constructor that extends the Type constructor from lighter-type. When a Type (such as Tree) is uppercased in documentation, it refers to the constructor or its constructor properties. And when a type is lowercased (such as tree), it refers to an instance and its prototype properties.

Tree

Tree is a constructor which instantiates tree objects. In documentation, A new tree object can be constructed simply with the new keyword.

var Tree = require('lighter-tree')

// Create a brand new Tree object.
var tree = new Tree()

Tree.init(object)

If you would like to add tree functionality to an existing JavaScript object, you can use the init method to decorate it with Tree.prototype methods. It will be able to do everything a tree can do, without being an instance of Tree.

var Tree = require('lighter-tree')
var fs = require('fs')

// Mix tree functionality into the filesystem object.
Tree.init(fs)
var root = fs.branch('/')
var tmp = root.branch('/tmp')
tmp.leaf('/tmp/a')
tmp.leaf('/tmp/b')
fs.each(console.log)
//> /
//> /tmp
//> /tmp/a
//> /tmp/b

tree.value

Tree instances can have an optional value, with the default being undefined. There is no requirement for the type of value, although the undefined type is handled in a special way, by triggering a function call when the tree's values are iterated with the each method.

tree.children

Tree instances have an array of children, with the default being an empty array. Entries in the children array can have any type of value. If a child is an instance of Tree, it can be called a branch, otherwise, it is a leaf.

tree.leaf(value)

Adds a value into the array of children. If the value is an instance of Tree, it will be treated as a branch, otherwise, it will be treated as a leaf.

tree.branch([value])

Creates a Tree instance with an optional value, and adds it to the tree instance's children, thereby making it a branch.

tree.each(fn)

Iterates over a tree using preorder traversal, and calling fn(value, isLeaf) for each branch and leaf that has a defined value.

More on lighter-tree...