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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@slick-for/di

v1.0.4

Published

Dependency Injection Framework, works with providers that are of an interface

Downloads

16

Readme

Slick For DI

This is a project that enabled dependency resolution, while allowing resolving promises.

Here is a quick overview of how it works.

import Container from "@slick-for/di"

const container = new Container();


class Logger {

    constructor(private transport:Transport){

    }

    info(message){
        let log = {
            level:"info",
            message
        }


        this.transport.send(log);
    }
}


class Transport {
    send(message){
        ...
    }
}


container.add(Transport)
container.add(Logger)




container.get(Logger)

This is a very trivial case where it seems very simple to solve. But once you have 10s of classes this now becomes a job of creating factories to create all of these instances.

It is a lot of plumbing and will need a solution that wires it all up for you.

Let's look at another example.



class UserService {
    
    constructor(@AS('api') private api:string){
        
    }



    getStatus(){
        fetch(this.api)
        ...
    }
}

const client_version = 1.2;

const ApiEndPointProvider = {
    provide:"api",
    async useFactory(){

        let res = await fetch("/get/endpoint?client="+client_version)
        let json = await res.json();

        return json.endpoint;

    }
}

//after adding to container


container.get(UserService).
then(userservice=>{

    //you have everything wired up.

})

One thing that is difficult and could get out of hand is managing async code, and building up all of the dependencies required.

A dependencies injection framework job is to solve all of that. You describe what you need and the runtime will simply resolve it and all of it's dependencies, while resolving promises if needed.

These cases are quite trivial, but picture a scenario where there are multiple files, multiple dependencies, different files requiring the same instances,

eg a single DB connection, but it's shared with multiple of classes that require that instance.

This project is in development but the base implementation is working.

It needs some polishing however to make it complete.