ts-ioc-container
Version:
Fast, lightweight TypeScript dependency injection container with a clean API, scoped lifecycles, decorators, tokens, hooks, lazy injection, customizable providers, and no global container objects.
49 lines (48 loc) • 2.25 kB
TypeScript
import { type CreateScopeOptions, type DependencyKey, type IContainer, type IContainerModule, type RegisterOptions, ResolveManyOptions, type ResolveOneOptions, type Tag } from './IContainer';
import { type IInjector } from '../injector/IInjector';
import { type IProvider } from '../provider/IProvider';
import { type IRegistration } from '../registration/IRegistration';
import { OnConstructHook } from '../hooks/onConstruct';
import { OnDisposeHook } from '../hooks/onDispose';
import { constructor, Instance } from '../utils/basic';
export declare class Container implements IContainer {
isDisposed: boolean;
private parent;
private scopes;
private instances;
private registrations;
private readonly tags;
private readonly providers;
private readonly aliases;
private readonly injector;
private readonly onConstructHookList;
private readonly onDisposeHookList;
constructor(options?: {
injector?: IInjector;
parent?: IContainer;
tags?: Tag[];
});
register(key: DependencyKey, provider: IProvider, { aliases }?: RegisterOptions): this;
resolve<T>(target: constructor<T> | DependencyKey, { args, child, lazy }?: ResolveOneOptions): T;
resolveByAlias<T>(alias: DependencyKey, { args, child, lazy, excludedKeys }?: ResolveManyOptions): T[];
resolveOneByAlias<T>(alias: DependencyKey, { args, child, lazy }?: ResolveOneOptions): T;
createScope({ tags }?: CreateScopeOptions): IContainer;
dispose(): void;
addRegistration(registration: IRegistration): this;
getRegistrations(): IRegistration[];
hasRegistration(key: DependencyKey): boolean;
addOnConstructHook(...hooks: OnConstructHook[]): this;
addOnDisposeHook(...hooks: OnDisposeHook[]): this;
addInstance(instance: Instance): void;
getScopes(): IContainer[];
hasInstance(instance: object): boolean;
getScopeByInstanceOrFail(instance: object): IContainer;
removeScope(child: IContainer): void;
useModule(module: IContainerModule): this;
getParent(): IContainer;
getInstances(cascade?: boolean): Instance<unknown>[];
hasTag(tag: Tag): boolean;
addTags(...tags: Tag[]): void;
private validateContainer;
private findProviderByKeyOrFail;
}