Fake Mirrors
    Preparing search index...

    Class DIContainer

    A lightweight Dependency Injection container.

    Supports registering and resolving dependencies as singletons or transients, with built-in circular dependency detection.

    const container = DIContainer.getInstance()

    // Register a singleton
    container.registerSingleton('config', () => ({ port: 3000 }))

    // Register a transient
    container.registerTransient('logger', (c) => new Logger())

    // Resolve dependencies
    const config = container.resolve('config')
    const logger = container.resolve('logger')

    Methods

    • Register a singleton dependency (same instance always).

      Type Parameters

      • T

        The type of the dependency

      Parameters

      • token: DIToken

        Unique identifier for the dependency

      • factory: DIFactory<T>

        Function to create the instance

      Returns void

      Error if the token is already registered

    • Register a transient dependency (new instance each time).

      Type Parameters

      • T

        The type of the dependency

      Parameters

      • token: DIToken

        Unique identifier for the dependency

      • factory: DIFactory<T>

        Function to create instances

      Returns void

      Error if the token is already registered

    • Resolve a registered dependency.

      Type Parameters

      • T

        The type of the dependency

      Parameters

      • token: DIToken

        The dependency token

      Returns T

      The resolved instance

      Error if the token is not registered or circular dependency is detected

    • Resolve an optional dependency (returns null if not registered).

      Type Parameters

      • T

        The type of the dependency

      Parameters

      • token: DIToken

        The dependency token

      Returns T | null

      The resolved instance or null if not found