@trycourier/courier-js
Version:
A browser-safe API wrapper
55 lines (54 loc) • 1.71 kB
TypeScript
import { ClientMessageEnvelope, ServerMessage } from '../types/socket/protocol/messages';
export declare class TransactionManager {
/**
* The map of <transactionId, Transaction> representing outstanding requests.
*/
private readonly outstandingRequestsMap;
/**
* The queue of completed requests. This is a FIFO queue of the last N completed requests,
* where N is {@link completedTransactionsToKeep}.
*/
private readonly completedTransactionsQueue;
/**
* Number of completed requests to keep in memory.
*/
private readonly completedTransactionsToKeep;
constructor(completedTransactionsToKeep?: number);
addOutstandingRequest(transactionId: string, request: ClientMessageEnvelope): void;
addResponse(transactionId: string, response: ServerMessage): void;
get outstandingRequests(): Transaction[];
get completedTransactions(): Transaction[];
clearOutstandingRequests(): void;
/**
* Adds a completed request to the queue.
*
* If the number of completed requests exceeds the maximum number of completed requests to keep,
* remove the oldest completed request.
*/
private addCompletedTransaction;
}
interface Transaction {
/**
* The transaction ID.
*/
transactionId: string;
/**
* The request to the server.
*/
request: ClientMessageEnvelope;
/**
* The response to the request.
*
* The response is null until the request is completed.
*/
response: ServerMessage | null;
/**
* The start time of the transaction.
*/
start: Date;
/**
* The end time of the transaction.
*/
end: Date | null;
}
export {};