Rename DIContainer to TSInjex and refactor interfaces

- Renamed DIContainer class and related references to TSInjex to better indicate its purpose as a TypeScript-based dependency injection container.
- Extracted IDependency interface to a separate file to improve modularity.
- Split the ITSInjex interface into ITSInjexRegister and ITSInjexResolve, then extended them in a new ITSInjex interface to clarify the separation of concerns.
- Updated tests and decorators to reflect the renaming and interface changes.
- Adjusted helper, functions, and index export to align with the new TSInjex structure.
This commit is contained in:
2024-08-14 20:21:05 +02:00
committed by Max P.
parent 8d607c7f0c
commit 3dbbfc8e1e
13 changed files with 106 additions and 59 deletions

View File

@@ -1,4 +1,4 @@
import { DIContainer } from '../DIContainer';
import { TSInjex } from '../TSInjex';
import { InitDelegate } from '../types/InitDelegate';
/**
@@ -12,7 +12,7 @@ import { InitDelegate } from '../types/InitDelegate';
* - If `true`, an error will be thrown if the dependency cannot be resolved.
* - If `false`, `undefined` will be returned if the dependency cannot be resolved.
* @returns A decorator function to be applied on the class property.
* @see {@link DIContainer}
* @see {@link TSInjex}
* @example
* ```ts
* class MyClass {
@@ -37,7 +37,7 @@ export function Inject<T, U>(
// Unique symbol to store the private property
const privatePropertyKey: unique symbol = Symbol();
// Get the DI container instance
const diContainer = DIContainer.getInstance();
const diContainer = TSInjex.getInstance();
// Function to evaluate the dependency lazily
// to avoid circular dependencies, not found dependencies, etc.

View File

@@ -1,4 +1,4 @@
import { DIContainer } from '../DIContainer';
import { TSInjex } from '../TSInjex';
/**
* A decorator to register a class in the DI (Dependency Injection) container.
@@ -20,7 +20,7 @@ export function Register<
>(identifier: string, deprecated?: boolean) {
return function (constructor: TargetType, ...args: unknown[]): void {
// Get the instance of the DI container
const diContainer = DIContainer.getInstance();
const diContainer = TSInjex.getInstance();
// Register the class in the DI container
diContainer.register(identifier, constructor, deprecated);

View File

@@ -1,4 +1,4 @@
import { DIContainer } from '../DIContainer';
import { TSInjex } from '../TSInjex';
import { InitDelegate } from '../types/InitDelegate';
/**
@@ -28,7 +28,7 @@ export function RegisterInstance<
) {
return function (constructor: TargetType, ...args: unknown[]): void {
// Get the instance of the DI container
const diContainer = DIContainer.getInstance();
const diContainer = TSInjex.getInstance();
// Create a proxy to instantiate the class when needed (Lazy Initialization)
let lazyProxy: unknown = new Proxy(