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

extend-expect

v3.0.0

Published

Types and a helper for extending Jest's expect

Downloads

2,004

Readme

Extend Expect

Helpers for extending Jest's expect in a type-safe manner in Typescript.

Rationale

Extending Jest's matchers makes for much easier testing, but convincing Typescript that you've done so is annoying. The types you need are mostly, but not exhaustively, defined in the type stubs but aren't available for import.

This package is mostly type manipulation. We extract the relevant types from Jest, and package them up into a wrapper function which calls expect.extend() then returns expect.

Use

Recommended usage follows the pattern in src/test/expect.ts. You need an interface which denotes the extra methods you're making available on the object returned from expect(), and an object implementing the matchers corresponding to the members of the interface.

Importantly, you don't implement the extension interface: Jest will mangle calls made to it by test code, and call the correct underlying matcher function.

Jest has more documentation on writing custom matchers. The utility functions available on this.util are particularly useful for making nice failure messages.

Releasing

We use npm versions and GitHub Actions to release.

On your local machine, with main checked out, run npm version patch or whatever bump is appropriate. This will create a new commit and a tag starting with v containing the version. Push the tag to GitHub. We protect tags starting with v, so this step may only be undertaken by repository administrators.

In the GitHub UI, wait until the tag has finished its CI build. Now we may push the main branch without hitting branch protections. Do so.

Again in the GitHub UI, find the tag. Use the three dot menu on the tag to create a release. Use the auto-fill button to populate the release notes, and publish the release.

GitHub Actions will now build the release and publish it to NPM.