@jibb-open/jssdk 3.17.6 → 3.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ws/meeting.js CHANGED
@@ -1 +1,179 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MeetingConnection=void 0,require("core-js/modules/es.array-buffer.constructor.js"),require("core-js/modules/es.array-buffer.slice.js"),require("core-js/modules/es.global-this.js"),require("core-js/modules/es.promise.js"),require("core-js/modules/es.typed-array.uint8-array.js"),require("core-js/modules/es.typed-array.fill.js"),require("core-js/modules/es.typed-array.set.js"),require("core-js/modules/es.typed-array.sort.js"),require("core-js/modules/es.typed-array.to-locale-string.js"),require("core-js/modules/es.weak-map.js"),require("core-js/modules/web.dom-collections.iterator.js"),require("core-js/modules/web.url.js"),require("core-js/modules/web.url.to-json.js"),require("core-js/modules/web.url-search-params.js");var _auth=require("../api/auth.js"),_config=require("../config.js"),_index=require("../utils/logger/index.js"),_types=require("../types/types.js"),_proto=require("../types/proto.js"),_exceptions=require("../types/exceptions.js"),_observable_connection=require("./observable_connection.js");function _classPrivateMethodInitSpec(a,b){_checkPrivateRedeclaration(a,b),b.add(a)}function _classPrivateFieldInitSpec(a,b,c){_checkPrivateRedeclaration(a,b),b.set(a,c)}function _checkPrivateRedeclaration(a,b){if(b.has(a))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(b,c){return b.get(_assertClassBrand(b,c))}function _classPrivateFieldSet(b,c,a){return b.set(_assertClassBrand(b,c),a),a}function _assertClassBrand(a,b,c){if("function"==typeof a?a===b:a.has(b))return 3>arguments.length?b:c;throw new TypeError("Private element is not present on this object")}function _getRequireWildcardCache(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(_getRequireWildcardCache=function(a){return a?c:b})(a)}function _interopRequireWildcard(b,c){if(!c&&b&&b.__esModule)return b;if(null===b||"object"!=typeof b&&"function"!=typeof b)return{default:b};var d=_getRequireWildcardCache(c);if(d&&d.has(b))return d.get(b);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in b)if("default"!=a&&{}.hasOwnProperty.call(b,a)){var g=f?Object.getOwnPropertyDescriptor(b,a):null;g&&(g.get||g.set)?Object.defineProperty(e,a,g):e[a]=b[a]}return e.default=b,d&&d.set(b,e),e}let Message=_proto.meeting.Message,ErrorCode=_proto.types.Code;(null===globalThis||void 0===globalThis?void 0:globalThis.WebSocket)==null&&Promise.resolve().then(()=>_interopRequireWildcard(require("isomorphic-ws"))).then(a=>{globalThis.WebSocket=a.default}).catch(a=>{console.log(a)});var _expiryTimer=/*#__PURE__*/new WeakMap,_MeetingConnectionImp_brand=/*#__PURE__*/new WeakSet;class MeetingConnectionImp extends _observable_connection.ObservableRetryConnection{constructor(){let a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{maxRetryCount:10,minRetryIntervalMs:500,maxRetryIntervalMs:32e3};super("meeting",a),_classPrivateMethodInitSpec(this,_MeetingConnectionImp_brand),_classPrivateFieldInitSpec(this,_expiryTimer,void 0),this.meetingId=null,this.meetingToken=null,_classPrivateFieldSet(_expiryTimer,this,null)}start(a){this.meetingToken=a,this.meetingClaims=new _types.MeetingClaims(a),this.meetingId=this.meetingClaims.meetindId,this.name="meeting-".concat(this.meetingId);let b=this.meetingClaims.getSecondsUntilExpiry();if(0>=b){let a=new _exceptions.PermissionDeniedError("meeting token expired");throw this.onError(a),a}_classPrivateFieldSet(_expiryTimer,this,setTimeout(()=>{this.stop(),this.onError(new _exceptions.SessionTimeoutError("meeting token expired"))},b)),super.start()}stop(){clearTimeout(_classPrivateFieldGet(_expiryTimer,this)),super.stop()}async getURI(){try{if(this.meetingClaims.isExpired()){let a=new _exceptions.PermissionDeniedError("meeting token expired");throw this.onError(a),a}}catch(a){let b=new _exceptions.PermissionDeniedError(a);throw b}let a=new URL(_config.Config.apiBaseURL),b=a.host+("/"===a.pathname?"":a.pathname);return"wss://"+b+"/ws/meetings/"+this.meetingId+"?meeting_token="+this.meetingToken}async onData(a){try{if(a instanceof ArrayBuffer){let b=new Uint8Array(a),c=Message.decode(b);return null!==c&&void 0!==c&&c.update&&(this.notify("onMeetingUpdate",c.update),await _assertClassBrand(_MeetingConnectionImp_brand,this,_sendImageAck).call(this,c.update.userId)),void(null!==c&&void 0!==c&&c.drawing?this.notify("onDrawing",c.drawing):null!==c&&void 0!==c&&c.mousePointer?this.notify("onMousePointer",c):null!==c&&void 0!==c&&c.indexPointer?this.notify("onIndexPointer",c):null!==c&&void 0!==c&&c.join?this.notify("onMeetingJoin",c.join):null!==c&&void 0!==c&&c.leave&&this.notify("onMeetingLeave",c.leave))}}catch(a){_index.logger.error(a)}this.parseJSONResponse(a)}async sendMousePointer(a,b,c){let d="";if(""!=c)d=c;else try{let a=await(0,_auth.getUserClaims)();d=a.email}catch(a){d=c}let e=Message.fromObject({mousePointer:{email:d,x:a,y:b}}),f=Message.encode(e).finish();await this.write(f)}async sendIndexPointer(a,b,c){let d="";if(""!=c)d=c;else try{let a=await(0,_auth.getUserClaims)();d=a.email}catch(a){d=c}let e=Message.fromObject({indexPointer:{email:d,x:a,y:b}}),f=Message.encode(e).finish();await this.write(f)}async sendDrawing(a){let{email:b,data:c}=a,d=Message.fromObject({drawing:{email:b,data:c}});_index.logger.debug("".concat(this.name,".Drawing: "),Message.toObject(d));let e=Message.encode(d).finish();await this.write(e)}}async function _sendImageAck(a){let b=Message.fromObject({imageAck:{userId:a}}),c=Message.encode(b).finish();await this.write(c)}let MeetingConnection=exports.MeetingConnection=new MeetingConnectionImp({maxRetryCount:10,minRetryIntervalMs:500,maxRetryIntervalMs:8e3});
1
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
2
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
3
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
4
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
5
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
6
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
7
+ import "core-js/modules/es.array-buffer.constructor.js";
8
+ import "core-js/modules/es.array-buffer.slice.js";
9
+ import "core-js/modules/es.global-this.js";
10
+ import "core-js/modules/es.promise.js";
11
+ import "core-js/modules/es.typed-array.uint8-array.js";
12
+ import "core-js/modules/es.typed-array.fill.js";
13
+ import "core-js/modules/es.typed-array.set.js";
14
+ import "core-js/modules/es.typed-array.sort.js";
15
+ import "core-js/modules/es.typed-array.to-locale-string.js";
16
+ import "core-js/modules/es.weak-map.js";
17
+ import "core-js/modules/web.dom-collections.iterator.js";
18
+ import "core-js/modules/web.url.js";
19
+ import "core-js/modules/web.url.to-json.js";
20
+ import "core-js/modules/web.url-search-params.js";
21
+ import { getUserClaims } from '../api/auth.js';
22
+ import { Config } from "../config.js";
23
+ import { logger } from "../utils/logger/index.js";
24
+ import { MeetingClaims } from "../types/types.js";
25
+ import { meeting, types } from "../types/proto.js";
26
+ import { PermissionDeniedError, SessionTimeoutError } from '../types/exceptions.js';
27
+ import { ObservableRetryConnection } from './observable_connection.js';
28
+ let Message = meeting.Message;
29
+ let ErrorCode = types.Code;
30
+ if ((globalThis === null || globalThis === void 0 ? void 0 : globalThis.WebSocket) == undefined) {
31
+ import("isomorphic-ws").then(webSocket => {
32
+ globalThis.WebSocket = webSocket.default;
33
+ }).catch(err => {
34
+ console.log(err);
35
+ });
36
+ }
37
+ var _expiryTimer = /*#__PURE__*/new WeakMap();
38
+ var _MeetingConnectionImp_brand = /*#__PURE__*/new WeakSet();
39
+ class MeetingConnectionImp extends ObservableRetryConnection {
40
+ constructor() {
41
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
42
+ maxRetryCount: 10,
43
+ minRetryIntervalMs: 500,
44
+ maxRetryIntervalMs: 32000
45
+ };
46
+ super('meeting', options);
47
+ _classPrivateMethodInitSpec(this, _MeetingConnectionImp_brand);
48
+ _classPrivateFieldInitSpec(this, _expiryTimer, void 0);
49
+ this.meetingId = null;
50
+ this.meetingToken = null;
51
+ _classPrivateFieldSet(_expiryTimer, this, null);
52
+ }
53
+ start(meetingToken) {
54
+ this.meetingToken = meetingToken;
55
+ this.meetingClaims = new MeetingClaims(meetingToken);
56
+ this.meetingId = this.meetingClaims.meetindId;
57
+ this.name = "meeting-".concat(this.meetingId);
58
+ let seconds = this.meetingClaims.getSecondsUntilExpiry();
59
+ if (seconds <= 0) {
60
+ let e = new PermissionDeniedError("meeting token expired");
61
+ this.onError(e);
62
+ throw e;
63
+ }
64
+ _classPrivateFieldSet(_expiryTimer, this, setTimeout(() => {
65
+ this.stop();
66
+ this.onError(new SessionTimeoutError("meeting token expired"));
67
+ }, seconds));
68
+ super.start();
69
+ }
70
+ stop() {
71
+ clearTimeout(_classPrivateFieldGet(_expiryTimer, this));
72
+ super.stop();
73
+ }
74
+ async getURI() {
75
+ try {
76
+ if (this.meetingClaims.isExpired()) {
77
+ let e = new PermissionDeniedError("meeting token expired");
78
+ this.onError(e);
79
+ throw e;
80
+ }
81
+ } catch (err) {
82
+ let e = new PermissionDeniedError(err);
83
+ throw e;
84
+ }
85
+ let base = new URL(Config.apiBaseURL);
86
+ let url = base.host + (base.pathname !== '/' ? base.pathname : '');
87
+ return "wss://" + url + "/ws/meetings/" + this.meetingId + "?meeting_token=" + this.meetingToken;
88
+ }
89
+ async onData(msg) {
90
+ try {
91
+ if (msg instanceof ArrayBuffer) {
92
+ let buffer = new Uint8Array(msg);
93
+ let event = Message.decode(buffer);
94
+ if (event !== null && event !== void 0 && event.update) {
95
+ this.notify('onMeetingUpdate', event.update);
96
+ await _assertClassBrand(_MeetingConnectionImp_brand, this, _sendImageAck).call(this, event.update.userId);
97
+ }
98
+ if (event !== null && event !== void 0 && event.drawing) this.notify('onDrawing', event.drawing);else if (event !== null && event !== void 0 && event.mousePointer) this.notify('onMousePointer', event.mousePointer);else if (event !== null && event !== void 0 && event.indexPointer) this.notify('onIndexPointer', event.indexPointer);else if (event !== null && event !== void 0 && event.join) this.notify('onMeetingJoin', event.join);else if (event !== null && event !== void 0 && event.leave) this.notify('onMeetingLeave', event.leave);
99
+ return;
100
+ }
101
+ } catch (err) {
102
+ logger.error(err);
103
+ }
104
+ this.parseJSONResponse(msg);
105
+ }
106
+ async sendMousePointer(x, y, email) {
107
+ let username = "";
108
+ if (email != "") {
109
+ username = email;
110
+ } else {
111
+ try {
112
+ let claims = await getUserClaims();
113
+ username = claims.email;
114
+ } catch (err) {
115
+ username = email;
116
+ }
117
+ }
118
+ let msg = Message.fromObject({
119
+ mousePointer: {
120
+ email: username,
121
+ x: x,
122
+ y: y
123
+ }
124
+ });
125
+ let buf = Message.encode(msg).finish();
126
+ await this.write(buf);
127
+ }
128
+ async sendIndexPointer(x, y, email) {
129
+ let username = "";
130
+ if (email != "") {
131
+ username = email;
132
+ } else {
133
+ try {
134
+ let claims = await getUserClaims();
135
+ username = claims.email;
136
+ } catch (err) {
137
+ username = email;
138
+ }
139
+ }
140
+ let msg = Message.fromObject({
141
+ indexPointer: {
142
+ email: username,
143
+ x: x,
144
+ y: y
145
+ }
146
+ });
147
+ let buf = Message.encode(msg).finish();
148
+ await this.write(buf);
149
+ }
150
+ async sendDrawing(_ref) {
151
+ let {
152
+ email,
153
+ data
154
+ } = _ref;
155
+ let msg = Message.fromObject({
156
+ drawing: {
157
+ email: email,
158
+ data: data
159
+ }
160
+ });
161
+ logger.debug("".concat(this.name, ".Drawing: "), Message.toObject(msg));
162
+ let buf = Message.encode(msg).finish();
163
+ await this.write(buf);
164
+ }
165
+ }
166
+ async function _sendImageAck(userId) {
167
+ let msg = Message.fromObject({
168
+ imageAck: {
169
+ userId: userId
170
+ }
171
+ });
172
+ let buf = Message.encode(msg).finish();
173
+ await this.write(buf);
174
+ }
175
+ export let MeetingConnection = new MeetingConnectionImp({
176
+ maxRetryCount: 10,
177
+ minRetryIntervalMs: 500,
178
+ maxRetryIntervalMs: 8000
179
+ });
@@ -1 +1,91 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ObservableRetryConnection=exports.Observable=void 0,require("core-js/modules/es.weak-map.js"),require("core-js/modules/web.dom-collections.iterator.js");var _index=require("../utils/logger/index.js"),_retry_connection=require("./retry_connection.js");function _classPrivateFieldInitSpec(a,b,c){_checkPrivateRedeclaration(a,b),b.set(a,c)}function _checkPrivateRedeclaration(a,b){if(b.has(a))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(b,c){return b.get(_assertClassBrand(b,c))}function _classPrivateFieldSet(b,c,a){return b.set(_assertClassBrand(b,c),a),a}function _assertClassBrand(a,b,c){if("function"==typeof a?a===b:a.has(b))return 3>arguments.length?b:c;throw new TypeError("Private element is not present on this object")}var _lastId=/*#__PURE__*/new WeakMap;class Observable{constructor(){_classPrivateFieldInitSpec(this,_lastId,void 0),this.observers=new Map,_classPrivateFieldSet(_lastId,this,0)}addEventListener(a){return _classPrivateFieldSet(_lastId,this,_classPrivateFieldGet(_lastId,this)+1),this.observers.set(_classPrivateFieldGet(_lastId,this),a),_classPrivateFieldGet(_lastId,this)}removeEventListeners(){this.observers=new Map}removeEventListener(a){try{this.observers.delete(a)}catch(a){_index.logger.error(a)}}notify(a){for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];this.observers.forEach(b=>{try{let d=b[a];d&&d(...c)}catch(b){_index.logger.error("Error occured notifying event ".concat(a),b)}})}}exports.Observable=Observable;class ObservableRetryConnection extends _retry_connection.RetryConnection{constructor(a){let b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{maxRetryCount:10,minRetryIntervalMs:500,maxRetryIntervalMs:32e3};super(a,b),this.observable=new Observable}addEventListener(a){return this.observable.addEventListener(a)}removeEventListeners(){this.observable.removeEventListeners()}removeEventListener(a){this.observable.removeEventListener(a)}notify(a){for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];this.observable.notify(a,...c)}onDisconnected(){super.onDisconnected(),this.observable.notify("onDisconnected")}onConnected(){super.onConnected(),this.observable.notify("onConnected")}onStarted(){super.onStarted(),this.observable.notify("onStarted")}onStopped(){super.onStopped(),this.observable.notify("onStopped")}onError(a){super.onError(a),this.observable.notify("onError",a)}}exports.ObservableRetryConnection=ObservableRetryConnection;
1
+ import "core-js/modules/es.weak-map.js";
2
+ import "core-js/modules/web.dom-collections.iterator.js";
3
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
4
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
5
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
6
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
7
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
8
+ import { logger } from "../utils/logger/index.js";
9
+ import { RetryConnection } from "./retry_connection.js";
10
+ var _lastId = /*#__PURE__*/new WeakMap();
11
+ export class Observable {
12
+ constructor() {
13
+ _classPrivateFieldInitSpec(this, _lastId, void 0);
14
+ this.observers = new Map();
15
+ _classPrivateFieldSet(_lastId, this, 0);
16
+ }
17
+ addEventListener(observer) {
18
+ _classPrivateFieldSet(_lastId, this, _classPrivateFieldGet(_lastId, this) + 1);
19
+ this.observers.set(_classPrivateFieldGet(_lastId, this), observer);
20
+ return _classPrivateFieldGet(_lastId, this);
21
+ }
22
+ removeEventListeners() {
23
+ this.observers = new Map();
24
+ }
25
+ removeEventListener(id) {
26
+ try {
27
+ this.observers.delete(id);
28
+ } catch (err) {
29
+ logger.error(err);
30
+ }
31
+ }
32
+ notify(eventName) {
33
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
34
+ args[_key - 1] = arguments[_key];
35
+ }
36
+ this.observers.forEach(o => {
37
+ try {
38
+ let fn = o[eventName];
39
+ fn && fn(...args);
40
+ } catch (err) {
41
+ logger.error("Error occured notifying event ".concat(eventName), err);
42
+ }
43
+ });
44
+ }
45
+ }
46
+ export class ObservableRetryConnection extends RetryConnection {
47
+ constructor(connectionName) {
48
+ let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
49
+ maxRetryCount: 10,
50
+ minRetryIntervalMs: 500,
51
+ maxRetryIntervalMs: 32000
52
+ };
53
+ super(connectionName, props);
54
+ this.observable = new Observable();
55
+ }
56
+ addEventListener(observer) {
57
+ return this.observable.addEventListener(observer);
58
+ }
59
+ removeEventListeners() {
60
+ this.observable.removeEventListeners();
61
+ }
62
+ removeEventListener(id) {
63
+ this.observable.removeEventListener(id);
64
+ }
65
+ notify(eventName) {
66
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
67
+ args[_key2 - 1] = arguments[_key2];
68
+ }
69
+ this.observable.notify(eventName, ...args);
70
+ }
71
+ onDisconnected() {
72
+ super.onDisconnected();
73
+ this.observable.notify("onDisconnected");
74
+ }
75
+ onConnected() {
76
+ super.onConnected();
77
+ this.observable.notify("onConnected");
78
+ }
79
+ onStarted() {
80
+ super.onStarted();
81
+ this.observable.notify("onStarted");
82
+ }
83
+ onStopped() {
84
+ super.onStopped();
85
+ this.observable.notify("onStopped");
86
+ }
87
+ onError(e) {
88
+ super.onError(e);
89
+ this.observable.notify("onError", e);
90
+ }
91
+ }
@@ -1 +1,107 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RetryConnection=void 0,require("core-js/modules/es.weak-map.js"),require("core-js/modules/web.dom-collections.iterator.js");var _exceptions=require("../types/exceptions.js"),_index=require("../utils/logger/index.js"),_connection_base=require("./connection_base.js");function _classPrivateMethodInitSpec(a,b){_checkPrivateRedeclaration(a,b),b.add(a)}function _classPrivateFieldInitSpec(a,b,c){_checkPrivateRedeclaration(a,b),b.set(a,c)}function _checkPrivateRedeclaration(a,b){if(b.has(a))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(b,c){return b.get(_assertClassBrand(b,c))}function _classPrivateFieldSet(b,c,a){return b.set(_assertClassBrand(b,c),a),a}function _assertClassBrand(a,b,c){if("function"==typeof a?a===b:a.has(b))return 3>arguments.length?b:c;throw new TypeError("Private element is not present on this object")}var _started=/*#__PURE__*/new WeakMap,_connectionTimer=/*#__PURE__*/new WeakMap,_resetCountersTimer=/*#__PURE__*/new WeakMap,_RetryConnection_brand=/*#__PURE__*/new WeakSet;class RetryConnection extends _connection_base.ConnectionBase{constructor(a){let b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{maxRetryCount:10,minRetryIntervalMs:500,maxRetryIntervalMs:32e3};super(a),_classPrivateMethodInitSpec(this,_RetryConnection_brand),_classPrivateFieldInitSpec(this,_started,void 0),_classPrivateFieldInitSpec(this,_connectionTimer,void 0),_classPrivateFieldInitSpec(this,_resetCountersTimer,void 0),this.maxRetryCount=b.maxRetryCount||10,this.minRetryIntervalMs=b.minRetryIntervalMs||500,this.maxRetryIntervalMs=b.maxRetryIntervalMs||32e3,_classPrivateFieldSet(_connectionTimer,this,null),_classPrivateFieldSet(_resetCountersTimer,this,null),_classPrivateFieldSet(_started,this,!1),_assertClassBrand(_RetryConnection_brand,this,_resetCounters).call(this)}start(){this.isStarted()||(_index.logger.info("".concat(this.name,": starting...")),_classPrivateFieldSet(_started,this,!0),_assertClassBrand(_RetryConnection_brand,this,_resetCounters).call(this),_assertClassBrand(_RetryConnection_brand,this,_reconnect).call(this),this.onStarted())}stop(){_index.logger.info("".concat(this.name,": stopping...")),_classPrivateFieldSet(_started,this,!1),this.disconnect(),this.onStopped()}isStarted(){return _classPrivateFieldGet(_started,this)}onDisconnected(){super.onDisconnected(),_assertClassBrand(_RetryConnection_brand,this,_reconnect).call(this)}onStarted(){}onStopped(){}onError(a){super.onError(a),(a instanceof _exceptions.TooManyConnectionsError||a instanceof _exceptions.PermissionDeniedError||a instanceof _exceptions.SessionTimeoutError)&&this.stop()}disconnect(){clearTimeout(_classPrivateFieldGet(_connectionTimer,this)),clearTimeout(_classPrivateFieldGet(_resetCountersTimer,this)),super.disconnect()}setCounters(){let a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{maxRetryCount:10,minRetryIntervalMs:500,maxRetryIntervalMs:32e3};this.maxRetryCount=a.maxRetryCount||10,this.minRetryIntervalMs=a.minRetryIntervalMs||500,this.maxRetryIntervalMs=a.maxRetryIntervalMs||32e3}}exports.RetryConnection=RetryConnection;function _reconnect(){if(this.isStarted()){if(this.retryCount>this.maxRetryCount)return void this.stop();let a=Math.max(this.nexRetryTime-Date.now(),0);0<a&&(_index.logger.debug(this),_index.logger.info("".concat(this.name,": retrying connection in ").concat(this.retryIntervalMs,"ms]"))),clearTimeout(_classPrivateFieldGet(_resetCountersTimer,this)),this.retryIntervalMs=Math.min(2*this.retryIntervalMs,this.maxRetryIntervalMs),++this.retryCount,this.nexRetryTime=Date.now()+this.retryIntervalMs,_classPrivateFieldSet(_connectionTimer,this,setTimeout(()=>{this.connect().catch(a=>{this.onError(a)})},a)),_classPrivateFieldSet(_resetCountersTimer,this,setTimeout(()=>{_assertClassBrand(_RetryConnection_brand,this,_resetCounters).call(this)},6e4))}}function _resetCounters(){this.retryCount=0,this.retryIntervalMs=this.minRetryIntervalMs,this.nexRetryTime=Date.now()}
1
+ import "core-js/modules/es.weak-map.js";
2
+ import "core-js/modules/web.dom-collections.iterator.js";
3
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
4
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
5
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
6
+ function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
7
+ function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
8
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
9
+ import { PermissionDeniedError, SessionTimeoutError, TooManyConnectionsError } from "../types/exceptions.js";
10
+ import { logger } from "../utils/logger/index.js";
11
+ import { ConnectionBase } from "./connection_base.js";
12
+ var _started = /*#__PURE__*/new WeakMap();
13
+ var _connectionTimer = /*#__PURE__*/new WeakMap();
14
+ var _resetCountersTimer = /*#__PURE__*/new WeakMap();
15
+ var _RetryConnection_brand = /*#__PURE__*/new WeakSet();
16
+ export class RetryConnection extends ConnectionBase {
17
+ constructor(connectionName) {
18
+ let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
19
+ maxRetryCount: 10,
20
+ minRetryIntervalMs: 500,
21
+ maxRetryIntervalMs: 32000
22
+ };
23
+ super(connectionName);
24
+ _classPrivateMethodInitSpec(this, _RetryConnection_brand);
25
+ _classPrivateFieldInitSpec(this, _started, void 0);
26
+ _classPrivateFieldInitSpec(this, _connectionTimer, void 0);
27
+ _classPrivateFieldInitSpec(this, _resetCountersTimer, void 0);
28
+ this.maxRetryCount = props.maxRetryCount || 10;
29
+ this.minRetryIntervalMs = props.minRetryIntervalMs || 500;
30
+ this.maxRetryIntervalMs = props.maxRetryIntervalMs || 32000;
31
+ _classPrivateFieldSet(_connectionTimer, this, null);
32
+ _classPrivateFieldSet(_resetCountersTimer, this, null);
33
+ _classPrivateFieldSet(_started, this, false);
34
+ _assertClassBrand(_RetryConnection_brand, this, _resetCounters).call(this);
35
+ }
36
+ start() {
37
+ if (!this.isStarted()) {
38
+ logger.info("".concat(this.name, ": starting..."));
39
+ _classPrivateFieldSet(_started, this, true);
40
+ _assertClassBrand(_RetryConnection_brand, this, _resetCounters).call(this);
41
+ _assertClassBrand(_RetryConnection_brand, this, _reconnect).call(this);
42
+ this.onStarted();
43
+ }
44
+ }
45
+ stop() {
46
+ logger.info("".concat(this.name, ": stopping..."));
47
+ _classPrivateFieldSet(_started, this, false);
48
+ this.disconnect();
49
+ this.onStopped();
50
+ }
51
+ isStarted() {
52
+ return _classPrivateFieldGet(_started, this);
53
+ }
54
+ onDisconnected() {
55
+ super.onDisconnected();
56
+ _assertClassBrand(_RetryConnection_brand, this, _reconnect).call(this);
57
+ }
58
+ onStarted() {}
59
+ onStopped() {}
60
+ onError(err) {
61
+ super.onError(err);
62
+ if (err instanceof TooManyConnectionsError || err instanceof PermissionDeniedError || err instanceof SessionTimeoutError) this.stop();
63
+ }
64
+ disconnect() {
65
+ clearTimeout(_classPrivateFieldGet(_connectionTimer, this));
66
+ clearTimeout(_classPrivateFieldGet(_resetCountersTimer, this));
67
+ super.disconnect();
68
+ }
69
+ setCounters() {
70
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
71
+ maxRetryCount: 10,
72
+ minRetryIntervalMs: 500,
73
+ maxRetryIntervalMs: 32000
74
+ };
75
+ this.maxRetryCount = props.maxRetryCount || 10;
76
+ this.minRetryIntervalMs = props.minRetryIntervalMs || 500;
77
+ this.maxRetryIntervalMs = props.maxRetryIntervalMs || 32000;
78
+ }
79
+ }
80
+ function _reconnect() {
81
+ if (!this.isStarted()) return;else if (this.retryCount > this.maxRetryCount) {
82
+ this.stop();
83
+ return;
84
+ }
85
+ let diff = Math.max(this.nexRetryTime - Date.now(), 0);
86
+ if (diff > 0) {
87
+ logger.debug(this);
88
+ logger.info("".concat(this.name, ": retrying connection in ").concat(this.retryIntervalMs, "ms]"));
89
+ }
90
+ clearTimeout(_classPrivateFieldGet(_resetCountersTimer, this));
91
+ this.retryIntervalMs = Math.min(this.retryIntervalMs * 2, this.maxRetryIntervalMs);
92
+ this.retryCount = this.retryCount + 1;
93
+ this.nexRetryTime = Date.now() + this.retryIntervalMs;
94
+ _classPrivateFieldSet(_connectionTimer, this, setTimeout(() => {
95
+ this.connect().catch(err => {
96
+ this.onError(err);
97
+ });
98
+ }, diff));
99
+ _classPrivateFieldSet(_resetCountersTimer, this, setTimeout(() => {
100
+ _assertClassBrand(_RetryConnection_brand, this, _resetCounters).call(this);
101
+ }, 60000));
102
+ }
103
+ function _resetCounters() {
104
+ this.retryCount = 0;
105
+ this.retryIntervalMs = this.minRetryIntervalMs;
106
+ this.nexRetryTime = Date.now();
107
+ }