@leisurelink/service-inject

0.1.1 • Public • Published

service-inject Circle CI

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)

Readme

Keywords

none

Package Sidebar

Install

npm i @leisurelink/service-inject

Weekly Downloads

1

Version

0.1.1

License

MIT

Last publish

Collaborators

  • uniqname
  • blake1321
  • jouellette
  • lhirschi
  • flitbit
  • jtowner
  • twindagger
  • leisurelink-robot