@firfi/quint-connect
Version:
Model-based testing framework connecting Quint specifications to TypeScript implementations
39 lines • 1.91 kB
TypeScript
import { Effect } from "effect";
interface ProcessHandle {
readonly pid?: number | undefined;
}
interface CommandHandle {
readonly kill: () => unknown;
}
type RunCommand = (command: string, args: ReadonlyArray<string>, callback: (error: Error | null, stdout: string) => void) => CommandHandle;
type RunCommandSync = (command: string, args: ReadonlyArray<string>) => boolean;
interface PlatformProcessDeps {
readonly platform: NodeJS.Platform;
readonly runCommand: RunCommand;
readonly runCommandSync: RunCommandSync;
readonly killProcess: (pid: number, signal: NodeJS.Signals) => unknown;
readonly addExitListener: (listener: () => void) => void;
readonly removeExitListener: (listener: () => void) => void;
readonly addSignalListener: (signal: NodeJS.Signals, listener: () => void) => void;
readonly removeSignalListener: (signal: NodeJS.Signals, listener: () => void) => void;
readonly signalSelf: (signal: NodeJS.Signals) => void;
}
export interface PlatformProcessBoundary {
/**
* Rust parity: upstream invokes `quint.cmd` on Windows and `quint` elsewhere.
* https://github.com/informalsystems/quint-connect/blob/4f018f54fc7dd4cef341d10111427bab59d3b307/connect/src/trace/generator/utils.rs#L3-L9
*/
readonly commandName: (name: string) => string;
readonly executableName: (name: string) => string;
readonly detached: boolean;
readonly makeLifecycle: (getActiveProcess: () => ProcessHandle) => {
readonly complete: () => void;
readonly interrupt: Effect.Effect<void>;
};
readonly countEvaluatorProcesses: Effect.Effect<number>;
readonly evaluatorCleanupHint: string;
}
export declare const makePlatformProcessBoundary: (deps?: PlatformProcessDeps) => PlatformProcessBoundary;
export declare const platformProcess: PlatformProcessBoundary;
export {};
//# sourceMappingURL=platform-process.d.ts.map