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

ahwa

v0.1.2

Published

One tiny helper tool

Readme

ahwa

One tiny helper tool, written in typescript.

To install dependencies:

Install

npm install ahwa

All functions

| Function Name | Parameter Types | Return Types | Function Description | | --- | --- | --- | --- | | roundToDecimal | (num: number, digit: number) | number | Rounds a number to a specified number of decimal places | | sumArray | (nums: unknown[]) | number | null | Sums an array of numbers, considering decimal places | | multiplyArray | (nums: unknown[]) | number | null | Multiplies an array of numbers, considering decimal places | | pickProps | (obj: Record<PropertyKey, unknown>, keys: keyof T[]) | Pick<T, K> | Picks specified properties from an object | | omitProps | (obj: Record<PropertyKey, unknown>, keys: keyof T[]) | Omit<T, K> | Omits specified properties from an object | | checkType | (val: unknown, type: string) | boolean | Checks the type of a value | | isUndefined | (val: unknown) | val is undefined | Checks if a value is undefined | | isNull | (val: unknown) | val is null | Checks if a value is null | | isNullOrUndefined | (val: unknown) | val is null | undefined | Checks if a value is null or undefined | | isNumber | (val: unknown) | val is number | Checks if a value is a number | | isString | (val: unknown) | val is string | Checks if a value is a string | | isBoolean | (val: unknown) | val is boolean | Checks if a value is a boolean | | isObject | (val: unknown) | val is Record<PropertyKey, unknown> | Checks if a value is an object | | isSymbol | (val: unknown) | val is symbol | Checks if a value is a symbol | | isSet | (val: unknown) | val is Set | Checks if a value is a set | | isWeakSet | (val: unknown) | val is WeakSet | Checks if a value is a weak set | | isMap | (val: unknown) | val is Map<unknown, unknown> | Checks if a value is a map | | isWeakMap | (val: unknown) | val is WeakMap<object, unknown> | Checks if a value is a weak map | | isArray | (val: unknown) | val is unknown[] | Checks if a value is an array | | isFunction | (val: unknown) | val is () => unknown | Checks if a value is a function | | isDate | (val: unknown) | val is Date | Checks if a value is a date | | isEmpty | (val: unknown) | val is null | undefined | '' | Checks if a value is empty | | isStrictEmpty | (val: unknown) | val is null | undefined | unknown[] | string | Checks if a value is strictly empty | | isPromise | (val: unknown) | val is Promise | Checks if a value is a promise | | isAsyncFunction | (val: unknown) | val is Promise | Checks if a value is an async function | | checkObjectsEqual | (obj1: Record<PropertyKey, unknown>, obj2: Record<PropertyKey, unknown>) | boolean | Checks if two objects are equal | | checkArraysEqual | (arr1: unknown[], arr2: unknown[]) | boolean | Checks if two arrays are equal | | isEqual | (value1: unknown, value2: unknown) | boolean | Checks if two values are equal | | limitConcurrency | (fns: (() => Promise)[] = [], limit: number) | Promise<PromiseSettledResult[]> | Limits the concurrency of executing tasks | | flattenTree | (tree: T[] = [], props?: { childrenKey?: C; isDepthFirst?: boolean }) | T[] | Flattens a tree structure into an array | | buildTree | (list: T[], props?: { parentId?: K; id?: K; childrenKey?: C; judgeParentIdFn?: (item: T) => boolean }) | TreeNode<T, C>[] | Builds a tree structure from an array | | uniqueArray | (arr: T[], prop: K) | T[] | Removes duplicate objects from an array |