0.2.0 • Published 7 years ago

midge v0.2.0

Weekly downloads
13
License
-
Repository
github
Last release
7 years ago

midge

Mini Injector

Build Status

Install

npm install --save midge

Usage

const Midge = require('midge');

const cache = {
	a: 123,
	b: 321
};

const factories = {
	c: function(a, b) {
		return a + b;
	},
	d: function(b, c) {
		return b + c;
	}
};

// Create injector instance
const injector = Midge(cache, function factory(name) {
	return injector.invoke(factories[name]);
});


// Get results
let a = injector.get('a');
let b = injector.get('b');
let c = injector.get('c');
let d = injector.get('d');

expect(a).to.equal(123);
expect(b).to.equal(321);
expect(c).to.equal(a + b);
expect(d).to.equal(b + c);


// Injecting into functions
injector.invoke(function(a,b,c,d) {
	expect(a).to.equal(123);
	expect(b).to.equal(321);
	expect(c).to.equal(a + b);
	expect(d).to.equal(b + c);
});


// Injecting into constructors
injector.instantiate(function(a,b,c,d) {
	expect(this).to.be.an.object();
	expect(a).to.equal(123);
	expect(b).to.equal(321);
	expect(c).to.equal(a + b);
	expect(d).to.equal(b + c);
});

API

Injector methods

injector.get(name)

Returns instance(s) from cache or creates it/them by executing the injector factory.

  • name - A string or an array of strings with service-names.

injector.invoke(fn, [self], [locals])

Injects the given function while executing it with apply.

  • fn - Function to inject.
  • self - Object which will be bound to fn as this.
  • locals - Optional object containing values, which will be used before before cache and factory.

injector.instantiate(ctor, [locals])

Injects the given constructor while instantiating it with new

  • ctor - Constructor to inject.
  • locals - Optional object containing values, which will be used before before cache and factory.

#Author

Twitter: @platdesign