@webex/plugin-meetings 3.7.0-next.9 → 3.7.0-wxcc.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 (124) 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/join-forbidden-error.js +52 -0
  6. package/dist/common/errors/join-forbidden-error.js.map +1 -0
  7. package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
  8. package/dist/common/errors/join-webinar-error.js.map +1 -0
  9. package/dist/common/errors/multistream-not-supported-error.js +53 -0
  10. package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
  11. package/dist/config.js +1 -1
  12. package/dist/config.js.map +1 -1
  13. package/dist/constants.js +46 -5
  14. package/dist/constants.js.map +1 -1
  15. package/dist/index.js +16 -11
  16. package/dist/index.js.map +1 -1
  17. package/dist/interpretation/index.js +1 -1
  18. package/dist/interpretation/siLanguage.js +1 -1
  19. package/dist/locus-info/index.js +14 -3
  20. package/dist/locus-info/index.js.map +1 -1
  21. package/dist/locus-info/selfUtils.js +30 -17
  22. package/dist/locus-info/selfUtils.js.map +1 -1
  23. package/dist/meeting/in-meeting-actions.js +2 -0
  24. package/dist/meeting/in-meeting-actions.js.map +1 -1
  25. package/dist/meeting/index.js +960 -832
  26. package/dist/meeting/index.js.map +1 -1
  27. package/dist/meeting/locusMediaRequest.js +9 -0
  28. package/dist/meeting/locusMediaRequest.js.map +1 -1
  29. package/dist/meeting/request.js +30 -0
  30. package/dist/meeting/request.js.map +1 -1
  31. package/dist/meeting/request.type.js.map +1 -1
  32. package/dist/meeting/util.js +16 -16
  33. package/dist/meeting/util.js.map +1 -1
  34. package/dist/meeting-info/meeting-info-v2.js +96 -33
  35. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  36. package/dist/meeting-info/utilv2.js +1 -1
  37. package/dist/meeting-info/utilv2.js.map +1 -1
  38. package/dist/meetings/index.js +103 -54
  39. package/dist/meetings/index.js.map +1 -1
  40. package/dist/meetings/meetings.types.js +2 -0
  41. package/dist/meetings/meetings.types.js.map +1 -1
  42. package/dist/meetings/util.js +1 -1
  43. package/dist/meetings/util.js.map +1 -1
  44. package/dist/member/index.js +9 -0
  45. package/dist/member/index.js.map +1 -1
  46. package/dist/member/types.js.map +1 -1
  47. package/dist/member/util.js +39 -28
  48. package/dist/member/util.js.map +1 -1
  49. package/dist/metrics/constants.js +3 -2
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/remoteMedia.js +30 -15
  52. package/dist/multistream/remoteMedia.js.map +1 -1
  53. package/dist/multistream/sendSlotManager.js +24 -0
  54. package/dist/multistream/sendSlotManager.js.map +1 -1
  55. package/dist/roap/index.js +10 -8
  56. package/dist/roap/index.js.map +1 -1
  57. package/dist/types/annotation/index.d.ts +5 -0
  58. package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
  59. package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
  60. package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
  61. package/dist/types/constants.d.ts +38 -1
  62. package/dist/types/index.d.ts +3 -3
  63. package/dist/types/locus-info/index.d.ts +2 -1
  64. package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
  65. package/dist/types/meeting/index.d.ts +19 -12
  66. package/dist/types/meeting/locusMediaRequest.d.ts +4 -0
  67. package/dist/types/meeting/request.d.ts +12 -1
  68. package/dist/types/meeting/request.type.d.ts +6 -0
  69. package/dist/types/meeting/util.d.ts +1 -1
  70. package/dist/types/meeting-info/meeting-info-v2.d.ts +27 -4
  71. package/dist/types/meetings/index.d.ts +16 -1
  72. package/dist/types/meetings/meetings.types.d.ts +8 -0
  73. package/dist/types/member/index.d.ts +1 -0
  74. package/dist/types/member/types.d.ts +7 -0
  75. package/dist/types/metrics/constants.d.ts +2 -1
  76. package/dist/types/multistream/sendSlotManager.d.ts +8 -1
  77. package/dist/webinar/index.js +354 -3
  78. package/dist/webinar/index.js.map +1 -1
  79. package/package.json +23 -22
  80. package/src/annotation/index.ts +16 -0
  81. package/src/common/errors/join-forbidden-error.ts +26 -0
  82. package/src/common/errors/join-webinar-error.ts +24 -0
  83. package/src/common/errors/multistream-not-supported-error.ts +30 -0
  84. package/src/config.ts +1 -1
  85. package/src/constants.ts +43 -3
  86. package/src/index.ts +5 -3
  87. package/src/locus-info/index.ts +20 -3
  88. package/src/locus-info/selfUtils.ts +19 -6
  89. package/src/meeting/in-meeting-actions.ts +4 -0
  90. package/src/meeting/index.ts +259 -80
  91. package/src/meeting/locusMediaRequest.ts +7 -0
  92. package/src/meeting/request.ts +26 -1
  93. package/src/meeting/request.type.ts +7 -0
  94. package/src/meeting/util.ts +8 -10
  95. package/src/meeting-info/meeting-info-v2.ts +74 -11
  96. package/src/meeting-info/utilv2.ts +3 -1
  97. package/src/meetings/index.ts +73 -20
  98. package/src/meetings/meetings.types.ts +10 -0
  99. package/src/meetings/util.ts +2 -1
  100. package/src/member/index.ts +9 -0
  101. package/src/member/types.ts +8 -0
  102. package/src/member/util.ts +34 -24
  103. package/src/metrics/constants.ts +2 -1
  104. package/src/multistream/remoteMedia.ts +28 -15
  105. package/src/multistream/sendSlotManager.ts +31 -0
  106. package/src/roap/index.ts +10 -8
  107. package/src/webinar/index.ts +197 -3
  108. package/test/unit/spec/annotation/index.ts +46 -1
  109. package/test/unit/spec/locus-info/index.js +292 -60
  110. package/test/unit/spec/locus-info/selfConstant.js +7 -0
  111. package/test/unit/spec/locus-info/selfUtils.js +91 -1
  112. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
  113. package/test/unit/spec/meeting/index.js +722 -105
  114. package/test/unit/spec/meeting/utils.js +22 -19
  115. package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
  116. package/test/unit/spec/meeting-info/utilv2.js +17 -0
  117. package/test/unit/spec/meetings/index.js +150 -13
  118. package/test/unit/spec/meetings/utils.js +10 -0
  119. package/test/unit/spec/member/util.js +52 -11
  120. package/test/unit/spec/multistream/remoteMedia.ts +11 -7
  121. package/test/unit/spec/roap/index.ts +47 -0
  122. package/test/unit/spec/webinar/index.ts +457 -0
  123. package/dist/common/errors/webinar-registration-error.js.map +0 -1
  124. package/src/common/errors/webinar-registration-error.ts +0 -27
@@ -315,6 +315,15 @@ var LocusMediaRequest = exports.LocusMediaRequest = /*#__PURE__*/function (_Webe
315
315
  value: function isConfluenceCreated() {
316
316
  return this.confluenceState === 'created';
317
317
  }
318
+
319
+ /**
320
+ * This method needs to be called when we downgrade from multistream to transcoded connection.
321
+ */
322
+ }, {
323
+ key: "downgradeFromMultistreamToTranscoded",
324
+ value: function downgradeFromMultistreamToTranscoded() {
325
+ this.config.preferTranscoding = true;
326
+ }
318
327
  }]);
319
328
  return LocusMediaRequest;
320
329
  }(_webexCore.WebexPlugin);
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_common","_webexCore","_constants","_loggerProxy","_interopRequireDefault","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","InternalRequestInfo","request","pendingPromise","sendRequestFn","_classCallCheck2","_defineProperty2","pendingPromises","_createClass2","key","value","getPendingPromises","addPendingPromises","_this$pendingPromises","push","_toConsumableArray2","execute","_this","then","forEach","d","resolve","catch","reject","isRequestAffectingConfluenceState","type","roapMessage","messageType","ROAP","ROAP_TYPES","OFFER","LocusMediaRequest","exports","_WebexPlugin","_inherits2","_super","config","options","_this2","_assertThisInitialized2","isRequestInProgress","queuedRequests","confluenceState","addToQueue","info","length","filter","r","executeNextQueuedRequest","_this3","nextRequest","shift","getLatestMuteState","audioMuted","latestAudioMuted","undefined","videoMuted","latestVideoMuted","sendHttpRequest","_this4","uri","concat","selfUrl","MEDIA","_this$getLatestMuteSt","body","device","correlationId","localMedias","respOnlySdp","usingResource","reachability","clientMediaPreferences","webex","internal","newMetrics","submitClientEvent","name","meetingId","sequence","localSdp","_stringify","mediaId","LoggerProxy","logger","method","HTTP_VERBS","PUT","rawError","send","_this5","_request$muteOptions","muteOptions","_promise","Defer","newRequest","bind","defer","promise","isConfluenceCreated","WebexPlugin"],"sources":["locusMediaRequest.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {defer} from 'lodash';\nimport {Defer} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\nimport {MEDIA, HTTP_VERBS, ROAP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\nexport type MediaRequestType = 'RoapMessage' | 'LocalMute';\nexport type RequestResult = any;\n\nexport type RoapRequest = {\n type: 'RoapMessage';\n selfUrl: string;\n mediaId: string;\n roapMessage: any;\n reachability: any;\n clientMediaPreferences: ClientMediaPreferences;\n sequence?: any;\n};\n\nexport type LocalMuteRequest = {\n type: 'LocalMute';\n selfUrl: string;\n mediaId: string;\n sequence?: any;\n muteOptions: {\n audioMuted?: boolean;\n videoMuted?: boolean;\n };\n};\n\nexport type Request = RoapRequest | LocalMuteRequest;\n\n/** Class representing a single /media request being sent to Locus */\nclass InternalRequestInfo {\n public readonly request: Request;\n private pendingPromises: Defer[];\n private sendRequestFn: (request: Request) => Promise<RequestResult>;\n\n /** Constructor */\n constructor(\n request: Request,\n pendingPromise: Defer,\n sendRequestFn: (request: Request) => Promise<RequestResult>\n ) {\n this.request = request;\n this.pendingPromises = [pendingPromise];\n this.sendRequestFn = sendRequestFn;\n }\n\n /**\n * Returns the list of pending promises associated with this request\n */\n public getPendingPromises() {\n return this.pendingPromises;\n }\n\n /**\n * Adds promises to the list of pending promises associated with this request\n */\n public addPendingPromises(pendingPromises: Defer[]) {\n this.pendingPromises.push(...pendingPromises);\n }\n\n /**\n * Executes the request. Returned promise is resolved once the request\n * is completed (no matter if it succeeded or failed).\n */\n public execute(): Promise<void> {\n return this.sendRequestFn(this.request)\n .then((result) => {\n // resolve all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.resolve(result));\n })\n .catch((e) => {\n // reject all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.reject(e));\n });\n }\n}\n\nexport type Config = {\n device: {\n url: string;\n deviceType: string;\n countryCode?: string;\n regionCode?: string;\n };\n correlationId: string;\n meetingId: string;\n preferTranscoding: boolean;\n};\n\n/**\n * Returns true if the request is triggering confluence creation in the server\n */\nfunction isRequestAffectingConfluenceState(request: Request): boolean {\n return (\n request.type === 'RoapMessage' && request.roapMessage.messageType === ROAP.ROAP_TYPES.OFFER\n );\n}\n\n/**\n * This class manages all /media API requests to Locus. Every call to that\n * Locus API has to go through this class.\n */\nexport class LocusMediaRequest extends WebexPlugin {\n private config: Config;\n private latestAudioMuted?: boolean;\n private latestVideoMuted?: boolean;\n private isRequestInProgress: boolean;\n private queuedRequests: InternalRequestInfo[];\n private confluenceState: 'not created' | 'creation in progress' | 'created';\n /**\n * Constructor\n */\n constructor(config: Config, options: any) {\n super({}, options);\n this.isRequestInProgress = false;\n this.queuedRequests = [];\n this.config = config;\n this.confluenceState = 'not created';\n }\n\n /**\n * Add a request to the internal queue.\n */\n private addToQueue(info: InternalRequestInfo) {\n if (info.request.type === 'LocalMute' && this.queuedRequests.length > 0) {\n // We don't need additional local mute requests in the queue.\n // We only need at most 1 local mute or 1 roap request, because\n // roap requests also include mute state, so whatever request\n // is sent out, it will send the latest local mute state.\n // We only need to store the pendingPromises so that they get resolved\n // when the roap request is sent out.\n this.queuedRequests[0].addPendingPromises(info.getPendingPromises());\n\n return;\n }\n\n if (info.request.type === 'RoapMessage' && this.queuedRequests.length > 0) {\n // remove any LocalMute requests from the queue, because this Roap message\n // will also update the mute status in Locus, so they are redundant\n this.queuedRequests = this.queuedRequests.filter((r) => {\n if (r.request.type === 'LocalMute') {\n // we need to keep the pending promises from the local mute request\n // that we're removing from the queue\n info.addPendingPromises(r.getPendingPromises());\n\n return false;\n }\n\n return true;\n });\n }\n\n this.queuedRequests.push(info);\n }\n\n /**\n * Takes the next request from the queue and executes it. Once that\n * request is completed, the next one will be taken from the queue\n * and executed and this is repeated until the queue is empty.\n */\n private executeNextQueuedRequest(): void {\n if (this.isRequestInProgress) {\n return;\n }\n\n const nextRequest = this.queuedRequests.shift();\n\n if (nextRequest) {\n this.isRequestInProgress = true;\n nextRequest.execute().then(() => {\n this.isRequestInProgress = false;\n this.executeNextQueuedRequest();\n });\n }\n }\n\n /**\n * Returns latest requested audio and video mute values. If they have never been\n * requested, we assume audio/video to be muted.\n */\n private getLatestMuteState() {\n const audioMuted = this.latestAudioMuted !== undefined ? this.latestAudioMuted : true;\n const videoMuted = this.latestVideoMuted !== undefined ? this.latestVideoMuted : true;\n\n return {audioMuted, videoMuted};\n }\n\n /**\n * Prepares the uri and body for the media request to be sent to Locus\n */\n private sendHttpRequest(request: Request) {\n const uri = `${request.selfUrl}/${MEDIA}`;\n\n const {audioMuted, videoMuted} = this.getLatestMuteState();\n\n // first setup things common to all requests\n const body: any = {\n device: this.config.device,\n correlationId: this.config.correlationId,\n };\n\n const localMedias: any = {\n audioMuted,\n videoMuted,\n };\n\n // now add things specific to request type\n switch (request.type) {\n case 'LocalMute':\n body.respOnlySdp = true;\n body.usingResource = null;\n break;\n\n case 'RoapMessage':\n localMedias.roapMessage = request.roapMessage;\n localMedias.reachability = request.reachability;\n body.clientMediaPreferences = request.clientMediaPreferences;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n break;\n }\n\n if (request.sequence) {\n body.sequence = request.sequence;\n }\n\n body.localMedias = [\n {\n localSdp: JSON.stringify(localMedias), // this part must be JSON stringified, Locus requires this\n mediaId: request.mediaId,\n },\n ];\n\n LoggerProxy.logger.info(\n `Meeting:LocusMediaRequest#sendHttpRequest --> ${request.type} audioMuted=${audioMuted} videoMuted=${videoMuted}`\n );\n\n if (isRequestAffectingConfluenceState(request) && this.confluenceState === 'not created') {\n this.confluenceState = 'creation in progress';\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n })\n .then((result) => {\n if (isRequestAffectingConfluenceState(request)) {\n this.confluenceState = 'created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n }\n\n return result;\n })\n .catch((e) => {\n if (\n isRequestAffectingConfluenceState(request) &&\n this.confluenceState === 'creation in progress'\n ) {\n this.confluenceState = 'not created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n rawError: e,\n },\n });\n }\n\n throw e;\n });\n }\n\n /**\n * Sends a media request to Locus\n */\n public send(request: Request): Promise<RequestResult> {\n if (request.type === 'LocalMute') {\n const {audioMuted, videoMuted} = request.muteOptions;\n\n if (audioMuted !== undefined) {\n this.latestAudioMuted = audioMuted;\n }\n if (videoMuted !== undefined) {\n this.latestVideoMuted = videoMuted;\n }\n\n if (this.confluenceState === 'not created') {\n // if there is no confluence, there is no point sending out local mute request\n // as it will fail so we just store the latest audio/video muted values\n // and resolve immediately, so that higher layer (MuteState class) doesn't get blocked\n // and can call us again if user mutes/unmutes again before confluence is created\n LoggerProxy.logger.info(\n 'Meeting:LocusMediaRequest#send --> called with LocalMute request before confluence creation'\n );\n\n return Promise.resolve({});\n }\n }\n\n const pendingPromise = new Defer();\n\n const newRequest = new InternalRequestInfo(\n request,\n pendingPromise,\n this.sendHttpRequest.bind(this)\n );\n\n this.addToQueue(newRequest);\n\n defer(() => this.executeNextQueuedRequest());\n\n return pendingPromise.promise;\n }\n\n /** Returns true if a confluence on the server is already created */\n public isConfluenceCreated() {\n return this.confluenceState === 'created';\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","require","_common","_webexCore","_constants","_loggerProxy","_interopRequireDefault","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","InternalRequestInfo","request","pendingPromise","sendRequestFn","_classCallCheck2","_defineProperty2","pendingPromises","_createClass2","key","value","getPendingPromises","addPendingPromises","_this$pendingPromises","push","_toConsumableArray2","execute","_this","then","forEach","d","resolve","catch","reject","isRequestAffectingConfluenceState","type","roapMessage","messageType","ROAP","ROAP_TYPES","OFFER","LocusMediaRequest","exports","_WebexPlugin","_inherits2","_super","config","options","_this2","_assertThisInitialized2","isRequestInProgress","queuedRequests","confluenceState","addToQueue","info","length","filter","r","executeNextQueuedRequest","_this3","nextRequest","shift","getLatestMuteState","audioMuted","latestAudioMuted","undefined","videoMuted","latestVideoMuted","sendHttpRequest","_this4","uri","concat","selfUrl","MEDIA","_this$getLatestMuteSt","body","device","correlationId","localMedias","respOnlySdp","usingResource","reachability","clientMediaPreferences","webex","internal","newMetrics","submitClientEvent","name","meetingId","sequence","localSdp","_stringify","mediaId","LoggerProxy","logger","method","HTTP_VERBS","PUT","rawError","send","_this5","_request$muteOptions","muteOptions","_promise","Defer","newRequest","bind","defer","promise","isConfluenceCreated","downgradeFromMultistreamToTranscoded","preferTranscoding","WebexPlugin"],"sources":["locusMediaRequest.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {defer} from 'lodash';\nimport {Defer} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\nimport {MEDIA, HTTP_VERBS, ROAP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\nexport type MediaRequestType = 'RoapMessage' | 'LocalMute';\nexport type RequestResult = any;\n\nexport type RoapRequest = {\n type: 'RoapMessage';\n selfUrl: string;\n mediaId: string;\n roapMessage: any;\n reachability: any;\n clientMediaPreferences: ClientMediaPreferences;\n sequence?: any;\n};\n\nexport type LocalMuteRequest = {\n type: 'LocalMute';\n selfUrl: string;\n mediaId: string;\n sequence?: any;\n muteOptions: {\n audioMuted?: boolean;\n videoMuted?: boolean;\n };\n};\n\nexport type Request = RoapRequest | LocalMuteRequest;\n\n/** Class representing a single /media request being sent to Locus */\nclass InternalRequestInfo {\n public readonly request: Request;\n private pendingPromises: Defer[];\n private sendRequestFn: (request: Request) => Promise<RequestResult>;\n\n /** Constructor */\n constructor(\n request: Request,\n pendingPromise: Defer,\n sendRequestFn: (request: Request) => Promise<RequestResult>\n ) {\n this.request = request;\n this.pendingPromises = [pendingPromise];\n this.sendRequestFn = sendRequestFn;\n }\n\n /**\n * Returns the list of pending promises associated with this request\n */\n public getPendingPromises() {\n return this.pendingPromises;\n }\n\n /**\n * Adds promises to the list of pending promises associated with this request\n */\n public addPendingPromises(pendingPromises: Defer[]) {\n this.pendingPromises.push(...pendingPromises);\n }\n\n /**\n * Executes the request. Returned promise is resolved once the request\n * is completed (no matter if it succeeded or failed).\n */\n public execute(): Promise<void> {\n return this.sendRequestFn(this.request)\n .then((result) => {\n // resolve all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.resolve(result));\n })\n .catch((e) => {\n // reject all the pending promises associated with this request\n this.pendingPromises.forEach((d) => d.reject(e));\n });\n }\n}\n\nexport type Config = {\n device: {\n url: string;\n deviceType: string;\n countryCode?: string;\n regionCode?: string;\n };\n correlationId: string;\n meetingId: string;\n preferTranscoding: boolean;\n};\n\n/**\n * Returns true if the request is triggering confluence creation in the server\n */\nfunction isRequestAffectingConfluenceState(request: Request): boolean {\n return (\n request.type === 'RoapMessage' && request.roapMessage.messageType === ROAP.ROAP_TYPES.OFFER\n );\n}\n\n/**\n * This class manages all /media API requests to Locus. Every call to that\n * Locus API has to go through this class.\n */\nexport class LocusMediaRequest extends WebexPlugin {\n private config: Config;\n private latestAudioMuted?: boolean;\n private latestVideoMuted?: boolean;\n private isRequestInProgress: boolean;\n private queuedRequests: InternalRequestInfo[];\n private confluenceState: 'not created' | 'creation in progress' | 'created';\n /**\n * Constructor\n */\n constructor(config: Config, options: any) {\n super({}, options);\n this.isRequestInProgress = false;\n this.queuedRequests = [];\n this.config = config;\n this.confluenceState = 'not created';\n }\n\n /**\n * Add a request to the internal queue.\n */\n private addToQueue(info: InternalRequestInfo) {\n if (info.request.type === 'LocalMute' && this.queuedRequests.length > 0) {\n // We don't need additional local mute requests in the queue.\n // We only need at most 1 local mute or 1 roap request, because\n // roap requests also include mute state, so whatever request\n // is sent out, it will send the latest local mute state.\n // We only need to store the pendingPromises so that they get resolved\n // when the roap request is sent out.\n this.queuedRequests[0].addPendingPromises(info.getPendingPromises());\n\n return;\n }\n\n if (info.request.type === 'RoapMessage' && this.queuedRequests.length > 0) {\n // remove any LocalMute requests from the queue, because this Roap message\n // will also update the mute status in Locus, so they are redundant\n this.queuedRequests = this.queuedRequests.filter((r) => {\n if (r.request.type === 'LocalMute') {\n // we need to keep the pending promises from the local mute request\n // that we're removing from the queue\n info.addPendingPromises(r.getPendingPromises());\n\n return false;\n }\n\n return true;\n });\n }\n\n this.queuedRequests.push(info);\n }\n\n /**\n * Takes the next request from the queue and executes it. Once that\n * request is completed, the next one will be taken from the queue\n * and executed and this is repeated until the queue is empty.\n */\n private executeNextQueuedRequest(): void {\n if (this.isRequestInProgress) {\n return;\n }\n\n const nextRequest = this.queuedRequests.shift();\n\n if (nextRequest) {\n this.isRequestInProgress = true;\n nextRequest.execute().then(() => {\n this.isRequestInProgress = false;\n this.executeNextQueuedRequest();\n });\n }\n }\n\n /**\n * Returns latest requested audio and video mute values. If they have never been\n * requested, we assume audio/video to be muted.\n */\n private getLatestMuteState() {\n const audioMuted = this.latestAudioMuted !== undefined ? this.latestAudioMuted : true;\n const videoMuted = this.latestVideoMuted !== undefined ? this.latestVideoMuted : true;\n\n return {audioMuted, videoMuted};\n }\n\n /**\n * Prepares the uri and body for the media request to be sent to Locus\n */\n private sendHttpRequest(request: Request) {\n const uri = `${request.selfUrl}/${MEDIA}`;\n\n const {audioMuted, videoMuted} = this.getLatestMuteState();\n\n // first setup things common to all requests\n const body: any = {\n device: this.config.device,\n correlationId: this.config.correlationId,\n };\n\n const localMedias: any = {\n audioMuted,\n videoMuted,\n };\n\n // now add things specific to request type\n switch (request.type) {\n case 'LocalMute':\n body.respOnlySdp = true;\n body.usingResource = null;\n break;\n\n case 'RoapMessage':\n localMedias.roapMessage = request.roapMessage;\n localMedias.reachability = request.reachability;\n body.clientMediaPreferences = request.clientMediaPreferences;\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n break;\n }\n\n if (request.sequence) {\n body.sequence = request.sequence;\n }\n\n body.localMedias = [\n {\n localSdp: JSON.stringify(localMedias), // this part must be JSON stringified, Locus requires this\n mediaId: request.mediaId,\n },\n ];\n\n LoggerProxy.logger.info(\n `Meeting:LocusMediaRequest#sendHttpRequest --> ${request.type} audioMuted=${audioMuted} videoMuted=${videoMuted}`\n );\n\n if (isRequestAffectingConfluenceState(request) && this.confluenceState === 'not created') {\n this.confluenceState = 'creation in progress';\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n })\n .then((result) => {\n if (isRequestAffectingConfluenceState(request)) {\n this.confluenceState = 'created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n },\n });\n }\n\n return result;\n })\n .catch((e) => {\n if (\n isRequestAffectingConfluenceState(request) &&\n this.confluenceState === 'creation in progress'\n ) {\n this.confluenceState = 'not created';\n }\n\n if (request.type === 'RoapMessage') {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId: this.config.meetingId,\n rawError: e,\n },\n });\n }\n\n throw e;\n });\n }\n\n /**\n * Sends a media request to Locus\n */\n public send(request: Request): Promise<RequestResult> {\n if (request.type === 'LocalMute') {\n const {audioMuted, videoMuted} = request.muteOptions;\n\n if (audioMuted !== undefined) {\n this.latestAudioMuted = audioMuted;\n }\n if (videoMuted !== undefined) {\n this.latestVideoMuted = videoMuted;\n }\n\n if (this.confluenceState === 'not created') {\n // if there is no confluence, there is no point sending out local mute request\n // as it will fail so we just store the latest audio/video muted values\n // and resolve immediately, so that higher layer (MuteState class) doesn't get blocked\n // and can call us again if user mutes/unmutes again before confluence is created\n LoggerProxy.logger.info(\n 'Meeting:LocusMediaRequest#send --> called with LocalMute request before confluence creation'\n );\n\n return Promise.resolve({});\n }\n }\n\n const pendingPromise = new Defer();\n\n const newRequest = new InternalRequestInfo(\n request,\n pendingPromise,\n this.sendHttpRequest.bind(this)\n );\n\n this.addToQueue(newRequest);\n\n defer(() => this.executeNextQueuedRequest());\n\n return pendingPromise.promise;\n }\n\n /** Returns true if a confluence on the server is already created */\n public isConfluenceCreated() {\n return this.confluenceState === 'created';\n }\n\n /**\n * This method needs to be called when we downgrade from multistream to transcoded connection.\n */\n public downgradeFromMultistreamToTranscoded() {\n this.config.preferTranscoding = true;\n }\n}\n"],"mappings":"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"}
@@ -839,6 +839,36 @@ var MeetingRequest = exports.default = /*#__PURE__*/function (_StatelessWebexPlu
839
839
  uri: locusUrl
840
840
  });
841
841
  }
842
+
843
+ /**
844
+ * Sends a request to set be right back status.
845
+ *
846
+ * @param {Object} options - The options for brb request.
847
+ * @param {boolean} options.enabled - Whether brb status is enabled.
848
+ * @param {string} options.locusUrl - The URL of the locus.
849
+ * @param {string} options.deviceUrl - The URL of the device.
850
+ * @param {string} options.selfId - The ID of the participant.
851
+ * @returns {Promise}
852
+ */
853
+ }, {
854
+ key: "setBrb",
855
+ value: function setBrb(_ref14) {
856
+ var enabled = _ref14.enabled,
857
+ locusUrl = _ref14.locusUrl,
858
+ deviceUrl = _ref14.deviceUrl,
859
+ selfId = _ref14.selfId;
860
+ var uri = "".concat(locusUrl, "/").concat(_constants.PARTICIPANT, "/").concat(selfId, "/").concat(_constants.CONTROLS);
861
+ return this.locusDeltaRequest({
862
+ method: _constants.HTTP_VERBS.PATCH,
863
+ uri: uri,
864
+ body: {
865
+ brb: {
866
+ enabled: enabled,
867
+ deviceUrl: deviceUrl
868
+ }
869
+ }
870
+ });
871
+ }
842
872
  }]);
843
873
  return MeetingRequest;
844
874
  }(_webexCore.StatelessWebexPlugin);
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_webexCore","_common","_internalPluginMetrics","_loggerProxy","_constants","_util","_excluded","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","meeting","otherAttrs","_objectWithoutProperties2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee","joinCookieRaw","joinCookie","wrap","_callee$","_context","prev","next","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","sent","JSON","parse","abrupt","t0","LoggerProxy","logger","error","concat","stop","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","debounce","changeVideoLayout","leading","trailing","_createClass2","key","value","_joinMeeting","_callee2","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","breakoutsSupported","locale","_options$deviceCapabi","deviceCapabilities","liveAnnotationSupported","clientMediaPreferences","alias","url","body","clusterUrl","_callee2$","_context2","info","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","services","waitForCatalog","LOCI","CALL","invitee","address","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","_stringify","request","method","HTTP_VERBS","POST","uri","joinMeeting","_x","refreshCaptcha","_ref2","captchaRefreshUrl","captchaId","err","dialIn","_ref3","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOut","_ref4","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","getLocusDTO","GET","_promise","reject","disconnectPhoneAudio","_ref5","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","_ref6","leaveMeeting","_ref7","buildLeaveMeetingRequestOptions","acknowledgeMeeting","ALERT","lockMeeting","CONTROLS","lock","locked","PATCH","declineMeeting","DECLINE","reason","changeMeetingFloor","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","sendDTMF","_ref8","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","_ref9","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","endMeetingForAll","_ref10","END","keepAlive","_ref11","keepAliveUrl","sendReaction","_ref12","reactionChannelUrl","reaction","participantId","sender","toggleReactions","_ref13","enable","requestingParticipantId","reactions","enabled","getLocusStatusByUrl","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n} from '../constants';\nimport {SendReactionOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @param {String} options.alias\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n alias?: string;\n clientMediaPreferences: ClientMediaPreferences;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n clientMediaPreferences,\n alias,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences,\n };\n\n if (alias) {\n body.alias = alias;\n }\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AAEA,IAAAK,YAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AAqBA,IAAAO,KAAA,GAAAR,sBAAA,CAAAC,OAAA;AAAiC,IAAAQ,SAAA;AAAA,SAAAC,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAH,CAAA,OAAAI,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAJ,CAAA,GAAAC,CAAA,KAAAI,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAL,CAAA,WAAAM,gCAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAG,CAAA,YAAAH,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAe,MAAA,CAAAZ,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiB,iCAAA,GAAAC,wBAAA,CAAAnB,CAAA,EAAAkB,iCAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAe,MAAA,CAAAZ,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAmB,sBAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAM,gCAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAqB,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAV,OAAA,EAAAK,OAAA,GAAAM,MAAA,MAAAL,yBAAA,QAAAM,SAAA,OAAAF,gBAAA,CAAAV,OAAA,QAAAa,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAL,KAAA,EAAAd,SAAA,EAAAiB,SAAA,YAAAD,MAAA,GAAAF,KAAA,CAAAhB,KAAA,OAAAE,SAAA,gBAAAoB,2BAAA,CAAAf,OAAA,QAAAW,MAAA;AAAA,SAAAJ,0BAAA,eAAAS,OAAA,qBAAAF,kBAAA,oBAAAA,kBAAA,CAAAG,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAR,kBAAA,CAAAK,OAAA,8CAAApC,CAAA,sBA5BjC;AAEA;AA8BA;AACA;AACA;AAFA,IAGqBwC,cAAc,GAAAC,OAAA,CAAAxB,OAAA,0BAAAyB,qBAAA;EAAA,IAAAC,UAAA,CAAA1B,OAAA,EAAAuB,cAAA,EAAAE,qBAAA;EAAA,IAAAE,MAAA,GAAAvB,YAAA,CAAAmB,cAAA;EAMjC;AACF;AACA;AACA;AACA;EACE,SAAAA,eAAYK,KAAU,EAAEC,OAAY,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAA/B,OAAA,QAAAuB,cAAA;IACpC,IAAOS,OAAO,GAAmBJ,KAAK,CAA/BI,OAAO;MAAKC,UAAU,OAAAC,yBAAA,CAAAlC,OAAA,EAAI4B,KAAK,EAAA/C,SAAA;IAEtCiD,KAAA,GAAAH,MAAA,CAAAL,IAAA,OAAMW,UAAU,EAAEJ,OAAO;IAAE,IAAA9B,gBAAA,CAAAC,OAAA,MAAAmC,uBAAA,CAAAnC,OAAA,EAAA8B,KAAA;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAmC,uBAAA,CAAAnC,OAAA,EAAA8B,KAAA;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAmC,uBAAA,CAAAnC,OAAA,EAAA8B,KAAA;IAAA,IAAA/B,gBAAA,CAAAC,OAAA,MAAAmC,uBAAA,CAAAnC,OAAA,EAAA8B,KAAA;IAW7B;AACF;AACA;AACA;IAHE,IAAA/B,gBAAA,CAAAC,OAAA,MAAAmC,uBAAA,CAAAnC,OAAA,EAAA8B,KAAA,qCAAAM,kBAAA,CAAApC,OAAA,gBAAAqC,YAAA,CAAArC,OAAA,CAAAsC,IAAA,CAIwB,SAAAC,QAAA;MAAA,IAAAC,aAAA,EAAAC,UAAA;MAAA,OAAAJ,YAAA,CAAArC,OAAA,CAAA0C,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OAEMhB,KAAA,CAAKiB,KAAK,CAACC,cAAc,CAClDC,GAAG,CAACC,uBAAY,CAACC,SAAS,EAAED,uBAAY,CAACE,sBAAsB,CAAC,CAChEC,KAAK,CAAC,YAAM,CAAC,CAAC,CAAC;UAAA;YAFZb,aAAa,GAAAI,QAAA,CAAAU,IAAA;YAAA,KAIfd,aAAa;cAAAI,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAAF,QAAA,CAAAC,IAAA;YAEPJ,UAAU,GAAGc,IAAI,CAACC,KAAK,CAAChB,aAAa,CAAC;YAAA,KACxCC,UAAU;cAAAG,QAAA,CAAAE,IAAA;cAAA;YAAA;YAAA,OAAAF,QAAA,CAAAa,MAAA,WACLhB,UAAU;UAAA;YAAAG,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAc,EAAA,GAAAd,QAAA;YAGnBe,oBAAW,CAACC,MAAM,CAACC,KAAK,sEAAAC,MAAA,CAAAlB,QAAA,CAAAc,EAAA,CAExB,CAAC;UAAC;YAAA,OAAAd,QAAA,CAAAa,MAAA,WAIC,IAAI;UAAA;UAAA;YAAA,OAAAb,QAAA,CAAAmB,IAAA;QAAA;MAAA,GAAAxB,OAAA;IAAA,CACZ;IAjCCT,KAAA,CAAKkC,iBAAiB,GAAGC,aAAW,CAACC,yBAAyB,CAAClC,OAAO,CAAC;IACvEF,KAAA,CAAKqC,6BAA6B,GAAGF,aAAW,CAACG,qCAAqC,CAACpC,OAAO,CAAC;IAE/FF,KAAA,CAAKuC,0BAA0B,GAAG,IAAAC,gBAAQ,EAACxC,KAAA,CAAKyC,iBAAiB,EAAE,IAAI,EAAE;MACvEC,OAAO,EAAE,IAAI;MACbC,QAAQ,EAAE;IACZ,CAAC,CAAC;IAAC,OAAA3C,KAAA;EACL;EAAC,IAAA4C,aAAA,CAAA1E,OAAA,EAAAuB,cAAA;IAAAoD,GAAA;IAAAC,KAAA;IA4BD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAnBE;MAAA,IAAAC,YAAA,OAAAzC,kBAAA,CAAApC,OAAA,gBAAAqC,YAAA,CAAArC,OAAA,CAAAsC,IAAA,CAoBA,SAAAwC,SAAkBjD,OAwBjB;QAAA,IAAAkD,kBAAA,EAAAC,cAAA,EAAAC,aAAA,EAAAC,eAAA,EAAAC,SAAA,EAAAC,QAAA,EAAAC,eAAA,EAAAC,UAAA,EAAAC,aAAA,EAAAC,kBAAA,EAAAC,SAAA,EAAAC,GAAA,EAAAC,cAAA,EAAAC,WAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,MAAA,EAAAC,qBAAA,EAAAC,kBAAA,EAAAC,uBAAA,EAAAC,sBAAA,EAAAC,KAAA,EAAAC,GAAA,EAAAC,IAAA,EAAAC,UAAA;QAAA,OAAAlE,YAAA,CAAArC,OAAA,CAAA0C,IAAA,UAAA8D,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA5D,IAAA,GAAA4D,SAAA,CAAA3D,IAAA;YAAA;cAEGiC,kBAAkB,GAqBhBlD,OAAO,CArBTkD,kBAAkB,EAClBC,cAAc,GAoBZnD,OAAO,CApBTmD,cAAc,EACdC,aAAa,GAmBXpD,OAAO,CAnBToD,aAAa,EACbC,eAAe,GAkBbrD,OAAO,CAlBTqD,eAAe,EACfC,SAAS,GAiBPtD,OAAO,CAjBTsD,SAAS,EACTC,QAAQ,GAgBNvD,OAAO,CAhBTuD,QAAQ,EACRC,eAAe,GAebxD,OAAO,CAfTwD,eAAe,EACfC,UAAU,GAcRzD,OAAO,CAdTyD,UAAU,EACVC,aAAa,GAaX1D,OAAO,CAbT0D,aAAa,EACbC,kBAAkB,GAYhB3D,OAAO,CAZT2D,kBAAkB,EAClBC,SAAS,GAWP5D,OAAO,CAXT4D,SAAS,EACTC,GAAG,GAUD7D,OAAO,CAVT6D,GAAG,EACHC,cAAc,GASZ9D,OAAO,CATT8D,cAAc,EACdC,WAAW,GAQT/D,OAAO,CART+D,WAAW,EACXC,YAAY,GAOVhE,OAAO,CAPTgE,YAAY,EACZC,kBAAkB,GAMhBjE,OAAO,CANTiE,kBAAkB,EAClBC,MAAM,GAKJlE,OAAO,CALTkE,MAAM,EAAAC,qBAAA,GAKJnE,OAAO,CAJToE,kBAAkB,EAAlBA,kBAAkB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA,EACvBE,uBAAuB,GAGrBrE,OAAO,CAHTqE,uBAAuB,EACvBC,sBAAsB,GAEpBtE,OAAO,CAFTsE,sBAAsB,EACtBC,KAAK,GACHvE,OAAO,CADTuE,KAAK;cAGPzC,oBAAW,CAACC,MAAM,CAAC8C,IAAI,CAAC,mDAAmD,EAAEnB,aAAa,CAAC;cAEvFc,GAAG,GAAG,EAAE;cAENC,IAAS,GAAG;gBAChBvB,kBAAkB,EAAlBA,kBAAkB;gBAClB4B,MAAM,EAAE;kBACNN,GAAG,EAAElB,SAAS;kBACd;kBACAyB,UAAU,EAAE,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF;gBACnC,CAAC;gBACDG,aAAa,EAAEzB,UAAU,IAAI,IAAI;gBACjC0B,mBAAmB,EAAG1B,UAAU,IAAIK,cAAc,IAAK,KAAK;gBAC5DJ,aAAa,EAAbA,aAAa;gBACb0B,WAAW,EAAE,IAAI;gBACjBC,gBAAgB,EAAE,IAAI;gBACtB1B,kBAAkB,EAAEA,kBAAkB,IAAI,KAAK;gBAC/C2B,mBAAmB,EAAE,CAAC;gBACtBhB,sBAAsB,EAAtBA;cACF,CAAC;cAED,IAAIC,KAAK,EAAE;gBACTE,IAAI,CAACF,KAAK,GAAGA,KAAK;cACpB;cAEA,IAAIN,kBAAkB,EAAE;gBACtBG,kBAAkB,CAACzG,IAAI,CAAC4H,oBAAS,CAACC,mBAAmB,CAAC;cACxD;cACA,IAAInB,uBAAuB,EAAE;gBAC3BD,kBAAkB,CAACzG,IAAI,CAAC8H,qBAAU,CAACC,6BAA6B,CAAC;cACnE;;cAEA;cACA;cACA,IAAI,IAAI,CAACxE,KAAK,CAACyE,QAAQ,CAACb,MAAM,CAACE,MAAM,CAACY,cAAc,EAAE;gBACpD;gBACAnB,IAAI,CAACK,MAAM,CAACc,cAAc,GAAG,IAAI,CAAC1E,KAAK,CAACyE,QAAQ,CAACb,MAAM,CAACE,MAAM,CAACY,cAAc;cAC/E;cAEA,IAAI1B,MAAM,EAAE;gBACVO,IAAI,CAACP,MAAM,GAAGA,MAAM;cACtB;;cAEA;cACA,IAAIE,kBAAkB,CAACrG,MAAM,EAAE;gBAC7B0G,IAAI,CAACL,kBAAkB,GAAGA,kBAAkB;cAC9C;cACA;cACA,IAAI,IAAI,CAAClD,KAAK,CAAC+D,QAAQ,CAACY,WAAW,EAAE;gBACnC;gBACApB,IAAI,CAACK,MAAM,CAACgB,WAAW,GAAG,IAAI,CAAC5E,KAAK,CAAC+D,QAAQ,CAACY,WAAW,CAACC,WAAW;gBACrE;gBACArB,IAAI,CAACK,MAAM,CAACiB,UAAU,GAAG,IAAI,CAAC7E,KAAK,CAAC+D,QAAQ,CAACY,WAAW,CAACE,UAAU;gBACnEtB,IAAI,CAACK,MAAM,CAACkB,OAAO;gBACjB;gBACAC,0CAAmB,CAACC,kBAAkB,CAAC,IAAI,CAAChF,KAAK,CAAC+D,QAAQ,CAACY,WAAW,CAACM,aAAa,CAAC,IACrFC,SAAS;cACb;cAEA,IAAIxC,SAAS,KAAKwC,SAAS,EAAE;gBAC3B3B,IAAI,CAACb,SAAS,GAAGA,SAAS;cAC5B;cAEA,IAAIP,eAAe,EAAE;gBACnBoB,IAAI,CAACpB,eAAe,GAAGA,eAAe;cACxC;cAEA,IAAIQ,GAAG,KAAKuC,SAAS,EAAE;gBACrB3B,IAAI,CAACZ,GAAG,GAAGA,GAAG;cAChB;cAAC,KAEGN,QAAQ;gBAAAqB,SAAA,CAAA3D,IAAA;gBAAA;cAAA;cACVuD,GAAG,MAAAvC,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,CAAE;cAACzB,SAAA,CAAA3D,IAAA;cAAA;YAAA;cAAA,MAC1BkC,cAAc,IAAIC,aAAa;gBAAAwB,SAAA,CAAA3D,IAAA;gBAAA;cAAA;cAAA2D,SAAA,CAAA5D,IAAA;cAAA,KAIlCwC,eAAe;gBAAAoB,SAAA,CAAA3D,IAAA;gBAAA;cAAA;cACjByD,UAAU,cAAAzC,MAAA,CAAcuB,eAAe,kBAAe;cAACoB,SAAA,CAAA3D,IAAA;cAAA;YAAA;cAAA2D,SAAA,CAAA3D,IAAA;cAAA,OAGjD,IAAI,CAACC,KAAK,CAACyE,QAAQ,CAACW,QAAQ,CAACC,cAAc,CAAC,UAAU,CAAC;YAAA;cAC7D;cACA7B,UAAU,GAAG,IAAI,CAACxD,KAAK,CAACyE,QAAQ,CAACW,QAAQ,CAAClF,GAAG,CAAC,OAAO,CAAC;YAAC;cAGzDoD,GAAG,MAAAvC,MAAA,CAAMyC,UAAU,OAAAzC,MAAA,CAAIuE,eAAI,OAAAvE,MAAA,CAAIwE,eAAI,CAAE;cACrChC,IAAI,CAACiC,OAAO,GAAG;gBACbC,OAAO,EAAExD,cAAc,aAAAlB,MAAA,CAAamB,aAAa;cACnD,CAAC;cAACwB,SAAA,CAAA3D,IAAA;cAAA;YAAA;cAAA2D,SAAA,CAAA5D,IAAA;cAAA4D,SAAA,CAAA/C,EAAA,GAAA+C,SAAA;cAEF9C,oBAAW,CAACC,MAAM,CAACC,KAAK,8CAAAC,MAAA,CACuBkB,cAAc,IAAIC,aAAa,WAAAnB,MAAA,CAAA2C,SAAA,CAAA/C,EAAA,CAC9E,CAAC;cAAC,MAAA+C,SAAA,CAAA/C,EAAA;YAAA;cAKN;cACA2C,GAAG,GAAGA,GAAG,CAACvC,MAAM,KAAAA,MAAA,CAAK2E,kCAAuB,CAAE,CAAC;cAE/C,IAAInD,UAAU,KAAKN,cAAc,EAAE;gBACjCsB,IAAI,CAACoC,eAAe,GAAG;kBACrBC,cAAc,EAAE,CAACC,mBAAQ;gBAC3B,CAAC;cACH;cAEA,IAAIhD,WAAW,IAAIC,YAAY,EAAE;gBAC/BS,IAAI,CAACuC,WAAW,GAAG,CACjB;kBACEC,QAAQ,EAAE,IAAAC,UAAA,CAAA/I,OAAA,EAAe;oBACvB4F,WAAW,EAAXA,WAAW;oBACXC,YAAY,EAAZA;kBACF,CAAC;gBACH,CAAC,CACF;cACH;;cAEA;cAAA,OAAAY,SAAA,CAAAhD,MAAA,WACO,IAAI,CAACuF,OAAO,CAAC;gBAClBC,MAAM,EAAEC,qBAAU,CAACC,IAAI;gBACvBC,GAAG,EAAE/C,GAAG;gBACRC,IAAI,EAAJA;cACF,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAG,SAAA,CAAA1C,IAAA;UAAA;QAAA,GAAAe,QAAA;MAAA,CACH;MAAA,SAAAuE,YAAAC,EAAA;QAAA,OAAAzE,YAAA,CAAApF,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAA0J,WAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAA1E,GAAA;IAAAC,KAAA,EAQA,SAAA2E,eAAAC,KAAA,EAMG;MAAA,IALDC,iBAAiB,GAAAD,KAAA,CAAjBC,iBAAiB;QACjBC,SAAS,GAAAF,KAAA,CAATE,SAAS;MAKT,IAAMpD,IAAI,GAAG;QACXoD,SAAS,EAATA;MACF,CAAC;;MAED;MACA,OAAO,IAAI,CAACV,OAAO,CAAC;QAClBC,MAAM,EAAEC,qBAAU,CAACC,IAAI;QACvBC,GAAG,EAAEK,iBAAiB;QACtBnD,IAAI,EAAJA;MACF,CAAC,CAAC,CAACjD,KAAK,CAAC,UAACsG,GAAG,EAAK;QAChBhG,oBAAW,CAACC,MAAM,CAACC,KAAK,8CAAAC,MAAA,CAA8C6F,GAAG,CAAE,CAAC;QAE5E,MAAMA,GAAG;MACX,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAhF,GAAA;IAAAC,KAAA,EAUA,SAAAgF,OAAAC,KAAA,EAUG;MAAA,IATDzE,QAAQ,GAAAyE,KAAA,CAARzE,QAAQ;QACR0E,SAAS,GAAAD,KAAA,CAATC,SAAS;QACTC,SAAS,GAAAF,KAAA,CAATE,SAAS;QACTxE,aAAa,GAAAsE,KAAA,CAAbtE,aAAa;MAOb5B,oBAAW,CAACC,MAAM,CAAC8C,IAAI,CACrB,0DAA0D,EAC1DnB,aACF,CAAC;MACD,IAAM6D,GAAG,MAAAtF,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,CAAE;MAExC,IAAM5B,IAAI,GAAG;QACXK,MAAM,EAAE;UACNC,UAAU,EAAEA,kBAAU,CAACoD,WAAW;UAClCC,eAAe,EAAEC,mCAAwB;UACzC7D,GAAG,EAAEyD,SAAS;UACdC,SAAS,EAATA;QACF,CAAC;QACDxE,aAAa,EAAbA;MACF,CAAC;;MAED;MACA,OAAO,IAAI,CAACvB,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACC,IAAI;QACvBC,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC,CAAC,CAACjD,KAAK,CAAC,UAACsG,GAAG,EAAK;QAChBhG,oBAAW,CAACC,MAAM,CAACC,KAAK,0EAAAC,MAAA,CACmD6F,GAAG,CAC9E,CAAC;QAED,MAAMA,GAAG;MACX,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAVE;IAAAhF,GAAA;IAAAC,KAAA,EAWA,SAAAuF,QAAAC,KAAA,EAYG;MAAA,IAXDhF,QAAQ,GAAAgF,KAAA,CAARhF,QAAQ;QACRiF,UAAU,GAAAD,KAAA,CAAVC,UAAU;QACVC,WAAW,GAAAF,KAAA,CAAXE,WAAW;QACXP,SAAS,GAAAK,KAAA,CAATL,SAAS;QACTxE,aAAa,GAAA6E,KAAA,CAAb7E,aAAa;MAQb5B,oBAAW,CAACC,MAAM,CAAC8C,IAAI,CACrB,4DAA4D,EAC5DnB,aACF,CAAC;MACD,IAAM6D,GAAG,MAAAtF,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,CAAE;MAExC,IAAM5B,IAAI,GAAG;QACXK,MAAM,EAAE;UACNC,UAAU,EAAEA,kBAAU,CAACoD,WAAW;UAClCC,eAAe,EAAEM,oCAAyB;UAC1ClE,GAAG,EAAEgE,UAAU;UACfG,cAAc,EAAEF,WAAW;UAC3BP,SAAS,EAATA;QACF,CAAC;QACDxE,aAAa,EAAbA;MACF,CAAC;;MAED;MACA,OAAO,IAAI,CAACvB,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACC,IAAI;QACvBC,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC,CAAC,CAACjD,KAAK,CAAC,UAACsG,GAAG,EAAK;QAChBhG,oBAAW,CAACC,MAAM,CAACC,KAAK,4EAAAC,MAAA,CACqD6F,GAAG,CAChF,CAAC;QAED,MAAMA,GAAG;MACX,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAhF,GAAA;IAAAC,KAAA,EAMA,SAAA6F,YAAY5I,OAAsB,EAAE;MAClC,IAAOwE,GAAG,GAAIxE,OAAO,CAAdwE,GAAG;MAEV,IAAIA,GAAG,EAAE;QACP;QACA,OAAO,IAAI,CAAC2C,OAAO,CAAC;UAClBC,MAAM,EAAEC,qBAAU,CAACwB,GAAG;UACtBtB,GAAG,EAAE/C;QACP,CAAC,CAAC,CAAChD,KAAK,CAAC,UAACsG,GAAG,EAAK;UAChBhG,oBAAW,CAACC,MAAM,CAACC,KAAK,sEAAAC,MAAA,CAC+C6F,GAAG,CAC1E,CAAC;UAED,MAAMA,GAAG;QACX,CAAC,CAAC;MACJ;MAEA,OAAOgB,QAAA,CAAA3K,OAAA,CAAQ4K,MAAM,CAAC,CAAC;IACzB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAjG,GAAA;IAAAC,KAAA,EAUA,SAAAiG,qBAAAC,KAAA,EAUG;MAAA,IATD1F,QAAQ,GAAA0F,KAAA,CAAR1F,QAAQ;QACR2F,QAAQ,GAAAD,KAAA,CAARC,QAAQ;QACRxF,aAAa,GAAAuF,KAAA,CAAbvF,aAAa;QACbyF,MAAM,GAAAF,KAAA,CAANE,MAAM;MAONrH,oBAAW,CAACC,MAAM,CAAC8C,IAAI,2DAAA5C,MAAA,CACqCiH,QAAQ,gBAClExF,aACF,CAAC;MACD,IAAM6D,GAAG,MAAAtF,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,OAAApE,MAAA,CAAIkH,MAAM,OAAAlH,MAAA,CAAImH,gBAAK,CAAE;MAE3D,IAAM3E,IAAI,GAAG;QACXK,MAAM,EAAE;UACNC,UAAU,EAAEA,kBAAU,CAACoD,WAAW;UAClC3D,GAAG,EAAE0E;QACP,CAAC;QACDxF,aAAa,EAAbA;MACF,CAAC;;MAED;MACA,OAAO,IAAI,CAACvB,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB9B,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC,CAAC,CAACjD,KAAK,CAAC,UAACsG,GAAG,EAAK;QAChBhG,oBAAW,CAACC,MAAM,CAACC,KAAK,yEAAAC,MAAA,CACkDiH,QAAQ,uBAAAjH,MAAA,CAAoB6F,GAAG,CACzG,CAAC;QAED,MAAMA,GAAG;MACX,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAhF,GAAA;IAAAC,KAAA,EAUA,SAAAuG,kCAAAC,KAAA,EAYG;MAAA,IAXDhG,QAAQ,GAAAgG,KAAA,CAARhG,QAAQ;QACR4F,MAAM,GAAAI,KAAA,CAANJ,MAAM;QACK3E,GAAG,GAAA+E,KAAA,CAAdjG,SAAS;QACTG,UAAU,GAAA8F,KAAA,CAAV9F,UAAU;QACVC,aAAa,GAAA6F,KAAA,CAAb7F,aAAa;MAQb,IAAM6D,GAAG,MAAAtF,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,OAAApE,MAAA,CAAIkH,MAAM,OAAAlH,MAAA,CAAImH,gBAAK,CAAE;MAC3D,IAAM3E,IAAI,GAAG;QACXK,MAAM,EAAE;UACN;UACAC,UAAU,EAAE,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,UAAU;UAC3CP,GAAG,EAAHA;QACF,CAAC;QACDU,aAAa,EAAEzB,UAAU,IAAI,IAAI;QACjCC,aAAa,EAAbA;MACF,CAAC;MAED,OAAO;QACL0D,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB9B,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA3B,GAAA;IAAAC,KAAA,EAKA,SAAAyG,aAAAC,KAAA,EAYG;MAAA,IAXDlG,QAAQ,GAAAkG,KAAA,CAARlG,QAAQ;QACR4F,MAAM,GAAAM,KAAA,CAANN,MAAM;QACK3E,GAAG,GAAAiF,KAAA,CAAdnG,SAAS;QACTG,UAAU,GAAAgG,KAAA,CAAVhG,UAAU;QACVC,aAAa,GAAA+F,KAAA,CAAb/F,aAAa;MAQb5B,oBAAW,CAACC,MAAM,CAAC8C,IAAI,CAAC,oDAAoD,EAAEnB,aAAa,CAAC;MAE5F,IAAM6D,GAAG,MAAAtF,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,OAAApE,MAAA,CAAIkH,MAAM,OAAAlH,MAAA,CAAImH,gBAAK,CAAE;MAC3D,IAAM3E,IAAI,GAAG;QACXK,MAAM,EAAE;UACN;UACAC,UAAU,EAAE,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,UAAU;UAC3CP,GAAG,EAAHA;QACF,CAAC;QACDU,aAAa,EAAEzB,UAAU,IAAI,IAAI;QACjCC,aAAa,EAAbA;MACF,CAAC;MAED,OAAO,IAAI,CAACvB,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB9B,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA3B,GAAA;IAAAC,KAAA,EAKA,SAAA2G,gCAAgC1J,OAAY,EAAE;MAC5C,OAAO,IAAI,CAACsC,6BAA6B,CAAC,IAAI,CAACgH,iCAAiC,CAACtJ,OAAO,CAAC,CAAC;IAC5F;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA8C,GAAA;IAAAC,KAAA,EAQA,SAAA4G,mBAAmB3J,OAAqE,EAAE;MACxF,IAAMuH,GAAG,MAAAtF,MAAA,CAAMjC,OAAO,CAACuD,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,OAAApE,MAAA,CAAI2H,gBAAK,CAAE;MACzD,IAAMnF,IAAI,GAAG;QACXK,MAAM,EAAE;UACN;UACAC,UAAU,EAAE,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,UAAU;UAC3CP,GAAG,EAAExE,OAAO,CAACsD;QACf,CAAC;QACDI,aAAa,EAAE1D,OAAO,CAAC0D;MACzB,CAAC;MAED,OAAO,IAAI,CAACvB,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB9B,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA3B,GAAA;IAAAC,KAAA,EAMA,SAAA8G,YAAY7J,OAAO,EAAE;MACnB,IAAMuH,GAAG,MAAAtF,MAAA,CAAMjC,OAAO,CAACuD,QAAQ,OAAAtB,MAAA,CAAI6H,mBAAQ,CAAE;MAC7C,IAAMrF,IAAI,GAAG;QACXsF,IAAI,EAAE;UACJC,MAAM,EAAEhK,OAAO,CAAC+J;QAClB;MACF,CAAC;MAED,OAAO,IAAI,CAAC5H,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAAC4C,KAAK;QACxB1C,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA3B,GAAA;IAAAC,KAAA,EAQA,SAAAmH,eAAelK,OAA8D,EAAE;MAC7E,IAAMuH,GAAG,MAAAtF,MAAA,CAAMjC,OAAO,CAACuD,QAAQ,OAAAtB,MAAA,CAAIoE,sBAAW,OAAApE,MAAA,CAAIkI,kBAAO,CAAE;MAC3D,IAAM1F,IAAI,GAAA5G,aAAA;QACRiH,MAAM,EAAE;UACN;UACAC,UAAU,EAAE,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,UAAU;UAC3CP,GAAG,EAAExE,OAAO,CAACsD;QACf;MAAC,GACGtD,OAAO,CAACoK,MAAM,IAAI;QAACA,MAAM,EAAEpK,OAAO,CAACoK;MAAM,CAAC,CAC/C;MAED,OAAO,IAAI,CAACjI,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB9B,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAJA;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAVE;IAAA3B,GAAA;IAAAC,KAAA,EAWA,SAAAsH,mBACErK,OAUO,EACP;MACA,IAAIsK,QAAa,GAAG;QAACC,WAAW,EAAEvK,OAAO,CAACuK;MAAW,CAAC;;MAEtD;MACA,IAAIvK,OAAO,CAACuK,WAAW,KAAKC,uBAAY,CAACC,OAAO,EAAE;QAChDH,QAAQ,GAAG;UACTI,WAAW,EAAE;YACXlG,GAAG,EAAExE,OAAO,CAAC2K,SAAS;YACtBC,OAAO,EAAE,CACP;cACE;cACA7F,UAAU,EAAE,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,UAAU;cAC3CP,GAAG,EAAExE,OAAO,CAACsD;YACf,CAAC;UAEL,CAAC;UACDiH,WAAW,EAAEvK,OAAO,CAACuK,WAAW;UAChCM,SAAS,EAAE;YACTrG,GAAG,EAAExE,OAAO,CAAC2K;UACf;QACF,CAAC;MACH;MAEA,IAAMlG,IAAS,GAAG;QAChBqG,KAAK,EAAER,QAAQ;QACfS,WAAW,EAAE/K,OAAO,CAAC+K;MACvB,CAAC;MAED,IAAI/K,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEgL,eAAe,EAAE;QAC5BvG,IAAI,CAACqG,KAAK,CAACE,eAAe,GAAGhL,OAAO,CAACgL,eAAe;MACtD;MAEA,IAAIhL,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEiL,aAAa,EAAE;QAC1BxG,IAAI,CAACwG,aAAa,GAAGjL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEiL,aAAa;MAC7C;MACA,IAAIjL,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEkL,cAAc,EAAE;QAC3BzG,IAAI,CAAC0G,UAAU,GAAGnL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEkL,cAAc;MAC3C;;MAEA;MACA,OAAO,IAAI,CAAC/D,OAAO,CAAC;QAClBI,GAAG,EAAEvH,OAAO,CAACuH,GAAG;QAChBH,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB5E,IAAI,EAAJA;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA3B,GAAA;IAAAC,KAAA,EAQA,SAAAqI,SAAAC,KAAA,EAA6F;MAAA,IAAnF9H,QAAQ,GAAA8H,KAAA,CAAR9H,QAAQ;QAAED,SAAS,GAAA+H,KAAA,CAAT/H,SAAS;QAAEgI,KAAK,GAAAD,KAAA,CAALC,KAAK;MAClC;MACA,OAAO,IAAI,CAACnJ,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACC,IAAI;QACvBC,GAAG,KAAAtF,MAAA,CAAKsB,QAAQ,OAAAtB,MAAA,CAAIsJ,6BAAkB,CAAE;QACxC9G,IAAI,EAAE;UACJnB,SAAS,EAATA,SAAS;UACTkI,IAAI,EAAE;YACJ9H,aAAa,EAAE+H,aAAI,CAACC,EAAE,CAAC,CAAC;YACxBJ,KAAK,EAALA;UACF;QACF;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAbE;IAAAxI,GAAA;IAAAC,KAAA,EAcA,SAAAL,kBAAAiJ,KAAA,EAkBG;MAAA,IAjBDpI,QAAQ,GAAAoI,KAAA,CAARpI,QAAQ;QACRD,SAAS,GAAAqI,KAAA,CAATrI,SAAS;QACTsI,UAAU,GAAAD,KAAA,CAAVC,UAAU;QACVC,IAAI,GAAAF,KAAA,CAAJE,IAAI;QACJC,OAAO,GAAAH,KAAA,CAAPG,OAAO;MAcP;MACA,IAAID,IAAI,KAAK,CAACA,IAAI,CAACE,KAAK,IAAI,CAACF,IAAI,CAACG,MAAM,CAAC,EAAE;QACzC,OAAOlD,QAAA,CAAA3K,OAAA,CAAQ4K,MAAM,CACnB,IAAIkD,KAAK,8EAAAhK,MAAA,CACsE,IAAAiF,UAAA,CAAA/I,OAAA,EAC3E0N,IACF,CAAC,CACH,CACF,CAAC;MACH;MAEA,IAAIC,OAAO,KAAK,CAACA,OAAO,CAACC,KAAK,IAAI,CAACD,OAAO,CAACE,MAAM,CAAC,EAAE;QAClD,OAAOlD,QAAA,CAAA3K,OAAA,CAAQ4K,MAAM,CACnB,IAAIkD,KAAK,iFAAAhK,MAAA,CACyE,IAAAiF,UAAA,CAAA/I,OAAA,EAC9E2N,OACF,CAAC,CACH,CACF,CAAC;MACH;MAEA,IAAMI,cAAc,GAAGL,IAAI,GAAG;QAACE,KAAK,EAAEF,IAAI,CAACE,KAAK;QAAEC,MAAM,EAAEH,IAAI,CAACG;MAAM,CAAC,GAAG5F,SAAS;MAClF,IAAM+F,iBAAiB,GAAGL,OAAO,GAAG;QAACC,KAAK,EAAED,OAAO,CAACC,KAAK;QAAEC,MAAM,EAAEF,OAAO,CAACE;MAAM,CAAC,GAAG5F,SAAS;MAE9F,IAAMgG,YAAY,GAChBF,cAAc,IAAIC,iBAAiB,GAC/B;QACEE,UAAU,EAAE;UACVR,IAAI,EAAEK,cAAc;UACpBJ,OAAO,EAAEK;QACX;MACF,CAAC,GACD/F,SAAS;;MAEf;MACA,OAAO,IAAI,CAACjE,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB9B,GAAG,KAAAtF,MAAA,CAAKsB,QAAQ,OAAAtB,MAAA,CAAI6H,mBAAQ,CAAE;QAC9BrF,IAAI,EAAE;UACJ6H,MAAM,EAAE;YACNhJ,SAAS,EAATA,SAAS;YACTiJ,IAAI,EAAEX,UAAU;YAChBQ,YAAY,EAAZA;UACF;QACF;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAtJ,GAAA;IAAAC,KAAA,EAMA,SAAAyJ,iBAAAC,MAAA,EAAiD;MAAA,IAA/BlJ,QAAQ,GAAAkJ,MAAA,CAARlJ,QAAQ;MACxB,IAAMgE,GAAG,MAAAtF,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAIyK,cAAG,CAAE;;MAEhC;MACA,OAAO,IAAI,CAACvK,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACC,IAAI;QACvBC,GAAG,EAAHA;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAzE,GAAA;IAAAC,KAAA,EAMA,SAAA4J,UAAAC,MAAA,EAAkD;MAAA,IAAvCC,YAAY,GAAAD,MAAA,CAAZC,YAAY;MACrB;MACA,OAAO,IAAI,CAAC1F,OAAO,CAAC;QAClBC,MAAM,EAAEC,qBAAU,CAACwB,GAAG;QACtBtB,GAAG,EAAEsF;MACP,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA/J,GAAA;IAAAC,KAAA,EAQA,SAAA+J,aAAAC,MAAA,EAAiF;MAAA,IAAnEC,kBAAkB,GAAAD,MAAA,CAAlBC,kBAAkB;QAAEC,QAAQ,GAAAF,MAAA,CAARE,QAAQ;QAAEC,aAAa,GAAAH,MAAA,CAAbG,aAAa;MACvD,IAAM3F,GAAG,GAAGyF,kBAAkB;;MAE9B;MACA,OAAO,IAAI,CAAC7F,OAAO,CAAC;QAClBC,MAAM,EAAEC,qBAAU,CAACC,IAAI;QACvBC,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAE;UACJ0I,MAAM,EAAE;YAACD,aAAa,EAAbA;UAAa,CAAC;UACvBD,QAAQ,EAARA;QACF;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAnK,GAAA;IAAAC,KAAA,EAMA,SAAAqK,gBAAAC,MAAA,EAAqF;MAAA,IAApEC,MAAM,GAAAD,MAAA,CAANC,MAAM;QAAE/J,QAAQ,GAAA8J,MAAA,CAAR9J,QAAQ;QAAEgK,uBAAuB,GAAAF,MAAA,CAAvBE,uBAAuB;MACxD,IAAMhG,GAAG,MAAAtF,MAAA,CAAMsB,QAAQ,OAAAtB,MAAA,CAAI6H,mBAAQ,CAAE;;MAErC;MACA,OAAO,IAAI,CAAC3H,iBAAiB,CAAC;QAC5BiF,MAAM,EAAEC,qBAAU,CAACgC,GAAG;QACtB9B,GAAG,EAAHA,GAAG;QACH9C,IAAI,EAAE;UACJ+I,SAAS,EAAE;YACTC,OAAO,EAAEH;UACX,CAAC;UACDC,uBAAuB,EAAvBA;QACF;MACF,CAAC,CAAC;IACJ;EAAC;IAAAzK,GAAA;IAAAC,KAAA,EAED,SAAA2K,oBAAoBnK,QAAgB,EAAE;MACpC;MACA,OAAO,IAAI,CAAC4D,OAAO,CAAC;QAClBC,MAAM,EAAEC,qBAAU,CAACwB,GAAG;QACtBtB,GAAG,EAAEhE;MACP,CAAC,CAAC;IACJ;EAAC;EAAA,OAAA7D,cAAA;AAAA,EAz2ByCiO,+BAAoB"}
1
+ {"version":3,"names":["_uuid","_interopRequireDefault","require","_lodash","_webexCore","_common","_internalPluginMetrics","_loggerProxy","_constants","_util","_excluded","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","MeetingRequest","exports","_StatelessWebexPlugin","_inherits2","_super","attrs","options","_this","_classCallCheck2","meeting","otherAttrs","_objectWithoutProperties2","_assertThisInitialized2","_asyncToGenerator2","_regenerator","mark","_callee","joinCookieRaw","joinCookie","wrap","_callee$","_context","prev","next","webex","boundedStorage","get","REACHABILITY","namespace","localStorageJoinCookie","catch","sent","JSON","parse","abrupt","t0","LoggerProxy","logger","error","concat","stop","locusDeltaRequest","MeetingUtil","generateLocusDeltaRequest","buildLocusDeltaRequestOptions","generateBuildLocusDeltaRequestOptions","changeVideoLayoutDebounced","debounce","changeVideoLayout","leading","trailing","_createClass2","key","value","_joinMeeting","_callee2","asResourceOccupant","inviteeAddress","meetingNumber","permissionToken","deviceUrl","locusUrl","locusClusterUrl","resourceId","correlationId","ensureConversation","moderator","pin","moveToResource","roapMessage","reachability","breakoutsSupported","locale","_options$deviceCapabi","deviceCapabilities","liveAnnotationSupported","clientMediaPreferences","alias","url","body","clusterUrl","_callee2$","_context2","info","device","deviceType","config","meetings","usingResource","moveMediaToResource","respOnlySdp","allowMultiDevice","supportsNativeLobby","BREAKOUTS","BREAKOUTS_SUPPORTED","ANNOTATION","ANNOTATION_ON_SHARE_SUPPORTED","internal","installationId","geoHintInfo","countryCode","regionCode","localIp","CallDiagnosticUtils","anonymizeIPAddress","clientAddress","undefined","PARTICIPANT","services","waitForCatalog","LOCI","CALL","invitee","address","ALTERNATE_REDIRECT_TRUE","callPreferences","requestedMedia","_SLIDES_","localMedias","localSdp","_stringify","request","method","HTTP_VERBS","POST","uri","joinMeeting","_x","refreshCaptcha","_ref2","captchaRefreshUrl","captchaId","err","dialIn","_ref3","dialInUrl","clientUrl","PROVISIONAL","provisionalType","PROVISIONAL_TYPE_DIAL_IN","dialOut","_ref4","dialOutUrl","phoneNumber","PROVISIONAL_TYPE_DIAL_OUT","dialoutAddress","getLocusDTO","GET","_promise","reject","disconnectPhoneAudio","_ref5","phoneUrl","selfId","LEAVE","PUT","prepareLeaveMeetingRequestOptions","_ref6","leaveMeeting","_ref7","buildLeaveMeetingRequestOptions","acknowledgeMeeting","ALERT","lockMeeting","CONTROLS","lock","locked","PATCH","declineMeeting","DECLINE","reason","changeMeetingFloor","floorReq","disposition","FLOOR_ACTION","GRANTED","beneficiary","personUrl","devices","requester","floor","resourceUrl","shareInstanceId","resourceToken","annotationInfo","annotation","sendDTMF","_ref8","tones","SEND_DTMF_ENDPOINT","dtmf","uuid","v4","_ref9","layoutType","main","content","width","height","Error","renderInfoMain","renderInfoContent","layoutParams","renderInfo","layout","type","endMeetingForAll","_ref10","END","keepAlive","_ref11","keepAliveUrl","sendReaction","_ref12","reactionChannelUrl","reaction","participantId","sender","toggleReactions","_ref13","enable","requestingParticipantId","reactions","enabled","getLocusStatusByUrl","setBrb","_ref14","brb","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {debounce} from 'lodash';\n// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n// @ts-ignore\nimport {deviceType} from '@webex/common';\nimport {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n ALERT,\n ALTERNATE_REDIRECT_TRUE,\n BREAKOUTS,\n CALL,\n CONTROLS,\n DECLINE,\n END,\n FLOOR_ACTION,\n HTTP_VERBS,\n LEAVE,\n LOCI,\n PARTICIPANT,\n PROVISIONAL_TYPE_DIAL_IN,\n PROVISIONAL_TYPE_DIAL_OUT,\n REACHABILITY,\n SEND_DTMF_ENDPOINT,\n _SLIDES_,\n ANNOTATION,\n} from '../constants';\nimport {SendReactionOptions, BrbOptions, ToggleReactionsOptions} from './request.type';\nimport MeetingUtil from './util';\nimport {AnnotationInfo} from '../annotation/annotation.types';\nimport {ClientMediaPreferences} from '../reachability/reachability.types';\n\n/**\n * @class MeetingRequest\n */\nexport default class MeetingRequest extends StatelessWebexPlugin {\n changeVideoLayoutDebounced: any;\n meetingRef: WeakRef<any>;\n locusDeltaRequest: (options: object) => Promise<any>;\n buildLocusDeltaRequestOptions: (options: object) => Promise<any>;\n\n /**\n * Constructor\n * @param {Object} attrs\n * @param {Object} options\n */\n constructor(attrs: any, options: any) {\n const {meeting, ...otherAttrs} = attrs;\n\n super(otherAttrs, options);\n\n this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);\n this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);\n\n this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {\n leading: true,\n trailing: true,\n });\n }\n\n /**\n * Returns joinCookie from boundedStorage if present.\n * @returns {Object} joinCookie\n */\n private getJoinCookie = async () => {\n // @ts-ignore\n const joinCookieRaw = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)\n .catch(() => {});\n\n if (joinCookieRaw) {\n try {\n const joinCookie = JSON.parse(joinCookieRaw);\n if (joinCookie) {\n return joinCookie;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return null;\n };\n\n /**\n * Make a network request to join a meeting\n * @param {Object} options\n * @param {String} options.sipUri\n * @param {String} options.deviceUrl\n * @param {String} options.locusUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @param {boolean} options.ensureConversation\n * @param {boolean} options.moderator\n * @param {boolean} options.pin\n * @param {boolean} options.moveToResource\n * @param {Object} options.roapMessage\n * @param {boolean} options.breakoutsSupported\n * @param {String} options.locale,\n * @param {Array} options.deviceCapabilities\n * @param {boolean} options.liveAnnotationSupported\n * @param {String} options.alias\n * @returns {Promise}\n */\n async joinMeeting(options: {\n sipUri: string;\n deviceUrl: string;\n locusUrl: string;\n locusClusterUrl: string;\n resourceId: string;\n correlationId: string;\n ensureConversation: boolean;\n moderator: boolean;\n pin: boolean;\n moveToResource: boolean;\n roapMessage: any;\n asResourceOccupant: any;\n inviteeAddress: any;\n meetingNumber: any;\n permissionToken: any;\n preferTranscoding: any;\n reachability: any;\n breakoutsSupported: boolean;\n locale?: string;\n deviceCapabilities?: Array<string>;\n liveAnnotationSupported: boolean;\n alias?: string;\n clientMediaPreferences: ClientMediaPreferences;\n }) {\n const {\n asResourceOccupant,\n inviteeAddress,\n meetingNumber,\n permissionToken,\n deviceUrl,\n locusUrl,\n locusClusterUrl,\n resourceId,\n correlationId,\n ensureConversation,\n moderator,\n pin,\n moveToResource,\n roapMessage,\n reachability,\n breakoutsSupported,\n locale,\n deviceCapabilities = [],\n liveAnnotationSupported,\n clientMediaPreferences,\n alias,\n } = options;\n\n LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);\n\n let url = '';\n\n const body: any = {\n asResourceOccupant,\n device: {\n url: deviceUrl,\n // @ts-ignore - config comes from registerPlugin\n deviceType: this.config.meetings.deviceType,\n },\n usingResource: resourceId || null,\n moveMediaToResource: (resourceId && moveToResource) || false,\n correlationId,\n respOnlySdp: true,\n allowMultiDevice: true,\n ensureConversation: ensureConversation || false,\n supportsNativeLobby: 1,\n clientMediaPreferences,\n };\n\n if (alias) {\n body.alias = alias;\n }\n\n if (breakoutsSupported) {\n deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);\n }\n if (liveAnnotationSupported) {\n deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);\n }\n\n // append installationId to device config if it exists\n // @ts-ignore\n if (this.webex.internal.device.config.installationId) {\n // @ts-ignore\n body.device.installationId = this.webex.internal.device.config.installationId;\n }\n\n if (locale) {\n body.locale = locale;\n }\n\n // add deviceCapabilities prop\n if (deviceCapabilities.length) {\n body.deviceCapabilities = deviceCapabilities;\n }\n // @ts-ignore\n if (this.webex.meetings.geoHintInfo) {\n // @ts-ignore\n body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;\n // @ts-ignore\n body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;\n body.device.localIp =\n // @ts-ignore\n CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||\n undefined;\n }\n\n if (moderator !== undefined) {\n body.moderator = moderator;\n }\n\n if (permissionToken) {\n body.permissionToken = permissionToken;\n }\n\n if (pin !== undefined) {\n body.pin = pin;\n }\n\n if (locusUrl) {\n url = `${locusUrl}/${PARTICIPANT}`;\n } else if (inviteeAddress || meetingNumber) {\n try {\n let clusterUrl;\n\n if (locusClusterUrl) {\n clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;\n } else {\n // @ts-ignore\n await this.webex.internal.services.waitForCatalog('postauth');\n // @ts-ignore\n clusterUrl = this.webex.internal.services.get('locus');\n }\n\n url = `${clusterUrl}/${LOCI}/${CALL}`;\n body.invitee = {\n address: inviteeAddress || `wbxmn:${meetingNumber}`,\n };\n } catch (e) {\n LoggerProxy.logger.error(\n `Meeting:request#joinMeeting Error Joining ${inviteeAddress || meetingNumber} --> ${e}`\n );\n throw e;\n }\n }\n\n // TODO: -- this will be resolved in SDK request\n url = url.concat(`?${ALTERNATE_REDIRECT_TRUE}`);\n\n if (resourceId === inviteeAddress) {\n body.callPreferences = {\n requestedMedia: [_SLIDES_],\n };\n }\n\n if (roapMessage || reachability) {\n body.localMedias = [\n {\n localSdp: JSON.stringify({\n roapMessage,\n reachability,\n }),\n },\n ];\n }\n\n /// @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: url,\n body,\n });\n }\n\n /**\n * Send a request to refresh the captcha\n * @param {Object} options\n * @param {String} options.captchaRefreshUrl\n * @param {String} options.captchaId\n * @returns {Promise}\n * @private\n */\n private refreshCaptcha({\n captchaRefreshUrl,\n captchaId,\n }: {\n captchaRefreshUrl: string;\n captchaId: string;\n }) {\n const body = {\n captchaId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: captchaRefreshUrl,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(`Meeting:request#refreshCaptcha --> Error: ${err}`);\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial in device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialInUrl identifier for the to-be provisioned device\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialIn({\n locusUrl,\n dialInUrl,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialInUrl: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialIn --> Provisioning a dial in device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_IN,\n url: dialInUrl,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialIn --> Error provisioning a dial in device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Make a network request to add a dial out device\n * @param {Object} options\n * @param {String} options.correlationId\n * @param {String} options.locusUrl url for the meeting\n * @param {String} options.dialOutUrl identifier for the to-be provisioned device\n * @param {String} options.phoneNumber phone number to dial out to\n * @param {String} options.clientUrl identifier for the web device\n * @returns {Promise}\n * @private\n */\n private dialOut({\n locusUrl,\n dialOutUrl,\n phoneNumber,\n clientUrl,\n correlationId,\n }: {\n correlationId: string;\n locusUrl: string;\n dialOutUrl: string;\n phoneNumber: string;\n clientUrl: string;\n }) {\n LoggerProxy.logger.info(\n 'Meeting:request#dialOut --> Provisioning a dial out device',\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n provisionalType: PROVISIONAL_TYPE_DIAL_OUT,\n url: dialOutUrl,\n dialoutAddress: phoneNumber,\n clientUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#dialOut --> Error provisioning a dial out device, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided\n * @param {Object} options\n * @param {String} options.locusUrl sync url to get ht elatest locus delta\n * @returns {Promise}\n */\n getLocusDTO(options: {url: string}) {\n const {url} = options;\n\n if (url) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: url,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`\n );\n\n throw err;\n });\n }\n\n return Promise.reject();\n }\n\n /**\n * Make a network request to make a provisioned phone leave the meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.phoneUrl\n * @param {String} options.correlationId\n * @param {String} options.selfId\n * @returns {Promise}\n * @private\n */\n private disconnectPhoneAudio({\n locusUrl,\n phoneUrl,\n correlationId,\n selfId,\n }: {\n locusUrl: string;\n phoneUrl: string;\n correlationId: string;\n selfId: string;\n }) {\n LoggerProxy.logger.info(\n `Meeting:request#disconnectPhoneAudio --> request phone ${phoneUrl} to leave`,\n correlationId\n );\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n\n const body = {\n device: {\n deviceType: deviceType.PROVISIONAL,\n url: phoneUrl,\n },\n correlationId,\n };\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n }).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#disconnectPhoneAudio --> Error when requesting phone ${phoneUrl} to leave, error ${err}`\n );\n\n throw err;\n });\n }\n\n /**\n * Prepares request options to to leave a meeting\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @param {String} options.selfId\n * @param {Url} options.deviceUrl\n * @param {String} options.resourceId,\n * @param {String} options.correlationId\n * @returns {Object} request options\n */\n prepareLeaveMeetingRequestOptions({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n }\n\n /**\n * Make a network request to leave a meeting\n * @param {Object} options\n * @returns {Promise}\n */\n leaveMeeting({\n locusUrl,\n selfId,\n deviceUrl: url,\n resourceId,\n correlationId,\n }: {\n locusUrl: string;\n selfId: string;\n deviceUrl: string;\n resourceId: string;\n correlationId: string;\n }) {\n LoggerProxy.logger.info('Meeting:request#leaveMeeting --> Leaving a meeting', correlationId);\n\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url,\n },\n usingResource: resourceId || null,\n correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Builds request options to leave a meeting\n * @param {Object} options\n * @returns {Object} request options\n */\n buildLeaveMeetingRequestOptions(options: any) {\n return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));\n }\n\n /**\n * Make a network request to acknowledge a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.correlationId\n * @returns {Promise}\n */\n acknowledgeMeeting(options: {locusUrl: string; deviceUrl: string; correlationId: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${ALERT}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n correlationId: options.correlationId,\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * Makes a network request to lock the meeting\n * @param {Object} options\n * @param {Boolean} options.lock Whether it is locked or not\n * @returns {Promise}\n */\n lockMeeting(options) {\n const uri = `${options.locusUrl}/${CONTROLS}`;\n const body = {\n lock: {\n locked: options.lock,\n },\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n });\n }\n\n /**\n * Make a network request to decline a meeting\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.reason\n * @returns {Promise}\n */\n declineMeeting(options: {locusUrl: string; deviceUrl: string; reason: string}) {\n const uri = `${options.locusUrl}/${PARTICIPANT}/${DECLINE}`;\n const body = {\n device: {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ...(options.reason && {reason: options.reason}),\n };\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body,\n });\n }\n\n /**\n * change the content floor grant\n * @param {Object} options options for floor grant\n * @param {String} options.disposition floor action (granted/released)\n * @param {String} options.personUrl personUrl who is requesting floor\n * @param {String} options.deviceUrl Url of a device\n * @param {String} options.resourceId Populated if you are paired to a device\n * @param {String} options.uri floor grant uri\n * @param {String} options.shareInstanceId id for current share\n * @returns {Promise}\n */\n changeMeetingFloor(\n options:\n | {\n disposition: string;\n personUrl: string;\n deviceUrl: string;\n resourceId: string;\n uri: string;\n annotationInfo: AnnotationInfo;\n shareInstanceId: string;\n }\n | any\n ) {\n let floorReq: any = {disposition: options.disposition};\n\n /* istanbul ignore else */\n if (options.disposition === FLOOR_ACTION.GRANTED) {\n floorReq = {\n beneficiary: {\n url: options.personUrl,\n devices: [\n {\n // @ts-ignore\n deviceType: this.config.meetings.deviceType,\n url: options.deviceUrl,\n },\n ],\n },\n disposition: options.disposition,\n requester: {\n url: options.personUrl,\n },\n };\n }\n\n const body: any = {\n floor: floorReq,\n resourceUrl: options.resourceUrl,\n };\n\n if (options?.shareInstanceId) {\n body.floor.shareInstanceId = options.shareInstanceId;\n }\n\n if (options?.resourceToken) {\n body.resourceToken = options?.resourceToken;\n }\n if (options?.annotationInfo) {\n body.annotation = options?.annotationInfo;\n }\n\n // @ts-ignore\n return this.request({\n uri: options.uri,\n method: HTTP_VERBS.PUT,\n body,\n });\n }\n\n /**\n * Sends a request to the DTMF endpoint to send tones\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.tones a string of one or more DTMF tones to send\n * @returns {Promise}\n */\n sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,\n body: {\n deviceUrl,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n },\n },\n });\n }\n\n /**\n * Sends a request to the controls endpoint to set the video layout\n * @param {Object} options\n * @param {String} options.locusUrl\n * @param {String} options.deviceUrl\n * @param {String} options.layoutType a layout type that should be available in meeting constants {@link #layout_types}\n * @param {Object} options.main preferred dimensions for the remote main video stream\n * @param {Number} options.main.width preferred width of main video stream\n * @param {Number} options.main.height preferred height of main video stream\n * @param {Object} options.content preferred dimensions for the remote content share stream\n * @param {Number} options.content.width preferred width of content share stream\n * @param {Number} options.content.height preferred height of content share stream\n * @returns {Promise}\n */\n changeVideoLayout({\n locusUrl,\n deviceUrl,\n layoutType,\n main,\n content,\n }: {\n locusUrl: string;\n deviceUrl: string;\n layoutType: string;\n main: {\n width: number;\n height: number;\n };\n content: {\n width: number;\n height: number;\n };\n }) {\n // send main/content renderInfo only if both width and height are specified\n if (main && (!main.width || !main.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for main: ${JSON.stringify(\n main\n )}`\n )\n );\n }\n\n if (content && (!content.width || !content.height)) {\n return Promise.reject(\n new Error(\n `Both width and height must be specified. One of them is missing for content: ${JSON.stringify(\n content\n )}`\n )\n );\n }\n\n const renderInfoMain = main ? {width: main.width, height: main.height} : undefined;\n const renderInfoContent = content ? {width: content.width, height: content.height} : undefined;\n\n const layoutParams =\n renderInfoMain || renderInfoContent\n ? {\n renderInfo: {\n main: renderInfoMain,\n content: renderInfoContent,\n },\n }\n : undefined;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri: `${locusUrl}/${CONTROLS}`,\n body: {\n layout: {\n deviceUrl,\n type: layoutType,\n layoutParams,\n },\n },\n });\n }\n\n /**\n * Make a network request to end meeting for all\n * @param {Object} options\n * @param {Url} options.locusUrl\n * @returns {Promise}\n */\n endMeetingForAll({locusUrl}: {locusUrl: string}) {\n const uri = `${locusUrl}/${END}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.POST,\n uri,\n });\n }\n\n /**\n * Send a locus keepAlive (used in lobby)\n * @param {Object} options\n * @param {Url} options.keepAliveUrl\n * @returns {Promise}\n */\n keepAlive({keepAliveUrl}: {keepAliveUrl: string}) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: keepAliveUrl,\n });\n }\n\n /**\n * Make a network request to send a reaction.\n * @param {Object} options\n * @param {Url} options.reactionChannelUrl\n * @param {Reaction} options.reaction\n * @param {string} options.senderID\n * @returns {Promise}\n */\n sendReaction({reactionChannelUrl, reaction, participantId}: SendReactionOptions) {\n const uri = reactionChannelUrl;\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri,\n body: {\n sender: {participantId},\n reaction,\n },\n });\n }\n\n /**\n * Make a network request to enable or disable reactions.\n * @param {boolean} options.enable - determines if we need to enable or disable.\n * @param {locusUrl} options.locusUrl\n * @returns {Promise}\n */\n toggleReactions({enable, locusUrl, requestingParticipantId}: ToggleReactionsOptions) {\n const uri = `${locusUrl}/${CONTROLS}`;\n\n // @ts-ignore\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PUT,\n uri,\n body: {\n reactions: {\n enabled: enable,\n },\n requestingParticipantId,\n },\n });\n }\n\n getLocusStatusByUrl(locusUrl: string) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.GET,\n uri: locusUrl,\n });\n }\n\n /**\n * Sends a request to set be right back status.\n *\n * @param {Object} options - The options for brb request.\n * @param {boolean} options.enabled - Whether brb status is enabled.\n * @param {string} options.locusUrl - The URL of the locus.\n * @param {string} options.deviceUrl - The URL of the device.\n * @param {string} options.selfId - The ID of the participant.\n * @returns {Promise}\n */\n setBrb({enabled, locusUrl, deviceUrl, selfId}: BrbOptions) {\n const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${CONTROLS}`;\n\n return this.locusDeltaRequest({\n method: HTTP_VERBS.PATCH,\n uri,\n body: {\n brb: {\n enabled,\n deviceUrl,\n },\n },\n });\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["request.type.ts"],"sourcesContent":["import {Reaction} from '../reactions/reactions.type';\n\nexport type SendReactionOptions = {\n reactionChannelUrl: string;\n reaction: Reaction;\n participantId: string;\n};\n\nexport type ToggleReactionsOptions = {\n enable: boolean;\n locusUrl: string;\n requestingParticipantId: string;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["request.type.ts"],"sourcesContent":["import {Reaction} from '../reactions/reactions.type';\n\nexport type SendReactionOptions = {\n reactionChannelUrl: string;\n reaction: Reaction;\n participantId: string;\n};\n\nexport type ToggleReactionsOptions = {\n enable: boolean;\n locusUrl: string;\n requestingParticipantId: string;\n};\n\nexport type BrbOptions = {\n enabled: boolean;\n locusUrl: string;\n deviceUrl: string;\n selfId: string;\n};\n"],"mappings":""}
@@ -148,17 +148,22 @@ var MeetingUtil = {
148
148
  return webex.meetings.reachability.getClientMediaPreferences(meeting.isMultistream, MeetingUtil.getIpVersion(webex));
149
149
  case 8:
150
150
  clientMediaPreferences = _context.sent;
151
- _context.next = 11;
151
+ if (!options.roapMessage) {
152
+ _context.next = 13;
153
+ break;
154
+ }
155
+ _context.next = 12;
152
156
  return webex.meetings.reachability.getReachabilityReportToAttachToRoap();
153
- case 11:
157
+ case 12:
154
158
  reachability = _context.sent;
155
- _context.next = 17;
159
+ case 13:
160
+ _context.next = 18;
156
161
  break;
157
- case 14:
158
- _context.prev = 14;
162
+ case 15:
163
+ _context.prev = 15;
159
164
  _context.t0 = _context["catch"](5);
160
165
  _loggerProxy.default.logger.error('Meeting:util#joinMeeting --> Error getting reachability or clientMediaPreferences:', _context.t0);
161
- case 17:
166
+ case 18:
162
167
  return _context.abrupt("return", meeting.meetingRequest.joinMeeting({
163
168
  inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,
164
169
  meetingNumber: meeting.meetingNumber,
@@ -197,11 +202,11 @@ var MeetingUtil = {
197
202
  });
198
203
  return parsed;
199
204
  }));
200
- case 18:
205
+ case 19:
201
206
  case "end":
202
207
  return _context.stop();
203
208
  }
204
- }, _callee, null, [[5, 14]]);
209
+ }, _callee, null, [[5, 15]]);
205
210
  }));
206
211
  function joinMeeting(_x, _x2) {
207
212
  return _joinMeeting.apply(this, arguments);
@@ -435,6 +440,9 @@ var MeetingUtil = {
435
440
  canManageBreakout: function canManageBreakout(displayHints) {
436
441
  return displayHints.includes(_constants.DISPLAY_HINTS.BREAKOUT_MANAGEMENT);
437
442
  },
443
+ canStartBreakout: function canStartBreakout(displayHints) {
444
+ return !displayHints.includes(_constants.DISPLAY_HINTS.DISABLE_BREAKOUT_START);
445
+ },
438
446
  canBroadcastMessageToBreakout: function canBroadcastMessageToBreakout(displayHints) {
439
447
  var policies = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
440
448
  return displayHints.includes(_constants.DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT) && !!policies[_constants.SELF_POLICY.SUPPORT_BROADCAST_MESSAGE];
@@ -487,14 +495,6 @@ var MeetingUtil = {
487
495
  _loggerProxy.default.logger.log(LOG_HEADER, 'settings =', (0, _stringify.default)(settings));
488
496
  }
489
497
  },
490
- handleDeviceLogging: function handleDeviceLogging() {
491
- var devices = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
492
- var LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';
493
- devices.forEach(function (device) {
494
- _loggerProxy.default.logger.log(LOG_HEADER, "deviceId = ".concat(device.deviceId));
495
- _loggerProxy.default.logger.log(LOG_HEADER, 'settings', (0, _stringify.default)(device));
496
- });
497
- },
498
498
  endMeetingForAll: function endMeetingForAll(meeting) {
499
499
  if (meeting.meetingState === _constants.FULL_STATE.INACTIVE) {
500
500
  return _promise.default.reject(new _webexErrors.MeetingNotActiveError());