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.
14 lines (13 loc) • 1.05 kB
TypeScript
import { IInjector, InjectOptions, Injector } from './IInjector.js';
import type { IContainer } from '../container/IContainer.js';
import { type constructor } from '../utils/basic.js';
import { InjectionToken } from '../token/InjectionToken.js';
import { ProviderOptions } from '../provider/IProvider.js';
import { InjectFn } from '../hooks/hook.js';
export declare class MetadataInjector extends Injector implements IInjector {
protected createInstance<T>(scope: IContainer, Target: constructor<T>, { args: deps }?: InjectOptions): T;
}
export declare const inject: <T, R = T>(fn: InjectionToken<T> | InjectFn<T> | symbol | string | constructor<T>, selectFn?: (instance: T) => R) => ParameterDecorator;
export declare const argsFn: <T = unknown>(predicate: (value: unknown, index: number) => boolean) => InjectFn<T>;
export declare const args: <T = unknown>(index: number) => InjectFn<T>;
export declare const resolveArgs: (Target: constructor<unknown>, methodName?: string) => (scope: IContainer, { args, lazy }: ProviderOptions) => unknown[];