@webex/plugin-meetings 2.59.8 → 2.60.0-next.10
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.
- package/README.md +46 -8
- package/dist/annotation/annotation.types.d.ts +42 -0
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.d.ts +31 -0
- package/dist/annotation/constants.js +41 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.d.ts +117 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.d.ts +8 -0
- package/dist/breakouts/breakout.js +215 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.d.ts +5 -0
- package/dist/breakouts/collection.js +22 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/breakouts/edit-lock-error.js +51 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.d.ts +8 -0
- package/dist/breakouts/events.js +44 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.d.ts +5 -0
- package/dist/breakouts/index.js +1047 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.d.ts +22 -0
- package/dist/breakouts/request.js +77 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.d.ts +15 -0
- package/dist/breakouts/utils.js +64 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +2 -3
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +3 -4
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +1 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +1 -2
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +1 -2
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +1 -2
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +1 -2
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/common/errors/no-meeting-info.js +50 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +3 -4
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +1 -2
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +1 -2
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/common/errors/reclaim-host-role-errors.js +154 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +1 -2
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +1 -2
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +1 -2
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.d.ts +20 -8
- package/dist/common/errors/webex-errors.js +48 -28
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +1 -2
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +1 -2
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +1 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +1 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +1 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +2 -3
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +3 -1
- package/dist/common/logs/request.js +8 -5
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.d.ts +9 -7
- package/dist/common/queue.js +22 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +5 -7
- package/dist/config.js +8 -11
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +243 -97
- package/dist/constants.js +437 -435
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +3 -6
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.d.ts +11 -1
- package/dist/controls-options-manager/enums.js +15 -6
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +17 -1
- package/dist/controls-options-manager/index.js +127 -38
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.d.ts +43 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.d.ts +1 -7
- package/dist/controls-options-manager/util.js +309 -19
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.js +116 -4
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.d.ts +5 -0
- package/dist/interpretation/collection.js +22 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.d.ts +5 -0
- package/dist/interpretation/index.js +365 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.d.ts +5 -0
- package/dist/interpretation/siLanguage.js +24 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +100 -11
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -4
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +1 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +1 -2
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.d.ts +57 -4
- package/dist/locus-info/index.js +425 -84
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +13 -5
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +58 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +66 -6
- package/dist/locus-info/parser.js +253 -80
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +97 -13
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +2 -0
- package/dist/media/index.js +107 -319
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +38 -53
- package/dist/media/properties.js +96 -153
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -22
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +234 -230
- package/dist/mediaQualityMetrics/config.js +302 -498
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.d.ts +88 -0
- package/dist/meeting/in-meeting-actions.js +94 -3
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +591 -494
- package/dist/meeting/index.js +4728 -2990
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.d.ts +93 -25
- package/dist/meeting/muteState.js +224 -133
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +82 -47
- package/dist/meeting/request.js +297 -199
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.d.ts +11 -0
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +102 -1
- package/dist/meeting/util.js +605 -435
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +13 -1
- package/dist/meeting-info/index.js +74 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
- package/dist/meeting-info/meeting-info-v2.js +200 -63
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +2 -3
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +39 -41
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +17 -0
- package/dist/meetings/collection.js +42 -4
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +103 -21
- package/dist/meetings/index.js +486 -124
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.d.ts +4 -0
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +4 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +107 -6
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +14 -1
- package/dist/member/index.js +54 -2
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js +3 -4
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/types.d.ts +32 -0
- package/dist/member/types.js +23 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +131 -29
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +5 -0
- package/dist/members/collection.js +11 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +57 -2
- package/dist/members/index.js +174 -10
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +73 -9
- package/dist/members/request.js +108 -41
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.d.ts +25 -0
- package/dist/members/types.js +14 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.d.ts +214 -1
- package/dist/members/util.js +327 -234
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.d.ts +15 -6
- package/dist/metrics/constants.js +17 -9
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +4 -111
- package/dist/metrics/index.js +4 -452
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.d.ts +118 -0
- package/dist/multistream/mediaRequestManager.js +344 -0
- package/dist/multistream/mediaRequestManager.js.map +1 -0
- package/dist/multistream/receiveSlot.d.ts +68 -0
- package/dist/multistream/receiveSlot.js +200 -0
- package/dist/multistream/receiveSlot.js.map +1 -0
- package/dist/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/multistream/receiveSlotManager.js +174 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -0
- package/dist/multistream/remoteMedia.d.ts +72 -0
- package/dist/multistream/remoteMedia.js +268 -0
- package/dist/multistream/remoteMedia.js.map +1 -0
- package/dist/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/multistream/remoteMediaGroup.js +267 -0
- package/dist/multistream/remoteMediaGroup.js.map +1 -0
- package/dist/multistream/remoteMediaManager.d.ts +285 -0
- package/dist/multistream/remoteMediaManager.js +1211 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -0
- package/dist/multistream/sendSlotManager.d.ts +61 -0
- package/dist/multistream/sendSlotManager.js +236 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +5 -4
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +2 -3
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -3
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +1 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.d.ts +62 -7
- package/dist/reachability/index.js +265 -72
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +7 -3
- package/dist/reachability/request.js +18 -10
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.d.ts +3 -0
- package/dist/reactions/constants.js +12 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.d.ts +2 -2
- package/dist/reactions/reactions.js +4 -6
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +23 -3
- package/dist/reactions/reactions.type.js +21 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +32 -8
- package/dist/reconnection-manager/index.js +282 -231
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +4 -5
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +15 -1
- package/dist/recording-controller/index.js +57 -46
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +5 -4
- package/dist/recording-controller/util.js +10 -10
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.d.ts +9 -47
- package/dist/roap/index.js +101 -235
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +18 -12
- package/dist/roap/request.js +126 -180
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.d.ts +27 -16
- package/dist/roap/turnDiscovery.js +115 -105
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.d.ts +4 -0
- package/dist/rtcMetrics/constants.js +11 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.d.ts +54 -0
- package/dist/rtcMetrics/index.js +140 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.d.ts +1 -83
- package/dist/statsAnalyzer/global.js +2 -85
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +28 -30
- package/dist/statsAnalyzer/index.js +374 -509
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
- package/dist/statsAnalyzer/mqaUtil.js +116 -83
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +1 -2
- package/dist/transcription/index.js.map +1 -1
- package/dist/webinar/collection.d.ts +16 -0
- package/dist/webinar/collection.js +43 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.d.ts +5 -0
- package/dist/webinar/index.js +68 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +35 -26
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +188 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +925 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +36 -12
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +5 -7
- package/src/constants.ts +271 -93
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +40 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +110 -0
- package/src/locus-info/index.ts +449 -61
- package/src/locus-info/infoUtils.ts +14 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +85 -2
- package/src/media/index.ts +153 -370
- package/src/media/properties.ts +106 -136
- package/src/media/util.ts +0 -21
- package/src/mediaQualityMetrics/config.ts +244 -377
- package/src/meeting/in-meeting-actions.ts +176 -0
- package/src/meeting/index.ts +3895 -2448
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +224 -138
- package/src/meeting/request.ts +207 -127
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/util.ts +590 -423
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +163 -13
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +28 -28
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +486 -126
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +116 -5
- package/src/member/index.ts +52 -1
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +139 -28
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +196 -7
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +333 -240
- package/src/metrics/constants.ts +15 -6
- package/src/metrics/index.ts +1 -471
- package/src/multistream/mediaRequestManager.ts +440 -0
- package/src/multistream/receiveSlot.ts +184 -0
- package/src/multistream/receiveSlotManager.ts +166 -0
- package/src/multistream/remoteMedia.ts +254 -0
- package/src/multistream/remoteMediaGroup.ts +284 -0
- package/src/multistream/remoteMediaManager.ts +1145 -0
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/reachability/index.ts +238 -45
- package/src/reachability/request.ts +17 -8
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +30 -4
- package/src/reconnection-manager/index.ts +168 -156
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +98 -241
- package/src/roap/request.ts +74 -148
- package/src/roap/turnDiscovery.ts +62 -56
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +124 -0
- package/src/statsAnalyzer/global.ts +1 -84
- package/src/statsAnalyzer/index.ts +413 -642
- package/src/statsAnalyzer/mqaUtil.ts +111 -114
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +320 -264
- package/test/integration/spec/space-meeting.js +77 -4
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +237 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1790 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +323 -30
- package/test/unit/spec/locus-info/index.js +1390 -16
- package/test/unit/spec/locus-info/infoUtils.js +54 -16
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfUtils.js +275 -0
- package/test/unit/spec/media/index.ts +290 -0
- package/test/unit/spec/media/properties.ts +75 -84
- package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
- package/test/unit/spec/meeting/index.js +8181 -2770
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +409 -213
- package/test/unit/spec/meeting/request.js +512 -42
- package/test/unit/spec/meeting/utils.js +741 -24
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1284 -217
- package/test/unit/spec/meetings/utils.js +202 -2
- package/test/unit/spec/member/index.js +38 -8
- package/test/unit/spec/member/util.js +499 -29
- package/test/unit/spec/members/index.js +597 -3
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +210 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
- package/test/unit/spec/multistream/receiveSlot.ts +163 -0
- package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
- package/test/unit/spec/multistream/remoteMedia.ts +255 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/reachability/index.ts +598 -24
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reconnection-manager/index.js +162 -24
- package/test/unit/spec/recording-controller/index.js +293 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +200 -76
- package/test/unit/spec/roap/request.ts +232 -0
- package/test/unit/spec/roap/turnDiscovery.ts +86 -48
- package/test/unit/spec/rtcMetrics/index.ts +93 -0
- package/test/unit/spec/stats-analyzer/index.js +188 -174
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -45
- package/test/utils/webex-config.js +4 -0
- package/test/utils/webex-test-users.js +7 -3
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/peer-connection-manager/util.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/util.d.ts +0 -2
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- package/src/index.js +0 -15
- package/src/meeting/effectsState.ts +0 -209
- package/src/metrics/config.ts +0 -485
- package/src/peer-connection-manager/index.ts +0 -847
- package/src/peer-connection-manager/util.ts +0 -119
- package/src/roap/collection.ts +0 -62
- package/src/roap/handler.ts +0 -294
- package/src/roap/state.ts +0 -156
- package/src/roap/util.ts +0 -100
- package/test/unit/spec/meeting/effectsState.js +0 -281
- package/test/unit/spec/peerconnection-manager/index.js +0 -218
- package/test/unit/spec/peerconnection-manager/utils.js +0 -49
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
- package/test/unit/spec/roap/util.js +0 -30
|
@@ -70,10 +70,41 @@ export default class MeetingInfo {
|
|
|
70
70
|
* @private
|
|
71
71
|
* @memberof MeetingInfo
|
|
72
72
|
*/
|
|
73
|
-
private requestFetchInfo(options:
|
|
73
|
+
private requestFetchInfo(options: any) {
|
|
74
|
+
const {meetingId, sendCAevents} = options;
|
|
75
|
+
if (meetingId && sendCAevents) {
|
|
76
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
77
|
+
name: 'internal.client.meetinginfo.request',
|
|
78
|
+
});
|
|
79
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
80
|
+
name: 'client.meetinginfo.request',
|
|
81
|
+
options: {
|
|
82
|
+
meetingId,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
|
|
74
87
|
return this.meetingInfoRequest
|
|
75
88
|
.fetchMeetingInfo(options)
|
|
76
89
|
.then((info) => {
|
|
90
|
+
if (meetingId && sendCAevents) {
|
|
91
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
92
|
+
name: 'internal.client.meetinginfo.response',
|
|
93
|
+
});
|
|
94
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
95
|
+
name: 'client.meetinginfo.response',
|
|
96
|
+
payload: {
|
|
97
|
+
identifiers: {
|
|
98
|
+
meetingLookupUrl: info?.url,
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
options: {
|
|
102
|
+
meetingId,
|
|
103
|
+
webexConferenceIdStr: info?.body?.confIdStr || info?.body?.confID,
|
|
104
|
+
globalMeetingId: info?.body?.meetingId,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
77
108
|
if (info && info.body) {
|
|
78
109
|
this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
|
|
79
110
|
}
|
|
@@ -84,6 +115,23 @@ export default class MeetingInfo {
|
|
|
84
115
|
LoggerProxy.logger.error(
|
|
85
116
|
`Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`
|
|
86
117
|
);
|
|
118
|
+
if (meetingId && sendCAevents) {
|
|
119
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
120
|
+
name: 'internal.client.meetinginfo.response',
|
|
121
|
+
});
|
|
122
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
123
|
+
name: 'client.meetinginfo.response',
|
|
124
|
+
payload: {
|
|
125
|
+
identifiers: {
|
|
126
|
+
meetingLookupUrl: error?.url,
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
options: {
|
|
130
|
+
meetingId,
|
|
131
|
+
rawError: error,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}
|
|
87
135
|
|
|
88
136
|
return Promise.reject(error);
|
|
89
137
|
});
|
|
@@ -105,29 +153,54 @@ export default class MeetingInfo {
|
|
|
105
153
|
});
|
|
106
154
|
}
|
|
107
155
|
|
|
156
|
+
// eslint-disable-next-line valid-jsdoc
|
|
108
157
|
/**
|
|
109
158
|
* Fetches meeting info from the server
|
|
110
159
|
* @param {String} destination one of many different types of destinations to look up info for
|
|
111
160
|
* @param {String} [type] to match up with the destination value
|
|
161
|
+
* @param {String} [password] meeting password
|
|
162
|
+
* @param {Object} [captchaInfo] captcha code and id
|
|
163
|
+
* @param {String} [installedOrgID]
|
|
164
|
+
* @param {String} [locusId]
|
|
165
|
+
* @param {Object} [extraParams]
|
|
166
|
+
* @param {Boolean} [options] meeting Id and whether Call Analyzer events should be sent
|
|
112
167
|
* @returns {Promise} returns a meeting info object
|
|
113
168
|
* @public
|
|
114
169
|
* @memberof MeetingInfo
|
|
115
170
|
*/
|
|
116
|
-
public fetchMeetingInfo(
|
|
171
|
+
public fetchMeetingInfo(
|
|
172
|
+
destination: string,
|
|
173
|
+
type: string = null,
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
175
|
+
password: string = null,
|
|
176
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
177
|
+
captchaInfo: {
|
|
178
|
+
code: string;
|
|
179
|
+
id: string;
|
|
180
|
+
} = null,
|
|
181
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
182
|
+
installedOrgID = null,
|
|
183
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
184
|
+
locusId = null,
|
|
185
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
186
|
+
extraParams: object = {},
|
|
187
|
+
options: {meetingId?: string; sendCAevents?: boolean} = {}
|
|
188
|
+
) {
|
|
117
189
|
if (type === _PERSONAL_ROOM_ && !destination) {
|
|
118
190
|
destination = this.webex.internal.device.userId;
|
|
119
191
|
}
|
|
120
192
|
|
|
121
193
|
return this.fetchInfoOptions(MeetingInfoUtil.extractDestination(destination, type), type).then(
|
|
122
|
-
(
|
|
194
|
+
(infoOptions) =>
|
|
123
195
|
// fetch meeting info
|
|
124
|
-
this.requestFetchInfo(options).catch((error) => {
|
|
196
|
+
this.requestFetchInfo({...infoOptions, ...options}).catch((error) => {
|
|
125
197
|
// if it failed the first time as meeting link
|
|
126
|
-
if (
|
|
198
|
+
if (infoOptions.type === _MEETING_LINK_) {
|
|
127
199
|
// convert the meeting link to sip URI and retry
|
|
128
|
-
return this.requestFetchInfo(
|
|
129
|
-
this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_)
|
|
130
|
-
|
|
200
|
+
return this.requestFetchInfo({
|
|
201
|
+
...this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_),
|
|
202
|
+
...options,
|
|
203
|
+
});
|
|
131
204
|
}
|
|
132
205
|
|
|
133
206
|
return Promise.reject(error);
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import lodash from 'lodash';
|
|
2
|
+
import {
|
|
3
|
+
HTTP_VERBS,
|
|
4
|
+
_CONVERSATION_URL_,
|
|
5
|
+
WBXAPPAPI_SERVICE,
|
|
6
|
+
DEFAULT_MEETING_INFO_REQUEST_BODY,
|
|
7
|
+
} from '../constants';
|
|
2
8
|
import Metrics from '../metrics';
|
|
3
9
|
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
4
10
|
|
|
@@ -11,7 +17,7 @@ const CAPTCHA_ERROR_DEFAULT_MESSAGE =
|
|
|
11
17
|
const ADHOC_MEETING_DEFAULT_ERROR =
|
|
12
18
|
'Failed starting the adhoc meeting, Please contact support team ';
|
|
13
19
|
const CAPTCHA_ERROR_REQUIRES_PASSWORD_CODES = [423005, 423006];
|
|
14
|
-
|
|
20
|
+
const POLICY_ERROR_CODES = [403049, 403104, 403103, 403048, 403102, 403101];
|
|
15
21
|
/**
|
|
16
22
|
* Error to indicate that wbxappapi requires a password
|
|
17
23
|
*/
|
|
@@ -63,6 +69,30 @@ export class MeetingInfoV2AdhocMeetingError extends Error {
|
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Error preventing join because of a meeting policy
|
|
74
|
+
*/
|
|
75
|
+
export class MeetingInfoV2PolicyError extends Error {
|
|
76
|
+
meetingInfo: object;
|
|
77
|
+
sdkMessage: string;
|
|
78
|
+
wbxAppApiCode: number;
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* @constructor
|
|
82
|
+
* @param {Number} [wbxAppApiErrorCode]
|
|
83
|
+
* @param {Object} [meetingInfo]
|
|
84
|
+
* @param {String} [message]
|
|
85
|
+
*/
|
|
86
|
+
constructor(wbxAppApiErrorCode?: number, meetingInfo?: object, message?: string) {
|
|
87
|
+
super(`${message}, code=${wbxAppApiErrorCode}`);
|
|
88
|
+
this.name = 'MeetingInfoV2AdhocMeetingError';
|
|
89
|
+
this.sdkMessage = message;
|
|
90
|
+
this.stack = new Error().stack;
|
|
91
|
+
this.wbxAppApiCode = wbxAppApiErrorCode;
|
|
92
|
+
this.meetingInfo = meetingInfo;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
66
96
|
/**
|
|
67
97
|
* Error to indicate that preferred webex site not present to start adhoc meeting
|
|
68
98
|
*/
|
|
@@ -124,14 +154,38 @@ export default class MeetingInfoV2 {
|
|
|
124
154
|
});
|
|
125
155
|
}
|
|
126
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Raises a MeetingInfoV2PolicyError for policy error codes
|
|
159
|
+
* @param {any} err the error from the request
|
|
160
|
+
* @returns {void}
|
|
161
|
+
*/
|
|
162
|
+
handlePolicyError = (err) => {
|
|
163
|
+
if (!err.body) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (POLICY_ERROR_CODES.includes(err.body?.code)) {
|
|
168
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_INFO_POLICY_ERROR, {
|
|
169
|
+
code: err.body?.code,
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
throw new MeetingInfoV2PolicyError(
|
|
173
|
+
err.body?.code,
|
|
174
|
+
err.body?.data?.meetingInfo,
|
|
175
|
+
err.body?.message
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
|
|
127
180
|
/**
|
|
128
181
|
* Creates adhoc space meetings for a space by fetching the conversation infomation
|
|
129
182
|
* @param {String} conversationUrl conversationUrl to start adhoc meeting on
|
|
183
|
+
* @param {String} installedOrgID org ID of user's machine
|
|
130
184
|
* @returns {Promise} returns a meeting info object
|
|
131
185
|
* @public
|
|
132
186
|
* @memberof MeetingInfo
|
|
133
187
|
*/
|
|
134
|
-
async createAdhocSpaceMeeting(conversationUrl: string) {
|
|
188
|
+
async createAdhocSpaceMeeting(conversationUrl: string, installedOrgID?: string) {
|
|
135
189
|
if (!this.webex.meetings.preferredWebexSite) {
|
|
136
190
|
throw Error('No preferred webex site found');
|
|
137
191
|
}
|
|
@@ -159,21 +213,31 @@ export default class MeetingInfoV2 {
|
|
|
159
213
|
keyUrl: conversation.encryptionKeyUrl,
|
|
160
214
|
kroUrl: conversation.kmsResourceObjectUrl,
|
|
161
215
|
invitees: getInvitees(conversation.participants?.items),
|
|
216
|
+
installedOrgID,
|
|
162
217
|
};
|
|
163
218
|
|
|
219
|
+
if (installedOrgID) {
|
|
220
|
+
body.installedOrgID = installedOrgID;
|
|
221
|
+
}
|
|
222
|
+
|
|
164
223
|
const uri = this.webex.meetings.preferredWebexSite
|
|
165
224
|
? `https://${this.webex.meetings.preferredWebexSite}/wbxappapi/v2/meetings/spaceInstant`
|
|
166
225
|
: '';
|
|
167
226
|
|
|
168
|
-
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
|
|
169
|
-
|
|
170
227
|
return this.webex.request({
|
|
171
228
|
method: HTTP_VERBS.POST,
|
|
172
229
|
uri,
|
|
173
230
|
body,
|
|
174
231
|
});
|
|
175
232
|
})
|
|
233
|
+
.then((requestResult) => {
|
|
234
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
|
|
235
|
+
|
|
236
|
+
return requestResult;
|
|
237
|
+
})
|
|
176
238
|
.catch((err) => {
|
|
239
|
+
this.handlePolicyError(err);
|
|
240
|
+
|
|
177
241
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.ADHOC_MEETING_FAILURE, {
|
|
178
242
|
reason: err.message,
|
|
179
243
|
stack: err.stack,
|
|
@@ -190,6 +254,10 @@ export default class MeetingInfoV2 {
|
|
|
190
254
|
* @param {Object} captchaInfo
|
|
191
255
|
* @param {String} captchaInfo.code
|
|
192
256
|
* @param {String} captchaInfo.id
|
|
257
|
+
* @param {String} installedOrgID org ID of user's machine
|
|
258
|
+
* @param {String} locusId
|
|
259
|
+
* @param {Object} extraParams
|
|
260
|
+
* @param {Object} options
|
|
193
261
|
* @returns {Promise} returns a meeting info object
|
|
194
262
|
* @public
|
|
195
263
|
* @memberof MeetingInfo
|
|
@@ -201,8 +269,14 @@ export default class MeetingInfoV2 {
|
|
|
201
269
|
captchaInfo: {
|
|
202
270
|
code: string;
|
|
203
271
|
id: string;
|
|
204
|
-
} = null
|
|
272
|
+
} = null,
|
|
273
|
+
installedOrgID = null,
|
|
274
|
+
locusId = null,
|
|
275
|
+
extraParams: object = {},
|
|
276
|
+
options: {meetingId?: string; sendCAevents?: boolean} = {}
|
|
205
277
|
) {
|
|
278
|
+
const {meetingId, sendCAevents} = options;
|
|
279
|
+
|
|
206
280
|
const destinationType = await MeetingInfoUtil.getDestinationType({
|
|
207
281
|
destination,
|
|
208
282
|
type,
|
|
@@ -214,12 +288,35 @@ export default class MeetingInfoV2 {
|
|
|
214
288
|
this.webex.config.meetings.experimental.enableAdhocMeetings &&
|
|
215
289
|
this.webex.meetings.preferredWebexSite
|
|
216
290
|
) {
|
|
217
|
-
return this.createAdhocSpaceMeeting(destinationType.destination);
|
|
291
|
+
return this.createAdhocSpaceMeeting(destinationType.destination, installedOrgID);
|
|
218
292
|
}
|
|
219
293
|
|
|
220
|
-
const body = await MeetingInfoUtil.getRequestBody({
|
|
294
|
+
const body = await MeetingInfoUtil.getRequestBody({
|
|
295
|
+
...destinationType,
|
|
296
|
+
password,
|
|
297
|
+
captchaInfo,
|
|
298
|
+
installedOrgID,
|
|
299
|
+
locusId,
|
|
300
|
+
extraParams,
|
|
301
|
+
});
|
|
221
302
|
|
|
222
|
-
|
|
303
|
+
// If the body only contains the default properties, we don't have enough to
|
|
304
|
+
// fetch the meeting info so don't bother trying.
|
|
305
|
+
if (
|
|
306
|
+
!lodash.difference(Object.keys(body), Object.keys(DEFAULT_MEETING_INFO_REQUEST_BODY)).length
|
|
307
|
+
) {
|
|
308
|
+
const err = new Error('Not enough information to fetch meeting info');
|
|
309
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_FAILURE, {
|
|
310
|
+
reason: err.message,
|
|
311
|
+
destinationType: destinationType?.type,
|
|
312
|
+
webExMeetingId: destinationType?.info?.webExMeetingId,
|
|
313
|
+
sipUri: destinationType?.info?.sipUri,
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
throw err;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const requestOptions: any = {
|
|
223
320
|
method: HTTP_VERBS.POST,
|
|
224
321
|
body,
|
|
225
322
|
};
|
|
@@ -227,21 +324,74 @@ export default class MeetingInfoV2 {
|
|
|
227
324
|
const directURI = await MeetingInfoUtil.getDirectMeetingInfoURI(destinationType);
|
|
228
325
|
|
|
229
326
|
if (directURI) {
|
|
230
|
-
|
|
327
|
+
requestOptions.uri = directURI;
|
|
231
328
|
} else {
|
|
232
|
-
|
|
233
|
-
|
|
329
|
+
requestOptions.service = WBXAPPAPI_SERVICE;
|
|
330
|
+
requestOptions.resource = 'meetingInfo';
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (meetingId && sendCAevents) {
|
|
334
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
335
|
+
name: 'internal.client.meetinginfo.request',
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
339
|
+
name: 'client.meetinginfo.request',
|
|
340
|
+
options: {
|
|
341
|
+
meetingId,
|
|
342
|
+
},
|
|
343
|
+
});
|
|
234
344
|
}
|
|
235
345
|
|
|
236
346
|
return this.webex
|
|
237
|
-
.request(
|
|
347
|
+
.request(requestOptions)
|
|
238
348
|
.then((response) => {
|
|
349
|
+
if (meetingId && sendCAevents) {
|
|
350
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
351
|
+
name: 'internal.client.meetinginfo.response',
|
|
352
|
+
});
|
|
353
|
+
|
|
354
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
355
|
+
name: 'client.meetinginfo.response',
|
|
356
|
+
payload: {
|
|
357
|
+
identifiers: {
|
|
358
|
+
meetingLookupUrl: response?.url,
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
options: {
|
|
362
|
+
meetingId,
|
|
363
|
+
webexConferenceIdStr: response?.body?.confIdStr || response?.body?.confID,
|
|
364
|
+
globalMeetingId: response?.body?.meetingId,
|
|
365
|
+
},
|
|
366
|
+
});
|
|
367
|
+
}
|
|
239
368
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);
|
|
240
369
|
|
|
241
370
|
return response;
|
|
242
371
|
})
|
|
243
372
|
.catch((err) => {
|
|
373
|
+
if (meetingId && sendCAevents) {
|
|
374
|
+
this.webex.internal.newMetrics.submitInternalEvent({
|
|
375
|
+
name: 'internal.client.meetinginfo.response',
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
379
|
+
name: 'client.meetinginfo.response',
|
|
380
|
+
payload: {
|
|
381
|
+
identifiers: {
|
|
382
|
+
meetingLookupUrl: err?.url,
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
options: {
|
|
386
|
+
meetingId,
|
|
387
|
+
rawError: err,
|
|
388
|
+
},
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
|
|
244
392
|
if (err?.statusCode === 403) {
|
|
393
|
+
this.handlePolicyError(err);
|
|
394
|
+
|
|
245
395
|
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.VERIFY_PASSWORD_ERROR, {
|
|
246
396
|
reason: err.message,
|
|
247
397
|
stack: err.stack,
|
package/src/meeting-info/util.ts
CHANGED
|
@@ -236,7 +236,7 @@ MeetingInfoUtil.generateOptions = async (from) => {
|
|
|
236
236
|
}
|
|
237
237
|
} else {
|
|
238
238
|
throw new ParameterError(
|
|
239
|
-
'MeetingInfo is fetched with meeting link,
|
|
239
|
+
'MeetingInfo is fetched with the meeting link, SIP URI, phone number, Hydra people ID, or a conversation URL.'
|
|
240
240
|
);
|
|
241
241
|
}
|
|
242
242
|
|
|
@@ -19,14 +19,20 @@ import {
|
|
|
19
19
|
JOIN,
|
|
20
20
|
MEET,
|
|
21
21
|
MEET_M,
|
|
22
|
+
MEET_CISCO,
|
|
23
|
+
MEET_CO,
|
|
22
24
|
HTTPS_PROTOCOL,
|
|
23
25
|
UUID_REG,
|
|
24
26
|
VALID_EMAIL_ADDRESS,
|
|
27
|
+
DEFAULT_MEETING_INFO_REQUEST_BODY,
|
|
25
28
|
} from '../constants';
|
|
26
29
|
import ParameterError from '../common/errors/parameter';
|
|
27
30
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
31
|
+
import {SpaceIDDeprecatedError} from '../common/errors/webex-errors';
|
|
28
32
|
|
|
29
33
|
const MeetingInfoUtil: any = {};
|
|
34
|
+
const meetingInfoError =
|
|
35
|
+
'MeetingInfo is fetched with the meeting link, SIP URI, phone number, Hydra people ID, or a conversation URL.';
|
|
30
36
|
|
|
31
37
|
MeetingInfoUtil.getParsedUrl = (link) => {
|
|
32
38
|
try {
|
|
@@ -62,6 +68,8 @@ MeetingInfoUtil.isMeetingLink = (value: string) => {
|
|
|
62
68
|
parsedUrl.pathname &&
|
|
63
69
|
(parsedUrl.pathname.includes(`/${MEET}`) ||
|
|
64
70
|
parsedUrl.pathname.includes(`/${MEET_M}`) ||
|
|
71
|
+
parsedUrl.pathname.includes(`/${MEET_CISCO}`) ||
|
|
72
|
+
parsedUrl.pathname.includes(`/${MEET_CO}`) ||
|
|
65
73
|
parsedUrl.pathname.includes(`/${JOIN}`));
|
|
66
74
|
|
|
67
75
|
return hostNameBool && pathNameBool;
|
|
@@ -195,32 +203,15 @@ MeetingInfoUtil.getDestinationType = async (from) => {
|
|
|
195
203
|
return Promise.resolve(options);
|
|
196
204
|
}
|
|
197
205
|
);
|
|
198
|
-
} else if (hydraId
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
await webex.internal.services.waitForCatalog('postauth');
|
|
202
|
-
|
|
203
|
-
const serviceUrl = webex.internal.services.getServiceUrlFromClusterId(
|
|
204
|
-
{
|
|
205
|
-
cluster: hydraId.cluster,
|
|
206
|
-
},
|
|
207
|
-
webex
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
options.destination = hydraId.destination
|
|
211
|
-
? `${serviceUrl}/conversations/${hydraId.destination}`
|
|
212
|
-
: serviceUrl;
|
|
213
|
-
} catch (e) {
|
|
214
|
-
LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);
|
|
215
|
-
throw e;
|
|
216
|
-
}
|
|
217
|
-
} else {
|
|
218
|
-
LoggerProxy.logger.warn(
|
|
219
|
-
"Meeting-info:util#getDestinationType --> ('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url."
|
|
220
|
-
);
|
|
221
|
-
throw new ParameterError(
|
|
222
|
-
'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'
|
|
206
|
+
} else if (hydraId.room) {
|
|
207
|
+
LoggerProxy.logger.error(
|
|
208
|
+
`Meeting-info:util#getDestinationType --> Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.`
|
|
223
209
|
);
|
|
210
|
+
// Error code 30105 added as Space ID deprecated as of beta, Please refer migration guide.
|
|
211
|
+
throw new SpaceIDDeprecatedError();
|
|
212
|
+
} else {
|
|
213
|
+
LoggerProxy.logger.warn(`Meeting-info:util#getDestinationType --> ${meetingInfoError}`);
|
|
214
|
+
throw new ParameterError(`${meetingInfoError}`);
|
|
224
215
|
}
|
|
225
216
|
|
|
226
217
|
return Promise.resolve(options);
|
|
@@ -230,14 +221,15 @@ MeetingInfoUtil.getDestinationType = async (from) => {
|
|
|
230
221
|
* Helper function to build up a correct locus url depending on the value passed
|
|
231
222
|
* @param {Object} options type and value to fetch meeting info
|
|
232
223
|
* @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
|
|
224
|
+
* @param {String} options.installedOrgID org ID of user's machine
|
|
233
225
|
* @param {Object} options.destination ?? value.value
|
|
234
226
|
* @returns {Object} returns an object with {resource, method}
|
|
235
227
|
*/
|
|
236
228
|
MeetingInfoUtil.getRequestBody = (options: {type: string; destination: object} | any) => {
|
|
237
|
-
const {type, destination, password, captchaInfo} = options;
|
|
229
|
+
const {type, destination, password, captchaInfo, installedOrgID, locusId, extraParams} = options;
|
|
238
230
|
const body: any = {
|
|
239
|
-
|
|
240
|
-
|
|
231
|
+
...DEFAULT_MEETING_INFO_REQUEST_BODY,
|
|
232
|
+
...extraParams,
|
|
241
233
|
};
|
|
242
234
|
|
|
243
235
|
switch (type) {
|
|
@@ -281,6 +273,14 @@ MeetingInfoUtil.getRequestBody = (options: {type: string; destination: object} |
|
|
|
281
273
|
body.captchaVerifyCode = captchaInfo.code;
|
|
282
274
|
}
|
|
283
275
|
|
|
276
|
+
if (installedOrgID) {
|
|
277
|
+
body.installedOrgID = installedOrgID;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
if (locusId) {
|
|
281
|
+
body.locusId = locusId;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
284
|
return body;
|
|
285
285
|
};
|
|
286
286
|
|
|
@@ -40,4 +40,37 @@ export default class MeetingCollection extends Collection {
|
|
|
40
40
|
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* get a specific meeting searching for key
|
|
46
|
+
* @param {String} breakoutUrl
|
|
47
|
+
* @returns {Meeting} if found, else returns null
|
|
48
|
+
* @public
|
|
49
|
+
* @memberof MeetingCollection
|
|
50
|
+
*/
|
|
51
|
+
public getActiveBreakoutLocus(breakoutUrl: string) {
|
|
52
|
+
if (breakoutUrl) {
|
|
53
|
+
// @ts-ignore
|
|
54
|
+
return find(
|
|
55
|
+
// @ts-ignore
|
|
56
|
+
this.meetings,
|
|
57
|
+
(meeting) => meeting.breakouts?.url === breakoutUrl && meeting.breakouts?.isActiveBreakout
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Gets the meeting that has a webrtc media connection
|
|
66
|
+
* NOTE: this function assumes there is no more than 1 such meeting
|
|
67
|
+
*
|
|
68
|
+
* @returns {Meeting} first meeting found, else undefined
|
|
69
|
+
* @public
|
|
70
|
+
* @memberof MeetingCollection
|
|
71
|
+
*/
|
|
72
|
+
public getActiveWebrtcMeeting() {
|
|
73
|
+
// @ts-ignore
|
|
74
|
+
return find(this.meetings, (meeting) => meeting.mediaProperties.webrtcMediaConnection);
|
|
75
|
+
}
|
|
43
76
|
}
|