dekorator
TypeScript icon, indicating that this package has built-in type declarations

0.2.3 • Public • Published

Dekorator

wercker status

Simple dependency injection lib exposing inject and singleton decorators. Dekorator can be used with Node or in browser with an ES6 transpiler such as (Babel)[https://babeljs.io/].

Dekorator is an extremely stripped down dependency injection library. It is meant to provide a lightweight solution for embedding into other libraries. If you are looking for a robust solution with lots of features this isn't it. It has a very specific use case. This doesn't mean it won't work exactly as indicated but rather you may need additional features it does not provide.

Install

For use with Node

$ npm install dekorator

For use in browser & JSPM

NOTE: jspm is a package manager which sets up your project for use with System.js, the ES6 module loader system. You can read more on (jspm here)[http://jspm.io].

jspm install npm:dekorator

or

jspm install github:origin1tech/dekorator

Getting Started

Using dekorator is very simple. You need merely decorate an ES6 class to have it's dependency(s) injected into the constructor or specify the class as a singleton.

Injecting

// NOTE: import below shown using System.js if you
// reference typings (dist/index.d.ts) you can import
// as ... from 'dekorator';
import {inject, invoke} from 'origin1tech/dekorator';
 
class Vehicle {
    constructor() {
    }
}
 
@inject(Vehicle)
class Car {
    constructor(vehicle) {
        this.vehicle = vehicle;
    }
    getVehicle() {
        return this.vehicle;
    }
}
 
// Invoke the class.
let car = invoke(Car);
 
// do something with car and
// injected vehicle.
let vehicle = car.getVehicle();

singleton

Nothing special here simply decorate your class with "@singleton" and it just works. Decorating with this decorator will ensure the class is a singleton in turn it will return the same instance when injected in other classes.

@singleton
class MyClass {
    constructor() {}
}

Additional Notes

One thing that trips up devs when first using decorators, well at least for those that actually use semi colons is that when using an ES7/ES2016 decorator you DO NOT use a semi colon after the decoration. Think of it in terms of a fluent api where you wouldn't terminate as you're using dot notation to further define some class/function etc.

What NOT to do

The below example with fail and not work

@inject(OtherClass);
class MyClass {
    constructor() {}
}

Testing

You will notice a few specs in the test folder which can be run using Mocha. Simply type mocha in your terminal from the root of the project or run:

npm test

License

Basically you can do just about anything you like. Enjoy!

See LICENSE.md

Package Sidebar

Install

npm i dekorator

Weekly Downloads

1

Version

0.2.3

License

MIT

Last publish

Collaborators

  • origin1tech