This package has been deprecated

Author message:

Moved to https://github.com/msiviero/knit

@msiviero/knit-di-express
TypeScript icon, indicating that this package has built-in type declarations

0.3.0 • Public • Published

Typescript lightweight dependency injection container for express

Installation

yarn add @msiviero/knit-di-express

Example of usage

Base usage:

import * as express from "express";
import { 
  ApiContainer, 
  api,
  component, 
  Container, 
  Exchange,
  get
} from "@msiviero/knit-di-express";

const app = express();
const apiContainer = ApiContainer.getInstance();

@component()
class Greeter {
  public greet(who: string) {
    return `Hello ${who}`;
  }
}

@api("/api/v1")
class ApiController {

  constructor(private readonly greeter: Greeter) { }

  @get("/hello")
  public hello(exchange: Exchange) {
    const who: string = exchange.request.query.who || "Nobody";
    exchange.response.json({
      message: this.greeter.greet(who),
    });
  }
}

apiContainer.registerApi(app, ApiController);
app.listen(3000);

Mocking dependencies

Registering mock dependencies for unit tests can be easily achieved via:

const app = express();
const apiContainer = ApiContainer.withContainer(Container.newContainer());

@component()
class Greeter {
  public greet(who: string) {
    return `Hello ${who}`;
  }
}

class CustomGreeter extends Greeter {
  public greet(who: string) {
    return `Custom Hello ${who}`;
  }
}

apiContainer.container.provide(Greeter, () => new CustomGreeter());

@api("/api/v1")
class ApiController {

  constructor(private readonly greeter: Greeter) { }

  @get("/hello")
  public hello(exchange: Exchange) {
    const who: string = exchange.request.query.who || "Nobody";
    exchange.response.json({
      message: this.greeter.greet(who),
    });
  }
}

apiContainer.registerApi(app, ApiController);

Package Sidebar

Install

npm i @msiviero/knit-di-express

Weekly Downloads

0

Version

0.3.0

License

MIT

Unpacked Size

152 kB

Total Files

11

Last publish

Collaborators

  • msiviero