3.3.0 • Published 3 months ago

alpha-dic v3.3.0

Weekly downloads
8
License
MIT
Repository
github
Last release
3 months ago

Alpha DIC

CircleCI Coverage Status

Flexible Dependency Injection Container with support for asynchronous service creation, annotations and middlewares.

Features:

  • Autowiring
  • Supports middlewares
  • Allows to define service as constructor, (async) factory or a value
  • Detects cycle dependencies
  • Prevents race condition for concurrent service requests
  • Supports annotations (and ability to search services by annotations)
  • Simple service definition via container methods or decorators

Installation

npm install alpha-dic

Example

import {createStandard} from 'alpha-dic';

const container = createStandard();
// if you're defining services via decorators
// preloadServiceModules(container, './path/to/service/modules/*')

container.definitionWithFactory('my-service', async () => {
        const connection = new DatabaseConnection();
        await connection.connect();
        return connection;
    });

container.get('my-service').then((connection) => {
    // connection has been established in factory
});

Example with dependencies and decorators

import {createStandard, reference, AutowiredService, Service, OnActivation} from 'alpha-dic';
import * as assert from 'assert';

const container = createStandard();

@AutowiredService('NotificationCenter')
class NotificationCenter {
    constructor(renderer: EmailRenderer, sender: EmailSender) {
        assert.ok(renderer instanceof EmailRenderer);
        // connection to SMTP was established in factory
        assert.ok(sender instanceof EmailSender);
    }
    async sendEmail(to, type, vars) {
        // render email
        // send it via sender
    }
}

@Service()
class EmailRenderer {
    
}

@Service()
@OnActivation(async (mailer) => {
    await mailer.connectToSMTP();
    return mailer;
})
class EmailSender {
    
}

container.get('NotificationCenter')
    .then((centre) => {
        return centre.sendEmail('admin@example.com', 'limits-exceeded', {})
    })
3.3.0

3 months ago

3.2.1

3 years ago

3.2.0

3 years ago

3.1.0

4 years ago

3.0.0

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.2.0

4 years ago

1.1.4

4 years ago

1.1.3

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.2.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago