New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

alpha-dic

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

alpha-dic

Asynchronous dependency injection container

latest
Source
npmnpm
Version
3.3.0
Version published
Weekly downloads
14
16.67%
Maintainers
1
Weekly downloads
 
Created
Source

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', {})
    })

Keywords

dic

FAQs

Package last updated on 22 Jan 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts