0.1.1 • Published 10 years ago
@leisurelink/service-inject v0.1.1
service-inject 
A service-injection utility for nodejs; reduces the need for boostrap coordination among modules.
What
service-inject exports a single class, Injector.
Injector can be thought of as an inversion of control container. It enables modules to contribute well-known services and to register callbacks that will be invoked by the injector as-soon-as the callback's dependencies can be injected.
Basics
Consuming
var format = require('util').format;
var injector = require('service-inject')
// Name the dependencies
// here =>      v            v         v
injector.when(['LoginUtil', 'Logger', 'nameFormatter'],
// They will be injected
// here =>  v       v       v
  function (logins, logger, formatter) {
    function recordLogin(user) {
      logger.info(format('User logged in: %s', formatter(user)))
    }
    logins.on('user-login', recordLogin);
  })Contributing
var injector = reqiure('service-inject')
function nameFormatter(party) {
  var res;
  if (!party) {
    return '-nobody-'
  }
  // If the party has a 'name' property, use that; probably an entity of some sort.
  if (party.name) {
    return party.name
  }
  // if the party looks like a person, format name as last, first, middle
  if (party.lastName) {
    res = party.lastName
    if (party.firstName) {
      res = res.concat(', ', party.firstName)
      if (party.middleNames) {
        res = res.concat(', ', party.middleNames)
      }
    }
    return res
  }
  return '-un-named-'
}
injector.set('nameFormatter', nameFormatter)Well-known Names
The services you choose to inject are referenced by well-known name. These names are agreed upon by your application and have no meaning elsewhere. The values you supply to the injector are opaque; it doesn't know or care about their meanings.
Injector Class
- get- gets a registered service by name.
- set- sets a registered service by name.
- has- determines if there is a registered service by the specified name.
- when- specifies a list of services and a callback to invoke when all of the specified services can be fulfilled.
- capture- specifies a list of services to be captured for later use.
- inject- specifies a list of services to be injected immediately into a specified callback.
- listUnfulfilled- returns a list of services that have not been registered, but for which there are registered callbacks.
License (MIT)
0.1.1
10 years ago