@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
96 lines • 2.66 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import type { ChildProcess } from 'child_process';
import { EventEmitter } from 'node:events';
import { Logger } from '../../../logger';
import type { ExecutionOptions } from '../../types';
/**
* Events emitted by the ProcessManager
*/
export interface ProcessManagerEvents {
stdout: (data: Buffer) => void;
stderr: (data: Buffer) => void;
exit: (code: number | null, signal: NodeJS.Signals | null) => void;
error: (error: Error) => void;
ready: () => void;
}
/**
* Configuration for process spawning
*/
export interface ProcessConfig {
/** Script path to execute */
scriptPath: string;
/** Execution options */
executionOptions?: ExecutionOptions;
/** Timeout for process startup */
startupTimeout?: number;
}
/**
* Manages the lifecycle of child processes for JavaScript execution
*/
export declare class ProcessManager extends EventEmitter {
private childProcess?;
readonly logger: Logger;
private name?;
constructor();
/**
* Set a name for this process manager (used in logging)
*/
setName(name: string): void;
/**
* Get the current child process
*/
getProcess(): ChildProcess | undefined;
/**
* Check if the process is running
*/
isRunning(): boolean;
/**
* Spawn a new child process
*/
spawn(config: ProcessConfig): Promise<void>;
/**
* Terminate the child process
*/
terminate(timeout?: number): Promise<void>;
/**
* Send data to the process stdin
*/
write(data: string): boolean;
/**
* Get process stdout stream
*/
getStdout(): NodeJS.ReadableStream | undefined;
/**
* Get process stdin stream
*/
getStdin(): NodeJS.WritableStream | undefined;
/**
* Register event listeners
*/
on<TKey extends keyof ProcessManagerEvents>(event: TKey, handler: ProcessManagerEvents[TKey]): this;
/**
* Remove event listeners
*/
off<TKey extends keyof ProcessManagerEvents>(event: TKey, handler: ProcessManagerEvents[TKey]): this;
/**
* Set up process event handlers
*/
private setupProcessHandlers;
/**
* Wait for the process to be ready
*/
private waitForReady;
/**
* Normalize execution options with defaults
*/
private normalizeExecutionOptions;
/**
* Extract permission configuration from execution options
*/
private extractPermissionConfig;
}
//# sourceMappingURL=ProcessManager.d.ts.map