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

server-hooks

v0.0.2

Published

This library provides very simple way to work with dependencies in your server code

Readme

server-hooks

This library provides very simple way to work with dependencies in your server code

The main point of this library is to provide small abstraction on top of node's AsyncLocalStorage API to define scopes inside your async code. Unlike most of DI solutions it doesn't require you to use decorators or DI instance directly.

Installation

npm install -S server-hooks

Usage example

Imagine that you have a logger and you would like to write messages with requestId value which you are could receive only in your http request handler. And you would like to use it like so

export function myFancyLogic(fancyArg: Fancy) {
    const logger = useLogger();
    // Do some staff
    logger.debug('Fancy work is done');
}

First of all we should define our logger context definition

import {createContext, useContext, withContext} from "server-hooks";
import {logger} from './your-logger';

// Give a name for the context and 
// let's use current logger as an initial value
const LoggerCtx = createContext("logger", logger);

// Define specified function to define context value
export function withLogger(data: object) {
    withContext(LoggerCtx, useContext(LoggerCtx).child(data))
}

// And just create shorhand hook 
// to easily use it inside your code
export function useLogger() {
    return useContext(LoggerCtx);
}

Now let's imagine that we have some framework to deal with http requests and all that you need is to call two functions.

import {dispatch} from "server-hooks";
import {withLogger} from '../services/logger'

function handler(request: Request) {
    return dispatch(async () => {
        withLogger({requestId: request.headers['x-request-id']});
        return await router.execute(request);
    });
}

Development

This project uses bun by default.

# Run tests
bun test
# Generate dist output
bun run build