@ingress/di

3.0.0-alpha.8 • Public • Published

@ingress/di

Server-side dependency injection middleware for ingress

Based on angular di

Example (ES2015)

import di from "@ingress/di";
import {
  perRequestProviders,
  providers,
  SomeDependency,
} from "./my-dependencies";
const container = di({ providers, perRequestProviders });

Configuration

There are a few ways to let the root container know about your dependencies and their lifetimes.

  1. Provide them at creation time (shown in example)
  2. Use .Singleton and .PerRequestLifetime decorators exposed on a container instance
  3. Builder (TODO) - Use a container builder to discover, configure, and load dependencies.

Decorator Configuration example

//configuration.js
import di from '@ingress/di'

const container = di()
const { Singleton, PerRequestLifetime } = container

export {
  container,
  Singleton,
  PerRequestLifetime
}

//my-dependency.js
import { Singleton } from './configuration'

@Singleton
export class MyDependency {
  ...
}

//index.js
import ingress from '@ingress/core'
import { container } from './configuration'
import { MyDependency } from './my-dependency'

const app = ingress()
app.use(container).use((context, next) => {
  const dep = context.scope.get(MyDependency)
  ...
})

It is important to note that in index.js loading ./my-dependency after ./configuration is required.

Package Sidebar

Install

npm i @ingress/di

Weekly Downloads

44

Version

3.0.0-alpha.8

License

MIT

Unpacked Size

42.8 kB

Total Files

22

Last publish

Collaborators

  • calebboyd