{"code":"import { Event, StitchEvent, StitchError, StitchRequestError } from \"mongodb-stitch-core-sdk\";\r\nvar BaseEventStream = (function () {\r\n    function BaseEventStream(reconnecter) {\r\n        this.reconnecter = reconnecter;\r\n        this.closed = false;\r\n        this.events = [];\r\n        this.listeners = [];\r\n        this.lastErr = undefined;\r\n    }\r\n    BaseEventStream.prototype.reconnect = function (error) {\r\n        var _this = this;\r\n        if (!this.reconnecter) {\r\n            if (!this.closed) {\r\n                this.closed = true;\r\n                this.events.push(new Event(StitchEvent.ERROR_EVENT_NAME, \"stream closed: \" + error));\r\n                this.poll();\r\n            }\r\n            return;\r\n        }\r\n        this.reconnecter()\r\n            .then(function (next) {\r\n            _this.onReconnect(next);\r\n        })\r\n            .catch(function (e) {\r\n            if (!(e instanceof StitchError) || !(e instanceof StitchRequestError)) {\r\n                _this.closed = true;\r\n                _this.events.push(new Event(StitchEvent.ERROR_EVENT_NAME, \"stream closed: \" + error));\r\n                _this.poll();\r\n                return;\r\n            }\r\n            setTimeout(function () { return _this.reconnect(e); }, BaseEventStream.RETRY_TIMEOUT_MILLIS);\r\n        });\r\n    };\r\n    BaseEventStream.prototype.poll = function () {\r\n        while (this.events.length !== 0) {\r\n            var event_1 = this.events.pop();\r\n            for (var _i = 0, _a = this.listeners; _i < _a.length; _i++) {\r\n                var listener = _a[_i];\r\n                if (listener.onEvent) {\r\n                    listener.onEvent(event_1);\r\n                }\r\n            }\r\n        }\r\n    };\r\n    BaseEventStream.prototype.addListener = function (listener) {\r\n        var _this = this;\r\n        if (this.closed) {\r\n            setTimeout(function () { return listener.onEvent(new Event(StitchEvent.ERROR_EVENT_NAME, \"stream closed\")); }, 0);\r\n            return;\r\n        }\r\n        if (this.lastErr !== undefined) {\r\n            setTimeout(function () { return listener.onEvent(new Event(StitchEvent.ERROR_EVENT_NAME, _this.lastErr)); }, 0);\r\n            return;\r\n        }\r\n        this.listeners.push(listener);\r\n        this.poll();\r\n    };\r\n    BaseEventStream.prototype.removeListener = function (listener) {\r\n        var index = this.listeners.indexOf(listener);\r\n        if (index === -1) {\r\n            return;\r\n        }\r\n        this.listeners.splice(index, 1);\r\n    };\r\n    BaseEventStream.prototype.listenOnce = function (listener) {\r\n        var _this = this;\r\n        if (this.closed) {\r\n            setTimeout(function () { return listener.onEvent(new Event(StitchEvent.ERROR_EVENT_NAME, \"stream closed\")); }, 0);\r\n            return;\r\n        }\r\n        if (this.lastErr !== undefined) {\r\n            setTimeout(function () { return listener.onEvent(new Event(StitchEvent.ERROR_EVENT_NAME, _this.lastErr)); }, 0);\r\n            return;\r\n        }\r\n        var wrapper = {\r\n            onEvent: function (e) {\r\n                _this.removeListener(wrapper);\r\n                listener.onEvent(e);\r\n            }\r\n        };\r\n        this.addListener(wrapper);\r\n    };\r\n    BaseEventStream.prototype.nextEvent = function () {\r\n        var _this = this;\r\n        if (this.closed) {\r\n            return Promise.reject(new Event(StitchEvent.ERROR_EVENT_NAME, \"stream closed\"));\r\n        }\r\n        if (this.lastErr !== undefined) {\r\n            return Promise.reject(new Event(StitchEvent.ERROR_EVENT_NAME, this.lastErr));\r\n        }\r\n        return new Promise(function (resolve, reject) {\r\n            _this.listenOnce({\r\n                onEvent: function (e) {\r\n                    resolve(e);\r\n                }\r\n            });\r\n        });\r\n    };\r\n    BaseEventStream.prototype.close = function () {\r\n        if (this.closed) {\r\n            return;\r\n        }\r\n        this.closed = true;\r\n        this.afterClose();\r\n    };\r\n    BaseEventStream.RETRY_TIMEOUT_MILLIS = 5000;\r\n    return BaseEventStream;\r\n}());\r\nexport default BaseEventStream;\r\n//# sourceMappingURL=BaseEventStream.js.map","map":"{\"version\":3,\"file\":\"BaseEventStream.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../../../src/core/internal/net/BaseEventStream.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/eric/stitch/stitch-js-sdk/packages/browser/core/.rpt2_cache/placeholder/core/internal/net/BaseEventStream.d.ts","text":"import { Event, EventListener, EventStream } from \"mongodb-stitch-core-sdk\";\r\nexport default abstract class BaseEventStream<T extends BaseEventStream<T>> implements EventStream {\r\n    protected static readonly RETRY_TIMEOUT_MILLIS: number;\r\n    private readonly reconnecter?;\r\n    protected closed: boolean;\r\n    protected events: Array<Event>;\r\n    protected listeners: Array<EventListener>;\r\n    protected lastErr?: string;\r\n    constructor(reconnecter?: () => Promise<T>);\r\n    abstract open(): void;\r\n    protected abstract afterClose(): void;\r\n    protected abstract onReconnect(next: T): void;\r\n    protected reconnect(error?: Error): void;\r\n    protected poll(): void;\r\n    addListener(listener: EventListener): void;\r\n    removeListener(listener: EventListener): void;\r\n    private listenOnce;\r\n    nextEvent(): Promise<Event>;\r\n    close(): void;\r\n}\r\n"}}
