UNPKG

@tryloop/oats

Version:

🌾 OATS - OpenAPI TypeScript Sync. The missing link between your OpenAPI specs and TypeScript applications. Automatically watch, generate, and sync TypeScript clients from your API definitions.

85 lines • 2.33 kB
/// <reference types="node" /> import { EventEmitter } from 'events'; import { ExecaChildProcess } from 'execa'; import { ProcessManager } from '../../utils/process-manager.js'; import { Logger } from '../../utils/logger.js'; export interface ServiceConfig { name: string; path: string; command: string; port?: number; env?: Record<string, string>; } export declare enum ServiceState { STOPPED = "stopped", STARTING = "starting", RUNNING = "running", STOPPING = "stopping", ERROR = "error" } export declare abstract class BaseService extends EventEmitter { protected config: ServiceConfig; protected logger: Logger; protected processManager: ProcessManager; protected process?: ExecaChildProcess; protected state: ServiceState; protected startTime?: Date; protected error?: Error; protected runtimeConfig?: any; constructor(config: ServiceConfig, processManager: ProcessManager, runtimeConfig?: any); /** * Get the current service state */ getState(): ServiceState; /** * Get service info */ getInfo(): { name: string; state: ServiceState; port: number | undefined; startTime: Date | undefined; error: Error | undefined; pid: number | undefined; }; /** * Start the service */ start(): Promise<void>; /** * Stop the service */ stop(): Promise<void>; /** * Parse command string into command and args */ protected parseCommand(): { command: string; args: string[]; }; /** * Set up process event handlers */ protected setupProcessHandlers(): void; /** * Set the service state and emit event */ protected setState(state: ServiceState): void; /** * Handle process output (override in subclasses) */ protected handleOutput(_output: string): void; /** * Handle process errors (override in subclasses) */ protected handleError(_output: string): void; /** * Check if port is available (override if needed) */ protected checkPort(): Promise<void>; /** * Wait for service to be ready (must override) */ protected abstract waitForReady(): Promise<void>; } //# sourceMappingURL=base-service.d.ts.map