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.
36 lines (35 loc) • 1.3 kB
TypeScript
import type { IContainer } from '../container/IContainer.js';
import { InjectionToken } from '../token/InjectionToken.js';
export interface IHookContext {
instance: object;
scope: IContainer;
methodName?: string;
resolveArgs(...args: unknown[]): unknown[];
invokeMethod(options?: {
args?: unknown[];
}): unknown;
setProperty(fn: InjectionToken): void;
getProperty(): unknown;
setInitialArgs(...args: unknown[]): this;
getInitialArgs(): unknown[];
}
export declare class HookContext implements IHookContext {
scope: IContainer;
methodName?: string | undefined;
readonly instance: object;
private initialArgs;
constructor(instance: object, scope: IContainer, methodName?: string | undefined);
resolveArgs(...args: unknown[]): unknown[];
invokeMethod({ args }?: {
args?: unknown[];
}): unknown;
setProperty(fn: InjectionToken): void;
getProperty(): unknown;
setInitialArgs(...args: unknown[]): this;
getInitialArgs(): unknown[];
}
export type CreateHookContext = (Target: object, scope: IContainer, methodName?: string) => IHookContext;
export declare const createHookContext: CreateHookContext;
export declare const createHookContextFactory: ({ args }?: {
args?: unknown[];
}) => CreateHookContext;