UNPKG

@hermandev/dilite

Version:

Simple and lightweight Dependency Injection container for TypeScript / Next.js apps

30 lines (29 loc) 1.11 kB
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; }; }>;