UNPKG

gather-ts

Version:

A powerful code analysis and packaging tool designed for creating AI-friendly code representations for javascript and typescript projects.

61 lines (60 loc) 1.91 kB
import { IService } from "@/types/services"; export interface IServiceIdentifier { toString(): string; } export interface IServiceFactory<T extends IService> { (): T | Promise<T>; } export interface IServiceRegistration<T extends IService = any> { token: IServiceIdentifier; factory: IServiceFactory<T>; instance?: T; dependencies?: IServiceIdentifier[]; } export interface IContainerEvents { "service:registered": { token: string; timestamp: number; }; "service:resolved": { token: string; timestamp: number; }; "service:error": { token: string; error: Error; timestamp: number; }; "initialization:start": { timestamp: number; }; "initialization:complete": { timestamp: number; }; "cleanup:start": { timestamp: number; }; "cleanup:complete": { timestamp: number; }; } export interface IContainer extends IService { register<T extends IService>(token: IServiceIdentifier, instance: T): void; registerFactory<T extends IService>(token: IServiceIdentifier, factory: IServiceFactory<T>): void; resolve<T extends IService>(token: IServiceIdentifier): T; hasService(token: IServiceIdentifier): boolean; clear(): void; on<K extends keyof IContainerEvents>(event: K, listener: (data: IContainerEvents[K]) => void): this; off<K extends keyof IContainerEvents>(event: K, listener: (data: IContainerEvents[K]) => void): this; emit<K extends keyof IContainerEvents>(event: K, data: IContainerEvents[K]): boolean; } export interface IContainerConfiguration { configureContainer(rootDir: string, options?: IContainerOptions): Promise<IContainer>; } export interface IContainerOptions { debug?: boolean; maxCacheAge?: number; fileExtensions?: string[]; customTsConfigPath?: string; batchSize?: number; }