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

@harijoe/handly

v0.0.4

Published

A wrapper for serverless handlers to prevent silly mistakes

Readme

Handly

A wrapper for serverless handlers to prevent silly mistakes, based on middy

How to use it ?

Simply wrap your serverless handler like this :

import handly from 'handly'

const handler = async (event, context, callback) => {
  return {
    statusCode: 200,
    body: {
      message: {
        hello: 'world',
      },
    },
  };
};

export default handly(handler)

How does it work ?

Handly wraps useful middy middlewares as well as other middlewares made by me.

httpEventNormalizer

Adds queryStringParameters and pathParameters keys even though there are null to allow code such as to never throw :

event.pathParameters.userId

httpHeaderNormalizer

Normalize http headers, for example Content-type becomes Content-Type

jsonBodyParser

When Content-Type is set to application/json, this middleware parses the body automatically so that event.body becomes an object

jsonBodyParser

When Content-Type is set to application/json, this middleware parses the body automatically so that event.body becomes an object

urlEncodeBodyParser

Same as jsonBodyParser for application/x-www-form-urlencoded

failsafe

This one is not a middy middleware but a wrapper which will return a 500 http response when an uncaught exception is thrown. The default behavior is to return a 200 response…

normalizedResponse

Not official middy middleware. It automatically calls JSON.stringify on every response body. This is something mandatory with aws.

Author

Hello, I am Julien vallini, an indie-maker. Follow me on twitter if you like my work.