@jibb-open/jssdk 3.5.7 → 3.5.9
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/dist/api/admin.js +418 -0
- package/dist/api/auth.js +246 -0
- package/dist/api/eventbus.js +249 -0
- package/dist/api/index.js +53 -0
- package/dist/api/meeting.js +488 -0
- package/dist/api/recording.js +260 -0
- package/dist/api/superadmin.js +105 -0
- package/dist/api/user.js +51 -0
- package/dist/api/webexbot.js +41 -0
- package/dist/api/whiteboard.js +179 -0
- package/dist/config.js +16 -0
- package/dist/examples/browser/462.jibb.js +306 -0
- package/dist/examples/browser/index.html +17 -0
- package/dist/examples/browser/jibb.js +7381 -0
- package/dist/examples/browser/startSession.js +102 -0
- package/dist/examples/examples.js +6 -0
- package/dist/examples/webexDevicesMacros/cameraPresets/jibb.js +280 -0
- package/dist/examples/webexDevicesMacros/simplestExample/jibb.js +182 -0
- package/dist/examples/webexDevicesMacros/webexDevice JSSDK/jibb_WebexXapi.js +3033 -0
- package/dist/examples/webexDevicesMacros/withCameraControl/jibb.js +264 -0
- package/dist/package.json +69 -0
- package/dist/post-processing.js +43 -0
- package/dist/types/exceptions.js +55 -0
- package/dist/types/jibb.pb.js +1324 -0
- package/dist/types/proto.js +15 -0
- package/dist/types/types.js +67 -0
- package/dist/utils/cached_variable.js +25 -0
- package/dist/utils/future.js +31 -0
- package/dist/utils/http/http.axios.js +41 -0
- package/dist/utils/http/index.js +10 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/logger/index.js +19 -0
- package/dist/utils/logger/logger.empty.js +25 -0
- package/dist/utils/logger/logger.pino.js +19 -0
- package/dist/ws/connection_base.js +95 -0
- package/dist/ws/eventbus.js +376 -0
- package/dist/ws/index.js +36 -0
- package/dist/ws/ipsa.js +262 -0
- package/dist/ws/meeting.js +181 -0
- package/dist/ws/observable_connection.js +87 -0
- package/dist/ws/retry_connection.js +94 -0
- package/package.json +1 -1
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EventBusConnection = void 0;
|
|
7
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
8
|
+
require("core-js/modules/es.promise.js");
|
|
9
|
+
require("core-js/modules/web.url.js");
|
|
10
|
+
require("core-js/modules/web.url-search-params.js");
|
|
11
|
+
require("core-js/modules/es.array-buffer.constructor.js");
|
|
12
|
+
require("core-js/modules/es.array-buffer.slice.js");
|
|
13
|
+
require("core-js/modules/es.typed-array.uint8-array.js");
|
|
14
|
+
require("core-js/modules/es.typed-array.fill.js");
|
|
15
|
+
require("core-js/modules/es.typed-array.set.js");
|
|
16
|
+
require("core-js/modules/es.typed-array.sort.js");
|
|
17
|
+
require("core-js/modules/es.typed-array.to-locale-string.js");
|
|
18
|
+
var _config = require("../config.js");
|
|
19
|
+
var _index = require("../utils/logger/index.js");
|
|
20
|
+
var _exceptions = require("../types/exceptions.js");
|
|
21
|
+
var _retry_connection = require("./retry_connection.js");
|
|
22
|
+
var _connection_base = require("./connection_base.js");
|
|
23
|
+
var _types = require("../types/types.js");
|
|
24
|
+
var _proto = require("../types/proto.js");
|
|
25
|
+
var _auth = require("../api/auth.js");
|
|
26
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
27
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
|
28
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
29
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
30
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
|
31
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
|
32
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
|
33
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
|
34
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
|
35
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
|
36
|
+
const ClientType = _proto.types.ClientType;
|
|
37
|
+
const ErrorCode = _proto.types.Code;
|
|
38
|
+
const BusMessage = _proto.cilix.BusMessage;
|
|
39
|
+
function getClientNameByType(clientType) {
|
|
40
|
+
let found = Object.entries(ClientType).find(_ref => {
|
|
41
|
+
let [k, v] = _ref;
|
|
42
|
+
return v == clientType;
|
|
43
|
+
});
|
|
44
|
+
if (!found) throw new _exceptions.InvalidArgumentError("Invalid client type: ".concat(clientType));
|
|
45
|
+
let name = found[0].toLowerCase();
|
|
46
|
+
return name;
|
|
47
|
+
}
|
|
48
|
+
var _expiryTimer = /*#__PURE__*/new WeakMap();
|
|
49
|
+
var _handleMessage = /*#__PURE__*/new WeakSet();
|
|
50
|
+
class WSConnection extends _retry_connection.RetryConnection {
|
|
51
|
+
constructor(clientType, name) {
|
|
52
|
+
let clientName = getClientNameByType(clientType).toLowerCase();
|
|
53
|
+
super("eventbus-".concat(clientName));
|
|
54
|
+
_classPrivateMethodInitSpec(this, _handleMessage);
|
|
55
|
+
_classPrivateFieldInitSpec(this, _expiryTimer, {
|
|
56
|
+
writable: true,
|
|
57
|
+
value: void 0
|
|
58
|
+
});
|
|
59
|
+
this.clientType = clientType;
|
|
60
|
+
this.socket = null;
|
|
61
|
+
this.userToken = null;
|
|
62
|
+
this.clientName = clientName;
|
|
63
|
+
this.name = name;
|
|
64
|
+
_classPrivateFieldSet(this, _expiryTimer, null);
|
|
65
|
+
}
|
|
66
|
+
async start() {
|
|
67
|
+
this.userToken = await _auth.Auth.getUserToken();
|
|
68
|
+
this.userClaims = new _types.UserClaims(this.userToken);
|
|
69
|
+
let seconds = this.userClaims.getSecondsUntilExpiry();
|
|
70
|
+
if (seconds <= 0) {
|
|
71
|
+
this.onErrorMessage(ErrorCode.ERR_TIMEOUT, "token expired");
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
_classPrivateFieldSet(this, _expiryTimer, setTimeout(() => {
|
|
75
|
+
this.stop();
|
|
76
|
+
this.onErrorMessage(ErrorCode.ERR_TIMEOUT, "token expired");
|
|
77
|
+
}, seconds));
|
|
78
|
+
super.start();
|
|
79
|
+
}
|
|
80
|
+
async stop() {
|
|
81
|
+
clearTimeout(_classPrivateFieldGet(this, _expiryTimer));
|
|
82
|
+
super.stop();
|
|
83
|
+
}
|
|
84
|
+
disconnect() {
|
|
85
|
+
if (this.socket != null) {
|
|
86
|
+
this.socket.close();
|
|
87
|
+
this.socket = null;
|
|
88
|
+
//this.fireOnError(ErrorLevel.WARNING, ErrorCode.ERR_CLOSED, "closed") //this one fired after diconnection error causes multiple connection (it call retray connection again)
|
|
89
|
+
_index.logger.info("eventbus disconnect ", this.clientName);
|
|
90
|
+
}
|
|
91
|
+
super.disconnect();
|
|
92
|
+
}
|
|
93
|
+
async write(msg) {
|
|
94
|
+
await super.waitForConnection();
|
|
95
|
+
_index.logger.debug("".concat(this.getName(), ".write: "), BusMessage.toObject(msg));
|
|
96
|
+
let data = BusMessage.encode(msg).finish();
|
|
97
|
+
this.socket.send(data);
|
|
98
|
+
}
|
|
99
|
+
writeObject(msg) {
|
|
100
|
+
let err = BusMessage.verify(msg);
|
|
101
|
+
if (err) throw new Error(err);
|
|
102
|
+
let request = BusMessage.fromObject(msg);
|
|
103
|
+
return this.write(request);
|
|
104
|
+
}
|
|
105
|
+
async connect() {
|
|
106
|
+
if (this.getConnectionStatus() != _connection_base.ConnectionStatus.DISCONNECTED) return;
|
|
107
|
+
super.connect();
|
|
108
|
+
let self = this;
|
|
109
|
+
try {
|
|
110
|
+
let c = new _types.UserClaims(this.userToken);
|
|
111
|
+
if (c.isExpired()) {
|
|
112
|
+
self.onErrorMessage(ErrorCode.ERR_TIMEOUT, "token expired");
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
} catch (err) {
|
|
116
|
+
_index.logger.error(e);
|
|
117
|
+
self.onErrorMessage(ErrorCode.ERR_UNAUTHORIZED, "unauthorized");
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
let base = new URL(_config.Config.apiBaseURL);
|
|
121
|
+
let uri = "wss://".concat(base.hostname, "/ws/eventbus/").concat(this.clientName, "?user_token=").concat(this.userToken, "&name=").concat(this.name);
|
|
122
|
+
this.socket = new WebSocket(uri);
|
|
123
|
+
this.socket.binaryType = "arraybuffer";
|
|
124
|
+
this.socket.addEventListener("open", () => {
|
|
125
|
+
self.onConnected();
|
|
126
|
+
});
|
|
127
|
+
this.socket.addEventListener("close", () => {
|
|
128
|
+
self.onDisconnected();
|
|
129
|
+
});
|
|
130
|
+
this.socket.addEventListener("message", event => {
|
|
131
|
+
_classPrivateMethodGet(self, _handleMessage, _handleMessage2).call(self, event.data);
|
|
132
|
+
});
|
|
133
|
+
this.socket.addEventListener("error", err => {
|
|
134
|
+
self.onWarningMessage(ErrorCode.ERR_IO, err);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
onMessage(response) {
|
|
138
|
+
_index.logger.debug(response);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function _handleMessage2(msg) {
|
|
142
|
+
try {
|
|
143
|
+
if (msg instanceof ArrayBuffer) {
|
|
144
|
+
let buffer = new Uint8Array(msg);
|
|
145
|
+
let response = BusMessage.decode(buffer);
|
|
146
|
+
buffer = null;
|
|
147
|
+
_index.logger.debug("".concat(this.getName(), ".read: "), response);
|
|
148
|
+
this.onMessage(response);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
} catch (err) {
|
|
152
|
+
_index.logger.error(err);
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
let Error = JSON.parse(msg);
|
|
156
|
+
switch (Error.code) {
|
|
157
|
+
case ErrorCode.ERR_TOO_MANY_CONNECTIONS:
|
|
158
|
+
case ErrorCode.ERR_UNAUTHORIZED:
|
|
159
|
+
case ErrorCode.ERR_BAD_REQUEST:
|
|
160
|
+
case ErrorCode.ERR_TIMEOUT:
|
|
161
|
+
this.onErrorMessage(Error.code, Error.reason);
|
|
162
|
+
break;
|
|
163
|
+
default:
|
|
164
|
+
this.onInfoMessage(Error.code, Error.reason);
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
} catch (e) {
|
|
168
|
+
this.onWarningMessage(ErrorCode.ERR_IO, e);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
var _sendPreview = /*#__PURE__*/new WeakSet();
|
|
172
|
+
var _onCameraListRequest = /*#__PURE__*/new WeakSet();
|
|
173
|
+
var _onCameraListResponse = /*#__PURE__*/new WeakSet();
|
|
174
|
+
var _onClientConnected = /*#__PURE__*/new WeakSet();
|
|
175
|
+
var _onClientDisconnected = /*#__PURE__*/new WeakSet();
|
|
176
|
+
var _onRuntimeConfigRequest = /*#__PURE__*/new WeakSet();
|
|
177
|
+
var _onStopRequest = /*#__PURE__*/new WeakSet();
|
|
178
|
+
var _onPreviewRequest = /*#__PURE__*/new WeakSet();
|
|
179
|
+
var _onPreviewResponse = /*#__PURE__*/new WeakSet();
|
|
180
|
+
var _onStartRequest = /*#__PURE__*/new WeakSet();
|
|
181
|
+
var _onCornersReceived = /*#__PURE__*/new WeakSet();
|
|
182
|
+
var _onIPSAResponse = /*#__PURE__*/new WeakSet();
|
|
183
|
+
var _onTooManyPublishers = /*#__PURE__*/new WeakSet();
|
|
184
|
+
var _onRecordingStarted = /*#__PURE__*/new WeakSet();
|
|
185
|
+
var _onRecordingStopped = /*#__PURE__*/new WeakSet();
|
|
186
|
+
class EventBusConnection extends WSConnection {
|
|
187
|
+
static getInstance() {
|
|
188
|
+
let clientType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ClientType.WEBAPP;
|
|
189
|
+
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
190
|
+
let c = EventBusConnection.instances.get(clientType);
|
|
191
|
+
if (!c) {
|
|
192
|
+
c = new EventBusConnection(clientType, name);
|
|
193
|
+
EventBusConnection.instances.set(clientType, c);
|
|
194
|
+
}
|
|
195
|
+
return c;
|
|
196
|
+
}
|
|
197
|
+
constructor() {
|
|
198
|
+
let clientType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ClientType.WEBAPP;
|
|
199
|
+
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
|
|
200
|
+
super(clientType, name);
|
|
201
|
+
_classPrivateMethodInitSpec(this, _onRecordingStopped);
|
|
202
|
+
_classPrivateMethodInitSpec(this, _onRecordingStarted);
|
|
203
|
+
_classPrivateMethodInitSpec(this, _onTooManyPublishers);
|
|
204
|
+
_classPrivateMethodInitSpec(this, _onIPSAResponse);
|
|
205
|
+
_classPrivateMethodInitSpec(this, _onCornersReceived);
|
|
206
|
+
_classPrivateMethodInitSpec(this, _onStartRequest);
|
|
207
|
+
_classPrivateMethodInitSpec(this, _onPreviewResponse);
|
|
208
|
+
_classPrivateMethodInitSpec(this, _onPreviewRequest);
|
|
209
|
+
_classPrivateMethodInitSpec(this, _onStopRequest);
|
|
210
|
+
_classPrivateMethodInitSpec(this, _onRuntimeConfigRequest);
|
|
211
|
+
_classPrivateMethodInitSpec(this, _onClientDisconnected);
|
|
212
|
+
_classPrivateMethodInitSpec(this, _onClientConnected);
|
|
213
|
+
_classPrivateMethodInitSpec(this, _onCameraListResponse);
|
|
214
|
+
_classPrivateMethodInitSpec(this, _onCameraListRequest);
|
|
215
|
+
_classPrivateMethodInitSpec(this, _sendPreview);
|
|
216
|
+
}
|
|
217
|
+
async onMessage(msg) {
|
|
218
|
+
if (!msg || typeof msg !== 'object') return;
|
|
219
|
+
try {
|
|
220
|
+
msg.clientConnected && _classPrivateMethodGet(this, _onClientConnected, _onClientConnected2).call(this, msg);
|
|
221
|
+
msg.clientDisconnected && _classPrivateMethodGet(this, _onClientDisconnected, _onClientDisconnected2).call(this, msg);
|
|
222
|
+
msg.cameraListRequest && _classPrivateMethodGet(this, _onCameraListRequest, _onCameraListRequest2).call(this, msg);
|
|
223
|
+
msg.cameraListResponse && _classPrivateMethodGet(this, _onCameraListResponse, _onCameraListResponse2).call(this, msg);
|
|
224
|
+
msg.runtimeConfigRequest && _classPrivateMethodGet(this, _onRuntimeConfigRequest, _onRuntimeConfigRequest2).call(this, msg);
|
|
225
|
+
msg.startRequest && _classPrivateMethodGet(this, _onStartRequest, _onStartRequest2).call(this, msg);
|
|
226
|
+
msg.stopRequest && _classPrivateMethodGet(this, _onStopRequest, _onStopRequest2).call(this, msg);
|
|
227
|
+
msg.previewRequest && _classPrivateMethodGet(this, _onPreviewRequest, _onPreviewRequest2).call(this, msg);
|
|
228
|
+
msg.previewResponse && _classPrivateMethodGet(this, _onPreviewResponse, _onPreviewResponse2).call(this, msg);
|
|
229
|
+
msg.ipsaResponse && _classPrivateMethodGet(this, _onIPSAResponse, _onIPSAResponse2).call(this, msg);
|
|
230
|
+
msg.tooManyPublishers && _classPrivateMethodGet(this, _onTooManyPublishers, _onTooManyPublishers2).call(this, msg);
|
|
231
|
+
msg.recordingStarted && _classPrivateMethodGet(this, _onRecordingStarted, _onRecordingStarted2).call(this, msg);
|
|
232
|
+
msg.recordingStopped && _classPrivateMethodGet(this, _onRecordingStopped, _onRecordingStopped2).call(this, msg);
|
|
233
|
+
} catch (e) {
|
|
234
|
+
_index.logger.error(e);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
stopStream(clientId) {
|
|
238
|
+
return this.writeObject({
|
|
239
|
+
stopRequest: {},
|
|
240
|
+
dst: {
|
|
241
|
+
id: clientId
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
startStream(_ref2) {
|
|
246
|
+
let {
|
|
247
|
+
appConfig,
|
|
248
|
+
config,
|
|
249
|
+
runtimeConfig,
|
|
250
|
+
camera,
|
|
251
|
+
sipUri,
|
|
252
|
+
clientId
|
|
253
|
+
} = _ref2;
|
|
254
|
+
return this.writeObject({
|
|
255
|
+
startRequest: {
|
|
256
|
+
config,
|
|
257
|
+
appConfig,
|
|
258
|
+
runtimeConfig,
|
|
259
|
+
camera,
|
|
260
|
+
sipUri
|
|
261
|
+
},
|
|
262
|
+
dst: {
|
|
263
|
+
id: clientId
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
requestCameraPreview(clientId, sourceId) {
|
|
268
|
+
return this.writeObject({
|
|
269
|
+
previewRequest: {
|
|
270
|
+
source: {
|
|
271
|
+
id: sourceId
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
dst: {
|
|
275
|
+
id: clientId
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
setRuntimeConfig(clientId, cfg) {
|
|
280
|
+
return this.writeObject({
|
|
281
|
+
runtimeConfigRequest: cfg,
|
|
282
|
+
dst: {
|
|
283
|
+
id: clientId
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
getCameraList(clientId) {
|
|
288
|
+
let request = {
|
|
289
|
+
cameraListRequest: {},
|
|
290
|
+
dst: {
|
|
291
|
+
id: clientId
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
return this.write(request);
|
|
295
|
+
}
|
|
296
|
+
sendCameraList(camList, src, dst) {
|
|
297
|
+
let response = {
|
|
298
|
+
cameraListResponse: {
|
|
299
|
+
items: camList
|
|
300
|
+
},
|
|
301
|
+
src: src,
|
|
302
|
+
dst: dst
|
|
303
|
+
};
|
|
304
|
+
return this.writeObject(response);
|
|
305
|
+
}
|
|
306
|
+
getClientStatusList() {
|
|
307
|
+
let request = {
|
|
308
|
+
clientStatusRequest: {}
|
|
309
|
+
};
|
|
310
|
+
return this.writeObject(request);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
exports.EventBusConnection = EventBusConnection;
|
|
314
|
+
function _sendPreview2(image, dst) {
|
|
315
|
+
let response = {
|
|
316
|
+
previewResponse: {
|
|
317
|
+
image: image
|
|
318
|
+
},
|
|
319
|
+
dst: dst
|
|
320
|
+
};
|
|
321
|
+
return this.write(response);
|
|
322
|
+
}
|
|
323
|
+
async function _onCameraListRequest2(msg) {
|
|
324
|
+
let response = await this.callSubscribers('onCameraListRequest', msg.cameraListRequest);
|
|
325
|
+
this.sendCameraList(response, msg.dst, msg.src);
|
|
326
|
+
}
|
|
327
|
+
function _onCameraListResponse2(msg) {
|
|
328
|
+
this.notify('onCameraListResponse', msg.cameraListResponse);
|
|
329
|
+
}
|
|
330
|
+
function _onClientConnected2(msg) {
|
|
331
|
+
_index.logger.info("".concat(this.getName(), ": client connected: "), msg.src);
|
|
332
|
+
this.notify('onClientConnected', msg.src);
|
|
333
|
+
}
|
|
334
|
+
function _onClientDisconnected2(msg) {
|
|
335
|
+
_index.logger.warn("".concat(this.getName(), ": client disconnected: "), msg.src);
|
|
336
|
+
this.notify('onClientDisconnected', msg.src);
|
|
337
|
+
}
|
|
338
|
+
function _onRuntimeConfigRequest2(msg) {
|
|
339
|
+
this.notify('onRuntimeConfigRequest', msg.runtimeConfigRequest);
|
|
340
|
+
}
|
|
341
|
+
function _onStopRequest2(msg) {
|
|
342
|
+
this.notify('onStopRequest', msg.stopRequest);
|
|
343
|
+
}
|
|
344
|
+
async function _onPreviewRequest2(msg) {
|
|
345
|
+
let response = await this.callSubscribers('onPreviewRequest', msg.previewRequest);
|
|
346
|
+
_classPrivateMethodGet(this, _sendPreview, _sendPreview2).call(this, response, msg.src);
|
|
347
|
+
}
|
|
348
|
+
function _onPreviewResponse2(msg) {
|
|
349
|
+
this.notify('onPreviewResponse', msg.previewResponse);
|
|
350
|
+
}
|
|
351
|
+
function _onStartRequest2(msg) {
|
|
352
|
+
var _req$camera, _req$inputSource;
|
|
353
|
+
let req = msg.startRequest;
|
|
354
|
+
if (!(req !== null && req !== void 0 && (_req$camera = req.camera) !== null && _req$camera !== void 0 && _req$camera.id) && !(req !== null && req !== void 0 && req.sipUri) && req !== null && req !== void 0 && (_req$inputSource = req.inputSource) !== null && _req$inputSource !== void 0 && _req$inputSource.id) {
|
|
355
|
+
req.camera = {
|
|
356
|
+
id: req.inputSource.id
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
this.notify('onStartRequest', req);
|
|
360
|
+
}
|
|
361
|
+
function _onCornersReceived2(msg) {
|
|
362
|
+
this.notify('onCornersReceived', msg.corners.corners);
|
|
363
|
+
}
|
|
364
|
+
function _onIPSAResponse2(msg) {
|
|
365
|
+
msg && this.notify('onIPSAResponse', msg.ipsaResponse);
|
|
366
|
+
}
|
|
367
|
+
function _onTooManyPublishers2(msg) {
|
|
368
|
+
this.notify('onTooManyPublishers', msg.tooManyPublishers);
|
|
369
|
+
}
|
|
370
|
+
function _onRecordingStarted2(msg) {
|
|
371
|
+
this.notify('onRecordingStarted', msg.recordingStarted);
|
|
372
|
+
}
|
|
373
|
+
function _onRecordingStopped2(msg) {
|
|
374
|
+
this.notify('onRecordingStopped', msg.recordingStopped);
|
|
375
|
+
}
|
|
376
|
+
_defineProperty(EventBusConnection, "instances", new Map());
|
package/dist/ws/index.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "EventBusConnection", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _eventbus.EventBusConnection;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "IPSA", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _ipsa.IPSA;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "MeetingConnection", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return _meeting.MeetingConnection;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
require("core-js/modules/es.global-this.js");
|
|
26
|
+
require("core-js/modules/es.promise.js");
|
|
27
|
+
var _eventbus = require("./eventbus.js");
|
|
28
|
+
var _ipsa = require("./ipsa.js");
|
|
29
|
+
var _meeting = require("./meeting.js");
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
32
|
+
if ((globalThis === null || globalThis === void 0 ? void 0 : globalThis.WebSocket) == undefined) {
|
|
33
|
+
Promise.resolve().then(() => _interopRequireWildcard(require("isomorphic-ws"))).then(webSocket => {
|
|
34
|
+
globalThis.WebSocket = webSocket.default;
|
|
35
|
+
});
|
|
36
|
+
}
|
package/dist/ws/ipsa.js
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.IPSA = void 0;
|
|
7
|
+
require("core-js/modules/es.promise.js");
|
|
8
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
9
|
+
require("core-js/modules/web.url.js");
|
|
10
|
+
require("core-js/modules/web.url-search-params.js");
|
|
11
|
+
require("core-js/modules/es.array.reduce.js");
|
|
12
|
+
require("core-js/modules/es.array-buffer.constructor.js");
|
|
13
|
+
require("core-js/modules/es.array-buffer.slice.js");
|
|
14
|
+
require("core-js/modules/es.typed-array.uint8-array.js");
|
|
15
|
+
require("core-js/modules/es.typed-array.fill.js");
|
|
16
|
+
require("core-js/modules/es.typed-array.set.js");
|
|
17
|
+
require("core-js/modules/es.typed-array.sort.js");
|
|
18
|
+
require("core-js/modules/es.typed-array.to-locale-string.js");
|
|
19
|
+
var _config = require("../config.js");
|
|
20
|
+
var _index = require("../utils/logger/index.js");
|
|
21
|
+
var _retry_connection = require("./retry_connection.js");
|
|
22
|
+
var _connection_base = require("./connection_base.js");
|
|
23
|
+
var _types = require("../types/types.js");
|
|
24
|
+
var _proto = require("../types/proto.js");
|
|
25
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
|
26
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
|
27
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
|
28
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
|
29
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
|
30
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
|
31
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
|
32
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
|
33
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
|
34
|
+
const ErrorCode = _proto.types.Code;
|
|
35
|
+
var _expiryTimer = /*#__PURE__*/new WeakMap();
|
|
36
|
+
var _clear = /*#__PURE__*/new WeakSet();
|
|
37
|
+
var _write = /*#__PURE__*/new WeakSet();
|
|
38
|
+
var _handleMessage = /*#__PURE__*/new WeakSet();
|
|
39
|
+
var _onResponse = /*#__PURE__*/new WeakSet();
|
|
40
|
+
var _writeInputImage = /*#__PURE__*/new WeakSet();
|
|
41
|
+
var _setConfig = /*#__PURE__*/new WeakSet();
|
|
42
|
+
class IPSAClass extends _retry_connection.RetryConnection {
|
|
43
|
+
constructor() {
|
|
44
|
+
super('ipsa');
|
|
45
|
+
_classPrivateMethodInitSpec(this, _setConfig);
|
|
46
|
+
_classPrivateMethodInitSpec(this, _writeInputImage);
|
|
47
|
+
_classPrivateMethodInitSpec(this, _onResponse);
|
|
48
|
+
_classPrivateMethodInitSpec(this, _handleMessage);
|
|
49
|
+
_classPrivateMethodInitSpec(this, _write);
|
|
50
|
+
_classPrivateMethodInitSpec(this, _clear);
|
|
51
|
+
_classPrivateFieldInitSpec(this, _expiryTimer, {
|
|
52
|
+
writable: true,
|
|
53
|
+
value: void 0
|
|
54
|
+
});
|
|
55
|
+
this.socket = null;
|
|
56
|
+
this.onInputImage = null;
|
|
57
|
+
this.onError = null;
|
|
58
|
+
this.onResponse = null;
|
|
59
|
+
this.userToken = null;
|
|
60
|
+
_classPrivateFieldSet(this, _expiryTimer, null);
|
|
61
|
+
_classPrivateMethodGet(this, _clear, _clear2).call(this);
|
|
62
|
+
}
|
|
63
|
+
start(_ref) {
|
|
64
|
+
let {
|
|
65
|
+
userToken,
|
|
66
|
+
request,
|
|
67
|
+
onInputImage,
|
|
68
|
+
onError,
|
|
69
|
+
onResponse
|
|
70
|
+
} = _ref;
|
|
71
|
+
if (!this.isStarted()) {
|
|
72
|
+
this.setRuntimeConfig(request.runtimeConfig);
|
|
73
|
+
this.setAppConfig(request.appConfig);
|
|
74
|
+
_classPrivateMethodGet(this, _setConfig, _setConfig2).call(this, request.config);
|
|
75
|
+
this.onInputImage = onInputImage;
|
|
76
|
+
this.onError = onError;
|
|
77
|
+
this.onResponse = onResponse;
|
|
78
|
+
this.userToken = userToken;
|
|
79
|
+
let meetingClaims = new _types.MeetingClaims(this.appConfigRequest.appConfig.meetingToken);
|
|
80
|
+
let userClaims = new _types.UserClaims(this.userToken);
|
|
81
|
+
let seconds = Math.min(userClaims.getSecondsUntilExpiry(), meetingClaims.getSecondsUntilExpiry());
|
|
82
|
+
if (seconds <= 0) {
|
|
83
|
+
this.onErrorMessage(ErrorCode.ERR_TIMEOUT, "token expired");
|
|
84
|
+
return;
|
|
85
|
+
} else {
|
|
86
|
+
_classPrivateFieldSet(this, _expiryTimer, setTimeout(() => {
|
|
87
|
+
this.stop();
|
|
88
|
+
this.onErrorMessage(ErrorCode.ERR_TIMEOUT, "token expired");
|
|
89
|
+
}, seconds));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
super.start();
|
|
93
|
+
}
|
|
94
|
+
stop() {
|
|
95
|
+
clearTimeout(_classPrivateFieldGet(this, _expiryTimer));
|
|
96
|
+
_classPrivateMethodGet(this, _clear, _clear2).call(this);
|
|
97
|
+
super.stop();
|
|
98
|
+
}
|
|
99
|
+
disconnect() {
|
|
100
|
+
super.disconnect();
|
|
101
|
+
if (this.socket != null) {
|
|
102
|
+
this.socket.close();
|
|
103
|
+
this.socket = null;
|
|
104
|
+
// this.fireOnError(ErrorLevel.ERROR, ErrorCode.ERR_CLOSED, "closed") //this one fired after diconnection error causes multiple connection (it call retray connection again)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async connect() {
|
|
109
|
+
if (this.getConnectionStatus() != _connection_base.ConnectionStatus.DISCONNECTED) return;
|
|
110
|
+
super.connect();
|
|
111
|
+
let meetingId = this.appConfigRequest.appConfig.meetingId;
|
|
112
|
+
let meetingToken = this.appConfigRequest.appConfig.meetingToken;
|
|
113
|
+
try {
|
|
114
|
+
let c = new _types.UserClaims(this.userToken);
|
|
115
|
+
if (c.isExpired()) {
|
|
116
|
+
this.onErrorMessage(ErrorCode.ERR_TIMEOUT, "token expired");
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
} catch (err) {
|
|
120
|
+
this.onErrorMessage(ErrorCode.ERR_UNAUTHORIZED, "unauthorized");
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
_index.logger.info("Connecting IPSA to meeting ".concat(meetingId, "..."));
|
|
124
|
+
let base = new URL(_config.Config.apiBaseURL);
|
|
125
|
+
let uri = "wss://".concat(base.hostname, "/ws/ipsa/").concat(meetingId, "?user_token=").concat(this.userToken, "&meeting_token=").concat(meetingToken);
|
|
126
|
+
this.socket = new WebSocket(uri);
|
|
127
|
+
this.socket.binaryType = "arraybuffer";
|
|
128
|
+
this.socket.addEventListener("open", async () => {
|
|
129
|
+
try {
|
|
130
|
+
await _classPrivateMethodGet(this, _write, _write2).call(this, this.configRequest);
|
|
131
|
+
await _classPrivateMethodGet(this, _write, _write2).call(this, this.runtimeConfigRequest);
|
|
132
|
+
await _classPrivateMethodGet(this, _write, _write2).call(this, this.appConfigRequest);
|
|
133
|
+
this.onConnected();
|
|
134
|
+
} catch (err) {
|
|
135
|
+
this.onWarningMessage(ErrorCode.ERR_IO, err);
|
|
136
|
+
this.disconnect();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
let loopFunction = () => {
|
|
140
|
+
if (!this.isConnected() || !this.isStarted()) return;
|
|
141
|
+
if (this.socket.bufferedAmount > 0) {
|
|
142
|
+
_index.logger.warn("ipsa: low internet speed connection");
|
|
143
|
+
setTimeout(loopFunction, 100);
|
|
144
|
+
} else {
|
|
145
|
+
setTimeout(loopFunction, 500);
|
|
146
|
+
_classPrivateMethodGet(this, _writeInputImage, _writeInputImage2).call(this).catch(err => _index.logger.error(err));
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
loopFunction();
|
|
150
|
+
});
|
|
151
|
+
this.socket.addEventListener("close", () => {
|
|
152
|
+
this.onDisconnected();
|
|
153
|
+
});
|
|
154
|
+
this.socket.addEventListener("message", event => {
|
|
155
|
+
_classPrivateMethodGet(this, _handleMessage, _handleMessage2).call(this, event.data);
|
|
156
|
+
});
|
|
157
|
+
this.socket.addEventListener("error", err => {
|
|
158
|
+
this.onWarningMessage(ErrorCode.ERR_IO, err);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
getAverageResponseTime() {
|
|
162
|
+
let avg = NaN;
|
|
163
|
+
try {
|
|
164
|
+
let items = Array.from(this.stats.values()).map(e => e.responseTime - e.requestTime).filter(e => !isNaN(e));
|
|
165
|
+
let sum = items.reduce((a, b) => a + b);
|
|
166
|
+
avg = sum / items.length;
|
|
167
|
+
} catch (err) {}
|
|
168
|
+
return avg;
|
|
169
|
+
}
|
|
170
|
+
setRuntimeConfig(cfg) {
|
|
171
|
+
let request = _proto.ipsa.Request.create({
|
|
172
|
+
runtimeConfig: cfg
|
|
173
|
+
});
|
|
174
|
+
this.runtimeConfigRequest = request;
|
|
175
|
+
if (this.isConnected()) _classPrivateMethodGet(this, _write, _write2).call(this, request);
|
|
176
|
+
}
|
|
177
|
+
setAppConfig(cfg) {
|
|
178
|
+
let request = _proto.ipsa.Request.create({
|
|
179
|
+
appConfig: cfg
|
|
180
|
+
});
|
|
181
|
+
this.appConfigRequest = request;
|
|
182
|
+
if (this.isConnected()) _classPrivateMethodGet(this, _write, _write2).call(this, request);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function _clear2() {
|
|
186
|
+
this.appConfigRequest = null;
|
|
187
|
+
this.configRequest = null;
|
|
188
|
+
this.runtimeConfigRequest = null;
|
|
189
|
+
this.stats = new Map();
|
|
190
|
+
this.requestId = 0;
|
|
191
|
+
}
|
|
192
|
+
async function _write2(msg) {
|
|
193
|
+
let err = _proto.ipsa.Request.verify(msg);
|
|
194
|
+
if (err) throw new Error("invalid message: " + err);
|
|
195
|
+
if (msg) {
|
|
196
|
+
let data = _proto.ipsa.Request.encode(msg).finish();
|
|
197
|
+
this.socket.send(data);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
async function _handleMessage2(msg) {
|
|
201
|
+
var _msg, _msg2, _msg3, _msg4;
|
|
202
|
+
try {
|
|
203
|
+
if (msg instanceof ArrayBuffer) {
|
|
204
|
+
let buffer = new Uint8Array(msg);
|
|
205
|
+
let response = _proto.ipsa.Response.decode(buffer);
|
|
206
|
+
_classPrivateMethodGet(this, _onResponse, _onResponse2).call(this, response);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
} catch (err) {
|
|
210
|
+
_index.logger.error(err);
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
msg = JSON.parse(msg);
|
|
214
|
+
switch (msg.code) {
|
|
215
|
+
case ErrorCode.ERR_TOO_MANY_CONNECTIONS:
|
|
216
|
+
case ErrorCode.ERR_UNAUTHORIZED:
|
|
217
|
+
case ErrorCode.ERR_BAD_REQUEST:
|
|
218
|
+
this.onErrorMessage((_msg = msg) === null || _msg === void 0 ? void 0 : _msg.code, (_msg2 = msg) === null || _msg2 === void 0 ? void 0 : _msg2.reason);
|
|
219
|
+
this.stop();
|
|
220
|
+
break;
|
|
221
|
+
default:
|
|
222
|
+
this.onInfoMessage((_msg3 = msg) === null || _msg3 === void 0 ? void 0 : _msg3.code, (_msg4 = msg) === null || _msg4 === void 0 ? void 0 : _msg4.reason);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
} catch (e) {
|
|
226
|
+
this.onWarningMessage(ErrorCode.ERR_IO, e);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
function _onResponse2(response) {
|
|
230
|
+
if (response.id >= 100) {
|
|
231
|
+
let id = response.id - 100;
|
|
232
|
+
let s = this.stats.get(id) || {};
|
|
233
|
+
s.responseTime = performance.now();
|
|
234
|
+
this.stats.set(id, s);
|
|
235
|
+
}
|
|
236
|
+
if (this.onResponse) {
|
|
237
|
+
this.onResponse(response);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
async function _writeInputImage2() {
|
|
241
|
+
let img = await this.onInputImage();
|
|
242
|
+
this.requestId = (this.requestId + 1) % 8;
|
|
243
|
+
this.stats.set(this.requestId, {
|
|
244
|
+
requestTime: performance.now()
|
|
245
|
+
});
|
|
246
|
+
let request = _proto.ipsa.Request.create({
|
|
247
|
+
id: this.requestId + 100,
|
|
248
|
+
ipsa: {
|
|
249
|
+
data: img
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
_classPrivateMethodGet(this, _write, _write2).call(this, request);
|
|
253
|
+
}
|
|
254
|
+
function _setConfig2(cfg) {
|
|
255
|
+
let request = _proto.ipsa.Request.create({
|
|
256
|
+
config: cfg
|
|
257
|
+
});
|
|
258
|
+
this.configRequest = request;
|
|
259
|
+
if (this.isConnected()) _classPrivateMethodGet(this, _write, _write2).call(this, request);
|
|
260
|
+
}
|
|
261
|
+
let IPSA = new IPSAClass();
|
|
262
|
+
exports.IPSA = IPSA;
|