0.0.6 • Published 7 months ago

@codespeaks/tinydi v0.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

TinyDI Container 🚀

This library provides a simple implementation of dependency injection in TypeScript.

Installation 📦

npm i @codespeaks/tinydi

Usage 🛠️

Import

First, import the createContainer function:

import { createContainer } from '@codespeaks/tinydi'

Adding Classes to the Container

You can add classes to the container using the add method. If the class has dependencies, you can use the inject method to specify them in the same order as you defined in the target class constructor.

class ProfileService {
  // ...
}

class RoleService {
  // ...
}

class User {
  constructor(
    private readonly profileService: ProfileService,
    private readonly roleService: RoleService
  ) {
    // ...
  }
}

const container = createContainer()

container.add(ProfileService)
container.add(RoleService)

const user = container.add(User).inject(ProfileService, RoleService).getSelf()

Lifecycle

You can specify the lifecycle of instances when registering them. By default, instances are singletons. To create transient instances, provide a factory as the second parameter of the add method.

class MyService {
  // ...
}

container.add(MyService, () => new MyService())

Retrieving Instances

To retrieve an instance of a registered class, use the get method:

const serviceA = container.get(ServiceA)
const serviceB = container.get(ServiceB)

API 📚

add<T>(classRef: ClassRef<T>, factory?: () => T)

Adds a class to the container.

  • classRef: The reference of the class to be added.
  • factory: (Optional) A factory function to create transient instances.

inject<T>(...depRefs: ClassRef[])

Injects dependencies into a registered class.

  • depRefs: The references to the dependency classes in the same order as defined in the target class constructor.

get<T>(classRef: ClassRef<T>): T

Retrieves an instance of the registered class.

  • classRef: The reference of the class to be retrieved.

getSelf(): T

Retrieves an instance of the added class.

License 📄

This project is licensed under the MIT License.