@webex/plugin-meetings 3.7.0-next.5 → 3.7.0-next.50

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 (134) hide show
  1. package/dist/annotation/index.js +17 -0
  2. package/dist/annotation/index.js.map +1 -1
  3. package/dist/breakouts/breakout.js +1 -1
  4. package/dist/breakouts/index.js +1 -1
  5. package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
  6. package/dist/common/errors/join-webinar-error.js.map +1 -0
  7. package/dist/common/errors/multistream-not-supported-error.js +53 -0
  8. package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
  9. package/dist/config.js +1 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +40 -5
  12. package/dist/constants.js.map +1 -1
  13. package/dist/index.js +16 -11
  14. package/dist/index.js.map +1 -1
  15. package/dist/interpretation/index.js +1 -1
  16. package/dist/interpretation/siLanguage.js +1 -1
  17. package/dist/locus-info/index.js +14 -3
  18. package/dist/locus-info/index.js.map +1 -1
  19. package/dist/locus-info/selfUtils.js +30 -17
  20. package/dist/locus-info/selfUtils.js.map +1 -1
  21. package/dist/meeting/in-meeting-actions.js +4 -0
  22. package/dist/meeting/in-meeting-actions.js.map +1 -1
  23. package/dist/meeting/index.js +944 -832
  24. package/dist/meeting/index.js.map +1 -1
  25. package/dist/meeting/locusMediaRequest.js +9 -0
  26. package/dist/meeting/locusMediaRequest.js.map +1 -1
  27. package/dist/meeting/request.js +30 -0
  28. package/dist/meeting/request.js.map +1 -1
  29. package/dist/meeting/request.type.js.map +1 -1
  30. package/dist/meeting/util.js +16 -16
  31. package/dist/meeting/util.js.map +1 -1
  32. package/dist/meeting-info/meeting-info-v2.js +29 -17
  33. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  34. package/dist/meeting-info/utilv2.js +1 -1
  35. package/dist/meeting-info/utilv2.js.map +1 -1
  36. package/dist/meetings/index.js +106 -55
  37. package/dist/meetings/index.js.map +1 -1
  38. package/dist/meetings/meetings.types.js +2 -0
  39. package/dist/meetings/meetings.types.js.map +1 -1
  40. package/dist/meetings/util.js +1 -1
  41. package/dist/meetings/util.js.map +1 -1
  42. package/dist/member/index.js +9 -0
  43. package/dist/member/index.js.map +1 -1
  44. package/dist/member/types.js.map +1 -1
  45. package/dist/member/util.js +39 -28
  46. package/dist/member/util.js.map +1 -1
  47. package/dist/metrics/constants.js +1 -1
  48. package/dist/metrics/constants.js.map +1 -1
  49. package/dist/multistream/remoteMedia.js +30 -15
  50. package/dist/multistream/remoteMedia.js.map +1 -1
  51. package/dist/multistream/sendSlotManager.js +24 -0
  52. package/dist/multistream/sendSlotManager.js.map +1 -1
  53. package/dist/recording-controller/enums.js +8 -4
  54. package/dist/recording-controller/enums.js.map +1 -1
  55. package/dist/recording-controller/index.js +18 -9
  56. package/dist/recording-controller/index.js.map +1 -1
  57. package/dist/recording-controller/util.js +13 -9
  58. package/dist/recording-controller/util.js.map +1 -1
  59. package/dist/roap/index.js +10 -8
  60. package/dist/roap/index.js.map +1 -1
  61. package/dist/types/annotation/index.d.ts +5 -0
  62. package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
  63. package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
  64. package/dist/types/constants.d.ts +34 -1
  65. package/dist/types/index.d.ts +3 -3
  66. package/dist/types/locus-info/index.d.ts +2 -1
  67. package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
  68. package/dist/types/meeting/index.d.ts +19 -12
  69. package/dist/types/meeting/locusMediaRequest.d.ts +4 -0
  70. package/dist/types/meeting/request.d.ts +12 -1
  71. package/dist/types/meeting/request.type.d.ts +6 -0
  72. package/dist/types/meeting/util.d.ts +1 -1
  73. package/dist/types/meeting-info/meeting-info-v2.d.ts +4 -4
  74. package/dist/types/meetings/index.d.ts +19 -1
  75. package/dist/types/meetings/meetings.types.d.ts +8 -0
  76. package/dist/types/member/index.d.ts +1 -0
  77. package/dist/types/member/types.d.ts +7 -0
  78. package/dist/types/metrics/constants.d.ts +1 -1
  79. package/dist/types/multistream/sendSlotManager.d.ts +8 -1
  80. package/dist/types/recording-controller/enums.d.ts +5 -2
  81. package/dist/types/recording-controller/index.d.ts +1 -0
  82. package/dist/types/recording-controller/util.d.ts +2 -1
  83. package/dist/webinar/index.js +354 -3
  84. package/dist/webinar/index.js.map +1 -1
  85. package/package.json +23 -22
  86. package/src/annotation/index.ts +16 -0
  87. package/src/common/errors/join-webinar-error.ts +24 -0
  88. package/src/common/errors/multistream-not-supported-error.ts +30 -0
  89. package/src/config.ts +1 -1
  90. package/src/constants.ts +39 -3
  91. package/src/index.ts +5 -3
  92. package/src/locus-info/index.ts +20 -3
  93. package/src/locus-info/selfUtils.ts +19 -6
  94. package/src/meeting/in-meeting-actions.ts +8 -0
  95. package/src/meeting/index.ts +246 -80
  96. package/src/meeting/locusMediaRequest.ts +7 -0
  97. package/src/meeting/request.ts +26 -1
  98. package/src/meeting/request.type.ts +7 -0
  99. package/src/meeting/util.ts +8 -10
  100. package/src/meeting-info/meeting-info-v2.ts +23 -11
  101. package/src/meeting-info/utilv2.ts +3 -1
  102. package/src/meetings/index.ts +77 -20
  103. package/src/meetings/meetings.types.ts +10 -0
  104. package/src/meetings/util.ts +2 -1
  105. package/src/member/index.ts +9 -0
  106. package/src/member/types.ts +8 -0
  107. package/src/member/util.ts +34 -24
  108. package/src/metrics/constants.ts +1 -1
  109. package/src/multistream/remoteMedia.ts +28 -15
  110. package/src/multistream/sendSlotManager.ts +31 -0
  111. package/src/recording-controller/enums.ts +5 -2
  112. package/src/recording-controller/index.ts +17 -4
  113. package/src/recording-controller/util.ts +20 -5
  114. package/src/roap/index.ts +10 -8
  115. package/src/webinar/index.ts +197 -3
  116. package/test/unit/spec/annotation/index.ts +46 -1
  117. package/test/unit/spec/locus-info/index.js +292 -60
  118. package/test/unit/spec/locus-info/selfConstant.js +7 -0
  119. package/test/unit/spec/locus-info/selfUtils.js +91 -1
  120. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  121. package/test/unit/spec/meeting/index.js +689 -105
  122. package/test/unit/spec/meeting/utils.js +22 -19
  123. package/test/unit/spec/meeting-info/meetinginfov2.js +9 -4
  124. package/test/unit/spec/meeting-info/utilv2.js +17 -0
  125. package/test/unit/spec/meetings/index.js +153 -18
  126. package/test/unit/spec/meetings/utils.js +10 -0
  127. package/test/unit/spec/member/util.js +52 -11
  128. package/test/unit/spec/multistream/remoteMedia.ts +11 -7
  129. package/test/unit/spec/recording-controller/index.js +61 -5
  130. package/test/unit/spec/recording-controller/util.js +39 -3
  131. package/test/unit/spec/roap/index.ts +47 -0
  132. package/test/unit/spec/webinar/index.ts +457 -0
  133. package/dist/common/errors/webinar-registration-error.js.map +0 -1
  134. package/src/common/errors/webinar-registration-error.ts +0 -27
@@ -227,14 +227,16 @@ var Roap = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
227
227
  errorType = _remoteSdp$roapMessag.errorType,
228
228
  errorCause = _remoteSdp$roapMessag.errorCause,
229
229
  headers = _remoteSdp$roapMessag.headers;
230
- roapAnswer = {
231
- seq: answerSeq,
232
- messageType: messageType,
233
- sdp: sdps[0],
234
- errorType: errorType,
235
- errorCause: errorCause,
236
- headers: headers
237
- };
230
+ if (messageType === _constants.ROAP.ROAP_TYPES.ANSWER) {
231
+ roapAnswer = {
232
+ seq: answerSeq,
233
+ messageType: messageType,
234
+ sdp: sdps[0],
235
+ errorType: errorType,
236
+ errorCause: errorCause,
237
+ headers: headers
238
+ };
239
+ }
238
240
  }
239
241
  }
240
242
  if (!roapAnswer) {
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_constants","_loggerProxy","_interopRequireDefault","_request","_turnDiscovery","_metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Roap","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","roapRequest","RoapRequest","turnDiscovery","TurnDiscovery","_createClass2","key","value","sendRoapOK","_this2","_promise","resolve","then","meeting","webex","meetings","meetingCollection","getByKey","correlationId","roapMessage","messageType","ROAP","ROAP_TYPES","OK","version","ROAP_VERSION","seq","LoggerProxy","logger","log","concat","sendRoap","locusSelfUrl","selfUrl","mediaId","isMultistream","locusMediaRequest","sendRoapAnswer","ANSWER","sdps","sdp","sendRoapError","ERROR","errorType","sendRoapMediaRequest","tieBreaker","OFFER","headers","sendEmptyMediaId","preferTranscoding","_ref","_mediaConnections$","locus","mediaConnections","updateMediaConnections","roapAnswer","remoteSdp","JSON","parse","_remoteSdp$roapMessag","answerSeq","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_HTTP_RESPONSE_MISSING","doTurnDiscovery","isReconnecting","isForced","generateTurnDiscoveryRequestMessage","handleTurnDiscoveryHttpResponse","httpResponse","abortTurnDiscovery","abort","StatelessWebexPlugin"],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport {ROAP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport RoapRequest from './request';\nimport TurnDiscovery, {TurnDiscoveryResult} from './turnDiscovery';\nimport Meeting from '../meeting';\nimport MeetingUtil from '../meeting/util';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nexport {\n type TurnDiscoveryResult,\n type TurnServerInfo,\n type TurnDiscoverySkipReason,\n} from './turnDiscovery';\n\n/**\n * Roap options\n * @typedef {Object} RoapOptions\n * @property {String} sdp\n * @property {Meeting} meeting\n * @property {Number} seq\n * @property {Number} tieBreaker\n * @property {Boolean} reconnect\n */\n\n/**\n * @typedef {Object} SeqOptions\n * @property {String} correlationId\n * @property {String} mediaId\n * @property {Number} seq\n */\n\n/**\n * @class Roap\n * @export\n * @private\n */\nexport default class Roap extends StatelessWebexPlugin {\n attrs: any;\n lastRoapOffer: any;\n options: any;\n roapHandler: any;\n roapRequest: any;\n turnDiscovery: TurnDiscovery;\n\n /**\n *\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.options = options;\n /**\n * The Roap Request Server Proxy Object\n * @instance\n * @type {RoapRequest}\n * @private\n * @memberof Roap\n */\n // @ts-ignore\n this.roapRequest = new RoapRequest({}, options);\n\n this.turnDiscovery = new TurnDiscovery(this.roapRequest);\n }\n\n /**\n *\n * @param {SeqOptions} options\n * @returns {null}\n * @memberof Roap\n */\n public sendRoapOK(options: any) {\n return Promise.resolve().then(() => {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OK,\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sending with seq ${options.seq}`);\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sent with seq ${options.seq}`);\n });\n });\n }\n\n /**\n * Sends a ROAP answer...\n * @param {SeqOptions} options\n * @param {Boolean} options.audioMuted\n * @param {Boolean} options.videoMuted\n * @returns {Promise}\n * @memberof Roap\n */\n public sendRoapAnswer(options: any) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ANSWER,\n sdps: [options.sdp],\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n return this.roapRequest.sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n });\n }\n\n /**\n * Sends a ROAP error...\n * @param {Object} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapError(options) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ERROR,\n version: ROAP.ROAP_VERSION,\n errorType: options.errorType,\n seq: options.seq,\n };\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(\n `Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`\n );\n });\n }\n\n /**\n * sends a roap media request\n * @param {RoapOptions} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapMediaRequest(options: any) {\n const {meeting, seq, sdp, tieBreaker} = options;\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OFFER,\n sdps: [sdp],\n version: ROAP.ROAP_VERSION,\n seq,\n tieBreaker,\n headers: ['includeAnswerInHttpResponse', 'noOkInTransaction'],\n };\n\n // The only time we want to send an empty media id is when we are reconnecting, because this way we tell Locus\n // that it needs to create a new confluence, but when reconnecting we always send TURN_DISCOVERY_REQUEST first,\n // so we don't need to ever send an empty media id here\n const sendEmptyMediaId = false;\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: sendEmptyMediaId ? '' : meeting.mediaId,\n isMultistream: meeting.isMultistream,\n preferTranscoding: !meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(({locus, mediaConnections}) => {\n if (mediaConnections) {\n meeting.updateMediaConnections(mediaConnections);\n }\n\n let roapAnswer;\n\n if (mediaConnections?.[0]?.remoteSdp) {\n const remoteSdp = JSON.parse(mediaConnections[0].remoteSdp);\n\n if (remoteSdp.roapMessage) {\n const {\n seq: answerSeq,\n messageType,\n sdps,\n errorType,\n errorCause,\n headers,\n } = remoteSdp.roapMessage;\n\n roapAnswer = {\n seq: answerSeq,\n messageType,\n sdp: sdps[0],\n errorType,\n errorCause,\n headers,\n };\n }\n }\n\n if (!roapAnswer) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING, {\n correlationId: meeting.correlationId,\n messageType: 'ANSWER',\n isMultistream: meeting.isMultistream,\n });\n }\n\n return {locus, roapAnswer};\n });\n }\n\n /**\n * Performs a TURN server discovery procedure, which involves exchanging\n * some roap messages with the server. This exchange has to be done before\n * any other roap messages are sent\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting should be set to true if this is a new\n * media connection just after a reconnection\n * @param {Boolean} [isForced]\n * @returns {Promise}\n */\n doTurnDiscovery(\n meeting: Meeting,\n isReconnecting: boolean,\n isForced?: boolean\n ): Promise<TurnDiscoveryResult> {\n return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting, isForced);\n }\n\n generateTurnDiscoveryRequestMessage(meeting: Meeting, isForced: boolean) {\n return this.turnDiscovery.generateTurnDiscoveryRequestMessage(meeting, isForced);\n }\n\n handleTurnDiscoveryHttpResponse(meeting: Meeting, httpResponse: object) {\n return this.turnDiscovery.handleTurnDiscoveryHttpResponse(meeting, httpResponse);\n }\n\n abortTurnDiscovery() {\n return this.turnDiscovery.abort();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_webexCore","require","_constants","_loggerProxy","_interopRequireDefault","_request","_turnDiscovery","_metrics","_constants2","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Roap","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","roapRequest","RoapRequest","turnDiscovery","TurnDiscovery","_createClass2","key","value","sendRoapOK","_this2","_promise","resolve","then","meeting","webex","meetings","meetingCollection","getByKey","correlationId","roapMessage","messageType","ROAP","ROAP_TYPES","OK","version","ROAP_VERSION","seq","LoggerProxy","logger","log","concat","sendRoap","locusSelfUrl","selfUrl","mediaId","isMultistream","locusMediaRequest","sendRoapAnswer","ANSWER","sdps","sdp","sendRoapError","ERROR","errorType","sendRoapMediaRequest","tieBreaker","OFFER","headers","sendEmptyMediaId","preferTranscoding","_ref","_mediaConnections$","locus","mediaConnections","updateMediaConnections","roapAnswer","remoteSdp","JSON","parse","_remoteSdp$roapMessag","answerSeq","errorCause","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","ROAP_HTTP_RESPONSE_MISSING","doTurnDiscovery","isReconnecting","isForced","generateTurnDiscoveryRequestMessage","handleTurnDiscoveryHttpResponse","httpResponse","abortTurnDiscovery","abort","StatelessWebexPlugin"],"sources":["index.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport {ROAP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport RoapRequest from './request';\nimport TurnDiscovery, {TurnDiscoveryResult} from './turnDiscovery';\nimport Meeting from '../meeting';\nimport MeetingUtil from '../meeting/util';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nexport {\n type TurnDiscoveryResult,\n type TurnServerInfo,\n type TurnDiscoverySkipReason,\n} from './turnDiscovery';\n\n/**\n * Roap options\n * @typedef {Object} RoapOptions\n * @property {String} sdp\n * @property {Meeting} meeting\n * @property {Number} seq\n * @property {Number} tieBreaker\n * @property {Boolean} reconnect\n */\n\n/**\n * @typedef {Object} SeqOptions\n * @property {String} correlationId\n * @property {String} mediaId\n * @property {Number} seq\n */\n\n/**\n * @class Roap\n * @export\n * @private\n */\nexport default class Roap extends StatelessWebexPlugin {\n attrs: any;\n lastRoapOffer: any;\n options: any;\n roapHandler: any;\n roapRequest: any;\n turnDiscovery: TurnDiscovery;\n\n /**\n *\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n super({}, options);\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.attrs = attrs;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof Roap\n */\n this.options = options;\n /**\n * The Roap Request Server Proxy Object\n * @instance\n * @type {RoapRequest}\n * @private\n * @memberof Roap\n */\n // @ts-ignore\n this.roapRequest = new RoapRequest({}, options);\n\n this.turnDiscovery = new TurnDiscovery(this.roapRequest);\n }\n\n /**\n *\n * @param {SeqOptions} options\n * @returns {null}\n * @memberof Roap\n */\n public sendRoapOK(options: any) {\n return Promise.resolve().then(() => {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OK,\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sending with seq ${options.seq}`);\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(`Roap:index#sendRoapOK --> ROAP OK sent with seq ${options.seq}`);\n });\n });\n }\n\n /**\n * Sends a ROAP answer...\n * @param {SeqOptions} options\n * @param {Boolean} options.audioMuted\n * @param {Boolean} options.videoMuted\n * @returns {Promise}\n * @memberof Roap\n */\n public sendRoapAnswer(options: any) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ANSWER,\n sdps: [options.sdp],\n version: ROAP.ROAP_VERSION,\n seq: options.seq,\n };\n\n return this.roapRequest.sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n });\n }\n\n /**\n * Sends a ROAP error...\n * @param {Object} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapError(options) {\n // @ts-ignore\n const meeting = this.webex.meetings.meetingCollection.getByKey(\n 'correlationId',\n options.correlationId\n );\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.ERROR,\n version: ROAP.ROAP_VERSION,\n errorType: options.errorType,\n seq: options.seq,\n };\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: options.mediaId,\n isMultistream: meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(() => {\n LoggerProxy.logger.log(\n `Roap:index#sendRoapError --> ROAP ERROR sent with seq ${options.seq}`\n );\n });\n }\n\n /**\n * sends a roap media request\n * @param {RoapOptions} options\n * @returns {Promise}\n * @memberof Roap\n */\n sendRoapMediaRequest(options: any) {\n const {meeting, seq, sdp, tieBreaker} = options;\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.OFFER,\n sdps: [sdp],\n version: ROAP.ROAP_VERSION,\n seq,\n tieBreaker,\n headers: ['includeAnswerInHttpResponse', 'noOkInTransaction'],\n };\n\n // The only time we want to send an empty media id is when we are reconnecting, because this way we tell Locus\n // that it needs to create a new confluence, but when reconnecting we always send TURN_DISCOVERY_REQUEST first,\n // so we don't need to ever send an empty media id here\n const sendEmptyMediaId = false;\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n locusSelfUrl: meeting.selfUrl,\n mediaId: sendEmptyMediaId ? '' : meeting.mediaId,\n isMultistream: meeting.isMultistream,\n preferTranscoding: !meeting.isMultistream,\n locusMediaRequest: meeting.locusMediaRequest,\n })\n .then(({locus, mediaConnections}) => {\n if (mediaConnections) {\n meeting.updateMediaConnections(mediaConnections);\n }\n\n let roapAnswer;\n\n if (mediaConnections?.[0]?.remoteSdp) {\n const remoteSdp = JSON.parse(mediaConnections[0].remoteSdp);\n\n if (remoteSdp.roapMessage) {\n const {\n seq: answerSeq,\n messageType,\n sdps,\n errorType,\n errorCause,\n headers,\n } = remoteSdp.roapMessage;\n\n if (messageType === ROAP.ROAP_TYPES.ANSWER) {\n roapAnswer = {\n seq: answerSeq,\n messageType,\n sdp: sdps[0],\n errorType,\n errorCause,\n headers,\n };\n }\n }\n }\n\n if (!roapAnswer) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ROAP_HTTP_RESPONSE_MISSING, {\n correlationId: meeting.correlationId,\n messageType: 'ANSWER',\n isMultistream: meeting.isMultistream,\n });\n }\n\n return {locus, roapAnswer};\n });\n }\n\n /**\n * Performs a TURN server discovery procedure, which involves exchanging\n * some roap messages with the server. This exchange has to be done before\n * any other roap messages are sent\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting should be set to true if this is a new\n * media connection just after a reconnection\n * @param {Boolean} [isForced]\n * @returns {Promise}\n */\n doTurnDiscovery(\n meeting: Meeting,\n isReconnecting: boolean,\n isForced?: boolean\n ): Promise<TurnDiscoveryResult> {\n return this.turnDiscovery.doTurnDiscovery(meeting, isReconnecting, isForced);\n }\n\n generateTurnDiscoveryRequestMessage(meeting: Meeting, isForced: boolean) {\n return this.turnDiscovery.generateTurnDiscoveryRequestMessage(meeting, isForced);\n }\n\n handleTurnDiscoveryHttpResponse(meeting: Meeting, httpResponse: object) {\n return this.turnDiscovery.handleTurnDiscoveryHttpResponse(meeting, httpResponse);\n }\n\n abortTurnDiscovery() {\n return this.turnDiscovery.abort();\n }\n}\n"],"mappings":"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"}
@@ -36,6 +36,11 @@ declare class AnnotationChannel extends WebexPlugin implements IAnnotationChanne
36
36
  * @returns {undefined}
37
37
  */
38
38
  private listenToEvents;
39
+ /**
40
+ * Remove event listeners
41
+ * @returns {undefined}
42
+ */
43
+ deregisterEvents(): void;
39
44
  /**
40
45
  * set locusUrl
41
46
  * @param {string} locusUrl
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Error occurred while the webinar required registration
2
+ * Error occurred while join the webinar
3
3
  */
4
- export default class WebinarRegistrationError extends Error {
4
+ export default class JoinWebinarError extends Error {
5
5
  code: number;
6
6
  error: any;
7
7
  sdkMessage: string;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Error thrown when we try to do multistream, but fail. This error
3
+ * is not exported outside of plugin-meetings, because it's handled
4
+ * internally.
5
+ */
6
+ export default class MultistreamNotSupportedError extends Error {
7
+ code: any;
8
+ error: any;
9
+ sdkMessage: any;
10
+ /**
11
+ *
12
+ * @constructor
13
+ * @param {String} [message]
14
+ * @param {Object} [error]
15
+ */
16
+ constructor(message?: string, error?: any);
17
+ }
@@ -24,6 +24,7 @@ export declare const ENDED = "ended";
24
24
  export declare const HECATE = "hecate";
25
25
  export declare const HOST = "host";
26
26
  export declare const JOIN = "join";
27
+ export declare const JOIN_LINK_MTID = "MTID";
27
28
  export declare const LEAVE = "leave";
28
29
  export declare const LIVE = "live";
29
30
  export declare const LOCAL = "local";
@@ -75,6 +76,7 @@ export declare const _ON_HOLD_LOBBY_ = "ON_HOLD_LOBBY";
75
76
  export declare const _MEETING_LINK_ = "MEETING_LINK";
76
77
  export declare const _MEETING_UUID_ = "MEETING_UUID";
77
78
  export declare const _MEETING_ = "MEETING";
79
+ export declare const _SPACE_SHARE_ = "SPACE_SHARE";
78
80
  export declare const _MEETING_CENTER_ = "MEETING_CENTER";
79
81
  export declare const _MEETING_ID_ = "MEETING_ID";
80
82
  export declare const _NOT_IN_MEETING_ = "NOT_IN_MEETING";
@@ -136,6 +138,8 @@ export declare const ICE_FAIL_TIMEOUT = 3000;
136
138
  export declare const RETRY_TIMEOUT = 3000;
137
139
  export declare const ICE_AND_DTLS_CONNECTION_TIMEOUT = 20000;
138
140
  export declare const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
141
+ export declare const WEBINAR_ERROR_WEBCAST: number[];
142
+ export declare const WEBINAR_ERROR_REGISTRATIONID: number[];
139
143
  export declare const DIALER_REGEX: {
140
144
  SIP_ADDRESS: RegExp;
141
145
  PHONE_NUMBER: RegExp;
@@ -214,6 +218,7 @@ export declare const EVENT_TRIGGERS: {
214
218
  MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: string;
215
219
  MEETING_SELF_IS_SHARING_BLOCKED: string;
216
220
  MEETING_SELF_ROLES_CHANGED: string;
221
+ MEETING_SELF_BRB_UPDATE: string;
217
222
  MEETING_CONTROLS_LAYOUT_UPDATE: string;
218
223
  MEETING_ENTRY_EXIT_TONE_UPDATE: string;
219
224
  MEETING_BREAKOUTS_UPDATE: string;
@@ -236,6 +241,7 @@ export declare const EVENT_TRIGGERS: {
236
241
  MEETING_RECONNECTION_FAILURE: string;
237
242
  MEETING_UNLOCKED: string;
238
243
  MEETING_LOCKED: string;
244
+ MEETING_RESOURCE_LINKS_UPDATE: string;
239
245
  MEETING_INFO_AVAILABLE: string;
240
246
  MEETING_INFO_UPDATED: string;
241
247
  MEETING_LOG_UPLOAD_SUCCESS: string;
@@ -286,6 +292,12 @@ export declare const EVENT_TYPES: {
286
292
  REMOTE_SHARE_AUDIO: string;
287
293
  ERROR: string;
288
294
  };
295
+ export declare const HEADERS: {
296
+ CONTENT_TYPE: string;
297
+ CONTENT_TYPE_VALUE: {
298
+ APPLICATION_JSON: string;
299
+ };
300
+ };
289
301
  export declare const MEETING_REMOVED_REASON: {
290
302
  SELF_REMOVED: string;
291
303
  FULLSTATE_REMOVED: string;
@@ -410,7 +422,12 @@ export declare const ERROR_DICTIONARY: {
410
422
  MESSAGE: string;
411
423
  CODE: number;
412
424
  };
413
- WebinarRegistrationError: {
425
+ JoinWebinarError: {
426
+ NAME: string;
427
+ MESSAGE: string;
428
+ CODE: number;
429
+ };
430
+ MULTISTREAM_NOT_SUPPORTED: {
414
431
  NAME: string;
415
432
  MESSAGE: string;
416
433
  CODE: number;
@@ -578,6 +595,7 @@ export declare const LOCUSINFO: {
578
595
  SELF_IS_SHARING_BLOCKED_CHANGE: string;
579
596
  SELF_MEETING_BREAKOUTS_CHANGED: string;
580
597
  SELF_MEETING_INTERPRETATION_CHANGED: string;
598
+ SELF_MEETING_BRB_CHANGED: string;
581
599
  MEDIA_INACTIVITY: string;
582
600
  LINKS_SERVICES: string;
583
601
  LINKS_RESOURCES: string;
@@ -738,6 +756,10 @@ export declare const DISPLAY_HINTS: {
738
756
  RECORDING_CONTROL_PAUSE: string;
739
757
  RECORDING_CONTROL_STOP: string;
740
758
  RECORDING_CONTROL_RESUME: string;
759
+ PREMISE_RECORDING_CONTROL_START: string;
760
+ PREMISE_RECORDING_CONTROL_PAUSE: string;
761
+ PREMISE_RECORDING_CONTROL_STOP: string;
762
+ PREMISE_RECORDING_CONTROL_RESUME: string;
741
763
  LOCK_CONTROL_UNLOCK: string;
742
764
  LOCK_CONTROL_LOCK: string;
743
765
  LOCK_STATUS_LOCKED: string;
@@ -782,6 +804,7 @@ export declare const DISPLAY_HINTS: {
782
804
  DISABLE_ASK_FOR_HELP: string;
783
805
  DISABLE_BREAKOUT_PREASSIGNMENTS: string;
784
806
  DISABLE_LOBBY_TO_BREAKOUT: string;
807
+ DISABLE_BREAKOUT_START: string;
785
808
  DISABLE_VIEW_THE_PARTICIPANT_LIST: string;
786
809
  ENABLE_VIEW_THE_PARTICIPANT_LIST: string;
787
810
  DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST: string;
@@ -1087,6 +1110,8 @@ export declare const MEETING_INFO_FAILURE_REASON: {
1087
1110
  WRONG_CAPTCHA: string;
1088
1111
  POLICY: string;
1089
1112
  WEBINAR_REGISTRATION: string;
1113
+ NEED_JOIN_WITH_WEBCAST: string;
1114
+ WEBINAR_NEED_REGISTRATIONID: string;
1090
1115
  OTHER: string;
1091
1116
  };
1092
1117
  export declare const BNR_STATUS: {
@@ -1134,3 +1159,11 @@ export declare const DESTINATION_TYPE: {
1134
1159
  readonly MEETING_UUID: "MEETING_UUID";
1135
1160
  };
1136
1161
  export type DESTINATION_TYPE = Enum<typeof DESTINATION_TYPE>;
1162
+ export declare const INITIAL_REGISTRATION_STATUS: {
1163
+ fetchWebexSite: boolean;
1164
+ getGeoHint: boolean;
1165
+ startReachability: boolean;
1166
+ deviceRegister: boolean;
1167
+ mercuryConnect: boolean;
1168
+ checkH264Support: boolean;
1169
+ };
@@ -3,18 +3,18 @@ import CaptchaError from './common/errors/captcha-error';
3
3
  import IntentToJoinError from './common/errors/intent-to-join';
4
4
  import PasswordError from './common/errors/password-error';
5
5
  import PermissionError from './common/errors/permission';
6
- import WebinarRegistrationError from './common/errors/webinar-registration-error';
6
+ import JoinWebinarError from './common/errors/join-webinar-error';
7
7
  import { ReclaimHostEmptyWrongKeyError, ReclaimHostIsHostAlreadyError, ReclaimHostNotAllowedError, ReclaimHostNotSupportedError } from './common/errors/reclaim-host-role-errors';
8
8
  import Meeting from './meeting';
9
9
  import MeetingInfoUtil from './meeting-info/utilv2';
10
10
  import JoinMeetingError from './common/errors/join-meeting';
11
- export { getDevices, LocalStream, LocalDisplayStream, LocalSystemAudioStream, LocalStreamEventNames, StreamEventNames, RemoteStreamEventNames, type ServerMuteReason, LocalMicrophoneStreamEventNames, LocalCameraStreamEventNames, LocalMicrophoneStream, LocalCameraStream, createMicrophoneStream, createCameraStream, createDisplayStream, createDisplayStreamWithAudio, FacingMode, DisplaySurface, PresetCameraConstraints, type VideoContentHint, } from '@webex/media-helpers';
11
+ export { LocalStream, LocalDisplayStream, LocalSystemAudioStream, LocalStreamEventNames, StreamEventNames, RemoteStreamEventNames, type ServerMuteReason, LocalMicrophoneStreamEventNames, LocalCameraStreamEventNames, LocalMicrophoneStream, LocalCameraStream, createMicrophoneStream, createCameraStream, createCameraAndMicrophoneStreams, createDisplayStream, createDisplayStreamWithAudio, createDisplayMedia, FacingMode, DisplaySurface, PresetCameraConstraints, type VideoContentHint, type StreamState, } from '@webex/media-helpers';
12
12
  export default Meetings;
13
13
  export * as CONSTANTS from './constants';
14
14
  export * as REACTIONS from './reactions/reactions';
15
15
  export * as sdkAnnotationTypes from './annotation/annotation.types';
16
16
  export * as MeetingInfoV2 from './meeting-info/meeting-info-v2';
17
17
  export { type Reaction } from './reactions/reactions.type';
18
- export { CaptchaError, IntentToJoinError, JoinMeetingError, PasswordError, PermissionError, ReclaimHostIsHostAlreadyError, ReclaimHostNotAllowedError, ReclaimHostNotSupportedError, ReclaimHostEmptyWrongKeyError, Meeting, MeetingInfoUtil, WebinarRegistrationError, };
18
+ export { CaptchaError, IntentToJoinError, JoinMeetingError, PasswordError, PermissionError, ReclaimHostIsHostAlreadyError, ReclaimHostNotAllowedError, ReclaimHostNotSupportedError, ReclaimHostEmptyWrongKeyError, Meeting, MeetingInfoUtil, JoinWebinarError, };
19
19
  export { RemoteMedia } from './multistream/remoteMedia';
20
20
  export { default as TriggerProxy } from './common/events/trigger-proxy';
@@ -229,11 +229,12 @@ export default class LocusInfo extends EventsScope {
229
229
  /**
230
230
  * handles when the locus.mediaShares is updated
231
231
  * @param {Object} mediaShares the locus.mediaShares property
232
+ * @param {boolean} forceUpdate force to update the mediaShares
232
233
  * @returns {undefined}
233
234
  * @memberof LocusInfo
234
235
  * emits internal event locus_info_update_media_shares
235
236
  */
236
- updateMediaShares(mediaShares: object): void;
237
+ updateMediaShares(mediaShares: object, forceUpdate?: boolean): void;
237
238
  /**
238
239
  * @param {String} participantsUrl
239
240
  * @returns {undefined}
@@ -22,6 +22,7 @@ interface IInMeetingActions {
22
22
  canStartRecording?: boolean;
23
23
  canPauseRecording?: boolean;
24
24
  canResumeRecording?: boolean;
25
+ isPremiseRecordingEnabled?: boolean;
25
26
  canStopRecording?: boolean;
26
27
  canRaiseHand?: boolean;
27
28
  canLowerAllHands?: boolean;
@@ -42,6 +43,7 @@ interface IInMeetingActions {
42
43
  waitingForOthersToJoin?: boolean;
43
44
  canSendReactions?: boolean;
44
45
  canManageBreakout?: boolean;
46
+ canStartBreakout?: boolean;
45
47
  canBroadcastMessageToBreakout?: boolean;
46
48
  canAdmitLobbyToBreakout?: boolean;
47
49
  isBreakoutPreassignmentsEnabled?: boolean;
@@ -107,6 +109,7 @@ export default class InMeetingActions implements IInMeetingActions {
107
109
  canStartRecording: any;
108
110
  canPauseRecording: any;
109
111
  canResumeRecording: any;
112
+ isPremiseRecordingEnabled: any;
110
113
  canStopRecording: any;
111
114
  canSetMuteOnEntry: any;
112
115
  canSetPresenter: any;
@@ -135,6 +138,7 @@ export default class InMeetingActions implements IInMeetingActions {
135
138
  waitingForOthersToJoin: any;
136
139
  canSendReactions: any;
137
140
  canManageBreakout: any;
141
+ canStartBreakout: any;
138
142
  canBroadcastMessageToBreakout: any;
139
143
  canAdmitLobbyToBreakout: any;
140
144
  isBreakoutPreassignmentsEnabled: any;
@@ -837,6 +837,14 @@ export default class Meeting extends StatelessWebexPlugin {
837
837
  authorizingLocusUrl: string;
838
838
  mainLocusUrl: string;
839
839
  }): any;
840
+ /**
841
+ * Manages be right back status updates for the current participant.
842
+ *
843
+ * @param {boolean} enabled - Indicates whether the user enabled brb or not.
844
+ * @returns {Promise<void>} resolves when the brb status is updated or does nothing if not in a multistream meeting.
845
+ * @throws {Error} - Throws an error if the request fails.
846
+ */
847
+ beRightBack(enabled: boolean): Promise<void>;
840
848
  /**
841
849
  * Remove the member from the meeting, boot them
842
850
  * @param {String} memberId
@@ -1046,11 +1054,12 @@ export default class Meeting extends StatelessWebexPlugin {
1046
1054
  * Close the peer connections and remove them from the class.
1047
1055
  * Cleanup any media connection related things.
1048
1056
  *
1057
+ * @param {boolean} resetMuteStates whether to also reset the audio/video mute state information
1049
1058
  * @returns {Promise}
1050
1059
  * @public
1051
1060
  * @memberof Meeting
1052
1061
  */
1053
- closePeerConnections(): Promise<void>;
1062
+ closePeerConnections(resetMuteStates?: boolean): Promise<void>;
1054
1063
  /**
1055
1064
  * Unsets the peer connections on the class
1056
1065
  * warning DO NOT CALL WITHOUT CLOSING PEER CONNECTIONS FIRST
@@ -1115,7 +1124,7 @@ export default class Meeting extends StatelessWebexPlugin {
1115
1124
  * @param {Object} options - options to join with media
1116
1125
  * @param {JoinOptions} [options.joinOptions] - see #join()
1117
1126
  * @param {AddMediaOptions} [options.mediaOptions] - see #addMedia()
1118
- * @returns {Promise} -- {join: see join(), media: see addMedia()}
1127
+ * @returns {Promise} -- {join: see join(), media: see addMedia(), multistreamEnabled: flag to indicate if we managed to join in multistream mode}
1119
1128
  * @public
1120
1129
  * @memberof Meeting
1121
1130
  * @example
@@ -1337,16 +1346,6 @@ export default class Meeting extends StatelessWebexPlugin {
1337
1346
  * @returns {void}
1338
1347
  */
1339
1348
  private createStatsAnalyzer;
1340
- /**
1341
- * Handles device logging
1342
- *
1343
- * @private
1344
- * @static
1345
- * @param {boolean} isAudioEnabled
1346
- * @param {boolean} isVideoEnabled
1347
- * @returns {Promise<void>}
1348
- */
1349
- private static handleDeviceLogging;
1350
1349
  /**
1351
1350
  * Returns a promise. This promise is created once the local sdp offer has been successfully created and is resolved
1352
1351
  * once the remote sdp answer has been received.
@@ -1412,6 +1411,14 @@ export default class Meeting extends StatelessWebexPlugin {
1412
1411
  * @returns {Promise<void>}
1413
1412
  */
1414
1413
  private cleanUpOnAddMediaFailure;
1414
+ /**
1415
+ * Cleans up stats analyzer, peer connection and other things before
1416
+ * we can create a new transcoded media connection
1417
+ *
1418
+ * @private
1419
+ * @returns {Promise<void>}
1420
+ */
1421
+ private downgradeFromMultistreamToTranscoded;
1415
1422
  /**
1416
1423
  * Sends stats report, closes peer connection and cleans up any media connection
1417
1424
  * related things before trying to establish media connection again with turn server
@@ -73,4 +73,8 @@ export declare class LocusMediaRequest extends WebexPlugin {
73
73
  send(request: Request): Promise<RequestResult>;
74
74
  /** Returns true if a confluence on the server is already created */
75
75
  isConfluenceCreated(): boolean;
76
+ /**
77
+ * This method needs to be called when we downgrade from multistream to transcoded connection.
78
+ */
79
+ downgradeFromMultistreamToTranscoded(): void;
76
80
  }
@@ -1,5 +1,5 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { SendReactionOptions, ToggleReactionsOptions } from './request.type';
2
+ import { SendReactionOptions, BrbOptions, ToggleReactionsOptions } from './request.type';
3
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
4
  import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
@@ -292,4 +292,15 @@ export default class MeetingRequest extends StatelessWebexPlugin {
292
292
  */
293
293
  toggleReactions({ enable, locusUrl, requestingParticipantId }: ToggleReactionsOptions): Promise<any>;
294
294
  getLocusStatusByUrl(locusUrl: string): any;
295
+ /**
296
+ * Sends a request to set be right back status.
297
+ *
298
+ * @param {Object} options - The options for brb request.
299
+ * @param {boolean} options.enabled - Whether brb status is enabled.
300
+ * @param {string} options.locusUrl - The URL of the locus.
301
+ * @param {string} options.deviceUrl - The URL of the device.
302
+ * @param {string} options.selfId - The ID of the participant.
303
+ * @returns {Promise}
304
+ */
305
+ setBrb({ enabled, locusUrl, deviceUrl, selfId }: BrbOptions): Promise<any>;
295
306
  }
@@ -9,3 +9,9 @@ export type ToggleReactionsOptions = {
9
9
  locusUrl: string;
10
10
  requestingParticipantId: string;
11
11
  };
12
+ export type BrbOptions = {
13
+ enabled: boolean;
14
+ locusUrl: string;
15
+ deviceUrl: string;
16
+ selfId: string;
17
+ };
@@ -54,6 +54,7 @@ declare const MeetingUtil: {
54
54
  canUserLowerSomeoneElsesHand: (displayHints: any) => any;
55
55
  bothLeaveAndEndMeetingAvailable: (displayHints: any) => any;
56
56
  canManageBreakout: (displayHints: any) => any;
57
+ canStartBreakout: (displayHints: any) => boolean;
57
58
  canBroadcastMessageToBreakout: (displayHints: any, policies?: {}) => boolean;
58
59
  isSuppressBreakoutSupport: (displayHints: any) => any;
59
60
  canAdmitLobbyToBreakout: (displayHints: any) => boolean;
@@ -63,7 +64,6 @@ declare const MeetingUtil: {
63
64
  unlockMeeting: (actions: any, request: any, locusUrl: any) => any;
64
65
  handleAudioLogging: (audioStream?: LocalMicrophoneStream) => void;
65
66
  handleVideoLogging: (videoStream?: LocalCameraStream) => void;
66
- handleDeviceLogging: (devices?: any[]) => void;
67
67
  endMeetingForAll: (meeting: any) => any;
68
68
  canEnableClosedCaption: (displayHints: any) => any;
69
69
  isSaveTranscriptsEnabled: (displayHints: any) => any;
@@ -65,9 +65,9 @@ export declare class MeetingInfoV2CaptchaError extends Error {
65
65
  constructor(wbxAppApiErrorCode?: number, captchaInfo?: object, message?: string);
66
66
  }
67
67
  /**
68
- * Error preventing join because of a webinar registration error
68
+ * Error preventing join because of a webinar have some error
69
69
  */
70
- export declare class MeetingInfoV2WebinarRegistrationError extends Error {
70
+ export declare class MeetingInfoV2JoinWebinarError extends Error {
71
71
  meetingInfo: any;
72
72
  sdkMessage: any;
73
73
  wbxAppApiCode: any;
@@ -107,11 +107,11 @@ export default class MeetingInfoV2 {
107
107
  */
108
108
  handlePolicyError: (err: any) => void;
109
109
  /**
110
- * Raises a handleWebinarRegistrationError for webinar registration error codes
110
+ * Raises a handleJoinWebinarError for join webinar error codes
111
111
  * @param {any} err the error from the request
112
112
  * @returns {void}
113
113
  */
114
- handleWebinarRegistrationError: (err: any) => void;
114
+ handleJoinWebinarError: (err: any) => void;
115
115
  /**
116
116
  * Creates adhoc space meetings for a space by fetching the conversation infomation
117
117
  * @param {String} conversationUrl conversationUrl to start adhoc meeting on
@@ -8,7 +8,7 @@ import 'webrtc-adapter';
8
8
  import { DESTINATION_TYPE } from '../constants';
9
9
  import { CallStateForMetrics } from '../meeting';
10
10
  import Reachability from '../reachability';
11
- import { INoiseReductionEffect, IVirtualBackgroundEffect } from './meetings.types';
11
+ import { INoiseReductionEffect, IVirtualBackgroundEffect, MeetingRegistrationStatus } from './meetings.types';
12
12
  /**
13
13
  * Meetings Ready Event
14
14
  * Emitted when the meetings instance on webex is ready
@@ -71,6 +71,9 @@ export type BasicMeetingInformation = {
71
71
  };
72
72
  meetingInfo: any;
73
73
  sessionCorrelationId: string;
74
+ roles: string[];
75
+ getCurUserType: () => string | null;
76
+ callStateForMetrics: CallStateForMetrics;
74
77
  };
75
78
  /**
76
79
  * Maintain a cache of meetings and sync with services.
@@ -91,6 +94,7 @@ export default class Meetings extends WebexPlugin {
91
94
  mediaHelpers: any;
92
95
  breakoutLocusForHandleLater: any;
93
96
  namespace: string;
97
+ registrationStatus: MeetingRegistrationStatus;
94
98
  /**
95
99
  * Initializes the Meetings Plugin
96
100
  * @constructor
@@ -175,6 +179,13 @@ export default class Meetings extends WebexPlugin {
175
179
  * @memberof Meetings
176
180
  */
177
181
  private onReady;
182
+ /**
183
+ * API to change log upload interval. Setting the factor to 0 will disable periodic log uploads.
184
+ *
185
+ * @param {number} factor new factor value
186
+ * @returns {void}
187
+ */
188
+ private _setLogUploadIntervalMultiplicationFactor;
178
189
  /**
179
190
  * API to toggle unified meetings
180
191
  * @param {Boolean} changeState
@@ -216,6 +227,13 @@ export default class Meetings extends WebexPlugin {
216
227
  * @returns {undefined}
217
228
  */
218
229
  private _toggleIpv6BackendNativeSupport;
230
+ /**
231
+ * Executes a registration step and updates the registration status.
232
+ * @param {Function} step - The registration step to execute.
233
+ * @param {string} stepName - The name of the registration step.
234
+ * @returns {Promise} A promise that resolves when the step is completed.
235
+ */
236
+ executeRegistrationStep(step: () => Promise<any>, stepName: string): Promise<void>;
219
237
  /**
220
238
  * Explicitly sets up the meetings plugin by registering
221
239
  * the device, connecting to mercury, and listening for locus events.
@@ -11,3 +11,11 @@ export declare const MEETING_KEY: {
11
11
  readonly CORRELATION_ID: "correlationId";
12
12
  };
13
13
  export type MEETING_KEY = Enum<typeof MEETING_KEY>;
14
+ export type MeetingRegistrationStatus = {
15
+ fetchWebexSite: boolean;
16
+ getGeoHint: boolean;
17
+ startReachability: boolean;
18
+ deviceRegister: boolean;
19
+ mercuryConnect: boolean;
20
+ checkH264Support: boolean;
21
+ };
@@ -21,6 +21,7 @@ export default class Member {
21
21
  isRecording: any;
22
22
  isRemovable: any;
23
23
  isSelf: any;
24
+ isBrb: boolean;
24
25
  isUser: any;
25
26
  isVideoMuted: any;
26
27
  roles: IExternalRoles;
@@ -19,6 +19,13 @@ export type ParticipantWithRoles = {
19
19
  };
20
20
  };
21
21
  };
22
+ export type ParticipantWithBrb = {
23
+ controls: {
24
+ brb?: {
25
+ enabled: boolean;
26
+ };
27
+ };
28
+ };
22
29
  export declare enum MediaStatus {
23
30
  RECVONLY = "RECVONLY",
24
31
  SENDONLY = "SENDONLY",
@@ -67,7 +67,7 @@ declare const BEHAVIORAL_METRICS: {
67
67
  ROAP_HTTP_RESPONSE_MISSING: string;
68
68
  TURN_DISCOVERY_REQUIRES_OK: string;
69
69
  REACHABILITY_COMPLETED: string;
70
- WEBINAR_REGISTRATION_ERROR: string;
70
+ JOIN_WEBINAR_ERROR: string;
71
71
  GUEST_ENTERED_LOBBY: string;
72
72
  GUEST_EXITED_LOBBY: string;
73
73
  };
@@ -1,4 +1,4 @@
1
- import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup } from '@webex/internal-media-core';
1
+ import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState } from '@webex/internal-media-core';
2
2
  export default class SendSlotManager {
3
3
  private readonly slots;
4
4
  private readonly LoggerProxy;
@@ -25,6 +25,13 @@ export default class SendSlotManager {
25
25
  * @returns {void}
26
26
  */
27
27
  setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]): void;
28
+ /**
29
+ * Sets the source state override for the given media type.
30
+ * @param {MediaType} mediaType - The type of media (must be MediaType.VideoMain to apply source state changes).
31
+ * @param {StreamState | null} state - The state to set or null to clear the override value.
32
+ * @returns {void}
33
+ */
34
+ setSourceStateOverride(mediaType: MediaType, state: StreamState | null): void;
28
35
  /**
29
36
  * This method publishes the given stream to the sendSlot for the given mediaType
30
37
  * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
@@ -1,7 +1,10 @@
1
- declare enum RecordingAction {
1
+ export declare enum RecordingAction {
2
2
  Start = "Start",
3
3
  Stop = "Stop",
4
4
  Pause = "Pause",
5
5
  Resume = "Resume"
6
6
  }
7
- export default RecordingAction;
7
+ export declare enum RecordingType {
8
+ Premise = "premise",
9
+ Cloud = "cloud"
10
+ }
@@ -161,6 +161,7 @@ export default class RecordingController {
161
161
  private extract;
162
162
  /**
163
163
  * @param {RecordingAction} action
164
+ * @param {RecordingType} recordingType
164
165
  * @private
165
166
  * @memberof RecordingController
166
167
  * @returns {Promise}