Source: index.js

'use strict';

import {container} from './container';

/**
 * A simple dependency injection module.
 * Use the "injectable" decorator to mark your injectable service providers,
 * then use the "resolve" function to acquire the fully resolved top-level service object.
 * If your service provider extends AutoInject, then it does not need a constructor -
 * it can use "Constructor-less Dependency Injection", relying on the AutoInject constructor
 * to attach its dependencies.
 *
 * @example 
 * import {injectable} from 'effortless-di';
 * import {resolve}    from 'effortless-di';
 * @injectable(Service1, ...)
 * class Application { constructor(service1, ...) { ... }, run() { ... } }
 * resolve(Application).run();
 * @example
 * import DI from 'effortless-di';
 * @DI.injectable(Service1, ...)
 * class Application extends DI.AutoInject { run() { ... } }
 * DI.resolve(Application).run();
 * @namespace
 * @property {Function} injectable - The dependency injection decorator function.
 * @property {Function} autoinjectable - A base class for managing "constructor-less" injection.
 * @property {Function} resolve - The service class resolver function.
 * @property {Object}   DI - A DI namespace containing the injectable() and resolve() functions and the AutoInject class.
 */
module.exports = {
    injectable: container.injectable,
    autoinjectable: container.autoinjectable,
    resolve: container.resolve,
    DI: container
};