@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
TypeScript
/// <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