@webex/plugin-meetings 3.0.0-next.17 → 3.0.0-next.19
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/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +28 -19
- package/dist/meeting/index.js.map +1 -1
- package/dist/reachability/request.js +12 -10
- package/dist/reachability/request.js.map +1 -1
- package/dist/roap/request.js +2 -2
- package/dist/roap/request.js.map +1 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +22 -22
- package/src/meeting/index.ts +6 -2
- package/src/reachability/request.ts +15 -11
- package/src/roap/request.ts +2 -2
- package/test/unit/spec/meeting/index.js +20 -0
- package/test/unit/spec/reachability/request.js +15 -7
|
@@ -33,16 +33,18 @@ function ReachabilityRequest(webex) {
|
|
|
33
33
|
* @returns {Promise}
|
|
34
34
|
*/
|
|
35
35
|
(0, _defineProperty2.default)(this, "getClusters", function (ipVersion) {
|
|
36
|
-
return _this.webex.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
return _this.webex.internal.newMetrics.callDiagnosticLatencies.measureLatency(function () {
|
|
37
|
+
return _this.webex.request({
|
|
38
|
+
method: _constants.HTTP_VERBS.GET,
|
|
39
|
+
shouldRefreshAccessToken: false,
|
|
40
|
+
api: _constants.API.CALLIOPEDISCOVERY,
|
|
41
|
+
resource: _constants.RESOURCE.CLUSTERS,
|
|
42
|
+
qs: {
|
|
43
|
+
JCSupport: 1,
|
|
44
|
+
ipver: ipVersion
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}, 'internal.get.cluster.time').then(function (res) {
|
|
46
48
|
var _res$body = res.body,
|
|
47
49
|
clusters = _res$body.clusters,
|
|
48
50
|
joinCookie = _res$body.joinCookie;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","ReachabilityRequest","_createClass2","default","webex","_this","_classCallCheck2","_defineProperty2","ipVersion","request","method","HTTP_VERBS","GET","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","qs","JCSupport","ipver","then","res","_res$body","body","clusters","joinCookie","_keys","forEach","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","POST","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, RESOURCE, API, IP_VERSION} from '../constants';\n\nexport interface ClusterNode {\n isVideoMesh: boolean;\n udp: Array<string>;\n tcp: Array<string>;\n xtls: Array<string>;\n}\n\nexport type ClusterList = {\n [key: string]: ClusterNode;\n};\n\n/**\n * @class ReachabilityRequest\n */\nclass ReachabilityRequest {\n webex: any;\n\n /**\n * Creates an instance of ReachabilityRequest.\n * @param {object} webex\n * @memberof ReachabilityRequest\n */\n constructor(webex: object) {\n this.webex = webex;\n }\n\n /**\n * Gets the cluster information\n *\n * @param {IP_VERSION} ipVersion information about current ip network we're on\n * @returns {Promise}\n */\n getClusters = (ipVersion?: IP_VERSION): Promise<{clusters: ClusterList; joinCookie: any}> =>\n this.webex\n .request({\n
|
|
1
|
+
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","ReachabilityRequest","_createClass2","default","webex","_this","_classCallCheck2","_defineProperty2","ipVersion","internal","newMetrics","callDiagnosticLatencies","measureLatency","request","method","HTTP_VERBS","GET","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","qs","JCSupport","ipver","then","res","_res$body","body","clusters","joinCookie","_keys","forEach","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","POST","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, RESOURCE, API, IP_VERSION} from '../constants';\n\nexport interface ClusterNode {\n isVideoMesh: boolean;\n udp: Array<string>;\n tcp: Array<string>;\n xtls: Array<string>;\n}\n\nexport type ClusterList = {\n [key: string]: ClusterNode;\n};\n\n/**\n * @class ReachabilityRequest\n */\nclass ReachabilityRequest {\n webex: any;\n\n /**\n * Creates an instance of ReachabilityRequest.\n * @param {object} webex\n * @memberof ReachabilityRequest\n */\n constructor(webex: object) {\n this.webex = webex;\n }\n\n /**\n * Gets the cluster information\n *\n * @param {IP_VERSION} ipVersion information about current ip network we're on\n * @returns {Promise}\n */\n getClusters = (ipVersion?: IP_VERSION): Promise<{clusters: ClusterList; joinCookie: any}> =>\n this.webex.internal.newMetrics.callDiagnosticLatencies\n .measureLatency(\n () =>\n this.webex.request({\n method: HTTP_VERBS.GET,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.CLUSTERS,\n qs: {\n JCSupport: 1,\n ipver: ipVersion,\n },\n }),\n 'internal.get.cluster.time'\n )\n .then((res) => {\n const {clusters, joinCookie} = res.body;\n\n Object.keys(clusters).forEach((key) => {\n clusters[key].isVideoMesh = !!res.body.clusterClasses?.hybridMedia?.includes(key);\n });\n\n LoggerProxy.logger.log(\n `Reachability:request#getClusters --> get clusters (ipver=${ipVersion}) successful:${JSON.stringify(\n clusters\n )}`\n );\n\n return {\n clusters,\n joinCookie,\n };\n });\n\n /**\n * gets remote SDP For Clusters\n * @param {Object} localSDPList localSDPs for the cluster\n * @returns {Object}\n */\n remoteSDPForClusters = (localSDPList: object) =>\n this.webex\n .request({\n method: HTTP_VERBS.POST,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.REACHABILITY,\n body: {offers: localSDPList},\n })\n .then((res) => {\n LoggerProxy.logger.log(\n 'Reachability:request#remoteSDPForClusters --> Remote SDPs got succcessfully'\n );\n\n return res.body;\n });\n}\n\nexport default ReachabilityRequest;\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAaA;AACA;AACA;AAFA,IAGME,mBAAmB,oBAAAC,aAAA,CAAAC,OAAA;AAGvB;AACF;AACA;AACA;AACA;AACE,SAAAF,oBAAYG,KAAa,EAAE;EAAA,IAAAC,KAAA;EAAA,IAAAC,gBAAA,CAAAH,OAAA,QAAAF,mBAAA;EAAA,IAAAM,gBAAA,CAAAJ,OAAA;EAI3B;AACF;AACA;AACA;AACA;AACA;EALE,IAAAI,gBAAA,CAAAJ,OAAA,uBAMc,UAACK,SAAsB;IAAA,OACnCH,KAAI,CAACD,KAAK,CAACK,QAAQ,CAACC,UAAU,CAACC,uBAAuB,CACnDC,cAAc,CACb;MAAA,OACEP,KAAI,CAACD,KAAK,CAACS,OAAO,CAAC;QACjBC,MAAM,EAAEC,qBAAU,CAACC,GAAG;QACtBC,wBAAwB,EAAE,KAAK;QAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;QAC1BC,QAAQ,EAAEC,mBAAQ,CAACC,QAAQ;QAC3BC,EAAE,EAAE;UACFC,SAAS,EAAE,CAAC;UACZC,KAAK,EAAElB;QACT;MACF,CAAC,CAAC;IAAA,GACJ,2BACF,CAAC,CACAmB,IAAI,CAAC,UAACC,GAAG,EAAK;MACb,IAAAC,SAAA,GAA+BD,GAAG,CAACE,IAAI;QAAhCC,QAAQ,GAAAF,SAAA,CAARE,QAAQ;QAAEC,UAAU,GAAAH,SAAA,CAAVG,UAAU;MAE3B,IAAAC,KAAA,CAAA9B,OAAA,EAAY4B,QAAQ,CAAC,CAACG,OAAO,CAAC,UAACC,GAAG,EAAK;QAAA,IAAAC,qBAAA,EAAAC,sBAAA;QACrCN,QAAQ,CAACI,GAAG,CAAC,CAACG,WAAW,GAAG,CAAC,GAAAF,qBAAA,GAACR,GAAG,CAACE,IAAI,CAACS,cAAc,cAAAH,qBAAA,gBAAAC,sBAAA,GAAvBD,qBAAA,CAAyBI,WAAW,cAAAH,sBAAA,eAApCA,sBAAA,CAAsCI,QAAQ,CAACN,GAAG,CAAC;MACnF,CAAC,CAAC;MAEFO,oBAAW,CAACC,MAAM,CAACC,GAAG,6DAAAC,MAAA,CACwCrC,SAAS,mBAAAqC,MAAA,CAAgB,IAAAC,UAAA,CAAA3C,OAAA,EACnF4B,QACF,CAAC,CACH,CAAC;MAED,OAAO;QACLA,QAAQ,EAARA,QAAQ;QACRC,UAAU,EAAVA;MACF,CAAC;IACH,CAAC,CAAC;EAAA;EAEN;AACF;AACA;AACA;AACA;EAJE,IAAAzB,gBAAA,CAAAJ,OAAA,gCAKuB,UAAC4C,YAAoB;IAAA,OAC1C1C,KAAI,CAACD,KAAK,CACPS,OAAO,CAAC;MACPC,MAAM,EAAEC,qBAAU,CAACiC,IAAI;MACvB/B,wBAAwB,EAAE,KAAK;MAC/BC,GAAG,EAAEC,cAAG,CAACC,iBAAiB;MAC1BC,QAAQ,EAAEC,mBAAQ,CAAC2B,YAAY;MAC/BnB,IAAI,EAAE;QAACoB,MAAM,EAAEH;MAAY;IAC7B,CAAC,CAAC,CACDpB,IAAI,CAAC,UAACC,GAAG,EAAK;MACbc,oBAAW,CAACC,MAAM,CAACC,GAAG,CACpB,6EACF,CAAC;MAED,OAAOhB,GAAG,CAACE,IAAI;IACjB,CAAC,CAAC;EAAA;EAhEJ,IAAI,CAAC1B,KAAK,GAAGA,KAAK;AACpB,CAAC;AAAA,IAAA+C,QAAA,GAAAC,OAAA,CAAAjD,OAAA,GAkEYF,mBAAmB"}
|
package/dist/roap/request.js
CHANGED
|
@@ -173,8 +173,8 @@ var RoapRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin
|
|
|
173
173
|
rawError: err
|
|
174
174
|
}
|
|
175
175
|
});
|
|
176
|
-
_loggerProxy.default.logger.error("Roap:request#sendRoap --> Error:"
|
|
177
|
-
_loggerProxy.default.logger.error("Roap:request#sendRoapRequest -->
|
|
176
|
+
_loggerProxy.default.logger.error("Roap:request#sendRoap --> Error:", err);
|
|
177
|
+
_loggerProxy.default.logger.error("Roap:request#sendRoapRequest --> roapMessage that caused error:".concat((0, _stringify.default)(roapMessage, null, 2), " + '\\n mediaId:'").concat(options.mediaId));
|
|
178
178
|
throw err;
|
|
179
179
|
}));
|
|
180
180
|
case 13:
|
package/dist/roap/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","RoapRequest","exports","_StatelessWebexPlugin","_inherits2","_super","_classCallCheck2","_createClass2","key","value","_attachReachabilityData","_asyncToGenerator2","_regenerator","mark","_callee","localSdp","joinCookie","reachabilityResult","joinCookieRaw","wrap","_callee$","_context","prev","next","webex","meetings","reachability","getReachabilityResults","sent","_keys","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","JSON","parse","LoggerProxy","logger","error","concat","abrupt","stop","attachReachabilityData","_x","_sendRoap","_callee2","options","_this","roapMessage","locusSelfUrl","mediaId","meetingId","locusMediaRequest","ipVersion","_yield$this$attachRea","localSdpWithReachabilityData","_callee2$","_context2","info","warn","_promise","reject","Error","messageType","seq","internal","newMetrics","submitClientEvent","name","send","type","selfUrl","then","res","mediaConnections","body","debug","_stringify","statusCode","locus","roapSeq","err","rawError","sendRoap","_x2","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {IP_VERSION, REACHABILITY} from '../constants';\nimport {LocusMediaRequest} from '../meeting/locusMediaRequest';\n\n/**\n * @class RoapRequest\n */\nexport default class RoapRequest extends StatelessWebexPlugin {\n /**\n * Returns reachability data.\n * @param {Object} localSdp\n * @returns {Object}\n */\n async attachReachabilityData(localSdp) {\n let joinCookie;\n\n // @ts-ignore\n const reachabilityResult = await this.webex.meetings.reachability.getReachabilityResults();\n\n if (reachabilityResult && Object.keys(reachabilityResult).length) {\n localSdp.reachability = reachabilityResult;\n }\n\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n joinCookie = JSON.parse(joinCookieRaw);\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return {localSdp, joinCookie};\n }\n\n /**\n * Sends a ROAP message\n * @param {Object} options\n * @param {Object} options.roapMessage\n * @param {String} options.locusSelfUrl\n * @param {String} options.mediaId\n * @param {String} options.correlationId\n * @param {String} options.meetingId\n * @param {IP_VERSION} options.ipVersion only required for offers\n * @returns {Promise} returns the response/failure of the request\n */\n async sendRoap(options: {\n roapMessage: any;\n locusSelfUrl: string;\n mediaId: string;\n meetingId: string;\n ipVersion?: IP_VERSION;\n locusMediaRequest?: LocusMediaRequest;\n }) {\n const {roapMessage, locusSelfUrl, mediaId, meetingId, locusMediaRequest, ipVersion} = options;\n\n if (!mediaId) {\n LoggerProxy.logger.info('Roap:request#sendRoap --> sending empty mediaID');\n }\n\n if (!locusMediaRequest) {\n LoggerProxy.logger.warn(\n 'Roap:request#sendRoap --> locusMediaRequest unavailable, not sending roap'\n );\n\n return Promise.reject(new Error('sendRoap called when locusMediaRequest is undefined'));\n }\n const {localSdp: localSdpWithReachabilityData, joinCookie} = await this.attachReachabilityData({\n roapMessage,\n });\n\n LoggerProxy.logger.info(\n `Roap:request#sendRoap --> ${locusSelfUrl} \\n ${roapMessage.messageType} \\n seq:${roapMessage.seq}`\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {\n meetingId,\n },\n });\n\n return locusMediaRequest\n .send({\n type: 'RoapMessage',\n selfUrl: locusSelfUrl,\n joinCookie,\n mediaId,\n roapMessage,\n reachability: localSdpWithReachabilityData.reachability,\n ipVersion,\n })\n .then((res) => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId,\n },\n });\n // always it will be the first mediaConnection Object\n const mediaConnections =\n res.body.mediaConnections &&\n res.body.mediaConnections.length > 0 &&\n res.body.mediaConnections[0];\n\n LoggerProxy.logger.debug(\n `Roap:request#sendRoap --> response:${JSON.stringify(\n mediaConnections,\n null,\n 2\n )}'\\n StatusCode:'${res.statusCode}`\n );\n const {locus} = res.body;\n\n locus.roapSeq = options.roapMessage.seq;\n\n return {\n locus,\n ...(mediaConnections && {mediaConnections: res.body.mediaConnections}),\n };\n })\n .catch((err) => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId,\n rawError: err,\n },\n });\n LoggerProxy.logger.error(`Roap:request#sendRoap --> Error:${JSON.stringify(err, null, 2)}`);\n LoggerProxy.logger.error(\n `Roap:request#sendRoapRequest --> errorBody:${JSON.stringify(\n roapMessage,\n null,\n 2\n )} + '\\\\n mediaId:'${options.mediaId}`\n );\n throw err;\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_loggerProxy","_interopRequireDefault","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","RoapRequest","exports","_StatelessWebexPlugin","_inherits2","_super","_classCallCheck2","_createClass2","key","value","_attachReachabilityData","_asyncToGenerator2","_regenerator","mark","_callee","localSdp","joinCookie","reachabilityResult","joinCookieRaw","wrap","_callee$","_context","prev","next","webex","meetings","reachability","getReachabilityResults","sent","_keys","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","JSON","parse","LoggerProxy","logger","error","concat","abrupt","stop","attachReachabilityData","_x","_sendRoap","_callee2","options","_this","roapMessage","locusSelfUrl","mediaId","meetingId","locusMediaRequest","ipVersion","_yield$this$attachRea","localSdpWithReachabilityData","_callee2$","_context2","info","warn","_promise","reject","Error","messageType","seq","internal","newMetrics","submitClientEvent","name","send","type","selfUrl","then","res","mediaConnections","body","debug","_stringify","statusCode","locus","roapSeq","err","rawError","sendRoap","_x2","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {IP_VERSION, REACHABILITY} from '../constants';\nimport {LocusMediaRequest} from '../meeting/locusMediaRequest';\n\n/**\n * @class RoapRequest\n */\nexport default class RoapRequest extends StatelessWebexPlugin {\n /**\n * Returns reachability data.\n * @param {Object} localSdp\n * @returns {Object}\n */\n async attachReachabilityData(localSdp) {\n let joinCookie;\n\n // @ts-ignore\n const reachabilityResult = await this.webex.meetings.reachability.getReachabilityResults();\n\n if (reachabilityResult && Object.keys(reachabilityResult).length) {\n localSdp.reachability = reachabilityResult;\n }\n\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n joinCookie = JSON.parse(joinCookieRaw);\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return {localSdp, joinCookie};\n }\n\n /**\n * Sends a ROAP message\n * @param {Object} options\n * @param {Object} options.roapMessage\n * @param {String} options.locusSelfUrl\n * @param {String} options.mediaId\n * @param {String} options.correlationId\n * @param {String} options.meetingId\n * @param {IP_VERSION} options.ipVersion only required for offers\n * @returns {Promise} returns the response/failure of the request\n */\n async sendRoap(options: {\n roapMessage: any;\n locusSelfUrl: string;\n mediaId: string;\n meetingId: string;\n ipVersion?: IP_VERSION;\n locusMediaRequest?: LocusMediaRequest;\n }) {\n const {roapMessage, locusSelfUrl, mediaId, meetingId, locusMediaRequest, ipVersion} = options;\n\n if (!mediaId) {\n LoggerProxy.logger.info('Roap:request#sendRoap --> sending empty mediaID');\n }\n\n if (!locusMediaRequest) {\n LoggerProxy.logger.warn(\n 'Roap:request#sendRoap --> locusMediaRequest unavailable, not sending roap'\n );\n\n return Promise.reject(new Error('sendRoap called when locusMediaRequest is undefined'));\n }\n const {localSdp: localSdpWithReachabilityData, joinCookie} = await this.attachReachabilityData({\n roapMessage,\n });\n\n LoggerProxy.logger.info(\n `Roap:request#sendRoap --> ${locusSelfUrl} \\n ${roapMessage.messageType} \\n seq:${roapMessage.seq}`\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {\n meetingId,\n },\n });\n\n return locusMediaRequest\n .send({\n type: 'RoapMessage',\n selfUrl: locusSelfUrl,\n joinCookie,\n mediaId,\n roapMessage,\n reachability: localSdpWithReachabilityData.reachability,\n ipVersion,\n })\n .then((res) => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId,\n },\n });\n // always it will be the first mediaConnection Object\n const mediaConnections =\n res.body.mediaConnections &&\n res.body.mediaConnections.length > 0 &&\n res.body.mediaConnections[0];\n\n LoggerProxy.logger.debug(\n `Roap:request#sendRoap --> response:${JSON.stringify(\n mediaConnections,\n null,\n 2\n )}'\\n StatusCode:'${res.statusCode}`\n );\n const {locus} = res.body;\n\n locus.roapSeq = options.roapMessage.seq;\n\n return {\n locus,\n ...(mediaConnections && {mediaConnections: res.body.mediaConnections}),\n };\n })\n .catch((err) => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId,\n rawError: err,\n },\n });\n LoggerProxy.logger.error(`Roap:request#sendRoap --> Error:`, err);\n LoggerProxy.logger.error(\n `Roap:request#sendRoapRequest --> roapMessage that caused error:${JSON.stringify(\n roapMessage,\n null,\n 2\n )} + '\\\\n mediaId:'${options.mediaId}`\n );\n throw err;\n });\n }\n}\n"],"mappings":"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"}
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.0.0-next.
|
|
65
|
+
version: "3.0.0-next.19"
|
|
66
66
|
});
|
|
67
67
|
var _default = exports.default = Webinar;
|
|
68
68
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
44
44
|
"@webex/jest-config-legacy": "0.0.0",
|
|
45
45
|
"@webex/legacy-tools": "0.0.0",
|
|
46
|
-
"@webex/plugin-meetings": "3.0.0-next.
|
|
47
|
-
"@webex/plugin-rooms": "3.0.0-next.
|
|
48
|
-
"@webex/test-helper-chai": "3.0.0-next.
|
|
49
|
-
"@webex/test-helper-mocha": "3.0.0-next.
|
|
50
|
-
"@webex/test-helper-mock-webex": "3.0.0-next.
|
|
51
|
-
"@webex/test-helper-retry": "3.0.0-next.
|
|
52
|
-
"@webex/test-helper-test-users": "3.0.0-next.
|
|
46
|
+
"@webex/plugin-meetings": "3.0.0-next.19",
|
|
47
|
+
"@webex/plugin-rooms": "3.0.0-next.13",
|
|
48
|
+
"@webex/test-helper-chai": "3.0.0-next.11",
|
|
49
|
+
"@webex/test-helper-mocha": "3.0.0-next.11",
|
|
50
|
+
"@webex/test-helper-mock-webex": "3.0.0-next.11",
|
|
51
|
+
"@webex/test-helper-retry": "3.0.0-next.11",
|
|
52
|
+
"@webex/test-helper-test-users": "3.0.0-next.11",
|
|
53
53
|
"chai": "^4.3.4",
|
|
54
54
|
"chai-as-promised": "^7.1.1",
|
|
55
55
|
"eslint": "^8.24.0",
|
|
@@ -61,20 +61,20 @@
|
|
|
61
61
|
"typescript": "^4.7.4"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@webex/common": "3.0.0-next.
|
|
65
|
-
"@webex/internal-media-core": "2.3.
|
|
66
|
-
"@webex/internal-plugin-conversation": "3.0.0-next.
|
|
67
|
-
"@webex/internal-plugin-device": "3.0.0-next.
|
|
68
|
-
"@webex/internal-plugin-llm": "3.0.0-next.
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.0.0-next.
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.0.0-next.
|
|
71
|
-
"@webex/internal-plugin-support": "3.0.0-next.
|
|
72
|
-
"@webex/internal-plugin-user": "3.0.0-next.
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.0.0-next.
|
|
74
|
-
"@webex/media-helpers": "3.0.1-next.
|
|
75
|
-
"@webex/plugin-people": "3.0.0-next.
|
|
76
|
-
"@webex/plugin-rooms": "3.0.0-next.
|
|
77
|
-
"@webex/webex-core": "3.0.0-next.
|
|
64
|
+
"@webex/common": "3.0.0-next.11",
|
|
65
|
+
"@webex/internal-media-core": "2.3.3",
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.0.0-next.13",
|
|
67
|
+
"@webex/internal-plugin-device": "3.0.0-next.11",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.0.0-next.13",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.0.0-next.13",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.0.0-next.11",
|
|
71
|
+
"@webex/internal-plugin-support": "3.0.0-next.13",
|
|
72
|
+
"@webex/internal-plugin-user": "3.0.0-next.11",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.0.0-next.19",
|
|
74
|
+
"@webex/media-helpers": "3.0.1-next.12",
|
|
75
|
+
"@webex/plugin-people": "3.0.0-next.13",
|
|
76
|
+
"@webex/plugin-rooms": "3.0.0-next.13",
|
|
77
|
+
"@webex/webex-core": "3.0.0-next.11",
|
|
78
78
|
"ampersand-collection": "^2.0.2",
|
|
79
79
|
"bowser": "^2.11.0",
|
|
80
80
|
"btoa": "^1.2.1",
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"//": [
|
|
92
92
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
93
93
|
],
|
|
94
|
-
"version": "3.0.0-next.
|
|
94
|
+
"version": "3.0.0-next.19"
|
|
95
95
|
}
|
package/src/meeting/index.ts
CHANGED
|
@@ -5707,7 +5707,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
5707
5707
|
logText: `${LOG_HEADER} Roap Offer`,
|
|
5708
5708
|
}
|
|
5709
5709
|
).catch(() => {
|
|
5710
|
-
this.deferSDPAnswer.reject();
|
|
5710
|
+
this.deferSDPAnswer.reject(new Error('failed to send ROAP SDP offer'));
|
|
5711
5711
|
clearTimeout(this.sdpResponseTimer);
|
|
5712
5712
|
this.sdpResponseTimer = undefined;
|
|
5713
5713
|
});
|
|
@@ -6751,7 +6751,11 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
6751
6751
|
turnServerInfo
|
|
6752
6752
|
);
|
|
6753
6753
|
|
|
6754
|
-
|
|
6754
|
+
if (audioEnabled || videoEnabled) {
|
|
6755
|
+
await Meeting.handleDeviceLogging();
|
|
6756
|
+
} else {
|
|
6757
|
+
LoggerProxy.logger.info(`${LOG_HEADER} device logging not required`);
|
|
6758
|
+
}
|
|
6755
6759
|
|
|
6756
6760
|
if (this.mediaProperties.hasLocalShareStream()) {
|
|
6757
6761
|
await this.enqueueScreenShareFloorRequest();
|
|
@@ -34,17 +34,21 @@ class ReachabilityRequest {
|
|
|
34
34
|
* @returns {Promise}
|
|
35
35
|
*/
|
|
36
36
|
getClusters = (ipVersion?: IP_VERSION): Promise<{clusters: ClusterList; joinCookie: any}> =>
|
|
37
|
-
this.webex
|
|
38
|
-
.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
this.webex.internal.newMetrics.callDiagnosticLatencies
|
|
38
|
+
.measureLatency(
|
|
39
|
+
() =>
|
|
40
|
+
this.webex.request({
|
|
41
|
+
method: HTTP_VERBS.GET,
|
|
42
|
+
shouldRefreshAccessToken: false,
|
|
43
|
+
api: API.CALLIOPEDISCOVERY,
|
|
44
|
+
resource: RESOURCE.CLUSTERS,
|
|
45
|
+
qs: {
|
|
46
|
+
JCSupport: 1,
|
|
47
|
+
ipver: ipVersion,
|
|
48
|
+
},
|
|
49
|
+
}),
|
|
50
|
+
'internal.get.cluster.time'
|
|
51
|
+
)
|
|
48
52
|
.then((res) => {
|
|
49
53
|
const {clusters, joinCookie} = res.body;
|
|
50
54
|
|
package/src/roap/request.ts
CHANGED
|
@@ -139,9 +139,9 @@ export default class RoapRequest extends StatelessWebexPlugin {
|
|
|
139
139
|
rawError: err,
|
|
140
140
|
},
|
|
141
141
|
});
|
|
142
|
-
LoggerProxy.logger.error(`Roap:request#sendRoap --> Error
|
|
142
|
+
LoggerProxy.logger.error(`Roap:request#sendRoap --> Error:`, err);
|
|
143
143
|
LoggerProxy.logger.error(
|
|
144
|
-
`Roap:request#sendRoapRequest -->
|
|
144
|
+
`Roap:request#sendRoapRequest --> roapMessage that caused error:${JSON.stringify(
|
|
145
145
|
roapMessage,
|
|
146
146
|
null,
|
|
147
147
|
2
|
|
@@ -3418,6 +3418,7 @@ describe('plugin-meetings', () => {
|
|
|
3418
3418
|
});
|
|
3419
3419
|
|
|
3420
3420
|
it('addMedia() works correctly when media is enabled with streams to publish', async () => {
|
|
3421
|
+
const handleDeviceLoggingSpy = sinon.spy(Meeting, 'handleDeviceLogging');
|
|
3421
3422
|
await meeting.addMedia({localStreams: {microphone: fakeMicrophoneStream}});
|
|
3422
3423
|
await simulateRoapOffer();
|
|
3423
3424
|
await simulateRoapOk();
|
|
@@ -3448,9 +3449,12 @@ describe('plugin-meetings', () => {
|
|
|
3448
3449
|
|
|
3449
3450
|
// and that these were the only /media requests that were sent
|
|
3450
3451
|
assert.calledTwice(locusMediaRequestStub);
|
|
3452
|
+
|
|
3453
|
+
assert.calledOnce(handleDeviceLoggingSpy);
|
|
3451
3454
|
});
|
|
3452
3455
|
|
|
3453
3456
|
it('addMedia() works correctly when media is enabled with streams to publish and stream is user muted', async () => {
|
|
3457
|
+
const handleDeviceLoggingSpy = sinon.spy(Meeting, 'handleDeviceLogging');
|
|
3454
3458
|
fakeMicrophoneStream.userMuted = true;
|
|
3455
3459
|
|
|
3456
3460
|
await meeting.addMedia({localStreams: {microphone: fakeMicrophoneStream}});
|
|
@@ -3482,6 +3486,7 @@ describe('plugin-meetings', () => {
|
|
|
3482
3486
|
|
|
3483
3487
|
// and that these were the only /media requests that were sent
|
|
3484
3488
|
assert.calledTwice(locusMediaRequestStub);
|
|
3489
|
+
assert.calledOnce(handleDeviceLoggingSpy);
|
|
3485
3490
|
});
|
|
3486
3491
|
|
|
3487
3492
|
it('addMedia() works correctly when media is enabled with tracks to publish and track is ended', async () => {
|
|
@@ -3553,6 +3558,7 @@ describe('plugin-meetings', () => {
|
|
|
3553
3558
|
});
|
|
3554
3559
|
|
|
3555
3560
|
it('addMedia() works correctly when media is disabled with streams to publish', async () => {
|
|
3561
|
+
const handleDeviceLoggingSpy = sinon.spy(Meeting, 'handleDeviceLogging');
|
|
3556
3562
|
await meeting.addMedia({
|
|
3557
3563
|
localStreams: {microphone: fakeMicrophoneStream},
|
|
3558
3564
|
audioEnabled: false,
|
|
@@ -3586,8 +3592,22 @@ describe('plugin-meetings', () => {
|
|
|
3586
3592
|
|
|
3587
3593
|
// and that these were the only /media requests that were sent
|
|
3588
3594
|
assert.calledTwice(locusMediaRequestStub);
|
|
3595
|
+
assert.calledOnce(handleDeviceLoggingSpy);
|
|
3589
3596
|
});
|
|
3590
3597
|
|
|
3598
|
+
it('handleDeviceLogging not called when media is disabled', async () => {
|
|
3599
|
+
const handleDeviceLoggingSpy = sinon.spy(Meeting, 'handleDeviceLogging');
|
|
3600
|
+
await meeting.addMedia({
|
|
3601
|
+
localStreams: {microphone: fakeMicrophoneStream},
|
|
3602
|
+
audioEnabled: false,
|
|
3603
|
+
videoEnabled: false
|
|
3604
|
+
});
|
|
3605
|
+
await simulateRoapOffer();
|
|
3606
|
+
await simulateRoapOk();
|
|
3607
|
+
|
|
3608
|
+
assert.notCalled(handleDeviceLoggingSpy);
|
|
3609
|
+
})
|
|
3610
|
+
|
|
3591
3611
|
it('addMedia() works correctly when media is disabled with no streams to publish', async () => {
|
|
3592
3612
|
await meeting.addMedia({audioEnabled: false});
|
|
3593
3613
|
await simulateRoapOffer();
|
|
@@ -4,6 +4,7 @@ import MockWebex from '@webex/test-helper-mock-webex';
|
|
|
4
4
|
import Meetings from '@webex/plugin-meetings';
|
|
5
5
|
import ReachabilityRequest from '@webex/plugin-meetings/src/reachability/request';
|
|
6
6
|
import {IP_VERSION} from '@webex/plugin-meetings/src/constants';
|
|
7
|
+
import {NewMetrics} from '@webex/internal-plugin-metrics';
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
describe('plugin-meetings/reachability', () => {
|
|
@@ -14,6 +15,7 @@ describe('plugin-meetings/reachability', () => {
|
|
|
14
15
|
webex = new MockWebex({
|
|
15
16
|
children: {
|
|
16
17
|
meetings: Meetings,
|
|
18
|
+
newMetrics: NewMetrics
|
|
17
19
|
},
|
|
18
20
|
});
|
|
19
21
|
|
|
@@ -22,19 +24,25 @@ describe('plugin-meetings/reachability', () => {
|
|
|
22
24
|
regionCode: 'WEST-COAST',
|
|
23
25
|
};
|
|
24
26
|
|
|
25
|
-
webex.internal = {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
waitForCatalog: sinon.mock().returns(Promise.resolve({})),
|
|
29
|
-
},
|
|
27
|
+
webex.internal.services = {
|
|
28
|
+
get: sinon.mock().returns('locusUrl'),
|
|
29
|
+
waitForCatalog: sinon.mock().returns(Promise.resolve({})),
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
|
|
33
32
|
reachabilityRequest = new ReachabilityRequest(webex);
|
|
34
33
|
|
|
35
34
|
});
|
|
36
35
|
|
|
37
36
|
describe('#getClusters', () => {
|
|
37
|
+
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
sinon.spy(webex.internal.newMetrics.callDiagnosticLatencies, 'measureLatency');
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
afterEach(() => {
|
|
43
|
+
sinon.restore();
|
|
44
|
+
});
|
|
45
|
+
|
|
38
46
|
it('sends a GET request with the correct params', async () => {
|
|
39
47
|
webex.request = sinon.mock().returns(Promise.resolve({
|
|
40
48
|
body: {
|
|
@@ -49,7 +57,6 @@ describe('plugin-meetings/reachability', () => {
|
|
|
49
57
|
}));
|
|
50
58
|
|
|
51
59
|
const res = await reachabilityRequest.getClusters(IP_VERSION.only_ipv4);
|
|
52
|
-
|
|
53
60
|
const requestParams = webex.request.getCall(0).args[0];
|
|
54
61
|
|
|
55
62
|
assert.equal(requestParams.method, 'GET');
|
|
@@ -63,6 +70,7 @@ describe('plugin-meetings/reachability', () => {
|
|
|
63
70
|
});
|
|
64
71
|
assert.deepEqual(res.clusters.clusterId, {udp: "testUDP", isVideoMesh: true})
|
|
65
72
|
assert.deepEqual(res.joinCookie, {anycastEntryPoint: "aws-eu-west-1"})
|
|
73
|
+
assert.calledOnceWithExactly(webex.internal.newMetrics.callDiagnosticLatencies.measureLatency, sinon.match.func, 'internal.get.cluster.time');
|
|
66
74
|
});
|
|
67
75
|
});
|
|
68
76
|
});
|