{"version":3,"file":"ReconnectionMonitor.mjs","sources":["../../../src/utils/ReconnectionMonitor.ts"],"sourcesContent":["import { RECONNECT_DELAY, RECONNECT_INTERVAL } from '../Providers/constants';\nexport var ReconnectEvent;\n(function (ReconnectEvent) {\n    ReconnectEvent[\"START_RECONNECT\"] = \"START_RECONNECT\";\n    ReconnectEvent[\"HALT_RECONNECT\"] = \"HALT_RECONNECT\";\n})(ReconnectEvent || (ReconnectEvent = {}));\n/**\n * Captures the reconnect event logic used to determine when to reconnect to PubSub providers.\n *   Reconnnect attempts are delayed by 5 seconds to let the interface settle.\n *   Attempting to reconnect only once creates unrecoverable states when the network state isn't\n *   supported by the browser, so this keeps retrying every minute until halted.\n */\nexport class ReconnectionMonitor {\n    constructor() {\n        this.reconnectObservers = [];\n    }\n    /**\n     * Add reconnect observer to the list of observers to alert on reconnect\n     */\n    addObserver(reconnectObserver) {\n        this.reconnectObservers.push(reconnectObserver);\n    }\n    /**\n     * Given a reconnect event, start the appropriate behavior\n     */\n    record(event) {\n        if (event === ReconnectEvent.START_RECONNECT) {\n            // If the reconnection hasn't been started\n            if (this.reconnectSetTimeoutId === undefined &&\n                this.reconnectIntervalId === undefined) {\n                this.reconnectSetTimeoutId = setTimeout(() => {\n                    // Reconnect now\n                    this._triggerReconnect();\n                    // Retry reconnect every periodically until it works\n                    this.reconnectIntervalId = setInterval(() => {\n                        this._triggerReconnect();\n                    }, RECONNECT_INTERVAL);\n                }, RECONNECT_DELAY);\n            }\n        }\n        if (event === ReconnectEvent.HALT_RECONNECT) {\n            if (this.reconnectIntervalId) {\n                clearInterval(this.reconnectIntervalId);\n                this.reconnectIntervalId = undefined;\n            }\n            if (this.reconnectSetTimeoutId) {\n                clearTimeout(this.reconnectSetTimeoutId);\n                this.reconnectSetTimeoutId = undefined;\n            }\n        }\n    }\n    /**\n     * Complete all reconnect observers\n     */\n    close() {\n        this.reconnectObservers.forEach(reconnectObserver => {\n            reconnectObserver.complete?.();\n        });\n    }\n    _triggerReconnect() {\n        this.reconnectObservers.forEach(reconnectObserver => {\n            reconnectObserver.next?.();\n        });\n    }\n}\n"],"names":[],"mappings":";;AACU,IAAC,eAAe;AAC1B,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AAC1D,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACxD,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,iBAAiB,EAAE;AACnC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxD,KAAK;AACL;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,eAAe,EAAE;AACtD;AACA,YAAY,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS;AACxD,gBAAgB,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE;AACxD,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAM;AAC9D;AACA,oBAAoB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7C;AACA,oBAAoB,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,MAAM;AACjE,wBAAwB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjD,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;AAC3C,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACpC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,cAAc,EAAE;AACrD,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxD,gBAAgB,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACrD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5C,gBAAgB,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACzD,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;AACvD,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,IAAI;AAC7D,YAAY,iBAAiB,CAAC,QAAQ,IAAI,CAAC;AAC3C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,IAAI;AAC7D,YAAY,iBAAiB,CAAC,IAAI,IAAI,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;;;;"}