UNPKG

@vizzly-testing/cli

Version:

Visual review platform for UI developers and designers

73 lines (72 loc) 1.84 kB
/** * @typedef {Object} ServiceOptions * @property {Object} logger - Logger instance * @property {AbortSignal} [signal] - Abort signal for cancellation */ /** * Base class for all services * @extends EventEmitter */ export class BaseService extends EventEmitter<[never]> { /** * @param {Object} config - Service configuration * @param {ServiceOptions} options - Service options */ constructor(config: any, options?: ServiceOptions); config: any; logger: any; signal: AbortSignal; started: boolean; stopping: boolean; /** * Start the service * @returns {Promise<void>} */ start(): Promise<void>; /** * Stop the service * @returns {Promise<void>} */ stop(): Promise<void>; /** * Hook for service-specific start logic * @protected * @returns {Promise<void>} */ protected onStart(): Promise<void>; /** * Hook for service-specific stop logic * @protected * @returns {Promise<void>} */ protected onStop(): Promise<void>; /** * Emit a progress event * @param {string} phase - Progress phase * @param {string} message - Progress message * @param {Object} [data] - Additional data */ emitProgress(phase: string, message: string, data?: any): void; /** * Check if service is running * @returns {boolean} */ isRunning(): boolean; /** * Wait for service to be ready * @param {number} [timeout=30000] - Timeout in milliseconds * @returns {Promise<void>} */ waitForReady(timeout?: number): Promise<void>; } export type ServiceOptions = { /** * - Logger instance */ logger: any; /** * - Abort signal for cancellation */ signal?: AbortSignal; }; import { EventEmitter } from 'events';