@webex/plugin-meetings 3.12.0-next.65 → 3.12.0-next.67
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/aiEnableRequest/index.js +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +24 -4
- package/dist/constants.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/dataChannelAuthToken.js +75 -15
- package/dist/interceptors/dataChannelAuthToken.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/interpretation.types.js +7 -0
- package/dist/interpretation/interpretation.types.js.map +1 -0
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +738 -679
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +5 -2
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +1 -0
- package/dist/meeting/util.js.map +1 -1
- package/dist/types/constants.d.ts +7 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interpretation/interpretation.types.d.ts +10 -0
- package/dist/types/meeting/index.d.ts +2 -2
- package/dist/types/meeting/request.d.ts +1 -0
- package/dist/webinar/index.js +219 -146
- package/dist/webinar/index.js.map +1 -1
- package/package.json +3 -3
- package/src/constants.ts +8 -1
- package/src/index.ts +1 -0
- package/src/interceptors/dataChannelAuthToken.ts +88 -12
- package/src/interpretation/index.ts +2 -1
- package/src/interpretation/interpretation.types.ts +11 -0
- package/src/meeting/index.ts +111 -49
- package/src/meeting/request.ts +11 -0
- package/src/meeting/util.ts +1 -0
- package/src/webinar/index.ts +114 -16
- package/test/unit/spec/interceptors/dataChannelAuthToken.ts +196 -0
- package/test/unit/spec/meeting/index.js +139 -23
- package/test/unit/spec/meeting/request.js +12 -0
- package/test/unit/spec/webinar/index.ts +197 -14
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_meetings","_interopRequireDefault","_config","_interceptors","_captchaError","_intentToJoin","_passwordError","_permission","_joinWebinarError","_reclaimHostRoleErrors","_meeting","_utilv","_joinMeeting","_webexErrors","_mediaHelpers","_CONSTANTS","_interopRequireWildcard","exports","CONSTANTS","_REACTIONS","REACTIONS","_sdkAnnotationTypes","sdkAnnotationTypes","_MeetingInfoV","MeetingInfoV2","_meetings2","_remoteMedia","_triggerProxy","_utils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","registerPlugin","Meetings","config","interceptors","LocusRetryStatusInterceptor","create","LocusRouteTokenInterceptor","DataChannelAuthTokenInterceptor","_default"],"sources":["index.ts"],"sourcesContent":["/* eslint-env browser */\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Meetings from './meetings';\nimport config from './config';\nimport {\n LocusRetryStatusInterceptor,\n LocusRouteTokenInterceptor,\n DataChannelAuthTokenInterceptor,\n} from './interceptors';\nimport CaptchaError from './common/errors/captcha-error';\nimport IntentToJoinError from './common/errors/intent-to-join';\nimport PasswordError from './common/errors/password-error';\nimport PermissionError from './common/errors/permission';\nimport JoinWebinarError from './common/errors/join-webinar-error';\nimport {\n ReclaimHostEmptyWrongKeyError,\n ReclaimHostIsHostAlreadyError,\n ReclaimHostNotAllowedError,\n ReclaimHostNotSupportedError,\n} from './common/errors/reclaim-host-role-errors';\nimport Meeting from './meeting';\nimport MeetingInfoUtil from './meeting-info/utilv2';\nimport JoinMeetingError from './common/errors/join-meeting';\nimport {SdpResponseTimeoutError} from './common/errors/webex-errors';\n\nregisterPlugin('meetings', Meetings, {\n config,\n interceptors: {\n LocusRetryStatusInterceptor: LocusRetryStatusInterceptor.create,\n LocusRouteTokenInterceptor: LocusRouteTokenInterceptor.create,\n DataChannelAuthTokenInterceptor: DataChannelAuthTokenInterceptor.create,\n },\n});\n\nexport {\n LocalStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n LocalStreamEventNames,\n StreamEventNames,\n RemoteStreamEventNames,\n type ServerMuteReason,\n LocalMicrophoneStreamEventNames,\n LocalCameraStreamEventNames,\n LocalMicrophoneStream,\n LocalCameraStream,\n createMicrophoneStream,\n createCameraStream,\n createCameraAndMicrophoneStreams,\n createDisplayStream,\n createDisplayStreamWithAudio,\n createDisplayMedia,\n FacingMode,\n DisplaySurface,\n PresetCameraConstraints,\n type VideoContentHint,\n type StreamState,\n} from '@webex/media-helpers';\n\nexport default Meetings;\n\nexport * as CONSTANTS from './constants';\nexport * as REACTIONS from './reactions/reactions';\nexport * as sdkAnnotationTypes from './annotation/annotation.types';\nexport * as MeetingInfoV2 from './meeting-info/meeting-info-v2';\nexport {type Reaction} from './reactions/reactions.type';\nexport {SitePreferenceSelectOption} from './meetings/meetings.types';\nexport type {\n FetchSitePreferencesMeViaSiteOptions,\n SitePreferencesResponse,\n} from './meetings/meetings.types';\n\nexport {\n CaptchaError,\n IntentToJoinError,\n JoinMeetingError,\n PasswordError,\n PermissionError,\n ReclaimHostIsHostAlreadyError,\n ReclaimHostNotAllowedError,\n ReclaimHostNotSupportedError,\n ReclaimHostEmptyWrongKeyError,\n Meeting,\n MeetingInfoUtil,\n JoinWebinarError,\n SdpResponseTimeoutError,\n};\n\nexport {RemoteMedia} from './multistream/remoteMedia';\n\nexport {default as TriggerProxy} from './common/events/trigger-proxy';\n\nexport {getAIEnablementApprover} from './aiEnableRequest/utils';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAKA,IAAAK,aAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,aAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,cAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,WAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,iBAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,sBAAA,GAAAV,OAAA;AAMA,IAAAW,QAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,MAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,YAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,YAAA,GAAAd,OAAA;AAWA,IAAAe,aAAA,GAAAf,OAAA;AAuB8B,IAAAgB,UAAA,GAAAC,uBAAA,CAAAjB,OAAA;AAAAkB,OAAA,CAAAC,SAAA,GAAAH,UAAA;AAAA,IAAAI,UAAA,GAAAH,uBAAA,CAAAjB,OAAA;AAAAkB,OAAA,CAAAG,SAAA,GAAAD,UAAA;AAAA,IAAAE,mBAAA,GAAAL,uBAAA,CAAAjB,OAAA;AAAAkB,OAAA,CAAAK,kBAAA,GAAAD,mBAAA;AAAA,IAAAE,aAAA,GAAAP,uBAAA,CAAAjB,OAAA;AAAAkB,OAAA,CAAAO,aAAA,GAAAD,aAAA;AAS9B,IAAAE,UAAA,GAAA1B,OAAA;
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_meetings","_interopRequireDefault","_config","_interceptors","_captchaError","_intentToJoin","_passwordError","_permission","_joinWebinarError","_reclaimHostRoleErrors","_meeting","_utilv","_joinMeeting","_webexErrors","_mediaHelpers","_CONSTANTS","_interopRequireWildcard","exports","CONSTANTS","_REACTIONS","REACTIONS","_sdkAnnotationTypes","sdkAnnotationTypes","_MeetingInfoV","MeetingInfoV2","_meetings2","_remoteMedia","_triggerProxy","_utils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","registerPlugin","Meetings","config","interceptors","LocusRetryStatusInterceptor","create","LocusRouteTokenInterceptor","DataChannelAuthTokenInterceptor","_default"],"sources":["index.ts"],"sourcesContent":["/* eslint-env browser */\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Meetings from './meetings';\nimport config from './config';\nimport {\n LocusRetryStatusInterceptor,\n LocusRouteTokenInterceptor,\n DataChannelAuthTokenInterceptor,\n} from './interceptors';\nimport CaptchaError from './common/errors/captcha-error';\nimport IntentToJoinError from './common/errors/intent-to-join';\nimport PasswordError from './common/errors/password-error';\nimport PermissionError from './common/errors/permission';\nimport JoinWebinarError from './common/errors/join-webinar-error';\nimport {\n ReclaimHostEmptyWrongKeyError,\n ReclaimHostIsHostAlreadyError,\n ReclaimHostNotAllowedError,\n ReclaimHostNotSupportedError,\n} from './common/errors/reclaim-host-role-errors';\nimport Meeting from './meeting';\nimport MeetingInfoUtil from './meeting-info/utilv2';\nimport JoinMeetingError from './common/errors/join-meeting';\nimport {SdpResponseTimeoutError} from './common/errors/webex-errors';\n\nregisterPlugin('meetings', Meetings, {\n config,\n interceptors: {\n LocusRetryStatusInterceptor: LocusRetryStatusInterceptor.create,\n LocusRouteTokenInterceptor: LocusRouteTokenInterceptor.create,\n DataChannelAuthTokenInterceptor: DataChannelAuthTokenInterceptor.create,\n },\n});\n\nexport {\n LocalStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n LocalStreamEventNames,\n StreamEventNames,\n RemoteStreamEventNames,\n type ServerMuteReason,\n LocalMicrophoneStreamEventNames,\n LocalCameraStreamEventNames,\n LocalMicrophoneStream,\n LocalCameraStream,\n createMicrophoneStream,\n createCameraStream,\n createCameraAndMicrophoneStreams,\n createDisplayStream,\n createDisplayStreamWithAudio,\n createDisplayMedia,\n FacingMode,\n DisplaySurface,\n PresetCameraConstraints,\n type VideoContentHint,\n type StreamState,\n} from '@webex/media-helpers';\n\nexport default Meetings;\n\nexport * as CONSTANTS from './constants';\nexport * as REACTIONS from './reactions/reactions';\nexport * as sdkAnnotationTypes from './annotation/annotation.types';\nexport * as MeetingInfoV2 from './meeting-info/meeting-info-v2';\nexport {type Reaction} from './reactions/reactions.type';\nexport {SitePreferenceSelectOption} from './meetings/meetings.types';\nexport type {\n FetchSitePreferencesMeViaSiteOptions,\n SitePreferencesResponse,\n} from './meetings/meetings.types';\nexport type {Interpreter, InterpreterUsingResource} from './interpretation/interpretation.types';\n\nexport {\n CaptchaError,\n IntentToJoinError,\n JoinMeetingError,\n PasswordError,\n PermissionError,\n ReclaimHostIsHostAlreadyError,\n ReclaimHostNotAllowedError,\n ReclaimHostNotSupportedError,\n ReclaimHostEmptyWrongKeyError,\n Meeting,\n MeetingInfoUtil,\n JoinWebinarError,\n SdpResponseTimeoutError,\n};\n\nexport {RemoteMedia} from './multistream/remoteMedia';\n\nexport {default as TriggerProxy} from './common/events/trigger-proxy';\n\nexport {getAIEnablementApprover} from './aiEnableRequest/utils';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,18 +19,17 @@ var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"))
|
|
|
19
19
|
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
20
20
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
21
21
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
22
|
+
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
22
23
|
var _httpCore = require("@webex/http-core");
|
|
24
|
+
var _internalPluginLlm = _interopRequireDefault(require("@webex/internal-plugin-llm"));
|
|
23
25
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
24
26
|
var _constant = require("./constant");
|
|
25
27
|
var _utils = require("./utils");
|
|
28
|
+
var _constants = require("../constants");
|
|
26
29
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
27
30
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*!
|
|
28
31
|
* Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.
|
|
29
32
|
*/
|
|
30
|
-
/*!
|
|
31
|
-
* Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
33
|
var retryCountMap = new _map.default();
|
|
35
34
|
/**
|
|
36
35
|
* @class
|
|
@@ -102,7 +101,7 @@ var DataChannelAuthTokenInterceptor = exports.default = /*#__PURE__*/function (_
|
|
|
102
101
|
}
|
|
103
102
|
_context.prev = 3;
|
|
104
103
|
_context.next = 4;
|
|
105
|
-
return this._refreshDataChannelToken();
|
|
104
|
+
return this._refreshDataChannelToken(options.uri || options.url);
|
|
106
105
|
case 4:
|
|
107
106
|
newToken = _context.sent;
|
|
108
107
|
options.headers[_constant.DATA_CHANNEL_AUTH_HEADER] = newToken;
|
|
@@ -203,7 +202,7 @@ var DataChannelAuthTokenInterceptor = exports.default = /*#__PURE__*/function (_
|
|
|
203
202
|
key = _this2.getRetryKey(options);
|
|
204
203
|
_context3.prev = 1;
|
|
205
204
|
_context3.next = 2;
|
|
206
|
-
return _this2._refreshDataChannelToken();
|
|
205
|
+
return _this2._refreshDataChannelToken(options.uri || options.url);
|
|
207
206
|
case 2:
|
|
208
207
|
newToken = _context3.sent;
|
|
209
208
|
options.headers[_constant.DATA_CHANNEL_AUTH_HEADER] = newToken;
|
|
@@ -258,27 +257,88 @@ var DataChannelAuthTokenInterceptor = exports.default = /*#__PURE__*/function (_
|
|
|
258
257
|
}
|
|
259
258
|
return isDataChannelTokenEnabled;
|
|
260
259
|
}(),
|
|
260
|
+
// Route refresh by request URL in two steps:
|
|
261
|
+
// 1) Match active LLM sessions (supports non-default/multiple sessions)
|
|
262
|
+
// 2) If no session matches, resolve locusUrl and refresh via owning meeting
|
|
263
|
+
// If neither route matches, fall back to the default-session refresh.
|
|
261
264
|
refreshDataChannelToken: function () {
|
|
262
|
-
var _refreshDataChannelToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
263
|
-
var
|
|
265
|
+
var _refreshDataChannelToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(requestUrl) {
|
|
266
|
+
var _result, _meeting2, _this3$internal$llm$g3, _this3$internal$llm3;
|
|
267
|
+
var sessionId, meeting, _this3$internal$llm$g, _this3$internal$llm, _this3$internal$llm$g2, _this3$internal$llm2, locusUrl, _this3$meetings, _this3$meetings$getMe, _this3$meetings2, _this3$meetings2$getA, allMeetings, _meeting, _meeting$locusInfo, info, result, _result$body, datachannelToken, dataChannelTokenType, tokenStoreKey, ownerMeetingId;
|
|
264
268
|
return _regenerator.default.wrap(function (_context5) {
|
|
265
269
|
while (1) switch (_context5.prev = _context5.next) {
|
|
266
270
|
case 0:
|
|
271
|
+
if (typeof requestUrl === 'string') {
|
|
272
|
+
// @ts-ignore
|
|
273
|
+
sessionId = (_this3$internal$llm$g = (_this3$internal$llm = _this3.internal.llm).getSessionIdByDatachannelUrl) === null || _this3$internal$llm$g === void 0 ? void 0 : _this3$internal$llm$g.call(_this3$internal$llm, requestUrl);
|
|
274
|
+
if (!sessionId) {
|
|
275
|
+
// @ts-ignore
|
|
276
|
+
locusUrl = (_this3$internal$llm$g2 = (_this3$internal$llm2 = _this3.internal.llm).getLocusUrlByDatachannelUrl) === null || _this3$internal$llm$g2 === void 0 ? void 0 : _this3$internal$llm$g2.call(_this3$internal$llm2, requestUrl);
|
|
277
|
+
if (locusUrl) {
|
|
278
|
+
// @ts-ignore
|
|
279
|
+
meeting = (_this3$meetings = _this3.meetings) === null || _this3$meetings === void 0 ? void 0 : (_this3$meetings$getMe = _this3$meetings.getMeetingByType) === null || _this3$meetings$getMe === void 0 ? void 0 : _this3$meetings$getMe.call(_this3$meetings, _constants.LOCUS_URL, locusUrl);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (!meeting) {
|
|
283
|
+
// Fallback: registerAndConnect() pre-populates datachannelUrl in
|
|
284
|
+
// connections before calling register(), so getSessionIdByDatachannelUrl
|
|
285
|
+
// above should normally resolve. This scan covers any residual gap
|
|
286
|
+
// where connections are not yet populated (e.g. if setRefreshHandler
|
|
287
|
+
// is called on a session that has no connection entry at all).
|
|
288
|
+
// @ts-ignore
|
|
289
|
+
allMeetings = ((_this3$meetings2 = _this3.meetings) === null || _this3$meetings2 === void 0 ? void 0 : (_this3$meetings2$getA = _this3$meetings2.getAllMeetings) === null || _this3$meetings2$getA === void 0 ? void 0 : _this3$meetings2$getA.call(_this3$meetings2)) || {};
|
|
290
|
+
meeting = (0, _values.default)(allMeetings).find(function (activeMeeting) {
|
|
291
|
+
var _activeMeeting$locusI;
|
|
292
|
+
var info = (activeMeeting === null || activeMeeting === void 0 ? void 0 : (_activeMeeting$locusI = activeMeeting.locusInfo) === null || _activeMeeting$locusI === void 0 ? void 0 : _activeMeeting$locusI.info) || {};
|
|
293
|
+
return info.practiceSessionDatachannelUrl && _internalPluginLlm.default.matchesDatachannelRequestUrl(requestUrl, info.practiceSessionDatachannelUrl) || info.datachannelUrl && _internalPluginLlm.default.matchesDatachannelRequestUrl(requestUrl, info.datachannelUrl);
|
|
294
|
+
});
|
|
295
|
+
if (!sessionId) {
|
|
296
|
+
// @ts-ignore
|
|
297
|
+
info = ((_meeting = meeting) === null || _meeting === void 0 ? void 0 : (_meeting$locusInfo = _meeting.locusInfo) === null || _meeting$locusInfo === void 0 ? void 0 : _meeting$locusInfo.info) || {};
|
|
298
|
+
if (info.practiceSessionDatachannelUrl && _internalPluginLlm.default.matchesDatachannelRequestUrl(requestUrl, info.practiceSessionDatachannelUrl)) {
|
|
299
|
+
sessionId = _constants.LLM_PRACTICE_SESSION;
|
|
300
|
+
} else if (info.datachannelUrl && _internalPluginLlm.default.matchesDatachannelRequestUrl(requestUrl, info.datachannelUrl)) {
|
|
301
|
+
sessionId = _constants.LLM_DEFAULT_SESSION;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (!meeting) {
|
|
307
|
+
_context5.next = 2;
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
267
310
|
_context5.next = 1;
|
|
268
|
-
return
|
|
311
|
+
return meeting.refreshDataChannelToken();
|
|
269
312
|
case 1:
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
_this3.internal.llm.setDatachannelToken(datachannelToken, dataChannelTokenType);
|
|
274
|
-
return _context5.abrupt("return", datachannelToken);
|
|
313
|
+
result = _context5.sent;
|
|
314
|
+
_context5.next = 4;
|
|
315
|
+
break;
|
|
275
316
|
case 2:
|
|
317
|
+
_context5.next = 3;
|
|
318
|
+
return _this3.internal.llm.refreshDataChannelToken(sessionId);
|
|
319
|
+
case 3:
|
|
320
|
+
result = _context5.sent;
|
|
321
|
+
case 4:
|
|
322
|
+
if ((_result = result) !== null && _result !== void 0 && _result.body) {
|
|
323
|
+
_context5.next = 5;
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
throw new Error('DataChannel token refresh returned no payload');
|
|
327
|
+
case 5:
|
|
328
|
+
_result$body = result.body, datachannelToken = _result$body.datachannelToken, dataChannelTokenType = _result$body.dataChannelTokenType;
|
|
329
|
+
tokenStoreKey = dataChannelTokenType || sessionId;
|
|
330
|
+
ownerMeetingId =
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
((_meeting2 = meeting) === null || _meeting2 === void 0 ? void 0 : _meeting2.id) || ((_this3$internal$llm$g3 = (_this3$internal$llm3 = _this3.internal.llm).getOwnerMeetingId) === null || _this3$internal$llm$g3 === void 0 ? void 0 : _this3$internal$llm$g3.call(_this3$internal$llm3, tokenStoreKey)); // @ts-ignore
|
|
333
|
+
_this3.internal.llm.setDatachannelToken(datachannelToken, tokenStoreKey, ownerMeetingId);
|
|
334
|
+
return _context5.abrupt("return", datachannelToken);
|
|
335
|
+
case 6:
|
|
276
336
|
case "end":
|
|
277
337
|
return _context5.stop();
|
|
278
338
|
}
|
|
279
339
|
}, _callee5);
|
|
280
340
|
}));
|
|
281
|
-
function refreshDataChannelToken() {
|
|
341
|
+
function refreshDataChannelToken(_x4) {
|
|
282
342
|
return _refreshDataChannelToken.apply(this, arguments);
|
|
283
343
|
}
|
|
284
344
|
return refreshDataChannelToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_httpCore","require","_loggerProxy","_interopRequireDefault","_constant","_utils","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","retryCountMap","_map","DataChannelAuthTokenInterceptor","exports","_Interceptor","options","_this","_classCallCheck2","_defineProperty2","_refreshDataChannelToken","refreshDataChannelToken","_isDataChannelTokenEnabled","isDataChannelTokenEnabled","_inherits2","_createClass2","key","value","getRetryKey","RETRY_KEY","concat","_now","Math","random","getHeader","headers","name","_keys","find","k","toLowerCase","undefined","_onRequest","_asyncToGenerator2","_regenerator","mark","_callee","token","enabled","newToken","_t","wrap","_context","prev","next","DATA_CHANNEL_AUTH_HEADER","sent","abrupt","isJwtTokenExpired","LoggerProxy","logger","warn","message","stop","onRequest","_x","arguments","_onResponseError","_callee2","reason","retryCount","_context2","_promise","reject","statusCode","get","MAX_RETRY","error","delete","set","refreshTokenAndRetryWithDelay","onResponseError","_x2","_x3","_this2","resolve","setTimeout","_callee3","res","msg","err","_t2","_context3","webex","request","String","Error","original","RETRY_INTERVAL","create","_this3","_callee4","_context4","internal","llm","_callee5","_yield$_this3$interna","body","_ref2","datachannelToken","dataChannelTokenType","_context5","setDatachannelToken","Interceptor"],"sources":["dataChannelAuthToken.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {DATA_CHANNEL_AUTH_HEADER, MAX_RETRY, RETRY_INTERVAL, RETRY_KEY} from './constant';\nimport {isJwtTokenExpired} from './utils';\n\n/*!\n * Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.\n */\n\nconst retryCountMap = new Map();\ninterface HttpLikeError extends Error {\n statusCode?: number;\n original?: any;\n}\n/**\n * @class\n */\nexport default class DataChannelAuthTokenInterceptor extends Interceptor {\n private _refreshDataChannelToken: () => Promise<string>;\n private _isDataChannelTokenEnabled: () => Promise<boolean>;\n constructor(options) {\n super(options);\n\n this._refreshDataChannelToken = options.refreshDataChannelToken;\n this._isDataChannelTokenEnabled = options.isDataChannelTokenEnabled;\n }\n\n /**\n * @returns {DataChannelAuthTokenInterceptor}\n */\n static create() {\n // @ts-ignore\n return new DataChannelAuthTokenInterceptor({\n webex: this,\n\n isDataChannelTokenEnabled: async () => {\n // @ts-ignore\n return this.internal.llm.isDataChannelTokenEnabled();\n },\n\n refreshDataChannelToken: async () => {\n // @ts-ignore\n const {body} = await this.internal.llm.refreshDataChannelToken();\n const {datachannelToken, dataChannelTokenType} = body ?? {};\n\n // @ts-ignore\n this.internal.llm.setDatachannelToken(datachannelToken, dataChannelTokenType);\n\n return datachannelToken;\n },\n });\n }\n\n private getRetryKey(options) {\n if (!options[RETRY_KEY]) {\n options[RETRY_KEY] = `${Date.now()}-${Math.random()}`;\n }\n\n return options[RETRY_KEY];\n }\n\n // Helper function to get header value case insensitively\n private getHeader(headers: Record<string, string>, name: string) {\n const key = Object.keys(headers).find((k) => k.toLowerCase() === name.toLowerCase());\n\n return key ? headers[key] : undefined;\n }\n\n /**\n * Intercepts outgoing requests and refreshes the Data-Channel-Auth-Token\n * if the current JWT token is expired before the request is sent.\n *\n * @param {Object} options - The original request options.\n * @returns {Promise<Object>} Updated request options with refreshed token if needed.\n */\n async onRequest(options) {\n const token = this.getHeader(options.headers, DATA_CHANNEL_AUTH_HEADER);\n const enabled = await this._isDataChannelTokenEnabled();\n\n if (!token || !enabled) {\n return options;\n }\n\n if (isJwtTokenExpired(token)) {\n try {\n const newToken = await this._refreshDataChannelToken();\n options.headers[DATA_CHANNEL_AUTH_HEADER] = newToken;\n } catch (e) {\n LoggerProxy.logger.warn(`DataChannelAuthTokenInterceptor: refresh failed: ${e.message}`);\n }\n }\n\n return options;\n }\n\n /**\n * Intercept responses and, on 401/403 with `Data-Channel-Auth-Token` header,\n * attempt to refresh the data channel token and retry the original request once.\n *\n * @param {Object} options\n * @param {Object} reason\n * @returns {Promise<HttpResponse>}\n */\n async onResponseError(options, reason) {\n const token = this.getHeader(options.headers, DATA_CHANNEL_AUTH_HEADER);\n const enabled = await this._isDataChannelTokenEnabled();\n\n if (!token || !enabled) {\n return Promise.reject(reason);\n }\n\n if (reason.statusCode !== 401 && reason.statusCode !== 403) {\n return Promise.reject(reason);\n }\n\n const key = this.getRetryKey(options);\n const retryCount = retryCountMap.get(key) || 0;\n\n if (retryCount >= MAX_RETRY) {\n LoggerProxy.logger.error(`data channel token refresh exceeded max retry (${MAX_RETRY})`);\n retryCountMap.delete(key);\n\n return Promise.reject(reason);\n }\n\n retryCountMap.set(key, retryCount + 1);\n\n return this.refreshTokenAndRetryWithDelay(options);\n }\n\n /**\n * Retry the failed data channel request after a delay.\n * Refreshes the Data-Channel-Auth-Token and re-sends the original request.\n *\n * @param {Object} options - Original request options.\n * @returns {Promise<HttpResponse>} - Resolves on successful retry.\n */\n refreshTokenAndRetryWithDelay(options) {\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n const key = this.getRetryKey(options);\n try {\n const newToken = await this._refreshDataChannelToken();\n\n options.headers[DATA_CHANNEL_AUTH_HEADER] = newToken;\n\n // @ts-ignore\n const res = await this.webex.request(options);\n retryCountMap.delete(key);\n\n resolve(res);\n } catch (e) {\n retryCountMap.delete(key);\n\n const msg = e?.message || String(e);\n\n const err: HttpLikeError = new Error(`DataChannel token refresh failed: ${msg}`);\n err.statusCode = e?.statusCode;\n err.original = e;\n\n reject(err);\n }\n }, RETRY_INTERVAL);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_httpCore","require","_internalPluginLlm","_interopRequireDefault","_loggerProxy","_constant","_utils","_constants","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","retryCountMap","_map","DataChannelAuthTokenInterceptor","exports","_Interceptor","options","_this","_classCallCheck2","_defineProperty2","_refreshDataChannelToken","refreshDataChannelToken","_isDataChannelTokenEnabled","isDataChannelTokenEnabled","_inherits2","_createClass2","key","value","getRetryKey","RETRY_KEY","concat","_now","Math","random","getHeader","headers","name","_keys","find","k","toLowerCase","undefined","_onRequest","_asyncToGenerator2","_regenerator","mark","_callee","token","enabled","newToken","_t","wrap","_context","prev","next","DATA_CHANNEL_AUTH_HEADER","sent","abrupt","isJwtTokenExpired","uri","url","LoggerProxy","logger","warn","message","stop","onRequest","_x","arguments","_onResponseError","_callee2","reason","retryCount","_context2","_promise","reject","statusCode","get","MAX_RETRY","error","delete","set","refreshTokenAndRetryWithDelay","onResponseError","_x2","_x3","_this2","resolve","setTimeout","_callee3","res","msg","err","_t2","_context3","webex","request","String","Error","original","RETRY_INTERVAL","create","_this3","_callee4","_context4","internal","llm","_callee5","requestUrl","_result","_meeting2","_this3$internal$llm$g3","_this3$internal$llm3","sessionId","meeting","_this3$internal$llm$g","_this3$internal$llm","_this3$internal$llm$g2","_this3$internal$llm2","locusUrl","_this3$meetings","_this3$meetings$getMe","_this3$meetings2","_this3$meetings2$getA","allMeetings","_meeting","_meeting$locusInfo","info","result","_result$body","datachannelToken","dataChannelTokenType","tokenStoreKey","ownerMeetingId","_context5","getSessionIdByDatachannelUrl","getLocusUrlByDatachannelUrl","meetings","getMeetingByType","LOCUS_URL","getAllMeetings","_values","activeMeeting","_activeMeeting$locusI","locusInfo","practiceSessionDatachannelUrl","LLMChannel","matchesDatachannelRequestUrl","datachannelUrl","LLM_PRACTICE_SESSION","LLM_DEFAULT_SESSION","body","id","getOwnerMeetingId","setDatachannelToken","_x4","Interceptor"],"sources":["dataChannelAuthToken.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2026 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Interceptor} from '@webex/http-core';\nimport LLMChannel from '@webex/internal-plugin-llm';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {DATA_CHANNEL_AUTH_HEADER, MAX_RETRY, RETRY_INTERVAL, RETRY_KEY} from './constant';\nimport {isJwtTokenExpired} from './utils';\nimport {LLM_DEFAULT_SESSION, LLM_PRACTICE_SESSION, LOCUS_URL} from '../constants';\n\nconst retryCountMap = new Map();\ninterface HttpLikeError extends Error {\n statusCode?: number;\n original?: any;\n}\n/**\n * @class\n */\nexport default class DataChannelAuthTokenInterceptor extends Interceptor {\n private _refreshDataChannelToken: (requestUrl?: string) => Promise<string>;\n private _isDataChannelTokenEnabled: () => Promise<boolean>;\n constructor(options) {\n super(options);\n\n this._refreshDataChannelToken = options.refreshDataChannelToken;\n this._isDataChannelTokenEnabled = options.isDataChannelTokenEnabled;\n }\n\n /**\n * @returns {DataChannelAuthTokenInterceptor}\n */\n static create() {\n // @ts-ignore\n return new DataChannelAuthTokenInterceptor({\n webex: this,\n\n isDataChannelTokenEnabled: async () => {\n // @ts-ignore\n return this.internal.llm.isDataChannelTokenEnabled();\n },\n\n // Route refresh by request URL in two steps:\n // 1) Match active LLM sessions (supports non-default/multiple sessions)\n // 2) If no session matches, resolve locusUrl and refresh via owning meeting\n // If neither route matches, fall back to the default-session refresh.\n refreshDataChannelToken: async (requestUrl?: string) => {\n let sessionId;\n let meeting;\n\n if (typeof requestUrl === 'string') {\n // @ts-ignore\n sessionId = this.internal.llm.getSessionIdByDatachannelUrl?.(requestUrl);\n\n if (!sessionId) {\n // @ts-ignore\n const locusUrl = this.internal.llm.getLocusUrlByDatachannelUrl?.(requestUrl);\n\n if (locusUrl) {\n // @ts-ignore\n meeting = this.meetings?.getMeetingByType?.(LOCUS_URL, locusUrl);\n }\n }\n\n if (!meeting) {\n // Fallback: registerAndConnect() pre-populates datachannelUrl in\n // connections before calling register(), so getSessionIdByDatachannelUrl\n // above should normally resolve. This scan covers any residual gap\n // where connections are not yet populated (e.g. if setRefreshHandler\n // is called on a session that has no connection entry at all).\n // @ts-ignore\n const allMeetings = this.meetings?.getAllMeetings?.() || {};\n\n meeting = Object.values(allMeetings).find((activeMeeting: any) => {\n const info = activeMeeting?.locusInfo?.info || {};\n\n return (\n (info.practiceSessionDatachannelUrl &&\n LLMChannel.matchesDatachannelRequestUrl(\n requestUrl,\n info.practiceSessionDatachannelUrl\n )) ||\n (info.datachannelUrl &&\n LLMChannel.matchesDatachannelRequestUrl(requestUrl, info.datachannelUrl))\n );\n });\n\n if (!sessionId) {\n // @ts-ignore\n const info = meeting?.locusInfo?.info || {};\n\n if (\n info.practiceSessionDatachannelUrl &&\n LLMChannel.matchesDatachannelRequestUrl(\n requestUrl,\n info.practiceSessionDatachannelUrl\n )\n ) {\n sessionId = LLM_PRACTICE_SESSION;\n } else if (\n info.datachannelUrl &&\n LLMChannel.matchesDatachannelRequestUrl(requestUrl, info.datachannelUrl)\n ) {\n sessionId = LLM_DEFAULT_SESSION;\n }\n }\n }\n }\n\n let result;\n if (meeting) {\n result = await meeting.refreshDataChannelToken();\n } else {\n // @ts-ignore\n result = await this.internal.llm.refreshDataChannelToken(sessionId);\n }\n\n if (!result?.body) {\n throw new Error('DataChannel token refresh returned no payload');\n }\n const {datachannelToken, dataChannelTokenType} = result.body;\n const tokenStoreKey = dataChannelTokenType || sessionId;\n const ownerMeetingId =\n // @ts-ignore\n meeting?.id || this.internal.llm.getOwnerMeetingId?.(tokenStoreKey);\n // @ts-ignore\n this.internal.llm.setDatachannelToken(datachannelToken, tokenStoreKey, ownerMeetingId);\n\n return datachannelToken;\n },\n });\n }\n\n private getRetryKey(options) {\n if (!options[RETRY_KEY]) {\n options[RETRY_KEY] = `${Date.now()}-${Math.random()}`;\n }\n\n return options[RETRY_KEY];\n }\n\n // Helper function to get header value case insensitively\n private getHeader(headers: Record<string, string>, name: string) {\n const key = Object.keys(headers).find((k) => k.toLowerCase() === name.toLowerCase());\n\n return key ? headers[key] : undefined;\n }\n\n /**\n * Intercepts outgoing requests and refreshes the Data-Channel-Auth-Token\n * if the current JWT token is expired before the request is sent.\n *\n * @param {Object} options - The original request options.\n * @returns {Promise<Object>} Updated request options with refreshed token if needed.\n */\n async onRequest(options) {\n const token = this.getHeader(options.headers, DATA_CHANNEL_AUTH_HEADER);\n const enabled = await this._isDataChannelTokenEnabled();\n\n if (!token || !enabled) {\n return options;\n }\n\n if (isJwtTokenExpired(token)) {\n try {\n const newToken = await this._refreshDataChannelToken(options.uri || options.url);\n options.headers[DATA_CHANNEL_AUTH_HEADER] = newToken;\n } catch (e) {\n LoggerProxy.logger.warn(`DataChannelAuthTokenInterceptor: refresh failed: ${e.message}`);\n }\n }\n\n return options;\n }\n\n /**\n * Intercept responses and, on 401/403 with `Data-Channel-Auth-Token` header,\n * attempt to refresh the data channel token and retry the original request once.\n *\n * @param {Object} options\n * @param {Object} reason\n * @returns {Promise<HttpResponse>}\n */\n async onResponseError(options, reason) {\n const token = this.getHeader(options.headers, DATA_CHANNEL_AUTH_HEADER);\n const enabled = await this._isDataChannelTokenEnabled();\n\n if (!token || !enabled) {\n return Promise.reject(reason);\n }\n\n if (reason.statusCode !== 401 && reason.statusCode !== 403) {\n return Promise.reject(reason);\n }\n\n const key = this.getRetryKey(options);\n const retryCount = retryCountMap.get(key) || 0;\n\n if (retryCount >= MAX_RETRY) {\n LoggerProxy.logger.error(`data channel token refresh exceeded max retry (${MAX_RETRY})`);\n retryCountMap.delete(key);\n\n return Promise.reject(reason);\n }\n\n retryCountMap.set(key, retryCount + 1);\n\n return this.refreshTokenAndRetryWithDelay(options);\n }\n\n /**\n * Retry the failed data channel request after a delay.\n * Refreshes the Data-Channel-Auth-Token and re-sends the original request.\n *\n * @param {Object} options - Original request options.\n * @returns {Promise<HttpResponse>} - Resolves on successful retry.\n */\n refreshTokenAndRetryWithDelay(options) {\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n const key = this.getRetryKey(options);\n try {\n const newToken = await this._refreshDataChannelToken(options.uri || options.url);\n\n options.headers[DATA_CHANNEL_AUTH_HEADER] = newToken;\n\n // @ts-ignore\n const res = await this.webex.request(options);\n retryCountMap.delete(key);\n\n resolve(res);\n } catch (e) {\n retryCountMap.delete(key);\n\n const msg = e?.message || String(e);\n\n const err: HttpLikeError = new Error(`DataChannel token refresh failed: ${msg}`);\n err.statusCode = e?.statusCode;\n err.original = e;\n\n reject(err);\n }\n }, RETRY_INTERVAL);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -381,7 +381,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
381
381
|
throw error;
|
|
382
382
|
});
|
|
383
383
|
},
|
|
384
|
-
version: "3.12.0-next.
|
|
384
|
+
version: "3.12.0-next.67"
|
|
385
385
|
});
|
|
386
386
|
var _default = exports.default = SimultaneousInterpretation;
|
|
387
387
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","_util","_collection","SimultaneousInterpretation","WebexPlugin","extend","namespace","MEETINGS","collections","siLanguages","SILanguageCollection","props","locusUrl","approvalUrl","originalLanguage","sourceLanguage","targetLanguage","receiveLanguage","order","isActive","selfParticipantId","canManageInterpreters","supportLanguages","meetingSIEnabled","hostSIEnabled","selfIsInterpreter","derived","shouldQuerySupportLanguages","cache","deps","fn","initialize","_this","listenTo","querySupportLanguages","listenToHandoffRequests","cleanUp","stopListening","locusUrlUpdate","set","approvalUrlUpdate","updateCanManageInterpreters","updateHostSIEnabled","updateMeetingSIEnabled","updateInterpretation","interpretation","updateSelfInterpretation","_ref","preTargetLanguage","_ref2","getTargetLanguageCode","_this$siLanguages$get","get","languageCode","_this2","request","method","HTTP_VERBS","GET","uri","concat","then","result","_result$body","body","trigger","INTERPRETATION","EVENTS","SUPPORT_LANGUAGES_UPDATE","catch","error","LoggerProxy","logger","getInterpreters","updateInterpreters","interpreters","meeting","webex","meetings","meetingCollection","getByKey","PATCH","response","MeetingUtil","updateLocusFromApiResponse","changeDirection","_promise","default","reject","Error","_this3","internal","mercury","LOCUSEVENT","APPROVAL_REQUEST","event","_event$data","_event$data$approval","data","approval","resourceType","RESOURCE_TYPE","_receivers$","_event$data$approval2","receivers","initiator","actionType","url","receiverId","participantId","isReceiver","senderId","isSender","HANDOFF_REQUESTS_ARRIVED","handoffInterpreter","POST","ACTION_TYPE","OFFERED","requestHandoff","REQUESTED","acceptRequest","PUT","ACCEPTED","declineRequest","DECLINED","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, INTERPRETATION, LOCUSEVENT, MEETINGS} from '../constants';\nimport MeetingUtil from '../meeting/util';\n\nimport SILanguageCollection from './collection';\n\n/**\n * @class SimultaneousInterpretation\n */\nconst SimultaneousInterpretation = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n siLanguages: SILanguageCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current meeting's locus url\n approvalUrl: 'string', // appears current meeting's approval url for handoff between interpreters\n originalLanguage: 'string', // appears current meeting's original language\n sourceLanguage: 'string', // appears self interpreter's source language\n targetLanguage: 'string', // appears self interpreter's target language\n receiveLanguage: 'string', // appears self's receive language\n order: 'number', // appears the order of self as interpreter\n isActive: 'boolean', // appears self is interpreter and is active\n selfParticipantId: 'string', // appears the self participant id\n canManageInterpreters: 'boolean', // appears the ability to manage interpreters\n supportLanguages: 'array', // appears the support languages\n meetingSIEnabled: 'boolean', // appears the meeting support SI feature\n hostSIEnabled: 'boolean', // appears the meeting host/interpreter feature of SI enabled\n selfIsInterpreter: 'boolean', // current user is interpreter or not\n },\n derived: {\n shouldQuerySupportLanguages: {\n cache: false,\n deps: ['canManageInterpreters', 'hostSIEnabled', 'locusUrl'],\n /**\n * Returns should query support languages or not\n * @returns {boolean}\n */\n fn() {\n return !!(this.canManageInterpreters && this.hostSIEnabled && this.locusUrl);\n },\n },\n },\n /**\n * initialize for interpretation\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {\n if (this.shouldQuerySupportLanguages && !this.supportLanguages) {\n this.querySupportLanguages();\n }\n });\n this.listenToHandoffRequests();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n /**\n * Update the approval url for handoff\n * @param {string} approvalUrl // approval url\n * @returns {void}\n */\n approvalUrlUpdate(approvalUrl) {\n this.set('approvalUrl', approvalUrl);\n },\n /**\n * Update whether self has capability to manage interpreters (only host can manage it)\n * @param {boolean} canManageInterpreters\n * @returns {void}\n */\n updateCanManageInterpreters(canManageInterpreters) {\n this.set('canManageInterpreters', canManageInterpreters);\n },\n /**\n * Update whether the meeting's host si is enabled or not\n * @param {boolean} hostSIEnabled\n * @returns {void}\n */\n updateHostSIEnabled(hostSIEnabled) {\n this.set('hostSIEnabled', hostSIEnabled);\n },\n\n /**\n * Update whether the meeting support SI feature or not from meeting info\n * @param {boolean} meetingSIEnabled\n * @param {boolean} selfIsInterpreter\n * @returns {void}\n */\n updateMeetingSIEnabled(meetingSIEnabled: boolean, selfIsInterpreter): void {\n this.set('meetingSIEnabled', meetingSIEnabled);\n this.set('selfIsInterpreter', selfIsInterpreter);\n },\n\n /**\n * Update the interpretation languages channels which user can choose to subscribe\n * @param {Object} interpretation\n * @returns {void}\n */\n updateInterpretation(interpretation) {\n this.siLanguages.set(interpretation?.siLanguages || []);\n },\n /**\n * Update self's interpretation information (self is interpreter)\n * @param {Object} interpretation\n * @param {String} selfParticipantId\n * @returns {bool} is target language changed\n */\n updateSelfInterpretation({interpretation, selfParticipantId}) {\n const preTargetLanguage = this.targetLanguage;\n const {originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage} =\n interpretation || {};\n this.set({originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage});\n this.set('selfParticipantId', selfParticipantId);\n this.set('selfIsInterpreter', !!targetLanguage);\n\n return !!(preTargetLanguage !== targetLanguage);\n },\n\n /**\n * Get the language code of the interpreter target language\n * @returns {number}\n */\n getTargetLanguageCode() {\n if (this.selfIsInterpreter) {\n return this.siLanguages.get(this.targetLanguage)?.languageCode;\n }\n\n return 0;\n },\n\n /**\n * query interpretation languages\n * @returns {Promise}\n */\n querySupportLanguages() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/languages/interpretation`,\n })\n .then((result) => {\n this.set('supportLanguages', result.body?.siLanguages);\n this.trigger(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#querySupportLanguages failed', error);\n throw error;\n });\n },\n /**\n * get interpreters of the meeting\n * @returns {Promise}\n */\n getInterpreters() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/interpretation/interpreters`,\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#getInterpreters failed', error);\n throw error;\n });\n },\n /**\n * update interpreters of the meeting\n * @param {Array} interpreters\n * @returns {Promise}\n */\n updateInterpreters(interpreters) {\n const meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n interpretation: {\n interpreters,\n },\n },\n })\n .then((response) => {\n MeetingUtil.updateLocusFromApiResponse(meeting, response);\n\n return response;\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#updateInterpreters failed', error);\n throw error;\n });\n },\n /**\n * Change direction of interpretation for an interpreter participant\n * @returns {Promise}\n */\n changeDirection() {\n if (!this.sourceLanguage || !this.targetLanguage) {\n return Promise.reject(new Error('Missing sourceLanguage or targetLanguage'));\n }\n\n if (!this.selfParticipantId) {\n return Promise.reject(new Error('Missing self participant id'));\n }\n\n const meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/participant/${this.selfParticipantId}/controls`,\n body: {\n interpretation: {\n sourceLanguage: this.targetLanguage,\n targetLanguage: this.sourceLanguage,\n isActive: this.isActive,\n order: this.order,\n },\n },\n })\n .then((response) => {\n MeetingUtil.updateLocusFromApiResponse(meeting, response);\n\n return response;\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#changeDirection failed', error);\n throw error;\n });\n },\n /**\n * Sets up a listener for handoff requests from mercury\n * @returns {void}\n */\n listenToHandoffRequests() {\n this.listenTo(this.webex.internal.mercury, `event:${LOCUSEVENT.APPROVAL_REQUEST}`, (event) => {\n if (event?.data?.approval?.resourceType === INTERPRETATION.RESOURCE_TYPE) {\n const {receivers, initiator, actionType, url} = event.data.approval;\n const receiverId = receivers?.[0]?.participantId;\n const isReceiver = !!receiverId && receiverId === this.selfParticipantId;\n const senderId = initiator?.participantId;\n const isSender = !!senderId && senderId === this.selfParticipantId;\n if (!isReceiver && !isSender) {\n return;\n }\n this.trigger(INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, {\n actionType,\n isReceiver,\n isSender,\n senderId,\n receiverId,\n url,\n });\n }\n });\n },\n /**\n * handoff the active interpreter role to another interpreter in same group, only the interpreter is allowed to call this api\n * @param {string} participantId the participant id you want to hand off\n * @returns {Promise}\n */\n handoffInterpreter(participantId) {\n if (!participantId) {\n return Promise.reject(new Error('Missing target participant id'));\n }\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.OFFERED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n receivers: [\n {\n participantId,\n },\n ],\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#handoffInterpreter failed', error);\n throw error;\n });\n },\n /**\n * the in-active interpreter request to hand off the active role to self\n * @returns {Promise}\n */\n requestHandoff() {\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.REQUESTED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#requestHandoff failed', error);\n throw error;\n });\n },\n /**\n * accept the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n acceptRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to accept'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.ACCEPTED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#acceptRequest failed', error);\n throw error;\n });\n },\n /**\n * decline the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n declineRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to decline'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.DECLINED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#declineRequest failed', error);\n throw error;\n });\n },\n});\n\nexport default SimultaneousInterpretation;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","_util","_collection","SimultaneousInterpretation","WebexPlugin","extend","namespace","MEETINGS","collections","siLanguages","SILanguageCollection","props","locusUrl","approvalUrl","originalLanguage","sourceLanguage","targetLanguage","receiveLanguage","order","isActive","selfParticipantId","canManageInterpreters","supportLanguages","meetingSIEnabled","hostSIEnabled","selfIsInterpreter","derived","shouldQuerySupportLanguages","cache","deps","fn","initialize","_this","listenTo","querySupportLanguages","listenToHandoffRequests","cleanUp","stopListening","locusUrlUpdate","set","approvalUrlUpdate","updateCanManageInterpreters","updateHostSIEnabled","updateMeetingSIEnabled","updateInterpretation","interpretation","updateSelfInterpretation","_ref","preTargetLanguage","_ref2","getTargetLanguageCode","_this$siLanguages$get","get","languageCode","_this2","request","method","HTTP_VERBS","GET","uri","concat","then","result","_result$body","body","trigger","INTERPRETATION","EVENTS","SUPPORT_LANGUAGES_UPDATE","catch","error","LoggerProxy","logger","getInterpreters","updateInterpreters","interpreters","meeting","webex","meetings","meetingCollection","getByKey","PATCH","response","MeetingUtil","updateLocusFromApiResponse","changeDirection","_promise","default","reject","Error","_this3","internal","mercury","LOCUSEVENT","APPROVAL_REQUEST","event","_event$data","_event$data$approval","data","approval","resourceType","RESOURCE_TYPE","_receivers$","_event$data$approval2","receivers","initiator","actionType","url","receiverId","participantId","isReceiver","senderId","isSender","HANDOFF_REQUESTS_ARRIVED","handoffInterpreter","POST","ACTION_TYPE","OFFERED","requestHandoff","REQUESTED","acceptRequest","PUT","ACCEPTED","declineRequest","DECLINED","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, INTERPRETATION, LOCUSEVENT, MEETINGS} from '../constants';\nimport MeetingUtil from '../meeting/util';\n\nimport SILanguageCollection from './collection';\nimport {Interpreter} from './interpretation.types';\n\n/**\n * @class SimultaneousInterpretation\n */\nconst SimultaneousInterpretation = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n siLanguages: SILanguageCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current meeting's locus url\n approvalUrl: 'string', // appears current meeting's approval url for handoff between interpreters\n originalLanguage: 'string', // appears current meeting's original language\n sourceLanguage: 'string', // appears self interpreter's source language\n targetLanguage: 'string', // appears self interpreter's target language\n receiveLanguage: 'string', // appears self's receive language\n order: 'number', // appears the order of self as interpreter\n isActive: 'boolean', // appears self is interpreter and is active\n selfParticipantId: 'string', // appears the self participant id\n canManageInterpreters: 'boolean', // appears the ability to manage interpreters\n supportLanguages: 'array', // appears the support languages\n meetingSIEnabled: 'boolean', // appears the meeting support SI feature\n hostSIEnabled: 'boolean', // appears the meeting host/interpreter feature of SI enabled\n selfIsInterpreter: 'boolean', // current user is interpreter or not\n },\n derived: {\n shouldQuerySupportLanguages: {\n cache: false,\n deps: ['canManageInterpreters', 'hostSIEnabled', 'locusUrl'],\n /**\n * Returns should query support languages or not\n * @returns {boolean}\n */\n fn() {\n return !!(this.canManageInterpreters && this.hostSIEnabled && this.locusUrl);\n },\n },\n },\n /**\n * initialize for interpretation\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {\n if (this.shouldQuerySupportLanguages && !this.supportLanguages) {\n this.querySupportLanguages();\n }\n });\n this.listenToHandoffRequests();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n /**\n * Update the approval url for handoff\n * @param {string} approvalUrl // approval url\n * @returns {void}\n */\n approvalUrlUpdate(approvalUrl) {\n this.set('approvalUrl', approvalUrl);\n },\n /**\n * Update whether self has capability to manage interpreters (only host can manage it)\n * @param {boolean} canManageInterpreters\n * @returns {void}\n */\n updateCanManageInterpreters(canManageInterpreters) {\n this.set('canManageInterpreters', canManageInterpreters);\n },\n /**\n * Update whether the meeting's host si is enabled or not\n * @param {boolean} hostSIEnabled\n * @returns {void}\n */\n updateHostSIEnabled(hostSIEnabled) {\n this.set('hostSIEnabled', hostSIEnabled);\n },\n\n /**\n * Update whether the meeting support SI feature or not from meeting info\n * @param {boolean} meetingSIEnabled\n * @param {boolean} selfIsInterpreter\n * @returns {void}\n */\n updateMeetingSIEnabled(meetingSIEnabled: boolean, selfIsInterpreter): void {\n this.set('meetingSIEnabled', meetingSIEnabled);\n this.set('selfIsInterpreter', selfIsInterpreter);\n },\n\n /**\n * Update the interpretation languages channels which user can choose to subscribe\n * @param {Object} interpretation\n * @returns {void}\n */\n updateInterpretation(interpretation) {\n this.siLanguages.set(interpretation?.siLanguages || []);\n },\n /**\n * Update self's interpretation information (self is interpreter)\n * @param {Object} interpretation\n * @param {String} selfParticipantId\n * @returns {bool} is target language changed\n */\n updateSelfInterpretation({interpretation, selfParticipantId}) {\n const preTargetLanguage = this.targetLanguage;\n const {originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage} =\n interpretation || {};\n this.set({originalLanguage, sourceLanguage, order, isActive, targetLanguage, receiveLanguage});\n this.set('selfParticipantId', selfParticipantId);\n this.set('selfIsInterpreter', !!targetLanguage);\n\n return !!(preTargetLanguage !== targetLanguage);\n },\n\n /**\n * Get the language code of the interpreter target language\n * @returns {number}\n */\n getTargetLanguageCode() {\n if (this.selfIsInterpreter) {\n return this.siLanguages.get(this.targetLanguage)?.languageCode;\n }\n\n return 0;\n },\n\n /**\n * query interpretation languages\n * @returns {Promise}\n */\n querySupportLanguages() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/languages/interpretation`,\n })\n .then((result) => {\n this.set('supportLanguages', result.body?.siLanguages);\n this.trigger(INTERPRETATION.EVENTS.SUPPORT_LANGUAGES_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#querySupportLanguages failed', error);\n throw error;\n });\n },\n /**\n * get interpreters of the meeting\n * @returns {Promise}\n */\n getInterpreters() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.locusUrl}/interpretation/interpreters`,\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#getInterpreters failed', error);\n throw error;\n });\n },\n /**\n * update interpreters of the meeting\n * @param {Array} interpreters\n * @returns {Promise}\n */\n updateInterpreters(interpreters: Interpreter[]) {\n const meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n interpretation: {\n interpreters,\n },\n },\n })\n .then((response) => {\n MeetingUtil.updateLocusFromApiResponse(meeting, response);\n\n return response;\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#updateInterpreters failed', error);\n throw error;\n });\n },\n /**\n * Change direction of interpretation for an interpreter participant\n * @returns {Promise}\n */\n changeDirection() {\n if (!this.sourceLanguage || !this.targetLanguage) {\n return Promise.reject(new Error('Missing sourceLanguage or targetLanguage'));\n }\n\n if (!this.selfParticipantId) {\n return Promise.reject(new Error('Missing self participant id'));\n }\n\n const meeting = this.webex.meetings.meetingCollection.getByKey('locusUrl', this.locusUrl);\n\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/participant/${this.selfParticipantId}/controls`,\n body: {\n interpretation: {\n sourceLanguage: this.targetLanguage,\n targetLanguage: this.sourceLanguage,\n isActive: this.isActive,\n order: this.order,\n },\n },\n })\n .then((response) => {\n MeetingUtil.updateLocusFromApiResponse(meeting, response);\n\n return response;\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#changeDirection failed', error);\n throw error;\n });\n },\n /**\n * Sets up a listener for handoff requests from mercury\n * @returns {void}\n */\n listenToHandoffRequests() {\n this.listenTo(this.webex.internal.mercury, `event:${LOCUSEVENT.APPROVAL_REQUEST}`, (event) => {\n if (event?.data?.approval?.resourceType === INTERPRETATION.RESOURCE_TYPE) {\n const {receivers, initiator, actionType, url} = event.data.approval;\n const receiverId = receivers?.[0]?.participantId;\n const isReceiver = !!receiverId && receiverId === this.selfParticipantId;\n const senderId = initiator?.participantId;\n const isSender = !!senderId && senderId === this.selfParticipantId;\n if (!isReceiver && !isSender) {\n return;\n }\n this.trigger(INTERPRETATION.EVENTS.HANDOFF_REQUESTS_ARRIVED, {\n actionType,\n isReceiver,\n isSender,\n senderId,\n receiverId,\n url,\n });\n }\n });\n },\n /**\n * handoff the active interpreter role to another interpreter in same group, only the interpreter is allowed to call this api\n * @param {string} participantId the participant id you want to hand off\n * @returns {Promise}\n */\n handoffInterpreter(participantId) {\n if (!participantId) {\n return Promise.reject(new Error('Missing target participant id'));\n }\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.OFFERED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n receivers: [\n {\n participantId,\n },\n ],\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#handoffInterpreter failed', error);\n throw error;\n });\n },\n /**\n * the in-active interpreter request to hand off the active role to self\n * @returns {Promise}\n */\n requestHandoff() {\n if (!this.approvalUrl) {\n return Promise.reject(new Error('Missing approval url'));\n }\n\n return this.request({\n method: HTTP_VERBS.POST,\n uri: this.approvalUrl,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.REQUESTED,\n resourceType: INTERPRETATION.RESOURCE_TYPE,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#requestHandoff failed', error);\n throw error;\n });\n },\n /**\n * accept the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n acceptRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to accept'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.ACCEPTED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#acceptRequest failed', error);\n throw error;\n });\n },\n /**\n * decline the request of handoff\n * @param {String} url the url get from last approval event\n * @returns {Promise}\n */\n declineRequest(url) {\n if (!url) {\n return Promise.reject(new Error('Missing the url to decline'));\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: url,\n body: {\n actionType: INTERPRETATION.ACTION_TYPE.DECLINED,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:interpretation#declineRequest failed', error);\n throw error;\n });\n },\n});\n\nexport default SimultaneousInterpretation;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["interpretation.types.ts"],"sourcesContent":["export type InterpreterUsingResource = {\n id: string;\n email?: string;\n};\n\nexport type Interpreter = {\n order: number;\n sourceLanguage: string;\n targetLanguage: string;\n usingResource: InterpreterUsingResource;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
|
|
|
18
18
|
languageCode: 'number',
|
|
19
19
|
languageName: 'string'
|
|
20
20
|
},
|
|
21
|
-
version: "3.12.0-next.
|
|
21
|
+
version: "3.12.0-next.67"
|
|
22
22
|
});
|
|
23
23
|
var _default = exports.default = SILanguage;
|
|
24
24
|
//# sourceMappingURL=siLanguage.js.map
|