/** * ScriptEngine - JetBrains HTTP Client Compatible Scripting Engine * * Provides sandboxed JavaScript execution for: * - Response handler scripts (> {% %}) * - Pre-request scripts (< {% %}) * * Implements client/response/request APIs compatible with JetBrains HTTP Client */ import { HttpResponse } from '../types'; export interface ScriptTestResult { name: string; passed: boolean; error?: string; } export interface ScriptResult { success: boolean; error?: Error; logs?: string[]; tests?: ScriptTestResult[]; variables?: Map; } export interface ScriptContext { response?: HttpResponse; isPreRequest?: boolean; variables?: Map; } export interface ParsedScript { type: 'inline' | 'file'; content?: string; path?: string; } export interface ContentType { mimeType: string; charset?: string; } /** * Simple JSONPath implementation for basic path queries * Supports: $.property, $.array[index], $.array.length */ export declare function jsonPath(obj: unknown, path: string): unknown; export declare class ScriptEngine { private globals; /** * Execute a script in a sandboxed environment */ execute(script: string, context?: ScriptContext): Promise; /** * Execute a script from external file content */ executeFile(_filePath: string, content: string, context?: ScriptContext): Promise; /** * Clear all global variables */ clearGlobals(): void; /** * Get all global variables (for debugging/testing) */ getGlobals(): Map; /** * Parse response handler scripts from HTTP file content * Syntax: * > {% script content %} * > path/to/script.js */ static parseResponseHandlers(content: string): ParsedScript[]; /** * Parse pre-request scripts from HTTP file content * Syntax: * < {% script content %} * < path/to/script.js */ static parsePreRequestScripts(content: string): ParsedScript[]; }