@goatlab/typesense
Version:
Modern TypeScript wrapper for Typesense search engine API
38 lines (37 loc) • 1.27 kB
TypeScript
import { TypesenseRateLimitInfo } from '../typesense.model';
export interface ResiliencePolicyOptions {
maxFailures?: number;
resetTimeout?: number;
retryDelay?: number;
maxRetries?: number;
onStateChange?: (state: 'open' | 'closed' | 'half-open', metadata?: any) => void;
onRetry?: (attempt: number, error: any) => void;
onRateLimitUpdate?: (info: TypesenseRateLimitInfo) => void;
enabled?: boolean;
}
export declare class ResiliencePolicy {
private options;
private failures;
private circuitOpenUntil;
private rateLimitInfo;
private retryAfterUntil;
constructor(options?: ResiliencePolicyOptions);
isCircuitOpen(): boolean;
shouldRetry(retryCount: number, error: any): boolean;
getRetryDelay(retryCount: number): number;
recordSuccess(): void;
recordFailure(): void;
updateRateLimit(headers: Headers): void;
getRateLimit(): TypesenseRateLimitInfo | null;
getTimeUntilReset(): number | undefined;
isRateLimited(): boolean;
reset(): void;
getStatus(): {
failures: number;
circuitOpen: boolean;
circuitOpenUntil: number;
rateLimited: boolean;
retryAfterUntil: number;
rateLimit: TypesenseRateLimitInfo | null;
};
}