UNPKG

@comake/skl-js-engine

Version:

Standard Knowledge Language Javascript Engine

96 lines (95 loc) 2.61 kB
/// <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; }