UNPKG

@toolprint/hypertool-mcp

Version:

HyperTool MCP proxy server for routing requests between clients and multiple underlying MCP servers

116 lines • 3.21 kB
/** * Async test helpers for preventing hanging tests * Provides utilities for timeouts, retries, and cleanup */ /** * Timeout configuration for different test types */ export declare const TEST_TIMEOUTS: { readonly unit: 3000; readonly integration: 10000; readonly e2e: 30000; readonly default: 5000; }; /** * Promise with timeout utility * Prevents tests from hanging indefinitely */ export declare function withTimeout<T>(promise: Promise<T>, timeoutMs?: number, errorMessage?: string): Promise<T>; /** * Retry utility for flaky operations * Useful for tests that occasionally fail due to timing issues */ export declare function retry<T>(fn: () => Promise<T>, options?: { maxRetries?: number; delay?: number; backoff?: boolean; timeout?: number; }): Promise<T>; /** * Wait for a condition to be true * Useful for waiting for async state changes */ export declare function waitFor(condition: () => boolean | Promise<boolean>, options?: { timeout?: number; interval?: number; errorMessage?: string; }): Promise<void>; /** * Create a deferred promise for testing async flows */ export declare function createDeferred<T>(): { promise: Promise<T>; resolve: (value: T) => void; reject: (error: Error) => void; }; /** * Test fixture for managing async resources * Ensures cleanup even if test fails */ export declare class AsyncTestFixture { private cleanupFns; private activeTimers; private activeIntervals; /** * Register a cleanup function */ addCleanup(fn: () => void | Promise<void>): void; /** * Create a timer that will be automatically cleaned up */ setTimeout(fn: () => void, delay: number): NodeJS.Timeout; /** * Create an interval that will be automatically cleaned up */ setInterval(fn: () => void, delay: number): NodeJS.Timeout; /** * Clear a timer */ clearTimeout(timer: NodeJS.Timeout): void; /** * Clear an interval */ clearInterval(interval: NodeJS.Timeout): void; /** * Run all cleanup functions */ cleanup(): Promise<void>; } /** * Mock timer utilities for deterministic async tests */ export declare const mockTimers: { /** * Use fake timers and return cleanup function */ useFakeTimers(): () => void; /** * Advance timers by time and flush promises */ advanceTimersByTime(ms: number): Promise<void>; /** * Run all pending timers and flush promises */ runAllTimers(): Promise<void>; /** * Run only pending timers (not recursive) and flush promises */ runOnlyPendingTimers(): Promise<void>; }; /** * Flush all pending promises * Useful for ensuring async operations complete */ export declare function flushPromises(): Promise<void>; /** * Create a test timeout guard * Automatically fails test if it takes too long */ export declare function createTimeoutGuard(timeoutMs?: number): { cancel: () => void; }; /** * Wrap an async test with automatic timeout */ export declare function withTestTimeout<T>(testFn: () => Promise<T>, timeoutMs?: number): () => Promise<T>; //# sourceMappingURL=async-helpers.d.ts.map