UNPKG

@ovotech/genesys-web-messaging-tester

Version:
44 lines (43 loc) 1.81 kB
/// <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; }