0.2.1 • Published 6 years ago

jsdicon v0.2.1

Weekly downloads
1
License
ISC
Repository
github
Last release
6 years ago

Javascript Dependency Injection Container

Build Status

API

  • inject - wrap your functions\classes where you want to inject parameters

    // types.js
    export const TYPE = Object.freeze({
        foo: 'FOO_SERVICE',
        bar: 'BAR_SERVICE',
        appConfig: 'APP_CONFIG',
    })
    
    // foo.js
    import {inject} from 'jsdicon';
    import {TYPE} from './types';
    
    export const foo = inject(TYPE.appConfig)(
        function foo (appConfig) {
            // do something with appConfig;
            return someValue;
        }
    )
    
    // bar.js
    import {inject} from 'jsdicon';
    import {TYPE} from './types';
    
    export const Bar = inject(TYPE.foo, TYPE.appConfig)(
        class Bar {
            constructor(foo, appConfig) {
                foo; // value of foo function is now available here
            }
    
            startApp() {
            }
            // ... other properties and methods
        }
    )
  • Container - create instance of Container

    • register - registers class.
    • registerValue - registers value.
    • registerFunc - registers function
    • resolve - resolve your type by typeId;

      // index.js
      import {Container} from 'jsdicon';
      import {TYPE} from './types';
      import {foo} from './foo';
      import {Bar} from './bar';
      
      const container = new Container();
      container.register(TYPE.bar, Bar);
      container.registerFunc(TYPE.foo, foo);
      container.registerValue(TYPE.appConfig, {
          ENV: 'DEV',
          // ... other properties
      });
      
      const bar = container.resolve(TYPE.bar);
      bar.startApp();
0.2.1

6 years ago

0.2.0

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago