1.0.0 • Published 5 years ago

injf v1.0.0

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

Introduction

injf is a minimal, unassuming, dependency injection container focused on functional patterns rather than OOP ones. It features lazy resolution of dependencies via promises and is designed to inject parameters into your functions based on their name. You can inject everything you like but injf is designed with a stateless functional-style mindset.

Installation

injf can be installed via npm:

$ npm install injf

Dependencies

infj requires Babel 7 in order to run. Add these lines to your .babelrc:

{
  "presets": ["@babel/preset-env"],
  "plugins": ["@babel/plugin-transform-runtime"]
}

Examples

Let's say you have a sum function and you want to evaluate it using injected x and y values.

function sum(x, y) {
  return x + y;
}

You must have (anywhere) a section that is executed that registers x and y with the container.

injf.register('x', 3);
injf.register('x', 2);
injf.register('y', 1);

Note that you can register the same dependency multiple times. The last value will be used.

const result = await injf.resolve(sum);
expect(result).toEqual(3);

Due to lazy loading, you must use await or some other Promise-resolution method in order to obtain the actual result.

You can combine dependencies by calling register and resolve at the same time

injf.register('sumSquare', injf.resolve(sum => sum * sum));
injf.register('sum', injf.resolve((x, y) => x + y));
injf.register('x', 1);
injf.register('y', 2);
const result = await injf.resolve('sumSquare');
expect(result).toEqual(9);

Note that await must only be called when getting the result, not when registering dependencies. If you called await inside the sumSquare registration section, you'd get an error as sum is not yet known to the container.

No circular dependencies are currently supported.

1.0.0

5 years ago

0.1.10

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago