@ovotech/genesys-web-messaging-tester
Version:
44 lines (43 loc) • 1.81 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { EventEmitter } from 'events';
import { Response } from '../Response';
import { setInterval } from 'timers';
import { MessageDelayer } from './MessageDelayer';
import { StructuredMessage } from '../StructuredMessage';
export interface ReceivedMsg<T extends StructuredMessage | Response<unknown>> {
received: Date;
response: T;
}
/**
* Reorders messages with a timestamp, being sure to maintain the overall order of messages with/without
* timestamps.
*
* > All messaging follows a request/response pattern. However, web messaging is an asynchronous
* > channel and therefore no guarantee to ordering is provided.
* > Source: https://developer.genesys.cloud/commdigital/digital/webmessaging/websocketapi#messaging
*/
export declare class ReorderedMessageDelayer extends EventEmitter implements MessageDelayer {
private readonly delayBeforeEmittingInMs;
private readonly intervalInMs;
private readonly intervalSet;
private readonly intervalClear;
private static readonly debugger;
private messages;
private lastMessageWithTimestamp;
private intervalReference;
private unorderedMessageOccurred;
constructor(delayBeforeEmittingInMs?: number, intervalInMs?: number, intervalSet?: typeof setInterval, intervalClear?: typeof clearInterval);
private logUnorderedMessageTimeDiff;
get unorderdMessageDetected(): boolean;
/**
* Add a message to the pool. Each message added reset a timer to wait for any other messages
* before releasing the oldest message.
*/
add(message: Response<unknown>, received: Date): void;
private startInterval;
private stopInterval;
private emitMessagesAfterSilence;
get delay(): number;
}