UNPKG

@hestjs/core

Version:

HestJS Core Framework - A TypeScript framework built on Hono with dependency injection and decorators

85 lines 2.29 kB
import "reflect-metadata"; import { DependencyContainer, InjectionToken } from "tsyringe"; import type { InjectableMetadata, ControllerMetadata, ModuleMetadata } from "../interfaces/metadata"; import type { ControllerConstructor } from "../interfaces/router"; import { Scope } from "../utils/constants"; declare global { namespace Reflect { function getMetadata(key: any, target: any, propertyKey?: string | symbol): any; } } /** * 逻辑容器项类型 */ export interface LogicalContainerItem<T = any> { token: InjectionToken<T>; provider: T; type: 'controller' | 'provider' | 'module'; metadata?: ControllerMetadata | InjectableMetadata | ModuleMetadata; scope?: Scope; } /** * 控制器容器项特化类型 */ export interface ControllerContainerItem extends LogicalContainerItem<ControllerConstructor> { type: 'controller'; metadata?: ControllerMetadata; } /** * HestJS DI 容器封装 */ export declare class Container { private static instance; private container; private logicalContainer; constructor(); /** * 获取容器单例 */ static getInstance(): Container; /** * 注册服务 */ register<T>(token: InjectionToken<T>, provider: any, type?: 'controller' | 'provider' | 'module'): void; /** * 注册实例 */ registerInstance<T>(token: InjectionToken<T>, instance: T): void; /** * 解析服务 */ resolve<T>(token: InjectionToken<T>): T; /** * 检查是否已注册 */ isRegistered<T>(token: InjectionToken<T>): boolean; /** * 清空容器 */ clear(): void; /** * 创建子容器 */ createChild(): Container; /** * 获取底层容器实例 */ getContainer(): DependencyContainer; /** * 获取逻辑容器中的所有项 */ getLogicalContainer(): Map<InjectionToken<any>, LogicalContainerItem>; /** * 获取指定类型的所有项 */ getItemsByType(type: 'controller' | 'provider' | 'module'): LogicalContainerItem[]; /** * 获取所有控制器 */ getAllControllers(): ControllerContainerItem[]; /** * 提取元数据信息 */ private extractMetadata; } //# sourceMappingURL=container.d.ts.map