2.0.0 • Published 5 years ago

injectory v2.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Injectory

A ultra simple dependency injection container

Usage

import DI from 'injectory';

const di = new DI();

// register a base class
di.set('Abstract', di => {
   	return class Abstract {
   	    constructor(name) {
   	        this.abstract = name;
   	    }
   	}
});

// register a derived class
di.set('Concrete', di => {
    const Abstract = di.get('Abstract');
    return class Concrete extends Abstract {
   	    constructor(abstract, concrete) {
   	        super(abstract);
   	        this.concrete = concrete;
   	    }
   	} 
});

// get a class
const Concrete = di.get('Concrete');

// create a class instance
const instance = di.create('Concrete', 'a', 'b');
expect(instance.abstract).toBe('a');
expect(instance.concrete).toBe('b');

// decorate a class
di.decorate('Concrete', Concrete => di => {
   	return class DecoratedConcrete extends Concrete {
   	    constructor(abstract, concrete) {
   	        super(abstract, concrete);
   	    }
   	    
   	    get() {
   	       return this.abstract + this.concrete; 
   	    }
   	} 
});

// create a class instance
const decoratedInstance = di.create('Concrete', 'a', 'b');
expect(decoratedInstance.get()).toBe('ab');