UNPKG

webssh2-server

Version:

A Websocket to SSH2 gateway using xterm.js, socket.io, ssh2

91 lines (90 loc) 2.54 kB
/** * Simple dependency injection container */ import type { Config } from '../types/config.js'; import type { Logger, AuthService, SSHService, TerminalService, SessionService, Services } from './interfaces.js'; import type { SessionStore } from '../state/store.js'; /** * Token type for dependency registration */ export type Token<T> = string & { __type?: T; }; /** * Factory function for creating dependencies */ export type Factory<T> = () => T; /** * Async factory function for creating dependencies */ export type AsyncFactory<T> = () => Promise<T>; /** * Dependency injection container */ export declare class Container { private readonly instances; private readonly factories; private readonly asyncFactories; private readonly resolving; /** * Register a factory for creating dependencies */ register<T>(token: Token<T> | string, factory: Factory<T>): void; /** * Register an async factory for creating dependencies */ registerAsync<T>(token: Token<T> | string, factory: AsyncFactory<T>): void; /** * Register a singleton instance */ registerSingleton<T>(token: Token<T> | string, instance: T): void; /** * Resolve a dependency */ resolve<T>(token: Token<T> | string): T; /** * Resolve a dependency asynchronously */ resolveAsync<T>(token: Token<T> | string): Promise<T>; /** * Check if a token is registered */ has(token: Token<unknown> | string): boolean; /** * Get all registered tokens */ getTokens(): string[]; /** * Clear all registrations and instances */ clear(): void; /** * Create a child container that inherits from this one */ createChild(): Container; private ensureNotResolving; private getCachedInstance; private createFromAsyncFactory; private createFromFactory; } /** * Create typed tokens for dependency injection */ export declare function createToken<T>(name: string): Token<T>; /** * Create a new container instance */ export declare function createContainer(): Container; /** * Common service tokens */ export declare const TOKENS: { readonly Config: Token<Config>; readonly Logger: Token<Logger>; readonly SessionStore: Token<SessionStore>; readonly AuthService: Token<AuthService>; readonly SSHService: Token<SSHService>; readonly TerminalService: Token<TerminalService>; readonly SessionService: Token<SessionService>; readonly Services: Token<Services>; };