Skip to content

cyrhla/container

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

container

This is development (master) version.
For production version (relase) see http://github.com/cyrhla/container/tree/v0.0.1

The "container" is a simple key/value map for dependency injection (DI).


Install

npm install @cyrhla/container

Usage

Simple example*:

const Container  = require('@cyrhla/container/Container')
const ServiceBag = require('@cyrhla/container/Bag/ServiceBag')

var container = new Container()

var serviceFoo = new ServiceBag('@some/module/Foo', [1, 2, 3])

container.set('services.foo', serviceFoo)
// ...

var foo = container.get('services.foo')
// ...

The more complicated example*:

const Container  = require('@cyrhla/container/Container')
const ServiceBag = require('@cyrhla/container/Bag/ServiceBag')
const CallBag    = require('@cyrhla/container/Bag/CallBag')

var container = new Container()

var serviceFoo = new ServiceBag('@some/module/Foo', [1, 2, 3])
    .setAlias('some')
    .addCall(new CallBag('someMethod1', []))
    .addCall(new CallBag('someMethod2', [123]))
    .addListener('emit_name', new CallBag('logMethod', ['abc']))
    .setPublic(true)

container.set('services.foo', serviceFoo)
// ...

var foo = container.get('services.foo')
// ...

Simple example, raw*:

const Container = require('@cyrhla/container/Container')

var container = new Container()

var serviceFoo = {
    class: '@some/module/Foo'
}

container.set('services.foo', serviceFoo)
// ...

var foo = container.get('services.foo')
// ...

The more complicated example, raw with the replacement keys and listeners*:

const Container    = require('@cyrhla/container/Container')
const EventEmitter = require('events')

var container = new Container()
var emitter = new EventEmitter()

container.addEmitter(emitter)

container.set('parameters.arg1', 123)
container.set('parameters.arg2', 'abc')

var serviceFoo = {
    class: '@some/module/Foo',
    alias: 'some',
    calls: [
        ['someMethod1', []],
        ['someMethod2', ['%parameters.arg1%']]
    ],
    addListener: {
        emit_name: [
            ['logMethod', ['%parameters.arg2%']]
        ]
    },
    public: true
}

container.set('services.foo', serviceFoo)
// ...

var foo = container.get('services.foo')
// ...

API

Class Container (Container.js)

  • Container()
    • has( string: key ): boolean
    • set( string: key, mixed: value ): self
    • get( string: key ): mixed
    • prepare( object: data ): self
    • addEmitter( EventEmitter: emitter ): self

Class ServiceBag (Bag/ServiceBag.js)

  • ServiceBag( string: className, mixed[]: args = [] )
    • getClassName(): string
    • getArguments(): mixed[]
    • setAlias( string: alias ): self
    • getAlias(): null|string
    • setProperty( string: property, mixed: value ): self
    • getProperties(): object
    • addCall( string|CallBag: method, mixed[]: args = [] ): self
    • getCalls(): CallBag[]
    • addListener( string: event, string|CallBag: method, mixed[]: args = []): self
    • getListeners(): object
    • setPublic( boolean: publ ): self
    • isPublic(): boolean
    • static createFromObject( object: raw ): object

Class ListenerBag (Bag/ListenerBag.js)

  • ListenerBag( string: key, string|CallBag: method, mixed[]: args = [] )
    • getKey(): string
    • getCall(): CallBag
    • static createFromObject( object: raw ): object

Class CallBag (Bag/CallBag.js)

  • CallBag( string: methodName, mixed[]: args = [] )
    • getMethodName(): string
    • getArguments(): mixed[]

References

  1. Node.js Documentation
  2. The Map object

[*] Paths should be modified to the module.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors