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

@laufire/utils

v3.0.0-1

Published

A simple set of utility libraries to ease development.

Downloads

440

Readme

Laufire - JS Utils

A simple set of utility libraries to ease development.

Notes

  • The reason for writing custom functions instead of depending on libraries is that, there isn't a coherent set. Depending on many libraries increases the time to learn their APIs.

  • The differences between some functions:

    • merge - replaces array elements, thus does not allow resulting array to have fewer elements.
    • overlay - uses extension arrays, as they are, allowing for greater control.
    • combine - adds the extension arrays to the source arrays, thus makes array lengths the sum of the two.
  • Randomized tests are expected to have an accuracy above second standard deviation, to allow for faster testing cycles.

HowTo

  • When immutability is required for functions like collection.merge and collection.combine, pass an empty base object. Ex: merge({}, someObj)

ToDo

  • Consider passing nested paths to the callbacks of collection.traverse and collection.walk.

  • Ensure key order in the results.

  • Move to Typescript, to allow for better support on IDEs.

  • Fix grammar.

  • Improve API documentation.

  • Test the index file for the integrity of imports.

  • Coverage might not cover all paths. Especially those of shared functions, as they might be partially covered by multiple functions, yet report full coverage. Find a fix for this.

  • Make randomized testing to achieve accuracy above third standard deviation, when publishing (to NPM). Use environment variables.

  • Functionalities:

    • collection

      • set - a container agnostic function to set the given values to the given keys.

      • till / findResult - a findKey like function which returns the return value of the predicate instead.

  • Pre-release

    • Audit the packages.

    • Update the packages.

    • Support at least the last four LTS vesrions of Node JS.

    • Use module alias instead of relative path.

Later

  • Test for and improve performance.

  • Rename the functions for readability, ease of recollection and to be semantic.

  • Try avoiding duplicate names across modules.

  • Try to build synthesis with al-js.

Gotchas

  • Object keys maintain a chronological order, unless they are integers. In which case they are added to the beginning in an ascending order.

Decisions

  • 20211111 - Decided to use numbers as array keys, to play nice with third party libraries.