Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Injector

Main entity in the library, which holds provider's bindings and through which dependencies are resolved

Hierarchy

  • Injector

Index

Constructors

constructor

  • new Injector(params?: { name?: string; parent?: Injector; logger?: any }): Injector
  • Parameters

    • params: { name?: string; parent?: Injector; logger?: any } = {}
      • Optional name?: string

        name of the injector which can be useful mainly for debugging purposes

      • Optional parent?: Injector

        parent injector for the composition of injectors

      • logger?:function
        • logger(msg: string): unknown
        • specific log function if the custom output is required

          Parameters

          • msg: string

          Returns unknown

    Returns Injector

Properties

Private Readonly binders

binders: Map<() => unknown, Binder<unknown>> = ...

Private Readonly logger

logger: (msg: string) => unknown

Type declaration

    • (msg: string): unknown
    • Parameters

      • msg: string

      Returns unknown

Private Readonly name

name: undefined | string

Private Readonly parent

parent: undefined | Injector

Private Readonly resolvingProviders

resolvingProviders: Provider<unknown>[] = []

Methods

Private activateAndCall

  • activateAndCall<T>(func: () => T): T
  • Temporary activates this injector calls provided function and returns its value

    Type parameters

    • T

    Parameters

    • func: () => T
        • (): T
        • Returns T

    Returns T

bindProvider

  • bindProvider<ProviderT, ValueT>(...providers: ProviderT): Binder<ValueT>
  • Creates new binder and joins it to the specified providers. If the provider is already bound, then overriding occurs

    Type parameters

    • ProviderT: Provider<unknown>[]

    • ValueT: unknown

    Parameters

    • Rest ...providers: ProviderT

      providers which the binder should be joined to

    Returns Binder<ValueT>

callFunc

  • callFunc<FuncT>(func: FuncT, ...args: Parameters<FuncT>): ReturnType<FuncT>
  • Activates this injector and calls the function with provided arguments

    Type parameters

    • FuncT: (...args: any[]) => unknown

    Parameters

    • func: FuncT

      function which should be called

    • Rest ...args: Parameters<FuncT>

      args which should be passed to the called function

    Returns ReturnType<FuncT>

Private checkCircularDependency

  • checkCircularDependency(provider: Provider<unknown>): void
  • Checks is there circular dependency and throws error if so

    Parameters

    Returns void

createInstance

  • createInstance<ClassT>(type: ClassT, ...args: ConstructorParameters<ClassT>): InstanceType<ClassT>
  • Activates this injector and creates new instance of the type with the provided arguments

    Type parameters

    • ClassT: new (...args: any[]) => unknown

    Parameters

    • type: ClassT
    • Rest ...args: ConstructorParameters<ClassT>

    Returns InstanceType<ClassT>

Private getBinder

  • getBinder<ValueT>(provider: Provider<ValueT>): Binder<ValueT>

getValue

  • Returns bound to the specified provider value. If the value is not found exception is thrown

    Type parameters

    Parameters

    • provider: ProviderT

    Returns ProviderValueType<ProviderT>

injectValues

  • injectValues<T, K>(instance: T, providers: Record<K, Provider<T[K]>>): void
  • Resolves all providers to their values and assigns them to the specified instance

    Type parameters

    • T: object

    • K: string | number | symbol

    Parameters

    • instance: T
    • providers: Record<K, Provider<T[K]>>

    Returns void

Private popResolvingProvder

  • popResolvingProvder(): void

Private pushResolvingProvider

  • pushResolvingProvider(provider: Provider<unknown>): void

Private tryGetBinderRecursively

  • tryGetBinderRecursively<ValueT>(provider: Provider<ValueT>): undefined | Binder<ValueT>
  • Finds binder for the specified provider recursively up to the root injector

    Type parameters

    • ValueT

    Parameters

    Returns undefined | Binder<ValueT>

tryGetValue

  • tryGetValue<ProviderT>(provider: ProviderT): undefined | ProviderValueType<ProviderT>
  • tryGetValue<ProviderT, DefValT>(provider: ProviderT, defVal: DefValT): DefValT | ProviderValueType<ProviderT>
  • Returns bound to the specified provider value. If the value is not found default value is returned

    Type parameters

    Parameters

    • provider: ProviderT

    Returns undefined | ProviderValueType<ProviderT>

  • Type parameters

    • ProviderT: Provider<unknown, ProviderT>

    • DefValT

    Parameters

    • provider: ProviderT
    • defVal: DefValT

    Returns DefValT | ProviderValueType<ProviderT>

Generated using TypeDoc