@webex/plugin-meetings 3.8.0-next.3 → 3.8.0-next.30

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 (78) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/config.js +1 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/constants.js +1 -0
  6. package/dist/constants.js.map +1 -1
  7. package/dist/interpretation/index.js +4 -4
  8. package/dist/interpretation/index.js.map +1 -1
  9. package/dist/interpretation/siLanguage.js +1 -1
  10. package/dist/locus-info/controlsUtils.js +1 -1
  11. package/dist/locus-info/controlsUtils.js.map +1 -1
  12. package/dist/meeting/index.js +89 -5
  13. package/dist/meeting/index.js.map +1 -1
  14. package/dist/meeting/locusMediaRequest.js +21 -5
  15. package/dist/meeting/locusMediaRequest.js.map +1 -1
  16. package/dist/meeting/util.js +4 -1
  17. package/dist/meeting/util.js.map +1 -1
  18. package/dist/meeting-info/meeting-info-v2.js +359 -60
  19. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  20. package/dist/meetings/index.js +60 -1
  21. package/dist/meetings/index.js.map +1 -1
  22. package/dist/member/index.js +10 -0
  23. package/dist/member/index.js.map +1 -1
  24. package/dist/member/util.js +3 -0
  25. package/dist/member/util.js.map +1 -1
  26. package/dist/metrics/constants.js +9 -0
  27. package/dist/metrics/constants.js.map +1 -1
  28. package/dist/reachability/clusterReachability.js +52 -8
  29. package/dist/reachability/clusterReachability.js.map +1 -1
  30. package/dist/reachability/index.js +70 -45
  31. package/dist/reachability/index.js.map +1 -1
  32. package/dist/reachability/reachability.types.js +14 -0
  33. package/dist/reachability/reachability.types.js.map +1 -1
  34. package/dist/reachability/request.js +19 -3
  35. package/dist/reachability/request.js.map +1 -1
  36. package/dist/recording-controller/util.js +5 -5
  37. package/dist/recording-controller/util.js.map +1 -1
  38. package/dist/types/config.d.ts +1 -0
  39. package/dist/types/constants.d.ts +1 -0
  40. package/dist/types/meeting/index.d.ts +30 -0
  41. package/dist/types/meeting-info/meeting-info-v2.d.ts +80 -0
  42. package/dist/types/meetings/index.d.ts +29 -0
  43. package/dist/types/member/index.d.ts +1 -0
  44. package/dist/types/metrics/constants.d.ts +9 -0
  45. package/dist/types/reachability/clusterReachability.d.ts +13 -1
  46. package/dist/types/reachability/index.d.ts +2 -1
  47. package/dist/types/reachability/reachability.types.d.ts +5 -0
  48. package/dist/webinar/index.js +1 -1
  49. package/package.json +22 -22
  50. package/src/config.ts +1 -0
  51. package/src/constants.ts +1 -0
  52. package/src/interpretation/index.ts +3 -3
  53. package/src/locus-info/controlsUtils.ts +2 -2
  54. package/src/meeting/index.ts +85 -7
  55. package/src/meeting/locusMediaRequest.ts +27 -4
  56. package/src/meeting/util.ts +2 -1
  57. package/src/meeting-info/meeting-info-v2.ts +247 -6
  58. package/src/meetings/index.ts +72 -1
  59. package/src/member/index.ts +11 -0
  60. package/src/member/util.ts +3 -0
  61. package/src/metrics/constants.ts +9 -0
  62. package/src/reachability/clusterReachability.ts +47 -1
  63. package/src/reachability/index.ts +15 -0
  64. package/src/reachability/reachability.types.ts +6 -0
  65. package/src/reachability/request.ts +7 -0
  66. package/src/recording-controller/util.ts +17 -13
  67. package/test/unit/spec/interpretation/index.ts +39 -1
  68. package/test/unit/spec/locus-info/controlsUtils.js +8 -0
  69. package/test/unit/spec/meeting/index.js +200 -108
  70. package/test/unit/spec/meeting/locusMediaRequest.ts +96 -58
  71. package/test/unit/spec/meeting/utils.js +55 -0
  72. package/test/unit/spec/meeting-info/meetinginfov2.js +443 -114
  73. package/test/unit/spec/meetings/index.js +78 -1
  74. package/test/unit/spec/member/index.js +7 -0
  75. package/test/unit/spec/member/util.js +24 -0
  76. package/test/unit/spec/reachability/clusterReachability.ts +47 -1
  77. package/test/unit/spec/reachability/index.ts +12 -0
  78. package/test/unit/spec/reachability/request.js +47 -2
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["reachability.types.ts"],"sourcesContent":["import {IP_VERSION} from '../constants';\n\n// result for a specific transport protocol (like udp or tcp)\nexport type TransportResult = {\n result: 'reachable' | 'unreachable' | 'untested';\n latencyInMilliseconds?: number; // amount of time it took to get the first ICE candidate\n clientMediaIPs?: string[];\n};\n\n// reachability result for a specific media cluster\nexport type ClusterReachabilityResult = {\n udp: TransportResult;\n tcp: TransportResult;\n xtls: TransportResult;\n};\n\nexport type ReachabilityMetrics = {\n reachability_public_udp_success: number;\n reachability_public_udp_failed: number;\n reachability_public_tcp_success: number;\n reachability_public_tcp_failed: number;\n reachability_public_xtls_success: number;\n reachability_public_xtls_failed: number;\n reachability_vmn_udp_success: number;\n reachability_vmn_udp_failed: number;\n reachability_vmn_tcp_success: number;\n reachability_vmn_tcp_failed: number;\n reachability_vmn_xtls_success: number;\n reachability_vmn_xtls_failed: number;\n};\n\n/**\n * This is the type that matches what backend expects us to send to them. It is a bit weird, because\n * it uses strings instead of booleans and numbers, but that's what they require.\n */\nexport type TransportResultForBackend = {\n reachable?: 'true' | 'false';\n latencyInMilliseconds?: string;\n clientMediaIPs?: string[];\n untested?: 'true';\n};\n\nexport type ReachabilityResultForBackend = {\n udp: TransportResultForBackend;\n tcp: TransportResultForBackend;\n xtls: TransportResultForBackend;\n};\n\n// this is the type that is required by the backend when we send them reachability results\nexport type ReachabilityResultsForBackend = Record<string, ReachabilityResultForBackend>;\n\n// this is the type used by Reachability class internally and stored in local storage\nexport type ReachabilityResults = Record<\n string,\n ClusterReachabilityResult & {\n isVideoMesh?: boolean;\n }\n>;\n\nexport type ReachabilityReportV0 = ReachabilityResultsForBackend;\n\nexport type ReachabilityReportV1 = {\n version: 1;\n result: {\n usedDiscoveryOptions: {\n 'early-call-min-clusters': number;\n // there are more options, but we don't support them yet\n };\n metrics: {\n 'total-duration-ms': number;\n // there are more metrics, but we don't support them yet\n };\n tests: Record<string, ReachabilityResultForBackend>;\n };\n};\n\nexport interface ClientMediaPreferences {\n ipver: IP_VERSION;\n joinCookie: any;\n preferTranscoding: boolean;\n reachability?: ReachabilityReportV1; // only present when using Orpheus API version 1\n}\n\n/* Orpheus API supports more triggers, but we don't use them yet */\nexport type GetClustersTrigger = 'startup' | 'early-call/no-min-reached';\n"],"mappings":""}
1
+ {"version":3,"names":["NatType","exports"],"sources":["reachability.types.ts"],"sourcesContent":["import {IP_VERSION} from '../constants';\n\n// result for a specific transport protocol (like udp or tcp)\nexport type TransportResult = {\n result: 'reachable' | 'unreachable' | 'untested';\n latencyInMilliseconds?: number; // amount of time it took to get the first ICE candidate\n clientMediaIPs?: string[];\n};\n\nexport enum NatType {\n Unknown = 'unknown',\n SymmetricNat = 'symmetric-nat',\n}\n\n// reachability result for a specific media cluster\nexport type ClusterReachabilityResult = {\n udp: TransportResult;\n tcp: TransportResult;\n xtls: TransportResult;\n};\n\nexport type ReachabilityMetrics = {\n reachability_public_udp_success: number;\n reachability_public_udp_failed: number;\n reachability_public_tcp_success: number;\n reachability_public_tcp_failed: number;\n reachability_public_xtls_success: number;\n reachability_public_xtls_failed: number;\n reachability_vmn_udp_success: number;\n reachability_vmn_udp_failed: number;\n reachability_vmn_tcp_success: number;\n reachability_vmn_tcp_failed: number;\n reachability_vmn_xtls_success: number;\n reachability_vmn_xtls_failed: number;\n natType: NatType;\n};\n\n/**\n * This is the type that matches what backend expects us to send to them. It is a bit weird, because\n * it uses strings instead of booleans and numbers, but that's what they require.\n */\nexport type TransportResultForBackend = {\n reachable?: 'true' | 'false';\n latencyInMilliseconds?: string;\n clientMediaIPs?: string[];\n untested?: 'true';\n};\n\nexport type ReachabilityResultForBackend = {\n udp: TransportResultForBackend;\n tcp: TransportResultForBackend;\n xtls: TransportResultForBackend;\n};\n\n// this is the type that is required by the backend when we send them reachability results\nexport type ReachabilityResultsForBackend = Record<string, ReachabilityResultForBackend>;\n\n// this is the type used by Reachability class internally and stored in local storage\nexport type ReachabilityResults = Record<\n string,\n ClusterReachabilityResult & {\n isVideoMesh?: boolean;\n }\n>;\n\nexport type ReachabilityReportV0 = ReachabilityResultsForBackend;\n\nexport type ReachabilityReportV1 = {\n version: 1;\n result: {\n usedDiscoveryOptions: {\n 'early-call-min-clusters': number;\n // there are more options, but we don't support them yet\n };\n metrics: {\n 'total-duration-ms': number;\n // there are more metrics, but we don't support them yet\n };\n tests: Record<string, ReachabilityResultForBackend>;\n };\n};\n\nexport interface ClientMediaPreferences {\n ipver: IP_VERSION;\n joinCookie: any;\n preferTranscoding: boolean;\n reachability?: ReachabilityReportV1; // only present when using Orpheus API version 1\n}\n\n/* Orpheus API supports more triggers, but we don't use them yet */\nexport type GetClustersTrigger = 'startup' | 'early-call/no-min-reached';\n"],"mappings":";;;;;;;AAEA;AAAA,IAOYA,OAAO,GAAAC,OAAA,CAAAD,OAAA,0BAAPA,OAAO;EAAPA,OAAO;EAAPA,OAAO;EAAA,OAAPA,OAAO;AAAA,OAKnB;AAuBA;AACA;AACA;AACA;AAcA;AAGA;AAgCA"}
@@ -1,5 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
3
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
10
  _Object$defineProperty(exports, "__esModule", {
@@ -13,6 +18,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
13
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
14
19
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
15
20
  var _constants = require("../constants");
21
+ function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
16
23
  /**
17
24
  * @class ReachabilityRequest
18
25
  */
@@ -35,6 +42,10 @@ function ReachabilityRequest(webex) {
35
42
  * @returns {Promise}
36
43
  */
37
44
  (0, _defineProperty2.default)(this, "getClusters", function (trigger, ipVersion, previousReport) {
45
+ var _this$webex, _this$webex$config, _this$webex$config$su, _this$webex2, _this$webex2$config, _this$webex2$config$s;
46
+ var appType = (_this$webex = _this.webex) === null || _this$webex === void 0 ? void 0 : (_this$webex$config = _this$webex.config) === null || _this$webex$config === void 0 ? void 0 : (_this$webex$config$su = _this$webex$config.support) === null || _this$webex$config$su === void 0 ? void 0 : _this$webex$config$su.appType;
47
+ var appVersion = (_this$webex2 = _this.webex) === null || _this$webex2 === void 0 ? void 0 : (_this$webex2$config = _this$webex2.config) === null || _this$webex2$config === void 0 ? void 0 : (_this$webex2$config$s = _this$webex2$config.support) === null || _this$webex2$config$s === void 0 ? void 0 : _this$webex2$config$s.appVersion;
48
+
38
49
  // we only measure latency for the initial startup call, not for other triggers
39
50
  var callWrapper = trigger === 'startup' ? _this.webex.internal.newMetrics.callDiagnosticLatencies.measureLatency.bind(_this.webex.internal.newMetrics.callDiagnosticLatencies) : function (func) {
40
51
  return func();
@@ -45,15 +56,20 @@ function ReachabilityRequest(webex) {
45
56
  shouldRefreshAccessToken: false,
46
57
  api: _constants.API.CALLIOPEDISCOVERY,
47
58
  resource: _constants.RESOURCE.CLUSTERS,
48
- body: {
59
+ body: _objectSpread(_objectSpread({
49
60
  ipver: ipVersion,
50
61
  'supported-options': {
51
62
  'report-version': 1,
52
63
  'early-call-min-clusters': true
53
64
  },
54
- 'previous-report': previousReport,
65
+ 'previous-report': previousReport
66
+ }, appType && appVersion && {
67
+ 'client-environment': {
68
+ components: (0, _defineProperty2.default)({}, appType, appVersion)
69
+ }
70
+ }), {}, {
55
71
  trigger: trigger
56
- },
72
+ }),
57
73
  timeout: _this.webex.config.meetings.reachabilityGetClusterTimeout
58
74
  });
59
75
  }, 'internal.get.cluster.time').then(function (res) {
@@ -1 +1 @@
1
- {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","ReachabilityRequest","_createClass2","default","webex","_this","_classCallCheck2","_defineProperty2","trigger","ipVersion","previousReport","callWrapper","internal","newMetrics","callDiagnosticLatencies","measureLatency","bind","func","request","method","HTTP_VERBS","POST","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","body","ipver","timeout","config","meetings","reachabilityGetClusterTimeout","then","res","_res$body","clusters","joinCookie","discoveryOptions","_keys","forEach","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, RESOURCE, API, IP_VERSION} from '../constants';\nimport {GetClustersTrigger} from './reachability.types';\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 {string} trigger that's passed to Orpheus\n * @param {IP_VERSION} ipVersion information about current ip network we're on\n * @param {Object} previousReport last reachability result\n * @returns {Promise}\n */\n getClusters = (\n trigger: GetClustersTrigger,\n ipVersion?: IP_VERSION,\n previousReport?: any\n ): Promise<{\n clusters: ClusterList;\n joinCookie: any;\n discoveryOptions?: Record<string, any>;\n }> => {\n // we only measure latency for the initial startup call, not for other triggers\n const callWrapper =\n trigger === 'startup'\n ? this.webex.internal.newMetrics.callDiagnosticLatencies.measureLatency.bind(\n this.webex.internal.newMetrics.callDiagnosticLatencies\n )\n : (func) => func();\n\n return callWrapper(\n () =>\n this.webex.request({\n method: HTTP_VERBS.POST,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.CLUSTERS,\n body: {\n ipver: ipVersion,\n 'supported-options': {\n 'report-version': 1,\n 'early-call-min-clusters': true,\n },\n 'previous-report': previousReport,\n trigger,\n },\n timeout: this.webex.config.meetings.reachabilityGetClusterTimeout,\n }),\n 'internal.get.cluster.time'\n ).then((res) => {\n const {clusters, joinCookie, discoveryOptions} = 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 discoveryOptions,\n };\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":"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"}
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_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","ReachabilityRequest","_createClass2","webex","_this","_classCallCheck2","trigger","ipVersion","previousReport","_this$webex","_this$webex$config","_this$webex$config$su","_this$webex2","_this$webex2$config","_this$webex2$config$s","appType","config","support","appVersion","callWrapper","internal","newMetrics","callDiagnosticLatencies","measureLatency","bind","func","request","method","HTTP_VERBS","POST","shouldRefreshAccessToken","api","API","CALLIOPEDISCOVERY","resource","RESOURCE","CLUSTERS","body","ipver","components","timeout","meetings","reachabilityGetClusterTimeout","then","res","_res$body","clusters","joinCookie","discoveryOptions","_keys","key","_res$body$clusterClas","_res$body$clusterClas2","isVideoMesh","clusterClasses","hybridMedia","includes","LoggerProxy","logger","log","concat","_stringify","localSDPList","REACHABILITY","offers","_default","exports"],"sources":["request.ts"],"sourcesContent":["import LoggerProxy from '../common/logs/logger-proxy';\nimport {HTTP_VERBS, RESOURCE, API, IP_VERSION} from '../constants';\nimport {GetClustersTrigger} from './reachability.types';\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 {string} trigger that's passed to Orpheus\n * @param {IP_VERSION} ipVersion information about current ip network we're on\n * @param {Object} previousReport last reachability result\n * @returns {Promise}\n */\n getClusters = (\n trigger: GetClustersTrigger,\n ipVersion?: IP_VERSION,\n previousReport?: any\n ): Promise<{\n clusters: ClusterList;\n joinCookie: any;\n discoveryOptions?: Record<string, any>;\n }> => {\n const appType = this.webex?.config?.support?.appType;\n const appVersion = this.webex?.config?.support?.appVersion;\n\n // we only measure latency for the initial startup call, not for other triggers\n const callWrapper =\n trigger === 'startup'\n ? this.webex.internal.newMetrics.callDiagnosticLatencies.measureLatency.bind(\n this.webex.internal.newMetrics.callDiagnosticLatencies\n )\n : (func) => func();\n\n return callWrapper(\n () =>\n this.webex.request({\n method: HTTP_VERBS.POST,\n shouldRefreshAccessToken: false,\n api: API.CALLIOPEDISCOVERY,\n resource: RESOURCE.CLUSTERS,\n body: {\n ipver: ipVersion,\n 'supported-options': {\n 'report-version': 1,\n 'early-call-min-clusters': true,\n },\n 'previous-report': previousReport,\n ...(appType &&\n appVersion && {\n 'client-environment': {components: {[appType]: appVersion}},\n }),\n trigger,\n },\n timeout: this.webex.config.meetings.reachabilityGetClusterTimeout,\n }),\n 'internal.get.cluster.time'\n ).then((res) => {\n const {clusters, joinCookie, discoveryOptions} = 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 discoveryOptions,\n };\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":"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"}
@@ -10,19 +10,19 @@ var _constants = require("../constants");
10
10
  var _enums = require("./enums");
11
11
  var _util = _interopRequireDefault(require("../meeting/util"));
12
12
  var canUserStart = function canUserStart(displayHints, userPolicies) {
13
- return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_START) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
13
+ return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_START) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies);
14
14
  };
15
15
  var canUserPause = function canUserPause(displayHints, userPolicies) {
16
- return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
16
+ return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies);
17
17
  };
18
18
  var canUserResume = function canUserResume(displayHints, userPolicies) {
19
- return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_RESUME) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
19
+ return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_RESUME) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies);
20
20
  };
21
21
  var canUserStop = function canUserStop(displayHints, userPolicies) {
22
- return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_STOP) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
22
+ return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_STOP) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies);
23
23
  };
24
24
  var isPremiseRecordingEnabled = function isPremiseRecordingEnabled(displayHints, userPolicies) {
25
- return (displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
25
+ return (displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies);
26
26
  };
27
27
  var extractLocusId = function extractLocusId(url) {
28
28
  return url === null || url === void 0 ? void 0 : url.split('/').pop();
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_enums","_util","_interopRequireDefault","canUserStart","displayHints","userPolicies","includes","DISPLAY_HINTS","RECORDING_CONTROL_START","PREMISE_RECORDING_CONTROL_START","MeetingUtil","selfSupportsFeature","SELF_POLICY","SUPPORT_NETWORK_BASED_RECORD","canUserPause","RECORDING_CONTROL_PAUSE","PREMISE_RECORDING_CONTROL_PAUSE","canUserResume","RECORDING_CONTROL_RESUME","PREMISE_RECORDING_CONTROL_RESUME","canUserStop","RECORDING_CONTROL_STOP","PREMISE_RECORDING_CONTROL_STOP","isPremiseRecordingEnabled","extractLocusId","url","split","pop","deriveRecordingStates","action","recording","paused","RecordingAction","Start","Stop","Resume","Pause","Error","concat","_default","exports","default"],"sources":["util.ts"],"sourcesContent":["import {DISPLAY_HINTS, SELF_POLICY} from '../constants';\nimport {RecordingAction} from './enums';\nimport MeetingUtil from '../meeting/util';\n\nconst canUserStart = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserPause = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserResume = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserStop = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst isPremiseRecordingEnabled = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst extractLocusId = (url: string) => {\n return url?.split('/').pop();\n};\n\nconst deriveRecordingStates = (action: RecordingAction): {recording: boolean; paused: boolean} => {\n let recording;\n let paused;\n\n switch (action) {\n case RecordingAction.Start:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Stop:\n recording = false;\n paused = false;\n break;\n case RecordingAction.Resume:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Pause:\n recording = true;\n paused = true;\n break;\n default:\n throw new Error(`Recording state cannot be derived from invalid action: ${action}`);\n }\n\n return {\n recording,\n paused,\n };\n};\n\nexport default {\n canUserStart,\n canUserPause,\n canUserResume,\n canUserStop,\n isPremiseRecordingEnabled,\n deriveRecordingStates,\n extractLocusId,\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","_enums","_util","_interopRequireDefault","canUserStart","displayHints","userPolicies","includes","DISPLAY_HINTS","RECORDING_CONTROL_START","MeetingUtil","selfSupportsFeature","SELF_POLICY","SUPPORT_NETWORK_BASED_RECORD","PREMISE_RECORDING_CONTROL_START","SUPPORT_PREMISE_RECORD","canUserPause","RECORDING_CONTROL_PAUSE","PREMISE_RECORDING_CONTROL_PAUSE","canUserResume","RECORDING_CONTROL_RESUME","PREMISE_RECORDING_CONTROL_RESUME","canUserStop","RECORDING_CONTROL_STOP","PREMISE_RECORDING_CONTROL_STOP","isPremiseRecordingEnabled","extractLocusId","url","split","pop","deriveRecordingStates","action","recording","paused","RecordingAction","Start","Stop","Resume","Pause","Error","concat","_default","exports","default"],"sources":["util.ts"],"sourcesContent":["import {DISPLAY_HINTS, SELF_POLICY} from '../constants';\nimport {RecordingAction} from './enums';\nimport MeetingUtil from '../meeting/util';\n\nconst canUserStart = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies)) ||\n (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies));\n\nconst canUserPause = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies)) ||\n (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies));\n\nconst canUserResume = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies)) ||\n (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies));\n\nconst canUserStop = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies)) ||\n (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies));\n\nconst isPremiseRecordingEnabled = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_PREMISE_RECORD, userPolicies);\n\nconst extractLocusId = (url: string) => {\n return url?.split('/').pop();\n};\n\nconst deriveRecordingStates = (action: RecordingAction): {recording: boolean; paused: boolean} => {\n let recording;\n let paused;\n\n switch (action) {\n case RecordingAction.Start:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Stop:\n recording = false;\n paused = false;\n break;\n case RecordingAction.Resume:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Pause:\n recording = true;\n paused = true;\n break;\n default:\n throw new Error(`Recording state cannot be derived from invalid action: ${action}`);\n }\n\n return {\n recording,\n paused,\n };\n};\n\nexport default {\n canUserStart,\n canUserPause,\n canUserResume,\n canUserStop,\n isPremiseRecordingEnabled,\n deriveRecordingStates,\n extractLocusId,\n};\n"],"mappings":"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"}
@@ -70,6 +70,7 @@ declare const _default: {
70
70
  };
71
71
  iceCandidatesGatheringTimeout: any;
72
72
  backendIpv6NativeSupport: boolean;
73
+ enableReachabilityChecks: boolean;
73
74
  reachabilityGetClusterTimeout: number;
74
75
  logUploadIntervalMultiplicationFactor: number;
75
76
  };
@@ -737,6 +737,7 @@ export declare enum SELF_POLICY {
737
737
  ENFORCE_VIRTUAL_BACKGROUND = "enforceVirtualBackground",
738
738
  SUPPORT_LOCAL_RECORD = "supportLocalRecord",
739
739
  SUPPORT_NETWORK_BASED_RECORD = "supportNetworkBasedRecord",
740
+ SUPPORT_PREMISE_RECORD = "supportPremiseRecord",
740
741
  SUPPORT_REALTIME_CLOSE_CAPTION = "supportRealtimeCloseCaption",
741
742
  SUPPORT_CHAT = "supportChat",
742
743
  SUPPORT_DESKTOP_SHARE_REMOTE = "supportDesktopShareRemote",
@@ -71,6 +71,8 @@ export type CallStateForMetrics = {
71
71
  sessionCorrelationId?: string;
72
72
  joinTrigger?: string;
73
73
  loginType?: string;
74
+ userNameInput?: string;
75
+ emailInput?: string;
74
76
  };
75
77
  export declare const MEDIA_UPDATE_TYPE: {
76
78
  TRANSCODED_MEDIA_CONNECTION: string;
@@ -495,6 +497,26 @@ export default class Meeting extends StatelessWebexPlugin {
495
497
  * @param {string} correlationId
496
498
  */
497
499
  set correlationId(correlationId: string);
500
+ /**
501
+ * Getter - Returns callStateForMetrics.userNameInput
502
+ * @returns {string}
503
+ */
504
+ get userNameInput(): string;
505
+ /**
506
+ * Setter - sets callStateForMetrics.userNameInput
507
+ * @param {string} userNameInput
508
+ */
509
+ set userNameInput(userNameInput: string);
510
+ /**
511
+ * Getter - Returns callStateForMetrics.emailInput
512
+ * @returns {string}
513
+ */
514
+ get emailInput(): string;
515
+ /**
516
+ * Setter - sets callStateForMetrics.emailInput
517
+ * @param {string} emailInput
518
+ */
519
+ set emailInput(emailInput: string);
498
520
  /**
499
521
  * Getter - Returns callStateForMetrics.sessionCorrelationId
500
522
  * @returns {string}
@@ -511,6 +533,14 @@ export default class Meeting extends StatelessWebexPlugin {
511
533
  * @returns {string | undefined}
512
534
  */
513
535
  get isoLocalClientMeetingJoinTime(): string | undefined;
536
+ /**
537
+ * Setter - sets isoLocalClientMeetingJoinTime
538
+ * This will be set once on meeting join, and not updated again
539
+ * this will always produce an ISO string
540
+ * If the iso string is invalid, it will fallback to the current system time
541
+ * @param {string | undefined} time
542
+ */
543
+ set isoLocalClientMeetingJoinTime(time: string | undefined);
514
544
  /**
515
545
  * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
516
546
  * @param {any} info
@@ -99,6 +99,52 @@ export declare class MeetingInfoV2JoinForbiddenError extends Error {
99
99
  */
100
100
  constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string);
101
101
  }
102
+ /**
103
+ * Error fetching static link for a conversation when it does not exist
104
+ */
105
+ export declare class MeetingInfoV2StaticLinkDoesNotExistError extends Error {
106
+ sdkMessage: any;
107
+ wbxAppApiCode: any;
108
+ body: any;
109
+ /**
110
+ *
111
+ * @constructor
112
+ * @param {Number} [wbxAppApiErrorCode]
113
+ * @param {String} [message]
114
+ */
115
+ constructor(wbxAppApiErrorCode?: number, message?: string);
116
+ }
117
+ /**
118
+ * Error enabling/disabling static meeting link
119
+ */
120
+ export declare class MeetingInfoV2MeetingIsInProgressError extends Error {
121
+ sdkMessage: any;
122
+ wbxAppApiCode: any;
123
+ body: any;
124
+ /**
125
+ *
126
+ * @constructor
127
+ * @param {Number} [wbxAppApiErrorCode]
128
+ * @param {String} [message]
129
+ * @param {Boolean} [enable]
130
+ */
131
+ constructor(wbxAppApiErrorCode?: number, message?: string, enable?: boolean);
132
+ }
133
+ /**
134
+ * Error enabling/disabling static meeting link
135
+ */
136
+ export declare class MeetingInfoV2StaticMeetingLinkAlreadyExists extends Error {
137
+ sdkMessage: any;
138
+ wbxAppApiCode: any;
139
+ body: any;
140
+ /**
141
+ *
142
+ * @constructor
143
+ * @param {Number} [wbxAppApiErrorCode]
144
+ * @param {String} [message]
145
+ */
146
+ constructor(wbxAppApiErrorCode?: number, message?: string);
147
+ }
102
148
  /**
103
149
  * @class MeetingInfo
104
150
  */
@@ -136,6 +182,16 @@ export default class MeetingInfoV2 {
136
182
  * @returns {void}
137
183
  */
138
184
  handleForbiddenError: (err: any) => void;
185
+ /**
186
+ * helper function to either create an adhoc space meeting or enable static meeting link
187
+ * @param {String} conversationUrl conversationUrl to start adhoc meeting on
188
+ * @param {String} installedOrgID org ID of user's machine
189
+ * @param {Boolean} enableStaticMeetingLink whether or not to enable static meeting link
190
+ * @returns {Promise} returns a meeting info object
191
+ * @public
192
+ * @memberof MeetingInfo
193
+ */
194
+ createAdhocSpaceMeetingOrEnableStaticMeetingLink(conversationUrl: string, installedOrgID?: string, enableStaticMeetingLink?: boolean): Promise<any>;
139
195
  /**
140
196
  * Creates adhoc space meetings for a space by fetching the conversation infomation
141
197
  * @param {String} conversationUrl conversationUrl to start adhoc meeting on
@@ -145,6 +201,30 @@ export default class MeetingInfoV2 {
145
201
  * @memberof MeetingInfo
146
202
  */
147
203
  createAdhocSpaceMeeting(conversationUrl: string, installedOrgID?: string): Promise<any>;
204
+ /**
205
+ * Fetches details for static meeting link
206
+ * @param {String} conversationUrl conversationUrl that's required to find static meeting link if it exists
207
+ * @returns {Promise} returns a Promise
208
+ * @public
209
+ * @memberof MeetingInfo
210
+ */
211
+ fetchStaticMeetingLink(conversationUrl: string): Promise<any>;
212
+ /**
213
+ * Enables static meeting link
214
+ * @param {String} conversationUrl conversationUrl that's required to enable static meeting link
215
+ * @returns {Promise} returns a Promise
216
+ * @public
217
+ * @memberof MeetingInfo
218
+ */
219
+ enableStaticMeetingLink(conversationUrl: string): Promise<any>;
220
+ /**
221
+ * Disables static meeting link for given conversation url
222
+ * @param {String} conversationUrl conversationUrl that's required to disable static meeting link if it exists
223
+ * @returns {Promise} returns a Promise
224
+ * @public
225
+ * @memberof MeetingInfo
226
+ */
227
+ disableStaticMeetingLink(conversationUrl: string): Promise<any>;
148
228
  /**
149
229
  * Fetches meeting info from the server
150
230
  * @param {String} destination one of many different types of destinations to look up info for
@@ -348,6 +348,15 @@ export default class Meetings extends WebexPlugin {
348
348
  * @memberof Meetings
349
349
  */
350
350
  private destroy;
351
+ /**
352
+ * Fetch static meeting link for given conversation url.
353
+ *
354
+ * @param {string} conversationUrl - url for conversation
355
+ * @returns {Promise}
356
+ * @public
357
+ * @memberof Meetings
358
+ */
359
+ fetchStaticMeetingLink(conversationUrl: string): Promise<any>;
351
360
  /**
352
361
  * Create a meeting or return an existing meeting.
353
362
  *
@@ -368,6 +377,26 @@ export default class Meetings extends WebexPlugin {
368
377
  * @memberof Meetings
369
378
  */
370
379
  create(destination: string, type?: DESTINATION_TYPE, useRandomDelayForInfo?: boolean, infoExtraParams?: {}, correlationId?: string, failOnMissingMeetingInfo?: boolean, callStateForMetrics?: CallStateForMetrics, meetingInfo?: any, meetingLookupUrl?: any, sessionCorrelationId?: string): any;
380
+ /**
381
+ * Enable static meeting links for given conversation url.
382
+ *
383
+ *
384
+ * @param {string} conversationUrl - url for conversation
385
+ * @returns {Promise}
386
+ * @public
387
+ * @memberof Meetings
388
+ */
389
+ enableStaticMeetingLink(conversationUrl: string): Promise<any>;
390
+ /**
391
+ * Disable static meeting links for given conversation url.
392
+ *
393
+ *
394
+ * @param {string} conversationUrl - url for conversation
395
+ * @returns {Promise}
396
+ * @public
397
+ * @memberof Meetings
398
+ */
399
+ disableStaticMeetingLink(conversationUrl: string): Promise<any>;
371
400
  /**
372
401
  * Create meeting
373
402
  *
@@ -16,6 +16,7 @@ export default class Member {
16
16
  isInMeeting: any;
17
17
  isModerator: any;
18
18
  isModeratorAssignmentProhibited: any;
19
+ isPresenterAssignmentProhibited: any;
19
20
  isMutable: any;
20
21
  isNotAdmitted: any;
21
22
  isRecording: any;
@@ -45,10 +45,19 @@ declare const BEHAVIORAL_METRICS: {
45
45
  UPLOAD_LOGS_FAILURE: string;
46
46
  UPLOAD_LOGS_SUCCESS: string;
47
47
  RECEIVE_TRANSCRIPTION_FAILURE: string;
48
+ MEETING_IS_IN_PROGRESS_ERROR: string;
49
+ STATIC_MEETING_LINK_ALREADY_EXISTS_ERROR: string;
48
50
  FETCH_MEETING_INFO_V1_SUCCESS: string;
49
51
  FETCH_MEETING_INFO_V1_FAILURE: string;
52
+ ENABLE_STATIC_METTING_LINK_SUCCESS: string;
53
+ ENABLE_STATIC_METTING_LINK_FAILURE: string;
54
+ DISABLE_STATIC_MEETING_LINK_SUCCESS: string;
55
+ DISABLE_STATIC_MEETING_LINK_FAILURE: string;
50
56
  ADHOC_MEETING_SUCCESS: string;
51
57
  ADHOC_MEETING_FAILURE: string;
58
+ FETCH_STATIC_MEETING_LINK_SUCCESS: string;
59
+ FETCH_STATIC_MEETING_LINK_FAILURE: string;
60
+ MEETING_LINK_DOES_NOT_EXIST_ERROR: string;
52
61
  VERIFY_PASSWORD_SUCCESS: string;
53
62
  VERIFY_PASSWORD_ERROR: string;
54
63
  VERIFY_CAPTCHA_ERROR: string;
@@ -1,7 +1,7 @@
1
1
  import { ClusterNode } from './request';
2
2
  import EventsScope from '../common/events/events-scope';
3
3
  import { Enum } from '../constants';
4
- import { ClusterReachabilityResult } from './reachability.types';
4
+ import { ClusterReachabilityResult, NatType } from './reachability.types';
5
5
  export type ResultEventData = {
6
6
  protocol: 'udp' | 'tcp' | 'xtls';
7
7
  result: 'reachable' | 'unreachable' | 'untested';
@@ -12,9 +12,13 @@ export type ClientMediaIpsUpdatedEventData = {
12
12
  protocol: 'udp' | 'tcp' | 'xtls';
13
13
  clientMediaIPs: string[];
14
14
  };
15
+ export type NatTypeUpdatedEventData = {
16
+ natType: NatType;
17
+ };
15
18
  export declare const Events: {
16
19
  readonly resultReady: "resultReady";
17
20
  readonly clientMediaIpsUpdated: "clientMediaIpsUpdated";
21
+ readonly natTypeUpdated: "natTypeUpdated";
18
22
  };
19
23
  export type Events = Enum<typeof Events>;
20
24
  /**
@@ -29,6 +33,7 @@ export declare class ClusterReachability extends EventsScope {
29
33
  private pc?;
30
34
  private defer;
31
35
  private startTimestamp;
36
+ private srflxIceCandidates;
32
37
  readonly isVideoMesh: boolean;
33
38
  readonly name: any;
34
39
  /**
@@ -107,6 +112,13 @@ export declare class ClusterReachability extends EventsScope {
107
112
  * @returns {void}
108
113
  */
109
114
  private saveResult;
115
+ /**
116
+ * Determines NAT Type.
117
+ *
118
+ * @param {RTCIceCandidate} candidate
119
+ * @returns {void}
120
+ */
121
+ private determineNatType;
110
122
  /**
111
123
  * Registers a listener for the icecandidate event
112
124
  *
@@ -4,7 +4,7 @@
4
4
  import { Defer } from '@webex/common';
5
5
  import { IP_VERSION } from '../constants';
6
6
  import ReachabilityRequest, { ClusterList } from './request';
7
- import { ClusterReachabilityResult, ClientMediaPreferences, ReachabilityMetrics, ReachabilityReportV0, ReachabilityReportV1, ReachabilityResults, ReachabilityResultsForBackend, GetClustersTrigger } from './reachability.types';
7
+ import { ClusterReachabilityResult, ClientMediaPreferences, ReachabilityMetrics, ReachabilityReportV0, ReachabilityReportV1, ReachabilityResults, ReachabilityResultsForBackend, GetClustersTrigger, NatType } from './reachability.types';
8
8
  import { ClusterReachability } from './clusterReachability';
9
9
  import EventsScope from '../common/events/events-scope';
10
10
  /**
@@ -46,6 +46,7 @@ export default class Reachability extends EventsScope {
46
46
  };
47
47
  startTime: any;
48
48
  totalDuration: any;
49
+ natType: NatType;
49
50
  protected lastTrigger?: string;
50
51
  /**
51
52
  * Creates an instance of Reachability.
@@ -4,6 +4,10 @@ export type TransportResult = {
4
4
  latencyInMilliseconds?: number;
5
5
  clientMediaIPs?: string[];
6
6
  };
7
+ export declare enum NatType {
8
+ Unknown = "unknown",
9
+ SymmetricNat = "symmetric-nat"
10
+ }
7
11
  export type ClusterReachabilityResult = {
8
12
  udp: TransportResult;
9
13
  tcp: TransportResult;
@@ -22,6 +26,7 @@ export type ReachabilityMetrics = {
22
26
  reachability_vmn_tcp_failed: number;
23
27
  reachability_vmn_xtls_success: number;
24
28
  reachability_vmn_xtls_failed: number;
29
+ natType: NatType;
25
30
  };
26
31
  /**
27
32
  * This is the type that matches what backend expects us to send to them. It is a bit weird, because
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.0-next.3"
461
+ version: "3.8.0-next.30"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# 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.8.0-next.3",
47
- "@webex/plugin-rooms": "3.7.0-next.25",
48
- "@webex/test-helper-chai": "3.7.0-next.18",
49
- "@webex/test-helper-mocha": "3.7.0-next.18",
50
- "@webex/test-helper-mock-webex": "3.7.0-next.18",
51
- "@webex/test-helper-retry": "3.7.0-next.18",
52
- "@webex/test-helper-test-users": "3.7.0-next.18",
46
+ "@webex/plugin-meetings": "3.8.0-next.30",
47
+ "@webex/plugin-rooms": "3.8.0-next.13",
48
+ "@webex/test-helper-chai": "3.8.0-next.11",
49
+ "@webex/test-helper-mocha": "3.8.0-next.11",
50
+ "@webex/test-helper-mock-webex": "3.8.0-next.11",
51
+ "@webex/test-helper-retry": "3.8.0-next.11",
52
+ "@webex/test-helper-test-users": "3.8.0-next.11",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -61,22 +61,22 @@
61
61
  "typescript": "^4.7.4"
62
62
  },
63
63
  "dependencies": {
64
- "@webex/common": "3.7.0-next.18",
64
+ "@webex/common": "3.8.0-next.11",
65
65
  "@webex/event-dictionary-ts": "^1.0.1688",
66
- "@webex/internal-media-core": "2.14.4",
67
- "@webex/internal-plugin-conversation": "3.7.0-next.25",
68
- "@webex/internal-plugin-device": "3.7.0-next.18",
69
- "@webex/internal-plugin-llm": "3.8.0-next.1",
70
- "@webex/internal-plugin-mercury": "3.7.0-next.23",
71
- "@webex/internal-plugin-metrics": "3.7.0-next.18",
72
- "@webex/internal-plugin-support": "3.7.0-next.26",
73
- "@webex/internal-plugin-user": "3.7.0-next.18",
74
- "@webex/internal-plugin-voicea": "3.8.0-next.3",
75
- "@webex/media-helpers": "3.7.0-next.25",
76
- "@webex/plugin-people": "3.7.0-next.23",
77
- "@webex/plugin-rooms": "3.7.0-next.25",
66
+ "@webex/internal-media-core": "2.14.7",
67
+ "@webex/internal-plugin-conversation": "3.8.0-next.13",
68
+ "@webex/internal-plugin-device": "3.8.0-next.11",
69
+ "@webex/internal-plugin-llm": "3.8.0-next.14",
70
+ "@webex/internal-plugin-mercury": "3.8.0-next.13",
71
+ "@webex/internal-plugin-metrics": "3.8.0-next.11",
72
+ "@webex/internal-plugin-support": "3.8.0-next.13",
73
+ "@webex/internal-plugin-user": "3.8.0-next.11",
74
+ "@webex/internal-plugin-voicea": "3.8.0-next.30",
75
+ "@webex/media-helpers": "3.8.0-next.12",
76
+ "@webex/plugin-people": "3.8.0-next.13",
77
+ "@webex/plugin-rooms": "3.8.0-next.13",
78
78
  "@webex/web-capabilities": "^1.4.0",
79
- "@webex/webex-core": "3.7.0-next.18",
79
+ "@webex/webex-core": "3.8.0-next.11",
80
80
  "ampersand-collection": "^2.0.2",
81
81
  "bowser": "^2.11.0",
82
82
  "btoa": "^1.2.1",
@@ -92,5 +92,5 @@
92
92
  "//": [
93
93
  "TODO: upgrade jwt-decode when moving to node 18"
94
94
  ],
95
- "version": "3.8.0-next.3"
95
+ "version": "3.8.0-next.30"
96
96
  }
package/src/config.ts CHANGED
@@ -95,6 +95,7 @@ export default {
95
95
  // This only applies to non-multistream meetings
96
96
  iceCandidatesGatheringTimeout: undefined,
97
97
  backendIpv6NativeSupport: false,
98
+ enableReachabilityChecks: true,
98
99
  reachabilityGetClusterTimeout: 5000,
99
100
  logUploadIntervalMultiplicationFactor: 0, // if set to 0 or undefined, logs won't be uploaded periodically, if you want periodic logs, recommended value is 1
100
101
  },
package/src/constants.ts CHANGED
@@ -904,6 +904,7 @@ export enum SELF_POLICY {
904
904
  ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
905
905
  SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
906
906
  SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
907
+ SUPPORT_PREMISE_RECORD = 'supportPremiseRecord',
907
908
  SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
908
909
  SUPPORT_CHAT = 'supportChat',
909
910
  SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
@@ -35,13 +35,13 @@ const SimultaneousInterpretation = WebexPlugin.extend({
35
35
  derived: {
36
36
  shouldQuerySupportLanguages: {
37
37
  cache: false,
38
- deps: ['canManageInterpreters', 'hostSIEnabled'],
38
+ deps: ['canManageInterpreters', 'hostSIEnabled', 'locusUrl'],
39
39
  /**
40
40
  * Returns should query support languages or not
41
41
  * @returns {boolean}
42
42
  */
43
43
  fn() {
44
- return !!(this.canManageInterpreters && this.hostSIEnabled);
44
+ return !!(this.canManageInterpreters && this.hostSIEnabled && this.locusUrl);
45
45
  },
46
46
  },
47
47
  },
@@ -51,7 +51,7 @@ const SimultaneousInterpretation = WebexPlugin.extend({
51
51
  */
52
52
  initialize() {
53
53
  this.listenTo(this, 'change:shouldQuerySupportLanguages', () => {
54
- if (this.canManageInterpreters && !this.supportLanguages) {
54
+ if (this.shouldQuerySupportLanguages && !this.supportLanguages) {
55
55
  this.querySupportLanguages();
56
56
  }
57
57
  });