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

@voxpelli/typed-utils

v1.10.1

Published

My personal (type-enabled) utils / helpers

Downloads

7,166

Readme

@voxpelli/typed-utils

My personal (type-enabled) utils / helpers

npm version npm downloads js-semistandard-style Module type: ESM Types in JS Follow @voxpelli@mastodon.social

Usage

Simple

import { filter } from '@voxpelli/typed-utils';

/** @type {string[]} */
const noUndefined = filter(['foo', undefined]);

Helpers

Array

filter(inputArray, [valueToRemove]) => filteredArray

Takes an array as inputArray and a valueToRemove that is a string literal, false, null or undefined, defaulting to undefined if left out.

Creates a new array with all values from inputArray except the one that matches valueToRemove, then returns that array with a type where thevalueToRemove type has also been removed from the possible values.

Can be useful in combination with eg. a .map() where some items in the array has resulted in undefined / null / false values that one wants to have removed before processing the result further.

filterWithCallback(value, callback)

Similar to Array.prototype.filter() but expects the callback to be a function like (value: unknown) => value is any where the is is the magic sauce.

isArrayOfType(value, callback)

Similar to Array.isArray() but also checks that the array only contains values of type verified by the callback function and sets the type to be an array of that type rather than simply any[]. The callback should be a function like (value: unknown) => value is any and needs to have an is in the return type for the types to work.

isStringArray(value)

Similar to Array.isArray() but also checks that the array only contains values of type string and sets the type to string[] rather than any[].

typesafeIsArray(value)

Alias: ~~isUnknownArray(value)~~ (deprecated)

Does the exact same thing as Array.isArray() but derives the type unknown[] rather than any[], which improves strictness.

Miscellaneous

explainVariable(value)

Returns a typeof style explanation of a variable, with added support for eg. null and array

looksLikeAnErrnoException(err)

Returns true if the err looks like being of the NodeJS.ErrnoException type

Object

omit(obj, keys)

The TypeScript utility type Omit<obj, keys> with code that does the actual omit.

pick(obj, keys)

The TypeScript utility type Pick<obj, keys> with code that does the actual pick.

typedObjectKeys(obj)

Like Object.keys() but typed with Array<keyof obj> rather than string[]. When obj is a union this means the type will resolve to only the keys shared between all objects in the union.

typedObjectKeysAll(obj)

Like typedObjectKeys(obj) but when obj is a union this type will resolve to all possible keys within that union, not just the shared ones.

Object Path

getObjectValueByPath(obj, path, createIfMissing)

getStringValueByPath(obj, path)

getValueByPath(obj, path)

Similar modules

  • type-helpers – my personal type helpers, contains no code, just types