{"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;AACX,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,iBAAiB,CAAC,GAAG,iBAAiB;AACzD,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;AACvD,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,mBAAmB,CAAC;AACjC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,kBAAkB,GAAG,EAAE;AACpC,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,CAAC,iBAAiB,EAAE;AACnC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACvD,IAAI;AACJ;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;AAC5C;AACA,oBAAoB,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,MAAM;AACjE,wBAAwB,IAAI,CAAC,iBAAiB,EAAE;AAChD,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;AAC1C,gBAAgB,CAAC,EAAE,eAAe,CAAC;AACnC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,KAAK,cAAc,CAAC,cAAc,EAAE;AACrD,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACvD,gBAAgB,IAAI,CAAC,mBAAmB,GAAG,SAAS;AACpD,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5C,gBAAgB,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxD,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,SAAS;AACtD,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,IAAI;AAC7D,YAAY,iBAAiB,CAAC,QAAQ,IAAI;AAC1C,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,iBAAiB,IAAI;AAC7D,YAAY,iBAAiB,CAAC,IAAI,IAAI;AACtC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;;;;"}