0.3.2 • Published 9 months ago

nexus-ioc v0.3.2

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

npm license build

Nexus IoC is a powerful and flexible Inversion of Control (IoC) container for TypeScript applications. Inspired by Angular and NestJS, it leverages decorators to provide a simple and efficient way to manage dependencies and modules.

Project move to https://www.npmjs.com/package/@nexus-ioc/core

Table of Contents

Features

  • Modular Architecture: Easily create and manage modules.
  • Dependency Injection: Use decorators to inject dependencies into your classes.
  • Lifecycle Management: Manage the lifecycle of your components seamlessly.
  • Asynchronous Module Loading: Load modules asynchronously for improved performance.

Installation

npm install nexus-ioc reflect-metadata

Quick Start

Step 1: Define Your Modules and Providers

Create a module and a provider using decorators.

import { NsModule, Injectable, Inject } from 'nexus-ioc';

@Injectable()
class DependencyService {
  public readonly name = 'World';
}

@Injectable()
export class AppService {
  constructor(
    @Inject(DependencyService)
    private readonly dependencyService: DependencyService,
  ) {
  }

  getHello(): string {
    return `Hello ${this.dependencyService.name}!`;
  }
}

@NsModule({
  providers: [AppService, DependencyService],
})
export class AppModule {}

Step 2: Create an Application

Create and bootstrap your application.

import { NexusApplicationsBrowser } from 'nexus-ioc/dist/server';
import { AppModule, AppService } from './app.module';

async function bootstrap() {
  const app = await NexusApplicationsBrowser
    .create(AppModule)
    .bootstrap();
  
  const appService = app.get<AppService>(AppService);
  
  console.log(appService?.getHello());
}

bootstrap();

Testing

Installation

npm install nexus-ioc-testing

Usage

import { Injectable } from 'nexus-ioc';
import { Test } from 'nexus-ioc-testing';

describe('AppModule', () => {
  it('should create instance', async () => {
    @Injectable()
    class AppService {}

    const appModule = await Test.createModule({
      providers: [AppService],
    }).compile();

    const appService = await appModule.get<AppService>(AppService);
    expect(appService).toBeInstanceOf(AppService);
  });
});

License

This project is licensed under the MIT License. See the LICENSE file for details.

Author

Isqanderm (Aleksandr Melnik) - LinkedIn

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Acknowledgements

Special thanks to the developers of Angular and NestJS for the inspiration.

Wiki

For more detailed documentation, please visit the Wiki.

0.3.0

10 months ago

0.2.1

11 months ago

0.3.2

9 months ago

0.2.3

10 months ago

0.3.1

10 months ago

0.2.2

11 months ago

0.2.4

10 months ago

0.2.0

11 months ago

0.1.15

11 months ago

0.1.14

1 year ago

0.1.13

1 year ago

0.1.11

1 year ago

0.1.10

1 year ago

0.1.9

1 year ago

0.1.8

1 year ago

0.1.7

1 year ago

0.1.6

1 year ago

0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago