mollitia
Version:
JavaScript Resilience Library
66 lines (64 loc) • 1.95 kB
TypeScript
import { Module, ModuleOptions } from './index.js';
import { Circuit, CircuitFunction } from '../circuit.js';
import { EventEmitter } from '../helpers/event.js';
/**
* Properties that customizes the bulkhead behavior.
*/
export declare abstract class BulkheadOptions extends ModuleOptions {
/**
* The number of concurrent requests that can be running in parallel.
*/
concurrentSize?: number;
/**
* The number of requests that can be queued.
*/
queueSize?: number;
/**
* The amount of time before a queued request is rejected.
*/
maxQueueWait?: number;
}
/**
* Returned when a bulkhead module concurrent buffer and queue are overloaded.
* @param message Circuit is overloaded
*/
export declare class BulkheadOverloadError extends Error {
constructor();
}
/**
* Returned when a bulkhead module request has been waiting for too long in queue.
* @param message Waiting for too long in queue
*/
export declare class BulkheadQueueWaitError extends Error {
constructor();
}
declare class BufferedPromise extends EventEmitter {
private promise;
private params;
constructor(promise: CircuitFunction, ...params: any[]);
execute<T>(): Promise<T>;
}
/**
* The Bulkhead Module, that allows to limit concurrent executions.
*/
export declare class Bulkhead extends Module {
/**
* The number of concurrent requests that can be running in parallel.
*/
concurrentSize: number;
/**
* The number of requests that can be queued.
*/
queueSize: number;
/**
* The amount of time before a queued request is rejected.
*/
maxQueueWait: number;
concurrentBuffer: BufferedPromise[];
queueBuffer: BufferedPromise[];
constructor(options?: BulkheadOptions);
execute<T>(circuit: Circuit, promise: CircuitFunction, ...params: any[]): Promise<T>;
private _promiseBulkhead;
private _addBufferedPromise;
}
export {};