@hermandev/dilite
Version:
Simple and lightweight Dependency Injection container for TypeScript / Next.js apps
30 lines (29 loc) • 1.11 kB
TypeScript
import { Class } from "./types";
/** Dependency Injection Container */
export declare class DIContainer {
private registry;
private tokenMap;
private singletons;
private requestScope;
constructor(registry?: Map<Class, import("./types").Registration>, tokenMap?: Map<string, Class>);
/** Resolve class, handles singleton/request scope */
resolve<T>(cls: Class<T>): Promise<T>;
/** Resolve via string token */
getInjection<T>(token: string): Promise<T>;
/** Reset request-scope objects (called after request ends) */
endRequestScope(): Promise<void>;
/** Shutdown global app (e.g. on server close) */
shutdown(): Promise<void>;
isClass(input: any): input is Class;
}
export declare const container: DIContainer;
export declare const getInjection: <T = any>(token: string) => Promise<T>;
/** Helper for safe server action execution with error handling */
export declare function withContainer<T>(fn: (c: DIContainer) => Promise<T>): Promise<{
data?: T;
error?: {
message: string;
code: string;
status: number;
};
}>;