0.3.1 • Published 8 years ago

lazybox v0.3.1

Weekly downloads
1
License
ISC
Repository
-
Last release
8 years ago

Lazybox

Dependency injection container based on Map()

Usage

var Lazybox = require('lazybox');

var c = new Lazybox();

// Set parameter
c.set('foo.bar', 'baz');

// Define a service
c.define('foo', () => {
	return new Service();
});

// Define a service with dependencies
c.define('answer', ['answer.value', (value) => {
	console.log('Lazily initialized');
	return {
		life: () => value,
		universe: () => value,
		everything: () => value
	};
}]);
c.set('answer.value', 42);

c.get('answer').life(); // Logs 'Lazily initialized'

// Define a generator service

c.define('nextid', function *nextId() {
	const id = 0;
	while (true) {
		yield id++;
	}
});
let id = c.get('nextid')
id(); // 0
id(); // 1
id(); // 2 ...

Dependency Injection

Providers

// Register a provider function
c.register((c) => {
	c.set('foo', 'bar');
});

// Register a provider object
c.register({
	register: (c) => {
		c.set('foo', 'bar');
	}
});

API

container.match(pattern, callback)

Use path-to-regexp to match keys.

This does not initialize any service by calling get()

Arguments

  • pattern: A key pattern
  • callback: A function (key, params, container) to call for each result.
cnt.matchKeys('foo.:bar.:baz?', (key, params, container) => { ... });

container.setdefault(key, value)

Similar to Python's dict.setdefault(key, value) method. It gets the value of a key or sets it to value if not defined.

0.3.1

8 years ago

0.3.0

8 years ago

0.1.1

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago