boost_library

A simple Spring 'like' Dependency injection container & optionally express wrapped server.

Boost Libary

A simple Spring 'like' Dependency injection container & optionally express wrapped server.

Boost functions:

$Component

You can use this function to register a key/value Object that can be retrieved:

 $Component({
     key: 'IService',
     name: 'service.impl.v1',
     dependencies: ['IAnotherService'],
     injector: ({IAnotherService }) =>{
         //some code
     },
 })

$Controller

Controllers are functionally the same as components the only difference controllers will be searched and instantiated at run time to run the express server. All exported functions out of controller will be registered as express routes.

  $Controller({
     key: 'IController',
     name: 'controller.impl.v1',
     dependencies: ['IAnotherService'],
     injector: ({IAnotherService }) =>{
         const service = {};

         service.ping = {
             method: 'GET',
             path: '/ping',
             call: (req, res) => {
                 //Some code
             }
         }
         return service; 
     },
 })

$ComponentScan;

Component Scan allows the container to scan your paths to find dependencies. You must supply basepackage paths in order for them to be picked up.

$ComponentScan({
    basePackages: [__dirname + '/somepath',
    then: () => {
        //do some code 
        //Typically you can begin running your app at this point
    }
})

get

get will attempt to retrieve a dependency by key

get({key: 'ISevice'})

getListOfComponentNames

Function will retrieve a list of names for all registered dependencies in the container.

validate

Function will inspect each dependency for dependencies and throw errors if not well formed.

registerPreEndpointHandlers

Function for passing in pre handle middleware

registerPostEndpointHandlers

Function for passing in post handle middleware

run

Function for running the app and starting the express server;