Skip to content

aetheric/vodoun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vodoun

Build Status Coverage Status npm version

A dependency injection framework for server-side node apps.

Installation

npm install vodoun --save

Usage

src/main/service/service-a.js
import vodoun from 'vodoun';

vodoun.register('service_a', [], (service) => {

	let stateChanged = false;

	service.blergh = () => {
		console.log('BLERGH!!!');
		stateChanged = true;
	});

});
src/main/service/service-b.js
import vodoun from 'vodoun';
import dbLib from 'db-lib';

vodoun.register('service_b', [ 'service_a' ], (service) => {

	const serviceA = this.service_a;

	return dbLib.connect('prot://localhost:8260/dbname').then((conn) => {

		service.query = (query, params) => conn.query(query, params);

		service.close = () => conn.close().then(serviceA.blergh);

	});

});
src/main/service/service-c.js
import vodoun from 'vodoun';

vodoun.register('service_c', {
	bloopyWibble: 'service_a',
	wibbledyBloob: 'service_b'

}, (service) => {

	const serviceA = this.bloopyWibble;
	const serviceB = this.wibbledyBloop;

	service.argh = (query, params) => {
		serviceA.blergh();
		return serviceB.query(query, params).then((result) => serviceB.close());
	});

});
src/main/index.js
import vodoun from 'vodoun';

vodoun.scan('src/main', '**/*.js').then((files) => {
	console.log(`Vodoun scan complete. ${files.length} files loaded.`);
	return vodoun.resolve('service_c');

}).then((serviceC) => {
	return serviceC.argh('get stuff from somewhere when something = :param', {
		param: 'value'
	});

});

About

A dependency injection framework for server-side node apps.

Resources

Stars

Watchers

Forks

Packages

No packages published