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

ndi

v0.0.2

Published

nDI is a simple Dependency Injection framework

Downloads

6

Readme

nDI

nDI is a simple Dependency Injection framework.

Installation

npm install ndi

Example

var nDI = require('ndi');
var container = new nDI.Container();

container.setParameter('greeting.name', 'John');
container.set(
  'service.geeter',
  new nDI.FactoryWrapper(
    container,
    function(name) {
      return function() {
        return 'Hello ' + name + '!';
      };
    },
    ['$greeting.name']
  )
);

console.log(container.get('service.geeter')());

Example with express, see the example folder:

> git clone https://github.com/TeddyTN/nDI.git

> cd nDI
> npm install

> cd example
> npm install
> npm start

Define a parameter

The container.setParameter(name, value) method is used to define a parameter.

Arguments

  • name: The name of parameter
  • value: The value of the parameter

Define a service

The container.set(id, value) method is used to define a service.

Arguments

  • id: The id of the service
  • value: The value of the service

Load definitions from config file

You can load parameter and service definitions from a json file with the nDI.Loader class.

Usage

  var loader = new Loader(container, baseDir);

  loader.load(filePath);

Constructor arguments

  • container: must be an instance of nDI.Container
  • baseDir: is the path for loading files

loader.load arguments

  • filePath: is the path of the json config file (file path must relative to baseDir)

Config structure

{
  "parameters": {
    "greeting.name": "John"
  },
  "services": {
    "service.geeter": {"type": "factory", "file": "greeter", "arguments": ["$greeting.name"]}
  }
}

Parameter entries are very simple, there are key value pairs.

Service definition fields

  • type: The type of the service
    • class: Mark service as a reference to an constructor
    • factory: Mark service to wrapp an factory function
    • instance: Create a new instance of the given constructor
  • file: The path to the service (file path must be relative to baseDir)
  • arguments: The list of arguments for the service (will be ignored when type is class)
    • @...: Inject the service (must be the service id)
    • $...: Inject the parameter (must be the parameter name)