0.4.2 • Published 9 months ago

@nexus-ioc/core v0.4.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.

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/core 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/core';

@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/core/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/core';
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.4.2

9 months ago

0.4.1

9 months ago

0.4.0

9 months ago