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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@ericos.bennett/lotide

v1.0.1

Published

Lotide (Lodash) Modules for LHL!

Readme

Lotide

A mini clone of the Lodash library.

Purpose

BEWARE: This library was published for learning purposes. It is not intended for use in production-grade software.

This project was created and published by me as part of my learnings at Lighthouse Labs.

Usage

Install it:

npm install @ericos.bennett/lotide

Require it:

const _ = require('@ericos.bennett/lotide');

Call it:

const results = _.tail([1, 2, 3]) // => [2, 3]

Documentation

The following functions are currently implemented:

  • assertArraysEqual(arr1, arr2): Logs a pass/fail assertion to the console by testing the equality of 2 arrays. Will always fail if either array contains nested reference data types.
  • assertEqual(actual, expected): Logs a pass/fail assertion to the console by testing the strict equality of 'actual' and 'expected'. Both arguments must be primitives.
  • assertObjectsEqual(object1, object2): Logs a pass/fail assertion to the console by testing the equality of 2 objects. Will always fail if either object contains nested reference data types.
  • countLetters(str): Returns an object with the (case-insensitive) count of all letters + (non-whitespace) characters in the input string.
  • countOnly(allItems, itemsToCount): Returns an object with the counts in the allItems array of each item with a true value in the itemsToCount array.
  • eqArrays(arr1, arr2): Returns true if each item in arr1 has strict equality with the corresponding index in arr2 and false otherwise. Will always return false if either array contains nested reference data types.
  • eqObjects(object1, object2): Returns true if each property in object1 has strict equality with the corresponding property in object2 and false otherwise. Will always return false if either object contains nested reference data types.
  • findKey(object, callback): Returns the first object key whose value satisfies the callback function criteria.
  • findKeyByValue(object, value): Returns the first obkect key whose value strictly equals the value arg.
  • flatten(arr): Flattens an array of arrays into a single-level array. Doesn't work if there is more than two levels of depth in the input array.
  • head(arr): Returns the first element in an array.
  • letterPositions(str): Returns an object with the an array for each (lowercase, non-whitespace) character in the input string. This array contains the indexes where these characters are found in the string.
  • map(arr, callback): Applies the callback function to each element in the input array and returns a new array with the results.
  • tail(arr): Returns an array containing all items in the original array except for the first index (arr[0]).
  • takeUntil(arr, callback): Applies a callback function to each element in an array and returns an array containing all items until the callback returns false.
  • without(source, itemsToRemove): Returns an array containing all elements in the source array that do not strictly equal any item in itemsToRemove. The returned array will never include any nested arrays or objects.