@webex/plugin-meetings 3.12.0-next.92 → 3.12.0-next.93

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.
Files changed (34) hide show
  1. package/dist/aiEnableRequest/index.js +1 -1
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/common/errors/webex-errors.js +47 -5
  5. package/dist/common/errors/webex-errors.js.map +1 -1
  6. package/dist/interpretation/index.js +1 -1
  7. package/dist/interpretation/siLanguage.js +1 -1
  8. package/dist/media/MediaConnectionAwaiter.js +15 -2
  9. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  10. package/dist/media/index.js +5 -1
  11. package/dist/media/index.js.map +1 -1
  12. package/dist/meeting/index.js +458 -365
  13. package/dist/meeting/index.js.map +1 -1
  14. package/dist/reachability/clusterReachability.js.map +1 -1
  15. package/dist/reachability/index.js +111 -70
  16. package/dist/reachability/index.js.map +1 -1
  17. package/dist/types/common/errors/webex-errors.d.ts +31 -2
  18. package/dist/types/media/MediaConnectionAwaiter.d.ts +10 -1
  19. package/dist/types/meeting/index.d.ts +18 -3
  20. package/dist/types/reachability/clusterReachability.d.ts +3 -3
  21. package/dist/types/reachability/index.d.ts +9 -2
  22. package/dist/webinar/index.js +1 -1
  23. package/package.json +3 -3
  24. package/src/common/errors/webex-errors.ts +47 -3
  25. package/src/media/MediaConnectionAwaiter.ts +21 -4
  26. package/src/media/index.ts +7 -1
  27. package/src/meeting/index.ts +100 -27
  28. package/src/reachability/clusterReachability.ts +3 -2
  29. package/src/reachability/index.ts +28 -1
  30. package/test/unit/spec/common/errors/webex-errors.ts +62 -0
  31. package/test/unit/spec/media/MediaConnectionAwaiter.ts +55 -0
  32. package/test/unit/spec/media/index.ts +61 -0
  33. package/test/unit/spec/meeting/index.js +290 -8
  34. package/test/unit/spec/reachability/index.ts +69 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_eventsScope","_interopRequireDefault","require","_loggerProxy","_reachability","_reachabilityPeerConnection","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","_callSuper","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","apply","Boolean","prototype","valueOf","Events","exports","resultReady","clientMediaIpsUpdated","natTypeUpdated","ClusterReachability","_EventsScope","clusterInfo","_this","enablePerUdpUrlReachability","arguments","undefined","_classCallCheck2","_defineProperty2","_set","isVideoMesh","initializePerUdpUrlReachabilityCheck","initializeSingleReachabilityPeerConnection","_inherits2","_createClass2","key","reachabilityPeerConnection","ReachabilityPeerConnection","setupReachabilityPeerConnectionEventListeners","_this2","LoggerProxy","logger","log","concat","udp","forEach","udpUrl","singleUdpClusterInfo","tcp","xtls","rpc","reachabilityPeerConnectionsForUdp","push","tcpTlsClusterInfo","_this3","isUdpPerUrl","on","ReachabilityPeerConnectionEvents","data","protocol","udpResultEmitted","result","emit","file","function","reachedSubnets","subnets","subnet","add","getResult","_this$reachabilityPee","_this$reachabilityPee2","_iterator","_step","rpcResult","err","mainResult","_start","_asyncToGenerator2","_regenerator","mark","_callee","startPromises","wrap","_context","prev","start","_promise","all","abrupt","stop","abort","_this$reachabilityPee3","EventsScope"],"sources":["clusterReachability.ts"],"sourcesContent":["import {ClusterNode} from './request';\nimport EventsScope from '../common/events/events-scope';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {Enum} from '../constants';\nimport {\n ClusterReachabilityResult,\n NatType,\n ReachabilityPeerConnectionEvents,\n} from './reachability.types';\nimport {ReachabilityPeerConnection} from './reachabilityPeerConnection';\n\n// data for the Events.resultReady event\nexport type ResultEventData = {\n protocol: 'udp' | 'tcp' | 'xtls';\n result: 'reachable' | 'unreachable' | 'untested';\n latencyInMilliseconds: number; // amount of time it took to get the ICE candidate\n clientMediaIPs?: string[];\n};\n\n// data for the Events.clientMediaIpsUpdated event\nexport type ClientMediaIpsUpdatedEventData = {\n protocol: 'udp' | 'tcp' | 'xtls';\n clientMediaIPs: string[];\n};\n\nexport type NatTypeUpdatedEventData = {\n natType: NatType;\n};\n\nexport const Events = {\n resultReady: 'resultReady', // emitted when a cluster is reached successfully using specific protocol\n clientMediaIpsUpdated: 'clientMediaIpsUpdated', // emitted when more public IPs are found after resultReady was already sent for a given protocol\n natTypeUpdated: 'natTypeUpdated', // emitted when NAT type is determined\n} as const;\n\nexport type Events = Enum<typeof Events>;\n\n/**\n * A class that handles reachability checks for a single cluster.\n * Creates and orchestrates ReachabilityPeerConnection instance(s).\n * Listens to events and emits them to consumers.\n *\n * When enablePerUdpUrlReachability is true:\n * - Creates one ReachabilityPeerConnection for each UDP URL\n * - Creates one ReachabilityPeerConnection for all TCP and TLS URLs together\n * Otherwise:\n * - Creates a single ReachabilityPeerConnection for all URLs\n */\nexport class ClusterReachability extends EventsScope {\n private reachabilityPeerConnection: ReachabilityPeerConnection | null = null;\n private reachabilityPeerConnectionsForUdp: ReachabilityPeerConnection[] = [];\n\n public readonly isVideoMesh: boolean;\n public readonly name;\n public readonly reachedSubnets: Set<string> = new Set();\n\n private enablePerUdpUrlReachability: boolean;\n private udpResultEmitted = false;\n\n /**\n * Constructor for ClusterReachability\n * @param {string} name cluster name\n * @param {ClusterNode} clusterInfo information about the media cluster\n * @param {boolean} enablePerUdpUrlReachability whether to create separate peer connections per UDP URL\n */\n constructor(name: string, clusterInfo: ClusterNode, enablePerUdpUrlReachability = false) {\n super();\n this.name = name;\n this.isVideoMesh = clusterInfo.isVideoMesh;\n this.enablePerUdpUrlReachability = enablePerUdpUrlReachability;\n\n if (this.enablePerUdpUrlReachability) {\n this.initializePerUdpUrlReachabilityCheck(clusterInfo);\n } else {\n this.initializeSingleReachabilityPeerConnection(clusterInfo);\n }\n }\n\n /**\n * Initializes a single ReachabilityPeerConnection for all protocols\n * @param {ClusterNode} clusterInfo information about the media cluster\n * @returns {void}\n */\n private initializeSingleReachabilityPeerConnection(clusterInfo: ClusterNode) {\n this.reachabilityPeerConnection = new ReachabilityPeerConnection(this.name, clusterInfo);\n this.setupReachabilityPeerConnectionEventListeners(this.reachabilityPeerConnection);\n }\n\n /**\n * Initializes per-URL UDP reachability checks:\n * - One ReachabilityPeerConnection per UDP URL\n * - One ReachabilityPeerConnection for all TCP and TLS URLs together\n * @param {ClusterNode} clusterInfo information about the media cluster\n * @returns {void}\n */\n private initializePerUdpUrlReachabilityCheck(clusterInfo: ClusterNode) {\n LoggerProxy.logger.log(\n `ClusterReachability#initializePerUdpUrlReachabilityCheck --> cluster: ${this.name}, performing per-URL UDP reachability for ${clusterInfo.udp.length} URLs`\n );\n\n // Create one ReachabilityPeerConnection for each UDP URL\n clusterInfo.udp.forEach((udpUrl) => {\n const singleUdpClusterInfo: ClusterNode = {\n isVideoMesh: clusterInfo.isVideoMesh,\n udp: [udpUrl],\n tcp: [],\n xtls: [],\n };\n const rpc = new ReachabilityPeerConnection(this.name, singleUdpClusterInfo);\n this.setupReachabilityPeerConnectionEventListeners(rpc, true);\n this.reachabilityPeerConnectionsForUdp.push(rpc);\n });\n\n // Create one ReachabilityPeerConnection for all TCP and TLS URLs together\n if (clusterInfo.tcp.length > 0 || clusterInfo.xtls.length > 0) {\n const tcpTlsClusterInfo: ClusterNode = {\n isVideoMesh: clusterInfo.isVideoMesh,\n udp: [],\n tcp: clusterInfo.tcp,\n xtls: clusterInfo.xtls,\n };\n this.reachabilityPeerConnection = new ReachabilityPeerConnection(\n this.name,\n tcpTlsClusterInfo\n );\n this.setupReachabilityPeerConnectionEventListeners(this.reachabilityPeerConnection);\n }\n }\n\n /**\n * Sets up event listeners for a ReachabilityPeerConnection instance\n * @param {ReachabilityPeerConnection} rpc the ReachabilityPeerConnection instance\n * @param {boolean} isUdpPerUrl whether this is a per-URL UDP instance\n * @returns {void}\n */\n private setupReachabilityPeerConnectionEventListeners(\n rpc: ReachabilityPeerConnection,\n isUdpPerUrl = false\n ) {\n rpc.on(ReachabilityPeerConnectionEvents.resultReady, (data) => {\n // For per-URL UDP checks, only emit the first successful UDP result\n if (isUdpPerUrl && data.protocol === 'udp') {\n if (this.udpResultEmitted) {\n return;\n }\n if (data.result === 'reachable') {\n this.udpResultEmitted = true;\n }\n }\n\n this.emit(\n {\n file: 'clusterReachability',\n function: 'setupReachabilityPeerConnectionEventListeners',\n },\n Events.resultReady,\n data\n );\n });\n\n rpc.on(ReachabilityPeerConnectionEvents.clientMediaIpsUpdated, (data) => {\n this.emit(\n {\n file: 'clusterReachability',\n function: 'setupReachabilityPeerConnectionEventListeners',\n },\n Events.clientMediaIpsUpdated,\n data\n );\n });\n\n rpc.on(ReachabilityPeerConnectionEvents.natTypeUpdated, (data) => {\n this.emit(\n {\n file: 'clusterReachability',\n function: 'setupReachabilityPeerConnectionEventListeners',\n },\n Events.natTypeUpdated,\n data\n );\n });\n\n rpc.on(ReachabilityPeerConnectionEvents.reachedSubnets, (data) => {\n data.subnets.forEach((subnet: string) => {\n this.reachedSubnets.add(subnet);\n });\n });\n }\n\n /**\n * Gets the aggregated reachability result for this cluster.\n * @returns {ClusterReachabilityResult} reachability result for this cluster\n */\n getResult(): ClusterReachabilityResult {\n if (!this.enablePerUdpUrlReachability) {\n return (\n this.reachabilityPeerConnection?.getResult() ?? {\n udp: {result: 'untested'},\n tcp: {result: 'untested'},\n xtls: {result: 'untested'},\n }\n );\n }\n\n const result: ClusterReachabilityResult = {\n udp: {result: 'untested'},\n tcp: {result: 'untested'},\n xtls: {result: 'untested'},\n };\n\n // Get the first reachable UDP result from per-URL instances\n for (const rpc of this.reachabilityPeerConnectionsForUdp) {\n const rpcResult = rpc.getResult();\n if (rpcResult.udp.result === 'reachable') {\n result.udp = rpcResult.udp;\n break;\n }\n if (rpcResult.udp.result === 'unreachable' && result.udp.result === 'untested') {\n result.udp = rpcResult.udp;\n }\n }\n\n // Get TCP and TLS results from the main peer connection\n if (this.reachabilityPeerConnection) {\n const mainResult = this.reachabilityPeerConnection.getResult();\n result.tcp = mainResult.tcp;\n result.xtls = mainResult.xtls;\n }\n\n return result;\n }\n\n /**\n * Starts the process of doing UDP, TCP, and XTLS reachability checks on the media cluster.\n * @returns {Promise<ClusterReachabilityResult>}\n */\n async start(): Promise<ClusterReachabilityResult> {\n const startPromises: Promise<ClusterReachabilityResult>[] = [];\n\n this.reachabilityPeerConnectionsForUdp.forEach((rpc) => {\n startPromises.push(rpc.start());\n });\n\n if (this.reachabilityPeerConnection) {\n startPromises.push(this.reachabilityPeerConnection.start());\n }\n\n await Promise.all(startPromises);\n\n return this.getResult();\n }\n\n /**\n * Aborts the cluster reachability checks\n * @returns {void}\n */\n public abort() {\n this.reachabilityPeerConnectionsForUdp.forEach((rpc) => rpc.abort());\n this.reachabilityPeerConnection?.abort();\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_eventsScope","_interopRequireDefault","require","_loggerProxy","_reachability","_reachabilityPeerConnection","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","_callSuper","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","apply","Boolean","prototype","valueOf","Events","exports","resultReady","clientMediaIpsUpdated","natTypeUpdated","ClusterReachability","_EventsScope","clusterInfo","_this","enablePerUdpUrlReachability","arguments","undefined","_classCallCheck2","_defineProperty2","_set","isVideoMesh","initializePerUdpUrlReachabilityCheck","initializeSingleReachabilityPeerConnection","_inherits2","_createClass2","key","reachabilityPeerConnection","ReachabilityPeerConnection","setupReachabilityPeerConnectionEventListeners","_this2","LoggerProxy","logger","log","concat","udp","forEach","udpUrl","singleUdpClusterInfo","tcp","xtls","rpc","reachabilityPeerConnectionsForUdp","push","tcpTlsClusterInfo","_this3","isUdpPerUrl","on","ReachabilityPeerConnectionEvents","data","protocol","udpResultEmitted","result","emit","file","function","reachedSubnets","subnets","subnet","add","getResult","_this$reachabilityPee","_this$reachabilityPee2","_iterator","_step","rpcResult","err","mainResult","_start","_asyncToGenerator2","_regenerator","mark","_callee","startPromises","wrap","_context","prev","start","_promise","all","abrupt","stop","abort","_this$reachabilityPee3","EventsScope"],"sources":["clusterReachability.ts"],"sourcesContent":["import {ClusterNode} from './request';\nimport EventsScope from '../common/events/events-scope';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {Enum} from '../constants';\nimport {\n ClusterReachabilityResult,\n NatType,\n Protocol,\n ReachabilityPeerConnectionEvents,\n} from './reachability.types';\nimport {ReachabilityPeerConnection} from './reachabilityPeerConnection';\n\n// data for the Events.resultReady event\nexport type ResultEventData = {\n protocol: Protocol;\n result: 'reachable' | 'unreachable' | 'untested';\n latencyInMilliseconds: number; // amount of time it took to get the ICE candidate\n clientMediaIPs?: string[];\n};\n\n// data for the Events.clientMediaIpsUpdated event\nexport type ClientMediaIpsUpdatedEventData = {\n protocol: Protocol;\n clientMediaIPs: string[];\n};\n\nexport type NatTypeUpdatedEventData = {\n natType: NatType;\n};\n\nexport const Events = {\n resultReady: 'resultReady', // emitted when a cluster is reached successfully using specific protocol\n clientMediaIpsUpdated: 'clientMediaIpsUpdated', // emitted when more public IPs are found after resultReady was already sent for a given protocol\n natTypeUpdated: 'natTypeUpdated', // emitted when NAT type is determined\n} as const;\n\nexport type Events = Enum<typeof Events>;\n\n/**\n * A class that handles reachability checks for a single cluster.\n * Creates and orchestrates ReachabilityPeerConnection instance(s).\n * Listens to events and emits them to consumers.\n *\n * When enablePerUdpUrlReachability is true:\n * - Creates one ReachabilityPeerConnection for each UDP URL\n * - Creates one ReachabilityPeerConnection for all TCP and TLS URLs together\n * Otherwise:\n * - Creates a single ReachabilityPeerConnection for all URLs\n */\nexport class ClusterReachability extends EventsScope {\n private reachabilityPeerConnection: ReachabilityPeerConnection | null = null;\n private reachabilityPeerConnectionsForUdp: ReachabilityPeerConnection[] = [];\n\n public readonly isVideoMesh: boolean;\n public readonly name;\n public readonly reachedSubnets: Set<string> = new Set();\n\n private enablePerUdpUrlReachability: boolean;\n private udpResultEmitted = false;\n\n /**\n * Constructor for ClusterReachability\n * @param {string} name cluster name\n * @param {ClusterNode} clusterInfo information about the media cluster\n * @param {boolean} enablePerUdpUrlReachability whether to create separate peer connections per UDP URL\n */\n constructor(name: string, clusterInfo: ClusterNode, enablePerUdpUrlReachability = false) {\n super();\n this.name = name;\n this.isVideoMesh = clusterInfo.isVideoMesh;\n this.enablePerUdpUrlReachability = enablePerUdpUrlReachability;\n\n if (this.enablePerUdpUrlReachability) {\n this.initializePerUdpUrlReachabilityCheck(clusterInfo);\n } else {\n this.initializeSingleReachabilityPeerConnection(clusterInfo);\n }\n }\n\n /**\n * Initializes a single ReachabilityPeerConnection for all protocols\n * @param {ClusterNode} clusterInfo information about the media cluster\n * @returns {void}\n */\n private initializeSingleReachabilityPeerConnection(clusterInfo: ClusterNode) {\n this.reachabilityPeerConnection = new ReachabilityPeerConnection(this.name, clusterInfo);\n this.setupReachabilityPeerConnectionEventListeners(this.reachabilityPeerConnection);\n }\n\n /**\n * Initializes per-URL UDP reachability checks:\n * - One ReachabilityPeerConnection per UDP URL\n * - One ReachabilityPeerConnection for all TCP and TLS URLs together\n * @param {ClusterNode} clusterInfo information about the media cluster\n * @returns {void}\n */\n private initializePerUdpUrlReachabilityCheck(clusterInfo: ClusterNode) {\n LoggerProxy.logger.log(\n `ClusterReachability#initializePerUdpUrlReachabilityCheck --> cluster: ${this.name}, performing per-URL UDP reachability for ${clusterInfo.udp.length} URLs`\n );\n\n // Create one ReachabilityPeerConnection for each UDP URL\n clusterInfo.udp.forEach((udpUrl) => {\n const singleUdpClusterInfo: ClusterNode = {\n isVideoMesh: clusterInfo.isVideoMesh,\n udp: [udpUrl],\n tcp: [],\n xtls: [],\n };\n const rpc = new ReachabilityPeerConnection(this.name, singleUdpClusterInfo);\n this.setupReachabilityPeerConnectionEventListeners(rpc, true);\n this.reachabilityPeerConnectionsForUdp.push(rpc);\n });\n\n // Create one ReachabilityPeerConnection for all TCP and TLS URLs together\n if (clusterInfo.tcp.length > 0 || clusterInfo.xtls.length > 0) {\n const tcpTlsClusterInfo: ClusterNode = {\n isVideoMesh: clusterInfo.isVideoMesh,\n udp: [],\n tcp: clusterInfo.tcp,\n xtls: clusterInfo.xtls,\n };\n this.reachabilityPeerConnection = new ReachabilityPeerConnection(\n this.name,\n tcpTlsClusterInfo\n );\n this.setupReachabilityPeerConnectionEventListeners(this.reachabilityPeerConnection);\n }\n }\n\n /**\n * Sets up event listeners for a ReachabilityPeerConnection instance\n * @param {ReachabilityPeerConnection} rpc the ReachabilityPeerConnection instance\n * @param {boolean} isUdpPerUrl whether this is a per-URL UDP instance\n * @returns {void}\n */\n private setupReachabilityPeerConnectionEventListeners(\n rpc: ReachabilityPeerConnection,\n isUdpPerUrl = false\n ) {\n rpc.on(ReachabilityPeerConnectionEvents.resultReady, (data) => {\n // For per-URL UDP checks, only emit the first successful UDP result\n if (isUdpPerUrl && data.protocol === 'udp') {\n if (this.udpResultEmitted) {\n return;\n }\n if (data.result === 'reachable') {\n this.udpResultEmitted = true;\n }\n }\n\n this.emit(\n {\n file: 'clusterReachability',\n function: 'setupReachabilityPeerConnectionEventListeners',\n },\n Events.resultReady,\n data\n );\n });\n\n rpc.on(ReachabilityPeerConnectionEvents.clientMediaIpsUpdated, (data) => {\n this.emit(\n {\n file: 'clusterReachability',\n function: 'setupReachabilityPeerConnectionEventListeners',\n },\n Events.clientMediaIpsUpdated,\n data\n );\n });\n\n rpc.on(ReachabilityPeerConnectionEvents.natTypeUpdated, (data) => {\n this.emit(\n {\n file: 'clusterReachability',\n function: 'setupReachabilityPeerConnectionEventListeners',\n },\n Events.natTypeUpdated,\n data\n );\n });\n\n rpc.on(ReachabilityPeerConnectionEvents.reachedSubnets, (data) => {\n data.subnets.forEach((subnet: string) => {\n this.reachedSubnets.add(subnet);\n });\n });\n }\n\n /**\n * Gets the aggregated reachability result for this cluster.\n * @returns {ClusterReachabilityResult} reachability result for this cluster\n */\n getResult(): ClusterReachabilityResult {\n if (!this.enablePerUdpUrlReachability) {\n return (\n this.reachabilityPeerConnection?.getResult() ?? {\n udp: {result: 'untested'},\n tcp: {result: 'untested'},\n xtls: {result: 'untested'},\n }\n );\n }\n\n const result: ClusterReachabilityResult = {\n udp: {result: 'untested'},\n tcp: {result: 'untested'},\n xtls: {result: 'untested'},\n };\n\n // Get the first reachable UDP result from per-URL instances\n for (const rpc of this.reachabilityPeerConnectionsForUdp) {\n const rpcResult = rpc.getResult();\n if (rpcResult.udp.result === 'reachable') {\n result.udp = rpcResult.udp;\n break;\n }\n if (rpcResult.udp.result === 'unreachable' && result.udp.result === 'untested') {\n result.udp = rpcResult.udp;\n }\n }\n\n // Get TCP and TLS results from the main peer connection\n if (this.reachabilityPeerConnection) {\n const mainResult = this.reachabilityPeerConnection.getResult();\n result.tcp = mainResult.tcp;\n result.xtls = mainResult.xtls;\n }\n\n return result;\n }\n\n /**\n * Starts the process of doing UDP, TCP, and XTLS reachability checks on the media cluster.\n * @returns {Promise<ClusterReachabilityResult>}\n */\n async start(): Promise<ClusterReachabilityResult> {\n const startPromises: Promise<ClusterReachabilityResult>[] = [];\n\n this.reachabilityPeerConnectionsForUdp.forEach((rpc) => {\n startPromises.push(rpc.start());\n });\n\n if (this.reachabilityPeerConnection) {\n startPromises.push(this.reachabilityPeerConnection.start());\n }\n\n await Promise.all(startPromises);\n\n return this.getResult();\n }\n\n /**\n * Aborts the cluster reachability checks\n * @returns {void}\n */\n public abort() {\n this.reachabilityPeerConnectionsForUdp.forEach((rpc) => rpc.abort());\n this.reachabilityPeerConnection?.abort();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -722,6 +722,47 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
722
722
  }
723
723
  return isWebexMediaBackendUnreachable;
724
724
  }()
725
+ /**
726
+ * Checks if any cluster is reachable via the given protocol based on stored reachability results.
727
+ *
728
+ * @param {string} protocol - the protocol to check ('udp', 'tcp', or 'xtls')
729
+ * @returns {Promise<boolean>} true if at least one cluster has a 'reachable' result for the given protocol
730
+ */
731
+ )
732
+ }, {
733
+ key: "isAnyClusterReachableViaProtocol",
734
+ value: (function () {
735
+ var _isAnyClusterReachableViaProtocol = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0(protocol) {
736
+ var resultsJson, results, _t6;
737
+ return _regenerator.default.wrap(function (_context0) {
738
+ while (1) switch (_context0.prev = _context0.next) {
739
+ case 0:
740
+ _context0.prev = 0;
741
+ _context0.next = 1;
742
+ return this.webex.boundedStorage.get(this.namespace, _constants.REACHABILITY.localStorageResult);
743
+ case 1:
744
+ resultsJson = _context0.sent;
745
+ results = JSON.parse(resultsJson);
746
+ return _context0.abrupt("return", (0, _values.default)(results).some(function (result) {
747
+ var _result$protocol3;
748
+ return ((_result$protocol3 = result[protocol]) === null || _result$protocol3 === void 0 ? void 0 : _result$protocol3.result) === 'reachable';
749
+ }));
750
+ case 2:
751
+ _context0.prev = 2;
752
+ _t6 = _context0["catch"](0);
753
+ _loggerProxy.default.logger.warn("Reachability:index#isAnyClusterReachableViaProtocol --> Error reading reachability data: ".concat(_t6));
754
+ return _context0.abrupt("return", false);
755
+ case 3:
756
+ case "end":
757
+ return _context0.stop();
758
+ }
759
+ }, _callee0, this, [[0, 2]]);
760
+ }));
761
+ function isAnyClusterReachableViaProtocol(_x4) {
762
+ return _isAnyClusterReachableViaProtocol.apply(this, arguments);
763
+ }
764
+ return isAnyClusterReachableViaProtocol;
765
+ }()
725
766
  /**
726
767
  * Get list of all unreachable clusters
727
768
  * @returns {array} Unreachable clusters
@@ -901,15 +942,15 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
901
942
  }, {
902
943
  key: "sendMetric",
903
944
  value: (function () {
904
- var _sendMetric = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
945
+ var _sendMetric = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
905
946
  var aborted,
906
947
  results,
907
948
  stats,
908
- _args0 = arguments;
909
- return _regenerator.default.wrap(function (_context0) {
910
- while (1) switch (_context0.prev = _context0.next) {
949
+ _args1 = arguments;
950
+ return _regenerator.default.wrap(function (_context1) {
951
+ while (1) switch (_context1.prev = _context1.next) {
911
952
  case 0:
912
- aborted = _args0.length > 0 && _args0[0] !== undefined ? _args0[0] : false;
953
+ aborted = _args1.length > 0 && _args1[0] !== undefined ? _args1[0] : false;
913
954
  results = [];
914
955
  (0, _values.default)(this.clusterReachability).forEach(function (clusterReachability) {
915
956
  results.push(_objectSpread(_objectSpread({}, clusterReachability.getResult()), {}, {
@@ -941,9 +982,9 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
941
982
  _metrics.default.sendBehavioralMetric(_constants2.default.REACHABILITY_COMPLETED, _metrics.default.prepareMetricFields(stats));
942
983
  case 1:
943
984
  case "end":
944
- return _context0.stop();
985
+ return _context1.stop();
945
986
  }
946
- }, _callee0, this);
987
+ }, _callee1, this);
947
988
  }));
948
989
  function sendMetric() {
949
990
  return _sendMetric.apply(this, arguments);
@@ -999,19 +1040,19 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
999
1040
  }, {
1000
1041
  key: "storeResults",
1001
1042
  value: (function () {
1002
- var _storeResults = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(results) {
1003
- return _regenerator.default.wrap(function (_context1) {
1004
- while (1) switch (_context1.prev = _context1.next) {
1043
+ var _storeResults = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(results) {
1044
+ return _regenerator.default.wrap(function (_context10) {
1045
+ while (1) switch (_context10.prev = _context10.next) {
1005
1046
  case 0:
1006
- _context1.next = 1;
1047
+ _context10.next = 1;
1007
1048
  return this.webex.boundedStorage.put(this.namespace, _constants.REACHABILITY.localStorageResult, (0, _stringify.default)(results));
1008
1049
  case 1:
1009
1050
  case "end":
1010
- return _context1.stop();
1051
+ return _context10.stop();
1011
1052
  }
1012
- }, _callee1, this);
1053
+ }, _callee10, this);
1013
1054
  }));
1014
- function storeResults(_x4) {
1055
+ function storeResults(_x5) {
1015
1056
  return _storeResults.apply(this, arguments);
1016
1057
  }
1017
1058
  return storeResults;
@@ -1072,11 +1113,11 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1072
1113
  }, {
1073
1114
  key: "performReachabilityChecks",
1074
1115
  value: (function () {
1075
- var _performReachabilityChecks = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(clusterList) {
1116
+ var _performReachabilityChecks = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(clusterList) {
1076
1117
  var _this4 = this;
1077
1118
  var results, protocols, enabledProtocols, isFirstResult;
1078
- return _regenerator.default.wrap(function (_context13) {
1079
- while (1) switch (_context13.prev = _context13.next) {
1119
+ return _regenerator.default.wrap(function (_context14) {
1120
+ while (1) switch (_context14.prev = _context14.next) {
1080
1121
  case 0:
1081
1122
  results = {};
1082
1123
  this.clusterReachability = {};
@@ -1130,11 +1171,11 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1130
1171
  tcp: true,
1131
1172
  xtls: true
1132
1173
  }; // save the initialized results (in case we don't get any "resultReady" events at all)
1133
- _context13.next = 1;
1174
+ _context14.next = 1;
1134
1175
  return this.storeResults(results);
1135
1176
  case 1:
1136
1177
  if (!(!clusterList || !(0, _keys.default)(clusterList).length)) {
1137
- _context13.next = 2;
1178
+ _context14.next = 2;
1138
1179
  break;
1139
1180
  }
1140
1181
  // nothing to do, finish immediately
@@ -1143,7 +1184,7 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1143
1184
  file: 'reachability',
1144
1185
  function: 'performReachabilityChecks'
1145
1186
  }, 'reachability:done', {});
1146
- return _context13.abrupt("return");
1187
+ return _context14.abrupt("return");
1147
1188
  case 2:
1148
1189
  this.startTimers();
1149
1190
 
@@ -1154,10 +1195,10 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1154
1195
  // @ts-ignore
1155
1196
  _this4.webex.config.meetings.enablePerUdpUrlReachability);
1156
1197
  _this4.clusterReachability[key].on(_clusterReachability.Events.resultReady, /*#__PURE__*/function () {
1157
- var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(data) {
1198
+ var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(data) {
1158
1199
  var protocol, result, clientMediaIPs, latencyInMilliseconds, areAllResultsReady;
1159
- return _regenerator.default.wrap(function (_context10) {
1160
- while (1) switch (_context10.prev = _context10.next) {
1200
+ return _regenerator.default.wrap(function (_context11) {
1201
+ while (1) switch (_context11.prev = _context11.next) {
1161
1202
  case 0:
1162
1203
  protocol = data.protocol, result = data.result, clientMediaIPs = data.clientMediaIPs, latencyInMilliseconds = data.latencyInMilliseconds;
1163
1204
  if (isFirstResult[protocol]) {
@@ -1174,7 +1215,7 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1174
1215
  results[key][protocol].result = result;
1175
1216
  results[key][protocol].clientMediaIPs = clientMediaIPs;
1176
1217
  results[key][protocol].latencyInMilliseconds = latencyInMilliseconds;
1177
- _context10.next = 1;
1218
+ _context11.next = 1;
1178
1219
  return _this4.storeResults(results);
1179
1220
  case 1:
1180
1221
  if (areAllResultsReady) {
@@ -1189,47 +1230,47 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1189
1230
  }
1190
1231
  case 2:
1191
1232
  case "end":
1192
- return _context10.stop();
1233
+ return _context11.stop();
1193
1234
  }
1194
- }, _callee10);
1235
+ }, _callee11);
1195
1236
  }));
1196
- return function (_x6) {
1237
+ return function (_x7) {
1197
1238
  return _ref6.apply(this, arguments);
1198
1239
  };
1199
1240
  }());
1200
1241
 
1201
1242
  // clientMediaIps can be updated independently from the results, so we need to listen for them too
1202
1243
  _this4.clusterReachability[key].on(_clusterReachability.Events.clientMediaIpsUpdated, /*#__PURE__*/function () {
1203
- var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(data) {
1204
- return _regenerator.default.wrap(function (_context11) {
1205
- while (1) switch (_context11.prev = _context11.next) {
1244
+ var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(data) {
1245
+ return _regenerator.default.wrap(function (_context12) {
1246
+ while (1) switch (_context12.prev = _context12.next) {
1206
1247
  case 0:
1207
1248
  results[key][data.protocol].clientMediaIPs = data.clientMediaIPs;
1208
- _context11.next = 1;
1249
+ _context12.next = 1;
1209
1250
  return _this4.storeResults(results);
1210
1251
  case 1:
1211
1252
  case "end":
1212
- return _context11.stop();
1253
+ return _context12.stop();
1213
1254
  }
1214
- }, _callee11);
1255
+ }, _callee12);
1215
1256
  }));
1216
- return function (_x7) {
1257
+ return function (_x8) {
1217
1258
  return _ref7.apply(this, arguments);
1218
1259
  };
1219
1260
  }());
1220
1261
  _this4.clusterReachability[key].on(_clusterReachability.Events.natTypeUpdated, /*#__PURE__*/function () {
1221
- var _ref8 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(data) {
1222
- return _regenerator.default.wrap(function (_context12) {
1223
- while (1) switch (_context12.prev = _context12.next) {
1262
+ var _ref8 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(data) {
1263
+ return _regenerator.default.wrap(function (_context13) {
1264
+ while (1) switch (_context13.prev = _context13.next) {
1224
1265
  case 0:
1225
1266
  _this4.natType = data.natType;
1226
1267
  case 1:
1227
1268
  case "end":
1228
- return _context12.stop();
1269
+ return _context13.stop();
1229
1270
  }
1230
- }, _callee12);
1271
+ }, _callee13);
1231
1272
  }));
1232
- return function (_x8) {
1273
+ return function (_x9) {
1233
1274
  return _ref8.apply(this, arguments);
1234
1275
  };
1235
1276
  }());
@@ -1237,11 +1278,11 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1237
1278
  });
1238
1279
  case 3:
1239
1280
  case "end":
1240
- return _context13.stop();
1281
+ return _context14.stop();
1241
1282
  }
1242
- }, _callee13, this);
1283
+ }, _callee14, this);
1243
1284
  }));
1244
- function performReachabilityChecks(_x5) {
1285
+ function performReachabilityChecks(_x6) {
1245
1286
  return _performReachabilityChecks.apply(this, arguments);
1246
1287
  }
1247
1288
  return performReachabilityChecks;
@@ -1258,42 +1299,42 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1258
1299
  }, {
1259
1300
  key: "getClientMediaPreferences",
1260
1301
  value: (function () {
1261
- var _getClientMediaPreferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(isMultistream, ipver) {
1262
- var reachabilityReport, _t6, _t7, _t8;
1263
- return _regenerator.default.wrap(function (_context14) {
1264
- while (1) switch (_context14.prev = _context14.next) {
1302
+ var _getClientMediaPreferences = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(isMultistream, ipver) {
1303
+ var reachabilityReport, _t7, _t8, _t9;
1304
+ return _regenerator.default.wrap(function (_context15) {
1305
+ while (1) switch (_context15.prev = _context15.next) {
1265
1306
  case 0:
1266
1307
  if (this.orpheusApiVersion) {
1267
- _context14.next = 2;
1308
+ _context15.next = 2;
1268
1309
  break;
1269
1310
  }
1270
- _t6 = ipver;
1271
- _context14.next = 1;
1311
+ _t7 = ipver;
1312
+ _context15.next = 1;
1272
1313
  return this.getJoinCookie();
1273
1314
  case 1:
1274
- _t7 = _context14.sent;
1275
- _t8 = !isMultistream;
1276
- return _context14.abrupt("return", {
1277
- ipver: _t6,
1278
- joinCookie: _t7,
1279
- preferTranscoding: _t8
1315
+ _t8 = _context15.sent;
1316
+ _t9 = !isMultistream;
1317
+ return _context15.abrupt("return", {
1318
+ ipver: _t7,
1319
+ joinCookie: _t8,
1320
+ preferTranscoding: _t9
1280
1321
  });
1281
1322
  case 2:
1282
- _context14.next = 3;
1323
+ _context15.next = 3;
1283
1324
  return this.getReachabilityReport();
1284
1325
  case 3:
1285
- reachabilityReport = _context14.sent;
1286
- return _context14.abrupt("return", _objectSpread({
1326
+ reachabilityReport = _context15.sent;
1327
+ return _context15.abrupt("return", _objectSpread({
1287
1328
  ipver: ipver,
1288
1329
  preferTranscoding: !isMultistream
1289
1330
  }, reachabilityReport));
1290
1331
  case 4:
1291
1332
  case "end":
1292
- return _context14.stop();
1333
+ return _context15.stop();
1293
1334
  }
1294
- }, _callee14, this);
1335
+ }, _callee15, this);
1295
1336
  }));
1296
- function getClientMediaPreferences(_x9, _x0) {
1337
+ function getClientMediaPreferences(_x0, _x1) {
1297
1338
  return _getClientMediaPreferences.apply(this, arguments);
1298
1339
  }
1299
1340
  return getClientMediaPreferences;
@@ -1309,22 +1350,22 @@ var Reachability = exports.default = /*#__PURE__*/function (_EventsScope) {
1309
1350
  }, {
1310
1351
  key: "getReachabilityReportToAttachToRoap",
1311
1352
  value: (function () {
1312
- var _getReachabilityReportToAttachToRoap = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15() {
1313
- return _regenerator.default.wrap(function (_context15) {
1314
- while (1) switch (_context15.prev = _context15.next) {
1353
+ var _getReachabilityReportToAttachToRoap = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16() {
1354
+ return _regenerator.default.wrap(function (_context16) {
1355
+ while (1) switch (_context16.prev = _context16.next) {
1315
1356
  case 0:
1316
1357
  if (this.orpheusApiVersion) {
1317
- _context15.next = 1;
1358
+ _context16.next = 1;
1318
1359
  break;
1319
1360
  }
1320
- return _context15.abrupt("return", this.getReachabilityResults());
1361
+ return _context16.abrupt("return", this.getReachabilityResults());
1321
1362
  case 1:
1322
- return _context15.abrupt("return", undefined);
1363
+ return _context16.abrupt("return", undefined);
1323
1364
  case 2:
1324
1365
  case "end":
1325
- return _context15.stop();
1366
+ return _context16.stop();
1326
1367
  }
1327
- }, _callee15, this);
1368
+ }, _callee16, this);
1328
1369
  }));
1329
1370
  function getReachabilityReportToAttachToRoap() {
1330
1371
  return _getReachabilityReportToAttachToRoap.apply(this, arguments);