@vizzly-testing/cli
Version:
Visual review platform for UI developers and designers
73 lines (72 loc) • 1.84 kB
TypeScript
/**
* @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';