@webex/plugin-meetings 3.8.1-web-workers-keepalive.1 → 3.9.0-webinar5k.1

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 (87) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +8 -2
  4. package/dist/constants.js.map +1 -1
  5. package/dist/hashTree/constants.js +23 -0
  6. package/dist/hashTree/constants.js.map +1 -0
  7. package/dist/hashTree/hashTree.js +516 -0
  8. package/dist/hashTree/hashTree.js.map +1 -0
  9. package/dist/hashTree/hashTreeParser.js +521 -0
  10. package/dist/hashTree/hashTreeParser.js.map +1 -0
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/index.js +301 -59
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/meeting/brbState.js +14 -12
  16. package/dist/meeting/brbState.js.map +1 -1
  17. package/dist/meeting/index.js +110 -12
  18. package/dist/meeting/index.js.map +1 -1
  19. package/dist/meeting/muteState.js +2 -5
  20. package/dist/meeting/muteState.js.map +1 -1
  21. package/dist/meeting/request.js +19 -0
  22. package/dist/meeting/request.js.map +1 -1
  23. package/dist/meeting/request.type.js.map +1 -1
  24. package/dist/meeting/util.js +8 -11
  25. package/dist/meeting/util.js.map +1 -1
  26. package/dist/meetings/index.js +6 -2
  27. package/dist/meetings/index.js.map +1 -1
  28. package/dist/member/index.js.map +1 -1
  29. package/dist/member/types.js.map +1 -1
  30. package/dist/members/collection.js +13 -0
  31. package/dist/members/collection.js.map +1 -1
  32. package/dist/members/index.js +44 -23
  33. package/dist/members/index.js.map +1 -1
  34. package/dist/members/request.js +3 -3
  35. package/dist/members/request.js.map +1 -1
  36. package/dist/members/util.js +18 -6
  37. package/dist/members/util.js.map +1 -1
  38. package/dist/multistream/sendSlotManager.js +32 -2
  39. package/dist/multistream/sendSlotManager.js.map +1 -1
  40. package/dist/types/constants.d.ts +6 -0
  41. package/dist/types/hashTree/constants.d.ts +8 -0
  42. package/dist/types/hashTree/hashTree.d.ts +128 -0
  43. package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
  44. package/dist/types/locus-info/index.d.ts +93 -3
  45. package/dist/types/meeting/brbState.d.ts +0 -1
  46. package/dist/types/meeting/index.d.ts +29 -3
  47. package/dist/types/meeting/request.d.ts +9 -1
  48. package/dist/types/meeting/request.type.d.ts +74 -0
  49. package/dist/types/meeting/util.d.ts +3 -3
  50. package/dist/types/member/types.d.ts +1 -0
  51. package/dist/types/members/collection.d.ts +6 -0
  52. package/dist/types/members/index.d.ts +15 -3
  53. package/dist/types/members/request.d.ts +1 -1
  54. package/dist/types/members/util.d.ts +5 -2
  55. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  56. package/dist/webinar/index.js +1 -1
  57. package/package.json +24 -23
  58. package/src/constants.ts +7 -0
  59. package/src/hashTree/constants.ts +12 -0
  60. package/src/hashTree/hashTree.ts +460 -0
  61. package/src/hashTree/hashTreeParser.ts +556 -0
  62. package/src/locus-info/index.ts +393 -58
  63. package/src/meeting/brbState.ts +9 -7
  64. package/src/meeting/index.ts +104 -6
  65. package/src/meeting/muteState.ts +2 -6
  66. package/src/meeting/request.ts +16 -0
  67. package/src/meeting/request.type.ts +64 -0
  68. package/src/meeting/util.ts +17 -20
  69. package/src/meetings/index.ts +17 -3
  70. package/src/member/index.ts +1 -0
  71. package/src/member/types.ts +1 -0
  72. package/src/members/collection.ts +11 -0
  73. package/src/members/index.ts +33 -7
  74. package/src/members/request.ts +2 -2
  75. package/src/members/util.ts +14 -3
  76. package/src/multistream/sendSlotManager.ts +34 -2
  77. package/test/unit/spec/hashTree/hashTree.ts +394 -0
  78. package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
  79. package/test/unit/spec/locus-info/index.js +506 -55
  80. package/test/unit/spec/meeting/brbState.ts +9 -9
  81. package/test/unit/spec/meeting/index.js +475 -42
  82. package/test/unit/spec/meeting/request.js +71 -0
  83. package/test/unit/spec/members/index.js +33 -10
  84. package/test/unit/spec/members/request.js +2 -2
  85. package/test/unit/spec/members/utils.js +27 -7
  86. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  87. package/test/unit/spec/reachability/index.ts +3 -1
@@ -56,8 +56,13 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
56
56
  (0, _createClass2.default)(BrbState, [{
57
57
  key: "enable",
58
58
  value: function enable(enabled, sendSlotManager) {
59
+ var _this = this;
59
60
  this.state.client.enabled = enabled;
60
- return this.applyClientStateToServer(sendSlotManager);
61
+
62
+ // Don't set the source state override if enabling brb fails
63
+ return this.applyClientStateToServer(sendSlotManager).then(function () {
64
+ sendSlotManager.setSourceStateOverride(_internalMediaCore.MediaType.VideoMain, _this.state.client.enabled ? 'away' : null);
65
+ });
61
66
  }
62
67
 
63
68
  /**
@@ -69,7 +74,7 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
69
74
  }, {
70
75
  key: "applyClientStateToServer",
71
76
  value: function applyClientStateToServer(sendSlotManager) {
72
- var _this = this;
77
+ var _this2 = this;
73
78
  if (this.state.syncToServerInProgress) {
74
79
  _loggerProxy.default.logger.info("Meeting:brbState#applyClientStateToServer: request to server in progress, we need to wait for it to complete");
75
80
  return _promise.default.resolve();
@@ -81,20 +86,20 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
81
86
  return _promise.default.resolve();
82
87
  }
83
88
  this.state.syncToServerInProgress = true;
84
- return this.sendLocalBrbStateToServer(sendSlotManager).then(function () {
85
- _this.state.syncToServerInProgress = false;
89
+ return this.sendLocalBrbStateToServer().then(function () {
90
+ _this2.state.syncToServerInProgress = false;
86
91
 
87
92
  // This is a workaround for the fact that the server does not send the brb state
88
93
  // in the locus update when a user joins from multiple devices but not all devices are requested brb.
89
94
  // In the future, this could be improved with a new brb locus update handler
90
95
  // https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-655626
91
- _this.handleServerBrbUpdate(_this.state.client.enabled);
96
+ _this2.handleServerBrbUpdate(_this2.state.client.enabled);
92
97
  _loggerProxy.default.logger.info("Meeting:brbState#applyClientStateToServer: sync with server completed");
93
98
 
94
99
  // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync
95
- _this.applyClientStateToServer(sendSlotManager);
100
+ _this2.applyClientStateToServer(sendSlotManager);
96
101
  }).catch(function (error) {
97
- _this.state.syncToServerInProgress = false;
102
+ _this2.state.syncToServerInProgress = false;
98
103
  _loggerProxy.default.logger.warn("Meeting:brbState#applyClientStateToServer: Error: ".concat(error));
99
104
  return _promise.default.reject(error);
100
105
  });
@@ -103,13 +108,12 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
103
108
  /**
104
109
  * Send the local brb state to the server
105
110
  *
106
- * @param {SendSlotManager} sendSlotManager
107
111
  * @returns {Promise}
108
112
  */
109
113
  }, {
110
114
  key: "sendLocalBrbStateToServer",
111
115
  value: (function () {
112
- var _sendLocalBrbStateToServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(sendSlotManager) {
116
+ var _sendLocalBrbStateToServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
113
117
  var enabled, errorMessage, error, _errorMessage, _error;
114
118
  return _regenerator.default.wrap(function _callee$(_context) {
115
119
  while (1) switch (_context.prev = _context.next) {
@@ -138,8 +142,6 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
138
142
  locusUrl: this.meeting.locusUrl,
139
143
  deviceUrl: this.meeting.deviceUrl,
140
144
  selfId: this.meeting.selfId
141
- }).then(function () {
142
- sendSlotManager.setSourceStateOverride(_internalMediaCore.MediaType.VideoMain, enabled ? 'away' : null);
143
145
  }).catch(function (error) {
144
146
  _loggerProxy.default.logger.error('Meeting:brbState#sendLocalBrbStateToServer: Error ', error);
145
147
  return _promise.default.reject(error);
@@ -150,7 +152,7 @@ var BrbState = exports.BrbState = /*#__PURE__*/function () {
150
152
  }
151
153
  }, _callee, this);
152
154
  }));
153
- function sendLocalBrbStateToServer(_x) {
155
+ function sendLocalBrbStateToServer() {
154
156
  return _sendLocalBrbStateToServer.apply(this, arguments);
155
157
  }
156
158
  return sendLocalBrbStateToServer;
@@ -1 +1 @@
1
- {"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","createBrbState","exports","meeting","enabled","LoggerProxy","logger","info","concat","id","brbState","BrbState","_classCallCheck2","default","_defineProperty2","state","client","server","syncToServerInProgress","_createClass2","key","value","enable","sendSlotManager","applyClientStateToServer","_this","_promise","resolve","remoteBrbRequiresSync","sendLocalBrbStateToServer","then","handleServerBrbUpdate","catch","error","warn","reject","_sendLocalBrbStateToServer","_asyncToGenerator2","_regenerator","mark","_callee","errorMessage","_errorMessage","_error","wrap","_callee$","_context","prev","next","isMultistream","Error","abrupt","mediaProperties","webrtcMediaConnection","meetingRequest","setBrb","locusUrl","deviceUrl","selfId","setSourceStateOverride","MediaType","VideoMain","stop","_x","apply","arguments"],"sources":["brbState.ts"],"sourcesContent":["import {MediaType} from '@webex/internal-media-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport type Meeting from '.';\nimport SendSlotManager from '../multistream/sendSlotManager';\n\nexport const createBrbState = (meeting: Meeting, enabled: boolean) => {\n LoggerProxy.logger.info(\n `Meeting:brbState#createBrbState: creating BrbState for meeting id ${meeting?.id}`\n );\n\n const brbState = new BrbState(meeting, enabled);\n\n return brbState;\n};\n\n/** The purpose of this class is to manage the local and remote brb state\n * and make sure that the server state always matches the last requested state by the client.\n */\nexport class BrbState {\n state: {\n client: {\n enabled: boolean;\n };\n server: {\n enabled: boolean;\n };\n syncToServerInProgress: boolean;\n };\n\n meeting: Meeting;\n\n /**\n * Constructor\n *\n * @param {Meeting} meeting - the meeting object\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(meeting: Meeting, enabled: boolean) {\n this.meeting = meeting;\n this.state = {\n client: {\n enabled,\n },\n server: {\n enabled: false,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Enables/disables brb\n *\n * @param {boolean} enabled\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n public enable(enabled: boolean, sendSlotManager: SendSlotManager) {\n this.state.client.enabled = enabled;\n\n return this.applyClientStateToServer(sendSlotManager);\n }\n\n /**\n * Updates the server local and remote brb values so that they match the current client desired state.\n *\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n private applyClientStateToServer(sendSlotManager: SendSlotManager) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: request to server in progress, we need to wait for it to complete`\n );\n\n return Promise.resolve();\n }\n\n const remoteBrbRequiresSync = this.state.client.enabled !== this.state.server.enabled;\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: remoteBrbRequiresSync: ${remoteBrbRequiresSync}`\n );\n\n if (!remoteBrbRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: client state already matching server state, nothing to do`\n );\n\n return Promise.resolve();\n }\n\n this.state.syncToServerInProgress = true;\n\n return this.sendLocalBrbStateToServer(sendSlotManager)\n .then(() => {\n this.state.syncToServerInProgress = false;\n\n // This is a workaround for the fact that the server does not send the brb state\n // in the locus update when a user joins from multiple devices but not all devices are requested brb.\n // In the future, this could be improved with a new brb locus update handler\n // https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-655626\n this.handleServerBrbUpdate(this.state.client.enabled);\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(sendSlotManager);\n })\n .catch((error) => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.warn(`Meeting:brbState#applyClientStateToServer: Error: ${error}`);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Send the local brb state to the server\n *\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n private async sendLocalBrbStateToServer(sendSlotManager: SendSlotManager) {\n const {enabled} = this.state.client;\n\n if (!this.meeting.isMultistream) {\n const errorMessage = 'Meeting:brbState#sendLocalBrbStateToServer: Not a multistream meeting';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n if (!this.meeting.mediaProperties.webrtcMediaConnection) {\n const errorMessage =\n 'Meeting:brbState#sendLocalBrbStateToServer: WebRTC media connection is not defined';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n // this logic should be applied only to multistream meetings\n return this.meeting.meetingRequest\n .setBrb({\n enabled,\n locusUrl: this.meeting.locusUrl,\n deviceUrl: this.meeting.deviceUrl,\n selfId: this.meeting.selfId,\n })\n .then(() => {\n sendSlotManager.setSourceStateOverride(MediaType.VideoMain, enabled ? 'away' : null);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:brbState#sendLocalBrbStateToServer: Error ', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * This method should be called whenever the server brb state is changed\n *\n * @param {Boolean} [enabled] true if user has brb enabled, false otherwise\n * @returns {undefined}\n */\n public handleServerBrbUpdate(enabled?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:brbState#handleServerBrbUpdate: updating server brb to (${enabled})`\n );\n this.state.server.enabled = !!enabled;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","createBrbState","exports","meeting","enabled","LoggerProxy","logger","info","concat","id","brbState","BrbState","_classCallCheck2","default","_defineProperty2","state","client","server","syncToServerInProgress","_createClass2","key","value","enable","sendSlotManager","_this","applyClientStateToServer","then","setSourceStateOverride","MediaType","VideoMain","_this2","_promise","resolve","remoteBrbRequiresSync","sendLocalBrbStateToServer","handleServerBrbUpdate","catch","error","warn","reject","_sendLocalBrbStateToServer","_asyncToGenerator2","_regenerator","mark","_callee","errorMessage","_errorMessage","_error","wrap","_callee$","_context","prev","next","isMultistream","Error","abrupt","mediaProperties","webrtcMediaConnection","meetingRequest","setBrb","locusUrl","deviceUrl","selfId","stop","apply","arguments"],"sources":["brbState.ts"],"sourcesContent":["import {MediaType} from '@webex/internal-media-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport type Meeting from '.';\nimport SendSlotManager from '../multistream/sendSlotManager';\n\nexport const createBrbState = (meeting: Meeting, enabled: boolean) => {\n LoggerProxy.logger.info(\n `Meeting:brbState#createBrbState: creating BrbState for meeting id ${meeting?.id}`\n );\n\n const brbState = new BrbState(meeting, enabled);\n\n return brbState;\n};\n\n/** The purpose of this class is to manage the local and remote brb state\n * and make sure that the server state always matches the last requested state by the client.\n */\nexport class BrbState {\n state: {\n client: {\n enabled: boolean;\n };\n server: {\n enabled: boolean;\n };\n syncToServerInProgress: boolean;\n };\n\n meeting: Meeting;\n\n /**\n * Constructor\n *\n * @param {Meeting} meeting - the meeting object\n * @param {boolean} enabled - whether the client audio/video is enabled at all\n */\n constructor(meeting: Meeting, enabled: boolean) {\n this.meeting = meeting;\n this.state = {\n client: {\n enabled,\n },\n server: {\n enabled: false,\n },\n syncToServerInProgress: false,\n };\n }\n\n /**\n * Enables/disables brb\n *\n * @param {boolean} enabled\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n public enable(enabled: boolean, sendSlotManager: SendSlotManager) {\n this.state.client.enabled = enabled;\n\n // Don't set the source state override if enabling brb fails\n return this.applyClientStateToServer(sendSlotManager).then(() => {\n sendSlotManager.setSourceStateOverride(\n MediaType.VideoMain,\n this.state.client.enabled ? 'away' : null\n );\n });\n }\n\n /**\n * Updates the server local and remote brb values so that they match the current client desired state.\n *\n * @param {SendSlotManager} sendSlotManager\n * @returns {Promise}\n */\n private applyClientStateToServer(sendSlotManager: SendSlotManager) {\n if (this.state.syncToServerInProgress) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: request to server in progress, we need to wait for it to complete`\n );\n\n return Promise.resolve();\n }\n\n const remoteBrbRequiresSync = this.state.client.enabled !== this.state.server.enabled;\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: remoteBrbRequiresSync: ${remoteBrbRequiresSync}`\n );\n\n if (!remoteBrbRequiresSync) {\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: client state already matching server state, nothing to do`\n );\n\n return Promise.resolve();\n }\n\n this.state.syncToServerInProgress = true;\n\n return this.sendLocalBrbStateToServer()\n .then(() => {\n this.state.syncToServerInProgress = false;\n\n // This is a workaround for the fact that the server does not send the brb state\n // in the locus update when a user joins from multiple devices but not all devices are requested brb.\n // In the future, this could be improved with a new brb locus update handler\n // https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-655626\n this.handleServerBrbUpdate(this.state.client.enabled);\n\n LoggerProxy.logger.info(\n `Meeting:brbState#applyClientStateToServer: sync with server completed`\n );\n\n // need to check if a new sync is required, because this.state.client may have changed while we were doing the current sync\n this.applyClientStateToServer(sendSlotManager);\n })\n .catch((error) => {\n this.state.syncToServerInProgress = false;\n LoggerProxy.logger.warn(`Meeting:brbState#applyClientStateToServer: Error: ${error}`);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * Send the local brb state to the server\n *\n * @returns {Promise}\n */\n private async sendLocalBrbStateToServer() {\n const {enabled} = this.state.client;\n\n if (!this.meeting.isMultistream) {\n const errorMessage = 'Meeting:brbState#sendLocalBrbStateToServer: Not a multistream meeting';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n if (!this.meeting.mediaProperties.webrtcMediaConnection) {\n const errorMessage =\n 'Meeting:brbState#sendLocalBrbStateToServer: WebRTC media connection is not defined';\n const error = new Error(errorMessage);\n\n LoggerProxy.logger.error(error);\n\n return Promise.reject(error);\n }\n\n // this logic should be applied only to multistream meetings\n return this.meeting.meetingRequest\n .setBrb({\n enabled,\n locusUrl: this.meeting.locusUrl,\n deviceUrl: this.meeting.deviceUrl,\n selfId: this.meeting.selfId,\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:brbState#sendLocalBrbStateToServer: Error ', error);\n\n return Promise.reject(error);\n });\n }\n\n /**\n * This method should be called whenever the server brb state is changed\n *\n * @param {Boolean} [enabled] true if user has brb enabled, false otherwise\n * @returns {undefined}\n */\n public handleServerBrbUpdate(enabled?: boolean) {\n LoggerProxy.logger.info(\n `Meeting:brbState#handleServerBrbUpdate: updating server brb to (${enabled})`\n );\n this.state.server.enabled = !!enabled;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AAIO,IAAMG,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,SAAjBA,cAAcA,CAAIE,OAAgB,EAAEC,OAAgB,EAAK;EACpEC,oBAAW,CAACC,MAAM,CAACC,IAAI,sEAAAC,MAAA,CACgDL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,EAAE,CAClF,CAAC;EAED,IAAMC,QAAQ,GAAG,IAAIC,QAAQ,CAACR,OAAO,EAAEC,OAAO,CAAC;EAE/C,OAAOM,QAAQ;AACjB,CAAC;;AAED;AACA;AACA;AAFA,IAGaC,QAAQ,GAAAT,OAAA,CAAAS,QAAA;EAanB;AACF;AACA;AACA;AACA;AACA;EACE,SAAAA,SAAYR,OAAgB,EAAEC,OAAgB,EAAE;IAAA,IAAAQ,gBAAA,CAAAC,OAAA,QAAAF,QAAA;IAAA,IAAAG,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAC9C,IAAI,CAACV,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACY,KAAK,GAAG;MACXC,MAAM,EAAE;QACNZ,OAAO,EAAPA;MACF,CAAC;MACDa,MAAM,EAAE;QACNb,OAAO,EAAE;MACX,CAAC;MACDc,sBAAsB,EAAE;IAC1B,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE,IAAAC,aAAA,CAAAN,OAAA,EAAAF,QAAA;IAAAS,GAAA;IAAAC,KAAA,EAOA,SAAAC,OAAclB,OAAgB,EAAEmB,eAAgC,EAAE;MAAA,IAAAC,KAAA;MAChE,IAAI,CAACT,KAAK,CAACC,MAAM,CAACZ,OAAO,GAAGA,OAAO;;MAEnC;MACA,OAAO,IAAI,CAACqB,wBAAwB,CAACF,eAAe,CAAC,CAACG,IAAI,CAAC,YAAM;QAC/DH,eAAe,CAACI,sBAAsB,CACpCC,4BAAS,CAACC,SAAS,EACnBL,KAAI,CAACT,KAAK,CAACC,MAAM,CAACZ,OAAO,GAAG,MAAM,GAAG,IACvC,CAAC;MACH,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAgB,GAAA;IAAAC,KAAA,EAMA,SAAAI,yBAAiCF,eAAgC,EAAE;MAAA,IAAAO,MAAA;MACjE,IAAI,IAAI,CAACf,KAAK,CAACG,sBAAsB,EAAE;QACrCb,oBAAW,CAACC,MAAM,CAACC,IAAI,+GAEvB,CAAC;QAED,OAAOwB,QAAA,CAAAlB,OAAA,CAAQmB,OAAO,CAAC,CAAC;MAC1B;MAEA,IAAMC,qBAAqB,GAAG,IAAI,CAAClB,KAAK,CAACC,MAAM,CAACZ,OAAO,KAAK,IAAI,CAACW,KAAK,CAACE,MAAM,CAACb,OAAO;MAErFC,oBAAW,CAACC,MAAM,CAACC,IAAI,sEAAAC,MAAA,CACgDyB,qBAAqB,CAC5F,CAAC;MAED,IAAI,CAACA,qBAAqB,EAAE;QAC1B5B,oBAAW,CAACC,MAAM,CAACC,IAAI,uGAEvB,CAAC;QAED,OAAOwB,QAAA,CAAAlB,OAAA,CAAQmB,OAAO,CAAC,CAAC;MAC1B;MAEA,IAAI,CAACjB,KAAK,CAACG,sBAAsB,GAAG,IAAI;MAExC,OAAO,IAAI,CAACgB,yBAAyB,CAAC,CAAC,CACpCR,IAAI,CAAC,YAAM;QACVI,MAAI,CAACf,KAAK,CAACG,sBAAsB,GAAG,KAAK;;QAEzC;QACA;QACA;QACA;QACAY,MAAI,CAACK,qBAAqB,CAACL,MAAI,CAACf,KAAK,CAACC,MAAM,CAACZ,OAAO,CAAC;QAErDC,oBAAW,CAACC,MAAM,CAACC,IAAI,wEAEvB,CAAC;;QAED;QACAuB,MAAI,CAACL,wBAAwB,CAACF,eAAe,CAAC;MAChD,CAAC,CAAC,CACDa,KAAK,CAAC,UAACC,KAAK,EAAK;QAChBP,MAAI,CAACf,KAAK,CAACG,sBAAsB,GAAG,KAAK;QACzCb,oBAAW,CAACC,MAAM,CAACgC,IAAI,sDAAA9B,MAAA,CAAsD6B,KAAK,CAAE,CAAC;QAErF,OAAON,QAAA,CAAAlB,OAAA,CAAQ0B,MAAM,CAACF,KAAK,CAAC;MAC9B,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAjB,GAAA;IAAAC,KAAA;MAAA,IAAAmB,0BAAA,OAAAC,kBAAA,CAAA5B,OAAA,gBAAA6B,YAAA,CAAA7B,OAAA,CAAA8B,IAAA,CAKA,SAAAC,QAAA;QAAA,IAAAxC,OAAA,EAAAyC,YAAA,EAAAR,KAAA,EAAAS,aAAA,EAAAC,MAAA;QAAA,OAAAL,YAAA,CAAA7B,OAAA,CAAAmC,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACShD,OAAO,GAAI,IAAI,CAACW,KAAK,CAACC,MAAM,CAA5BZ,OAAO;cAAA,IAET,IAAI,CAACD,OAAO,CAACkD,aAAa;gBAAAH,QAAA,CAAAE,IAAA;gBAAA;cAAA;cACvBP,YAAY,GAAG,uEAAuE;cACtFR,KAAK,GAAG,IAAIiB,KAAK,CAACT,YAAY,CAAC;cAErCxC,oBAAW,CAACC,MAAM,CAAC+B,KAAK,CAACA,KAAK,CAAC;cAAC,OAAAa,QAAA,CAAAK,MAAA,WAEzBxB,QAAA,CAAAlB,OAAA,CAAQ0B,MAAM,CAACF,KAAK,CAAC;YAAA;cAAA,IAGzB,IAAI,CAAClC,OAAO,CAACqD,eAAe,CAACC,qBAAqB;gBAAAP,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAC/CP,aAAY,GAChB,oFAAoF;cAChFR,MAAK,GAAG,IAAIiB,KAAK,CAACT,aAAY,CAAC;cAErCxC,oBAAW,CAACC,MAAM,CAAC+B,KAAK,CAACA,MAAK,CAAC;cAAC,OAAAa,QAAA,CAAAK,MAAA,WAEzBxB,QAAA,CAAAlB,OAAA,CAAQ0B,MAAM,CAACF,MAAK,CAAC;YAAA;cAAA,OAAAa,QAAA,CAAAK,MAAA,WAIvB,IAAI,CAACpD,OAAO,CAACuD,cAAc,CAC/BC,MAAM,CAAC;gBACNvD,OAAO,EAAPA,OAAO;gBACPwD,QAAQ,EAAE,IAAI,CAACzD,OAAO,CAACyD,QAAQ;gBAC/BC,SAAS,EAAE,IAAI,CAAC1D,OAAO,CAAC0D,SAAS;gBACjCC,MAAM,EAAE,IAAI,CAAC3D,OAAO,CAAC2D;cACvB,CAAC,CAAC,CACD1B,KAAK,CAAC,UAACC,KAAK,EAAK;gBAChBhC,oBAAW,CAACC,MAAM,CAAC+B,KAAK,CAAC,oDAAoD,EAAEA,KAAK,CAAC;gBAErF,OAAON,QAAA,CAAAlB,OAAA,CAAQ0B,MAAM,CAACF,KAAK,CAAC;cAC9B,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAa,QAAA,CAAAa,IAAA;UAAA;QAAA,GAAAnB,OAAA;MAAA,CACL;MAAA,SAAAV,0BAAA;QAAA,OAAAM,0BAAA,CAAAwB,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAA/B,yBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAAd,GAAA;IAAAC,KAAA,EAMA,SAAAc,sBAA6B/B,OAAiB,EAAE;MAC9CC,oBAAW,CAACC,MAAM,CAACC,IAAI,oEAAAC,MAAA,CAC8CJ,OAAO,MAC5E,CAAC;MACD,IAAI,CAACW,KAAK,CAACE,MAAM,CAACb,OAAO,GAAG,CAAC,CAACA,OAAO;IACvC;EAAC;EAAA,OAAAO,QAAA;AAAA"}
@@ -563,6 +563,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
563
563
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "uploadLogsTimer", void 0);
564
564
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "logUploadIntervalIndex", void 0);
565
565
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaServerIp", void 0);
566
+ /** Handles Locus LLM events
567
+ *
568
+ * @param {LocusLLMEvent} event - The Locus LLM event to process
569
+ * @returns {void}
570
+ */
571
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "processLocusLLMEvent", function (event) {
572
+ if (event.data.eventType === 'locus.state_message') {
573
+ _this.locusInfo.parse((0, _assertThisInitialized2.default)(_this), event.data);
574
+ } else {
575
+ _loggerProxy.default.logger.warn("Meeting:index#processLocusLLMEvent --> Unknown event type: ".concat(event.data.eventType));
576
+ }
577
+ });
566
578
  /**
567
579
  * Callback called when a relay event is received from meeting LLM Connection
568
580
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1422,6 +1434,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1422
1434
 
1423
1435
  // @ts-ignore - fix types
1424
1436
  _this.webex.internal.llm.off('event:relay.event', _this.processRelayEvent);
1437
+ // @ts-ignore - Fix type
1438
+ _this.webex.internal.llm.off('event:locus.state_message', _this.processLocusLLMEvent);
1425
1439
  });
1426
1440
  /**
1427
1441
  * starts keepAlives being sent
@@ -4349,17 +4363,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4349
4363
  }
4350
4364
 
4351
4365
  /**
4352
- * Cancel an SIP call invitation made during a meeting
4366
+ * Cancel an SIP/phone call invitation made during a meeting
4353
4367
  * @param {Object} invitee
4354
4368
  * @param {String} invitee.memberId
4355
- * @returns {Promise} see #members.cancelSIPInvite
4369
+ * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal
4370
+ * @returns {Promise} see #members.cancelInviteByMemberId
4356
4371
  * @public
4357
4372
  * @memberof Meeting
4358
4373
  */
4359
4374
  }, {
4360
- key: "cancelSIPInvite",
4361
- value: function cancelSIPInvite(invitee) {
4362
- return this.members.cancelSIPInvite(invitee);
4375
+ key: "cancelInviteByMemberId",
4376
+ value: function cancelInviteByMemberId(invitee) {
4377
+ return this.members.cancelInviteByMemberId(invitee);
4363
4378
  }
4364
4379
 
4365
4380
  /**
@@ -4938,7 +4953,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4938
4953
  this.selfId = locus.selfId;
4939
4954
  this.mediaId = locus.mediaId;
4940
4955
  this.hostId = mtgLocus.host ? mtgLocus.host.id : this.hostId;
4941
- this.locusInfo.initialSetup(mtgLocus);
4956
+ this.locusInfo.initialSetup(mtgLocus, locus.dataSets);
4942
4957
  }
4943
4958
 
4944
4959
  /**
@@ -6401,7 +6416,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6401
6416
  isJoined = this.isJoined(); // webinar panelist should use new data channel in practice session
6402
6417
  dataChannelUrl = this.webinar.isJoinPracticeSessionDataChannel() && practiceSessionDatachannelUrl ? practiceSessionDatachannelUrl : datachannelUrl; // @ts-ignore - Fix type
6403
6418
  if (!this.webex.internal.llm.isConnected()) {
6404
- _context20.next = 9;
6419
+ _context20.next = 10;
6405
6420
  break;
6406
6421
  }
6407
6422
  if (!(
@@ -6422,22 +6437,28 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6422
6437
  case 8:
6423
6438
  // @ts-ignore - Fix type
6424
6439
  this.webex.internal.llm.off('event:relay.event', this.processRelayEvent);
6425
- case 9:
6440
+ // @ts-ignore - Fix type
6441
+ this.webex.internal.llm.off('event:locus.state_message', this.processLocusLLMEvent);
6442
+ case 10:
6426
6443
  if (isJoined) {
6427
- _context20.next = 11;
6444
+ _context20.next = 12;
6428
6445
  break;
6429
6446
  }
6430
6447
  return _context20.abrupt("return", undefined);
6431
- case 11:
6448
+ case 12:
6432
6449
  return _context20.abrupt("return", this.webex.internal.llm.registerAndConnect(url, dataChannelUrl).then(function (registerAndConnectResult) {
6433
6450
  // @ts-ignore - Fix type
6434
6451
  _this37.webex.internal.llm.off('event:relay.event', _this37.processRelayEvent);
6435
6452
  // @ts-ignore - Fix type
6436
6453
  _this37.webex.internal.llm.on('event:relay.event', _this37.processRelayEvent);
6454
+ // @ts-ignore - Fix type
6455
+ _this37.webex.internal.llm.off('event:locus.state_message', _this37.processLocusLLMEvent);
6456
+ // @ts-ignore - Fix type
6457
+ _this37.webex.internal.llm.on('event:locus.state_message', _this37.processLocusLLMEvent);
6437
6458
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
6438
6459
  return _promise.default.resolve(registerAndConnectResult);
6439
6460
  }));
6440
- case 12:
6461
+ case 13:
6441
6462
  case "end":
6442
6463
  return _context20.stop();
6443
6464
  }
@@ -9481,7 +9502,84 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
9481
9502
  return _getMediaReachabilityMetricFields.apply(this, arguments);
9482
9503
  }
9483
9504
  return getMediaReachabilityMetricFields;
9484
- }())
9505
+ }()
9506
+ /**
9507
+ * Set the stage for the meeting
9508
+ *
9509
+ * @param {SetStageOptions} options Options to use when setting the stage
9510
+ * @returns {Promise} The locus request
9511
+ */
9512
+ )
9513
+ }, {
9514
+ key: "setStage",
9515
+ value: function setStage() {
9516
+ var _ref37 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9517
+ _ref37$activeSpeakerP = _ref37.activeSpeakerProportion,
9518
+ activeSpeakerProportion = _ref37$activeSpeakerP === void 0 ? 0.5 : _ref37$activeSpeakerP,
9519
+ customBackground = _ref37.customBackground,
9520
+ customLogo = _ref37.customLogo,
9521
+ customNameLabel = _ref37.customNameLabel,
9522
+ importantParticipants = _ref37.importantParticipants,
9523
+ _ref37$lockAttendeeVi = _ref37.lockAttendeeViewOnStage,
9524
+ lockAttendeeViewOnStage = _ref37$lockAttendeeVi === void 0 ? false : _ref37$lockAttendeeVi,
9525
+ _ref37$showActiveSpea = _ref37.showActiveSpeaker,
9526
+ showActiveSpeaker = _ref37$showActiveSpea === void 0 ? false : _ref37$showActiveSpea;
9527
+ var videoLayout = {
9528
+ overrideDefault: true,
9529
+ lockAttendeeViewOnStageOnly: lockAttendeeViewOnStage,
9530
+ stageParameters: {
9531
+ activeSpeakerProportion: activeSpeakerProportion,
9532
+ showActiveSpeaker: {
9533
+ show: showActiveSpeaker,
9534
+ order: 0
9535
+ },
9536
+ stageManagerType: 0
9537
+ }
9538
+ };
9539
+ if (importantParticipants !== null && importantParticipants !== void 0 && importantParticipants.length) {
9540
+ videoLayout.stageParameters.importantParticipants = importantParticipants.map(function (importantParticipant, index) {
9541
+ return _objectSpread(_objectSpread({}, importantParticipant), {}, {
9542
+ order: index + 1
9543
+ });
9544
+ });
9545
+ }
9546
+ if (customLogo) {
9547
+ if (!videoLayout.customLayouts) {
9548
+ videoLayout.customLayouts = {};
9549
+ }
9550
+ videoLayout.customLayouts.logo = customLogo;
9551
+ // eslint-disable-next-line no-bitwise
9552
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.LOGO;
9553
+ }
9554
+ if (customBackground) {
9555
+ if (!videoLayout.customLayouts) {
9556
+ videoLayout.customLayouts = {};
9557
+ }
9558
+ videoLayout.customLayouts.background = customBackground;
9559
+ // eslint-disable-next-line no-bitwise
9560
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.BACKGROUND;
9561
+ }
9562
+ if (customNameLabel) {
9563
+ videoLayout.nameLabelStyle = customNameLabel;
9564
+ // eslint-disable-next-line no-bitwise
9565
+ videoLayout.stageParameters.stageManagerType |= _constants.STAGE_MANAGER_TYPE.NAME_LABEL;
9566
+ }
9567
+ return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
9568
+ }
9569
+
9570
+ /**
9571
+ * Unset the stage for the meeting
9572
+ *
9573
+ * @returns {Promise} The locus request
9574
+ */
9575
+ }, {
9576
+ key: "unsetStage",
9577
+ value: function unsetStage() {
9578
+ var videoLayout = {
9579
+ overrideDefault: false
9580
+ };
9581
+ return this.meetingRequest.synchronizeStage(this.locusUrl, videoLayout);
9582
+ }
9485
9583
  }]);
9486
9584
  return Meeting;
9487
9585
  }(_webexCore.StatelessWebexPlugin);