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

hmjust-util

v1.0.1

Published

Various utilities (log etc)

Readme

hmjust-util

A small set of utilities I use.

Installing

npm install hmjust-util

Initializing

const util = require('hmjust-util');
util.init();

init

util.init();
util.init(settings);

settings is an optional object of those settings that you want to change. Default settings are:

logFile:       "logger.log"     // name of log file for log() and warn()
errorFile:     "error.log"      // name of log file for warn()
output:        CONSOLE | FILE   // output to console and log files
exception:     false            // if true, will throw an exception if the append to the log file fails
checkInterval: 5*60*1000        // check every 5 minutes
checkSize:     1024*1024        // 1 MB
verbose:       false            // verbose logging to console from this module

To only output log to logfiles (not console), initalize with

util.init({
	output: util.FILE,
});

Once init() has been called, every checkInterval milliseconds, the sizes of the log files will be checked. If a log files exceed the checkSize the log file will be renamed. The renaming scheme is simply to add a dot and an ascending number to the log filename, using the first available. So if the log file is logger.log and there already exists a logger.log.1, the log file will be renamed logger.log.2 and the next log() will create a new logger.log. To disable this check, use a checkInterval less than or equal to 0, or call stopCheck() after init().

Utilities

log

log(string) outputs the string to the log file, each time preceded by a datetime and the linenumber in the script.

util.log('This will be logged');

warn

warn(string) outputs the string to the log file and the error log, each time preceded by a datetime and the linenumber in the script.

util.warn('This will be logged, both in the ordinary log file and the error log');

tabular

tabular(string) outputs the string to the log file, each time preceded by a datetime and the linenumber in the script. The string is split into a list of strings on tabs and newlines, and each substring is output separately.

util.tabular('This will be logged\nand this will be on a separate line');

stopCheck

Stops the scheduled checks for size of logfiles. The scheduled checks can be restarted by calling init().

writer

writer(logFileName, checkInterval, checkSize) returns a logging function that outputs like log(string) with a separate interval size check.

Using this any number of logging functions can be generated.

let logger = util.writer('myown.log', 300000, 1000000);
let otherLogger = util.writer('myother.log', 300000, 1000000);
logger('Write this to myown.log');
otherLogger('Write this to myother.log');

encodeURIComponentLatin1

A replacement for encodeURIComponent, that allows Latin1/ISO-8859-1 encodings to pass through. Useful in situations where one part of a client/server expects Latin1 encoding.

quotemeta

Quote string for regexp use, similar to Perl's quotemeta / \Q ... \E.

Constants

NO

Will not log to console or logfile.

CONSOLE

Will log to console.

FILE

Will log to file.

Author