@webex/plugin-meetings 3.0.0-beta.23 → 3.0.0-beta.231
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.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +114 -14
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +841 -19
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/errors/webex-errors.js +28 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +5 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.js +188 -27
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -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.js +319 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +106 -1
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +366 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +91 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +357 -62
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +43 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +219 -63
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +89 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +49 -106
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +29 -90
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +90 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2583 -2557
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +228 -123
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +244 -194
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +568 -414
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +48 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +171 -51
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +36 -36
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +22 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +367 -86
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +2 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +88 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +49 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +121 -25
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +86 -5
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +106 -38
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +316 -233
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -5
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -468
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +238 -49
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +49 -16
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +52 -34
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +173 -59
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/reachability/index.js +90 -30
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +16 -7
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +196 -155
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +25 -29
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +111 -89
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +97 -36
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +117 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +51 -34
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +6 -6
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +81 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +34 -0
- package/dist/types/config.d.ts +72 -0
- package/dist/types/constants.d.ts +1028 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +322 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +271 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +93 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
- package/dist/types/meeting/index.d.ts +1512 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +75 -0
- package/dist/types/meeting/muteState.d.ts +184 -0
- package/dist/types/meeting/request.d.ts +289 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +94 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +62 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +361 -0
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +159 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +210 -0
- package/dist/types/metrics/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +45 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +158 -0
- package/dist/types/reachability/request.d.ts +39 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +207 -0
- package/dist/types/recording-controller/util.d.ts +14 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +91 -0
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +47 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/package.json +23 -20
- 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 +44 -14
- package/src/breakouts/breakout.ts +87 -9
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +710 -10
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/errors/webex-errors.ts +27 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +4 -9
- package/src/constants.ts +175 -18
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +300 -0
- package/src/index.ts +39 -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 +108 -0
- package/src/locus-info/index.ts +381 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +48 -0
- package/src/locus-info/parser.ts +224 -39
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +89 -109
- package/src/media/properties.ts +48 -87
- package/src/meeting/in-meeting-actions.ts +179 -3
- package/src/meeting/index.ts +2061 -2133
- package/src/meeting/locusMediaRequest.ts +314 -0
- package/src/meeting/muteState.ts +227 -130
- package/src/meeting/request.ts +157 -116
- package/src/meeting/util.ts +555 -396
- package/src/meeting-info/index.ts +54 -8
- package/src/meeting-info/meeting-info-v2.ts +148 -14
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +23 -23
- package/src/meetings/collection.ts +20 -0
- package/src/meetings/index.ts +405 -106
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +103 -4
- package/src/member/index.ts +49 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +127 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +107 -6
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +319 -240
- package/src/metrics/constants.ts +2 -4
- package/src/metrics/index.ts +1 -490
- package/src/multistream/mediaRequestManager.ts +289 -79
- package/src/multistream/receiveSlot.ts +55 -18
- package/src/multistream/receiveSlotManager.ts +46 -24
- package/src/multistream/remoteMedia.ts +27 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +113 -32
- package/src/reachability/index.ts +76 -18
- package/src/reachability/request.ts +16 -7
- package/src/reconnection-manager/index.ts +68 -43
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +25 -30
- package/src/roap/request.ts +103 -95
- package/src/roap/turnDiscovery.ts +51 -25
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +100 -0
- package/src/statsAnalyzer/index.ts +73 -35
- package/src/statsAnalyzer/mqaUtil.ts +8 -10
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +336 -259
- package/test/integration/spec/space-meeting.js +76 -3
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +142 -24
- 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 +1545 -48
- 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 +287 -0
- package/test/unit/spec/controls-options-manager/util.js +582 -0
- 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 +316 -43
- package/test/unit/spec/locus-info/index.js +1169 -36
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/parser.js +62 -22
- package/test/unit/spec/locus-info/selfConstant.js +27 -4
- package/test/unit/spec/locus-info/selfUtils.js +208 -17
- package/test/unit/spec/media/index.ts +138 -28
- package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
- package/test/unit/spec/meeting/index.js +3510 -1747
- package/test/unit/spec/meeting/locusMediaRequest.ts +443 -0
- package/test/unit/spec/meeting/muteState.js +370 -208
- package/test/unit/spec/meeting/request.js +417 -45
- package/test/unit/spec/meeting/utils.js +601 -53
- package/test/unit/spec/meeting-info/index.js +181 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +14 -0
- package/test/unit/spec/meetings/index.js +874 -150
- package/test/unit/spec/meetings/utils.js +206 -2
- package/test/unit/spec/member/index.js +58 -4
- package/test/unit/spec/member/util.js +479 -35
- package/test/unit/spec/members/index.js +319 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +184 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
- package/test/unit/spec/multistream/receiveSlot.ts +72 -13
- package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
- package/test/unit/spec/multistream/remoteMedia.ts +30 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +318 -0
- package/test/unit/spec/reachability/index.ts +185 -7
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reconnection-manager/index.js +59 -6
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +27 -51
- package/test/unit/spec/roap/request.ts +202 -85
- package/test/unit/spec/roap/turnDiscovery.ts +36 -8
- package/test/unit/spec/rtcMetrics/index.ts +68 -0
- package/test/unit/spec/stats-analyzer/index.js +29 -2
- 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 +6 -3
- package/dist/meeting/effectsState.js +0 -262
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -299
- package/dist/metrics/config.js.map +0 -1
- package/src/index.js +0 -16
- package/src/meeting/effectsState.ts +0 -211
- package/src/metrics/config.ts +0 -495
- package/test/unit/spec/meeting/effectsState.js +0 -285
package/dist/roap/request.js
CHANGED
|
@@ -14,6 +14,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
14
14
|
exports.default = void 0;
|
|
15
15
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
16
16
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
17
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
17
18
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
18
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
19
20
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
@@ -25,8 +26,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
|
|
|
25
26
|
var _webexCore = require("@webex/webex-core");
|
|
26
27
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
27
28
|
var _constants = require("../constants");
|
|
28
|
-
var _metrics = _interopRequireDefault(require("../metrics"));
|
|
29
|
-
var _config = require("../metrics/config");
|
|
30
29
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
31
30
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
32
31
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
@@ -42,21 +41,21 @@ var RoapRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
42
41
|
return _super.apply(this, arguments);
|
|
43
42
|
}
|
|
44
43
|
(0, _createClass2.default)(RoapRequest, [{
|
|
45
|
-
key: "
|
|
44
|
+
key: "attachReachabilityData",
|
|
46
45
|
value:
|
|
47
46
|
/**
|
|
48
|
-
*
|
|
47
|
+
* Returns reachability data.
|
|
49
48
|
* @param {Object} localSdp
|
|
50
|
-
* @returns {
|
|
49
|
+
* @returns {Object}
|
|
51
50
|
*/
|
|
52
51
|
function () {
|
|
53
|
-
var
|
|
54
|
-
var reachabilityData, reachabilityResult;
|
|
52
|
+
var _attachReachabilityData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(localSdp) {
|
|
53
|
+
var joinCookie, reachabilityData, reachabilityResult, joinCookieRaw;
|
|
55
54
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
56
55
|
while (1) switch (_context.prev = _context.next) {
|
|
57
56
|
case 0:
|
|
58
57
|
_context.next = 2;
|
|
59
|
-
return this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.
|
|
58
|
+
return this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.localStorageResult).catch(function () {});
|
|
60
59
|
case 2:
|
|
61
60
|
reachabilityData = _context.sent;
|
|
62
61
|
if (reachabilityData) {
|
|
@@ -70,17 +69,33 @@ var RoapRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
70
69
|
_loggerProxy.default.logger.error("Roap:request#attachReachabilityData --> Error in parsing reachability data: ".concat(e));
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
|
|
73
|
+
// @ts-ignore
|
|
74
|
+
_context.next = 6;
|
|
75
|
+
return this.webex.boundedStorage.get(_constants.REACHABILITY.namespace, _constants.REACHABILITY.localStorageJoinCookie).catch(function () {});
|
|
76
|
+
case 6:
|
|
77
|
+
joinCookieRaw = _context.sent;
|
|
78
|
+
if (joinCookieRaw) {
|
|
79
|
+
try {
|
|
80
|
+
joinCookie = JSON.parse(joinCookieRaw);
|
|
81
|
+
} catch (e) {
|
|
82
|
+
_loggerProxy.default.logger.error("MeetingRequest#constructor --> Error in parsing join cookie data: ".concat(e));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return _context.abrupt("return", {
|
|
86
|
+
localSdp: localSdp,
|
|
87
|
+
joinCookie: joinCookie
|
|
88
|
+
});
|
|
89
|
+
case 9:
|
|
75
90
|
case "end":
|
|
76
91
|
return _context.stop();
|
|
77
92
|
}
|
|
78
93
|
}, _callee, this);
|
|
79
94
|
}));
|
|
80
|
-
function
|
|
81
|
-
return
|
|
95
|
+
function attachReachabilityData(_x) {
|
|
96
|
+
return _attachReachabilityData.apply(this, arguments);
|
|
82
97
|
}
|
|
83
|
-
return
|
|
98
|
+
return attachReachabilityData;
|
|
84
99
|
}()
|
|
85
100
|
/**
|
|
86
101
|
* Sends a ROAP message
|
|
@@ -89,89 +104,96 @@ var RoapRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
89
104
|
* @param {String} options.locusSelfUrl
|
|
90
105
|
* @param {String} options.mediaId
|
|
91
106
|
* @param {String} options.correlationId
|
|
92
|
-
* @param {Boolean} options.audioMuted
|
|
93
|
-
* @param {Boolean} options.videoMuted
|
|
94
107
|
* @param {String} options.meetingId
|
|
95
|
-
* @param {Boolean} options.preferTranscoding
|
|
96
108
|
* @returns {Promise} returns the response/failure of the request
|
|
97
109
|
*/
|
|
98
110
|
}, {
|
|
99
111
|
key: "sendRoap",
|
|
100
|
-
value: function
|
|
101
|
-
var
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
uri: mediaUrl,
|
|
129
|
-
method: _constants.HTTP_VERBS.PUT,
|
|
130
|
-
body: {
|
|
131
|
-
device: {
|
|
132
|
-
url: deviceUrl,
|
|
112
|
+
value: function () {
|
|
113
|
+
var _sendRoap = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
|
|
114
|
+
var _this = this;
|
|
115
|
+
var roapMessage, locusSelfUrl, mediaId, meetingId, locusMediaRequest, ipVersion, _yield$this$attachRea, localSdpWithReachabilityData, joinCookie;
|
|
116
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
117
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
118
|
+
case 0:
|
|
119
|
+
roapMessage = options.roapMessage, locusSelfUrl = options.locusSelfUrl, mediaId = options.mediaId, meetingId = options.meetingId, locusMediaRequest = options.locusMediaRequest, ipVersion = options.ipVersion;
|
|
120
|
+
if (!mediaId) {
|
|
121
|
+
_loggerProxy.default.logger.info('Roap:request#sendRoap --> sending empty mediaID');
|
|
122
|
+
}
|
|
123
|
+
if (locusMediaRequest) {
|
|
124
|
+
_context2.next = 5;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
_loggerProxy.default.logger.warn('Roap:request#sendRoap --> locusMediaRequest unavailable, not sending roap');
|
|
128
|
+
return _context2.abrupt("return", _promise.default.reject(new Error('sendRoap called when locusMediaRequest is undefined')));
|
|
129
|
+
case 5:
|
|
130
|
+
_context2.next = 7;
|
|
131
|
+
return this.attachReachabilityData({
|
|
132
|
+
roapMessage: roapMessage
|
|
133
|
+
});
|
|
134
|
+
case 7:
|
|
135
|
+
_yield$this$attachRea = _context2.sent;
|
|
136
|
+
localSdpWithReachabilityData = _yield$this$attachRea.localSdp;
|
|
137
|
+
joinCookie = _yield$this$attachRea.joinCookie;
|
|
138
|
+
_loggerProxy.default.logger.info("Roap:request#sendRoap --> ".concat(locusSelfUrl, " \n ").concat(roapMessage.messageType, " \n seq:").concat(roapMessage.seq));
|
|
139
|
+
|
|
133
140
|
// @ts-ignore
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
142
|
+
name: 'client.locus.media.request',
|
|
143
|
+
options: {
|
|
144
|
+
meetingId: meetingId
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
return _context2.abrupt("return", locusMediaRequest.send({
|
|
148
|
+
type: 'RoapMessage',
|
|
149
|
+
selfUrl: locusSelfUrl,
|
|
150
|
+
joinCookie: joinCookie,
|
|
151
|
+
mediaId: mediaId,
|
|
152
|
+
roapMessage: roapMessage,
|
|
153
|
+
reachability: localSdpWithReachabilityData.reachability,
|
|
154
|
+
ipVersion: ipVersion
|
|
155
|
+
}).then(function (res) {
|
|
156
|
+
// @ts-ignore
|
|
157
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
|
158
|
+
name: 'client.locus.media.response',
|
|
159
|
+
options: {
|
|
160
|
+
meetingId: meetingId
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
// always it will be the first mediaConnection Object
|
|
164
|
+
var mediaConnections = res.body.mediaConnections && res.body.mediaConnections.length > 0 && res.body.mediaConnections[0];
|
|
165
|
+
_loggerProxy.default.logger.debug("Roap:request#sendRoap --> response:".concat((0, _stringify.default)(mediaConnections, null, 2), "'\n StatusCode:'").concat(res.statusCode));
|
|
166
|
+
var locus = res.body.locus;
|
|
167
|
+
locus.roapSeq = options.roapMessage.seq;
|
|
168
|
+
return _objectSpread({
|
|
169
|
+
locus: locus
|
|
170
|
+
}, mediaConnections && {
|
|
171
|
+
mediaConnections: res.body.mediaConnections
|
|
172
|
+
});
|
|
173
|
+
}).catch(function (err) {
|
|
174
|
+
// @ts-ignore
|
|
175
|
+
_this.webex.internal.newMetrics.submitClientEvent({
|
|
176
|
+
name: 'client.locus.media.response',
|
|
177
|
+
options: {
|
|
178
|
+
meetingId: meetingId,
|
|
179
|
+
rawError: err
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
_loggerProxy.default.logger.error("Roap:request#sendRoap --> Error:".concat((0, _stringify.default)(err, null, 2)));
|
|
183
|
+
_loggerProxy.default.logger.error("Roap:request#sendRoapRequest --> errorBody:".concat((0, _stringify.default)(roapMessage, null, 2), " + '\\n mediaId:'").concat(options.mediaId));
|
|
184
|
+
throw err;
|
|
185
|
+
}));
|
|
186
|
+
case 13:
|
|
187
|
+
case "end":
|
|
188
|
+
return _context2.stop();
|
|
144
189
|
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
var mediaConnections = res.body.mediaConnections && res.body.mediaConnections.length > 0 && res.body.mediaConnections[0];
|
|
153
|
-
_loggerProxy.default.logger.info("Roap:request#sendRoap --> response:".concat((0, _stringify.default)(mediaConnections, null, 2), "'\n StatusCode:'").concat(res.statusCode));
|
|
154
|
-
var locus = res.body.locus;
|
|
155
|
-
locus.roapSeq = options.roapMessage.seq;
|
|
156
|
-
return _objectSpread({
|
|
157
|
-
locus: locus
|
|
158
|
-
}, mediaConnections && {
|
|
159
|
-
mediaConnections: res.body.mediaConnections
|
|
160
|
-
});
|
|
161
|
-
}).catch(function (err) {
|
|
162
|
-
_metrics.default.postEvent({
|
|
163
|
-
event: _config.eventType.MEDIA_RESPONSE,
|
|
164
|
-
meetingId: meetingId,
|
|
165
|
-
data: {
|
|
166
|
-
error: _metrics.default.parseLocusError(err, true)
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
_loggerProxy.default.logger.error("Roap:request#sendRoap --> Error:".concat((0, _stringify.default)(err, null, 2)));
|
|
170
|
-
_loggerProxy.default.logger.error("Roap:request#sendRoapRequest --> errorBody:".concat((0, _stringify.default)(roapMessage, null, 2), " + '\\n mediaId:'").concat(options.mediaId));
|
|
171
|
-
throw err;
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
}
|
|
190
|
+
}, _callee2, this);
|
|
191
|
+
}));
|
|
192
|
+
function sendRoap(_x2) {
|
|
193
|
+
return _sendRoap.apply(this, arguments);
|
|
194
|
+
}
|
|
195
|
+
return sendRoap;
|
|
196
|
+
}()
|
|
175
197
|
}]);
|
|
176
198
|
return RoapRequest;
|
|
177
199
|
}(_webexCore.StatelessWebexPlugin);
|
package/dist/roap/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RoapRequest","localSdp","webex","boundedStorage","get","REACHABILITY","namespace","
|
|
1
|
+
{"version":3,"names":["RoapRequest","localSdp","webex","boundedStorage","get","REACHABILITY","namespace","localStorageResult","catch","reachabilityData","reachabilityResult","JSON","parse","length","reachability","e","LoggerProxy","logger","error","localStorageJoinCookie","joinCookieRaw","joinCookie","options","roapMessage","locusSelfUrl","mediaId","meetingId","locusMediaRequest","ipVersion","info","warn","reject","Error","attachReachabilityData","localSdpWithReachabilityData","messageType","seq","internal","newMetrics","submitClientEvent","name","send","type","selfUrl","then","res","mediaConnections","body","debug","statusCode","locus","roapSeq","err","rawError","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["// @ts-ignore\nimport {StatelessWebexPlugin} from '@webex/webex-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {IP_VERSION, REACHABILITY} from '../constants';\nimport {LocusMediaRequest} from '../meeting/locusMediaRequest';\n\n/**\n * @class RoapRequest\n */\nexport default class RoapRequest extends StatelessWebexPlugin {\n /**\n * Returns reachability data.\n * @param {Object} localSdp\n * @returns {Object}\n */\n async attachReachabilityData(localSdp) {\n let joinCookie;\n\n // @ts-ignore\n const reachabilityData = await this.webex.boundedStorage\n .get(REACHABILITY.namespace, REACHABILITY.localStorageResult)\n .catch(() => {});\n\n if (reachabilityData) {\n try {\n const reachabilityResult = JSON.parse(reachabilityData);\n\n /* istanbul ignore else */\n if (reachabilityResult && Object.keys(reachabilityResult).length) {\n localSdp.reachability = reachabilityResult;\n }\n } catch (e) {\n LoggerProxy.logger.error(\n `Roap:request#attachReachabilityData --> Error in parsing reachability data: ${e}`\n );\n }\n }\n\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 joinCookie = JSON.parse(joinCookieRaw);\n } catch (e) {\n LoggerProxy.logger.error(\n `MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`\n );\n }\n }\n\n return {localSdp, joinCookie};\n }\n\n /**\n * Sends a ROAP message\n * @param {Object} options\n * @param {Object} options.roapMessage\n * @param {String} options.locusSelfUrl\n * @param {String} options.mediaId\n * @param {String} options.correlationId\n * @param {String} options.meetingId\n * @returns {Promise} returns the response/failure of the request\n */\n async sendRoap(options: {\n roapMessage: any;\n locusSelfUrl: string;\n mediaId: string;\n meetingId: string;\n ipVersion: IP_VERSION;\n locusMediaRequest?: LocusMediaRequest;\n }) {\n const {roapMessage, locusSelfUrl, mediaId, meetingId, locusMediaRequest, ipVersion} = options;\n\n if (!mediaId) {\n LoggerProxy.logger.info('Roap:request#sendRoap --> sending empty mediaID');\n }\n\n if (!locusMediaRequest) {\n LoggerProxy.logger.warn(\n 'Roap:request#sendRoap --> locusMediaRequest unavailable, not sending roap'\n );\n\n return Promise.reject(new Error('sendRoap called when locusMediaRequest is undefined'));\n }\n const {localSdp: localSdpWithReachabilityData, joinCookie} = await this.attachReachabilityData({\n roapMessage,\n });\n\n LoggerProxy.logger.info(\n `Roap:request#sendRoap --> ${locusSelfUrl} \\n ${roapMessage.messageType} \\n seq:${roapMessage.seq}`\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.request',\n options: {\n meetingId,\n },\n });\n\n return locusMediaRequest\n .send({\n type: 'RoapMessage',\n selfUrl: locusSelfUrl,\n joinCookie,\n mediaId,\n roapMessage,\n reachability: localSdpWithReachabilityData.reachability,\n ipVersion,\n })\n .then((res) => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId,\n },\n });\n // always it will be the first mediaConnection Object\n const mediaConnections =\n res.body.mediaConnections &&\n res.body.mediaConnections.length > 0 &&\n res.body.mediaConnections[0];\n\n LoggerProxy.logger.debug(\n `Roap:request#sendRoap --> response:${JSON.stringify(\n mediaConnections,\n null,\n 2\n )}'\\n StatusCode:'${res.statusCode}`\n );\n const {locus} = res.body;\n\n locus.roapSeq = options.roapMessage.seq;\n\n return {\n locus,\n ...(mediaConnections && {mediaConnections: res.body.mediaConnections}),\n };\n })\n .catch((err) => {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.media.response',\n options: {\n meetingId,\n rawError: err,\n },\n });\n LoggerProxy.logger.error(`Roap:request#sendRoap --> Error:${JSON.stringify(err, null, 2)}`);\n LoggerProxy.logger.error(\n `Roap:request#sendRoapRequest --> errorBody:${JSON.stringify(\n roapMessage,\n null,\n 2\n )} + '\\\\n mediaId:'${options.mediaId}`\n );\n throw err;\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -151,15 +151,14 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
151
151
|
_loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> sending TURN_DISCOVERY_REQUEST');
|
|
152
152
|
return this.roapRequest.sendRoap({
|
|
153
153
|
roapMessage: roapMessage,
|
|
154
|
-
correlationId: meeting.correlationId,
|
|
155
154
|
// @ts-ignore - Fix missing type
|
|
156
155
|
locusSelfUrl: meeting.selfUrl,
|
|
157
156
|
// @ts-ignore - Fix missing type
|
|
158
157
|
mediaId: isReconnecting ? '' : meeting.mediaId,
|
|
159
|
-
audioMuted: meeting.isAudioMuted(),
|
|
160
|
-
videoMuted: meeting.isVideoMuted(),
|
|
161
158
|
meetingId: meeting.id,
|
|
162
|
-
|
|
159
|
+
locusMediaRequest: meeting.locusMediaRequest,
|
|
160
|
+
// @ts-ignore - because of meeting.webex
|
|
161
|
+
ipVersion: meeting.webex.meetings.reachability.getIpVersion()
|
|
163
162
|
}).then(function (_ref) {
|
|
164
163
|
var mediaConnections = _ref.mediaConnections;
|
|
165
164
|
if (mediaConnections) {
|
|
@@ -189,14 +188,87 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
189
188
|
locusSelfUrl: meeting.selfUrl,
|
|
190
189
|
// @ts-ignore - fix type
|
|
191
190
|
mediaId: meeting.mediaId,
|
|
192
|
-
correlationId: meeting.correlationId,
|
|
193
|
-
audioMuted: meeting.isAudioMuted(),
|
|
194
|
-
videoMuted: meeting.isVideoMuted(),
|
|
195
191
|
meetingId: meeting.id,
|
|
196
|
-
|
|
192
|
+
locusMediaRequest: meeting.locusMediaRequest,
|
|
193
|
+
// @ts-ignore - because of meeting.webex
|
|
194
|
+
ipVersion: meeting.webex.meetings.reachability.getIpVersion()
|
|
197
195
|
});
|
|
198
196
|
}
|
|
199
197
|
|
|
198
|
+
/**
|
|
199
|
+
* Gets the reason why reachability is skipped.
|
|
200
|
+
*
|
|
201
|
+
* @param {Meeting} meeting
|
|
202
|
+
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
|
203
|
+
*/
|
|
204
|
+
}, {
|
|
205
|
+
key: "getSkipReason",
|
|
206
|
+
value: function () {
|
|
207
|
+
var _getSkipReason = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(meeting) {
|
|
208
|
+
var isAnyClusterReachable;
|
|
209
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
210
|
+
while (1) switch (_context.prev = _context.next) {
|
|
211
|
+
case 0:
|
|
212
|
+
_context.next = 2;
|
|
213
|
+
return meeting.webex.meetings.reachability.isAnyClusterReachable();
|
|
214
|
+
case 2:
|
|
215
|
+
isAnyClusterReachable = _context.sent;
|
|
216
|
+
if (!isAnyClusterReachable) {
|
|
217
|
+
_context.next = 6;
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery');
|
|
221
|
+
return _context.abrupt("return", 'reachability');
|
|
222
|
+
case 6:
|
|
223
|
+
if (meeting.config.experimental.enableTurnDiscovery) {
|
|
224
|
+
_context.next = 9;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#getSkipReason --> TURN discovery disabled in config, skipping it');
|
|
228
|
+
return _context.abrupt("return", 'config');
|
|
229
|
+
case 9:
|
|
230
|
+
return _context.abrupt("return", '');
|
|
231
|
+
case 10:
|
|
232
|
+
case "end":
|
|
233
|
+
return _context.stop();
|
|
234
|
+
}
|
|
235
|
+
}, _callee);
|
|
236
|
+
}));
|
|
237
|
+
function getSkipReason(_x) {
|
|
238
|
+
return _getSkipReason.apply(this, arguments);
|
|
239
|
+
}
|
|
240
|
+
return getSkipReason;
|
|
241
|
+
}()
|
|
242
|
+
/**
|
|
243
|
+
* Checks if TURN discovery is skipped.
|
|
244
|
+
*
|
|
245
|
+
* @param {Meeting} meeting
|
|
246
|
+
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
|
247
|
+
*/
|
|
248
|
+
}, {
|
|
249
|
+
key: "isSkipped",
|
|
250
|
+
value: function () {
|
|
251
|
+
var _isSkipped = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(meeting) {
|
|
252
|
+
var skipReason;
|
|
253
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
254
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
255
|
+
case 0:
|
|
256
|
+
_context2.next = 2;
|
|
257
|
+
return this.getSkipReason(meeting);
|
|
258
|
+
case 2:
|
|
259
|
+
skipReason = _context2.sent;
|
|
260
|
+
return _context2.abrupt("return", !!skipReason);
|
|
261
|
+
case 4:
|
|
262
|
+
case "end":
|
|
263
|
+
return _context2.stop();
|
|
264
|
+
}
|
|
265
|
+
}, _callee2, this);
|
|
266
|
+
}));
|
|
267
|
+
function isSkipped(_x2) {
|
|
268
|
+
return _isSkipped.apply(this, arguments);
|
|
269
|
+
}
|
|
270
|
+
return isSkipped;
|
|
271
|
+
}()
|
|
200
272
|
/**
|
|
201
273
|
* Retrieves TURN server information from the backend by doing
|
|
202
274
|
* a roap message exchange:
|
|
@@ -217,37 +289,26 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
217
289
|
}, {
|
|
218
290
|
key: "doTurnDiscovery",
|
|
219
291
|
value: function () {
|
|
220
|
-
var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
292
|
+
var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(meeting, isReconnecting) {
|
|
221
293
|
var _this2 = this;
|
|
222
|
-
var
|
|
223
|
-
return _regenerator.default.wrap(function
|
|
224
|
-
while (1) switch (
|
|
294
|
+
var turnDiscoverySkippedReason;
|
|
295
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
296
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
225
297
|
case 0:
|
|
226
|
-
|
|
227
|
-
return
|
|
298
|
+
_context3.next = 2;
|
|
299
|
+
return this.getSkipReason(meeting);
|
|
228
300
|
case 2:
|
|
229
|
-
|
|
230
|
-
if (!
|
|
231
|
-
|
|
301
|
+
turnDiscoverySkippedReason = _context3.sent;
|
|
302
|
+
if (!turnDiscoverySkippedReason) {
|
|
303
|
+
_context3.next = 5;
|
|
232
304
|
break;
|
|
233
305
|
}
|
|
234
|
-
|
|
235
|
-
return _context.abrupt("return", {
|
|
306
|
+
return _context3.abrupt("return", {
|
|
236
307
|
turnServerInfo: undefined,
|
|
237
|
-
turnDiscoverySkippedReason:
|
|
308
|
+
turnDiscoverySkippedReason: turnDiscoverySkippedReason
|
|
238
309
|
});
|
|
239
|
-
case
|
|
240
|
-
|
|
241
|
-
_context.next = 9;
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
_loggerProxy.default.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery disabled in config, skipping it');
|
|
245
|
-
return _context.abrupt("return", {
|
|
246
|
-
turnServerInfo: undefined,
|
|
247
|
-
turnDiscoverySkippedReason: 'config'
|
|
248
|
-
});
|
|
249
|
-
case 9:
|
|
250
|
-
return _context.abrupt("return", this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting).then(function () {
|
|
310
|
+
case 5:
|
|
311
|
+
return _context3.abrupt("return", this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting).then(function () {
|
|
251
312
|
return _this2.waitForTurnDiscoveryResponse();
|
|
252
313
|
}).then(function () {
|
|
253
314
|
return _this2.sendRoapOK(meeting);
|
|
@@ -272,13 +333,13 @@ var TurnDiscovery = /*#__PURE__*/function () {
|
|
|
272
333
|
turnDiscoverySkippedReason: undefined
|
|
273
334
|
};
|
|
274
335
|
}));
|
|
275
|
-
case
|
|
336
|
+
case 6:
|
|
276
337
|
case "end":
|
|
277
|
-
return
|
|
338
|
+
return _context3.stop();
|
|
278
339
|
}
|
|
279
|
-
},
|
|
340
|
+
}, _callee3, this);
|
|
280
341
|
}));
|
|
281
|
-
function doTurnDiscovery(
|
|
342
|
+
function doTurnDiscovery(_x3, _x4) {
|
|
282
343
|
return _doTurnDiscovery.apply(this, arguments);
|
|
283
344
|
}
|
|
284
345
|
return doTurnDiscovery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TURN_DISCOVERY_TIMEOUT","TURN_DISCOVERY_SEQ","TurnDiscovery","roapRequest","turnInfo","url","username","password","defer","LoggerProxy","logger","warn","reject","Error","responseTimer","setTimeout","info","promise","roapMessage","headers","expectedHeaders","headerName","field","foundHeaders","forEach","receivedHeader","expectedHeader","startsWith","substring","length","clearTimeout","undefined","resolve","meeting","isReconnecting","Defer","messageType","ROAP","ROAP_TYPES","TURN_DISCOVERY_REQUEST","version","ROAP_VERSION","seq","sendRoap","correlationId","locusSelfUrl","selfUrl","mediaId","audioMuted","isAudioMuted","videoMuted","isVideoMuted","meetingId","id","preferTranscoding","isMultistream","then","mediaConnections","updateMediaConnections","OK","webex","meetings","reachability","isAnyClusterReachable","turnServerInfo","turnDiscoverySkippedReason","config","experimental","enableTurnDiscovery","sendRoapTurnDiscoveryRequest","waitForTurnDiscoveryResponse","sendRoapOK","catch","e","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","TURN_DISCOVERY_FAILURE","correlation_id","locus_id","locusUrl","split","pop","reason","message","stack"],"sources":["turnDiscovery.ts"],"sourcesContent":["// @ts-ignore - Types not available for @webex/common\nimport {Defer} from '@webex/common';\n\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ROAP} from '../constants';\n\nimport RoapRequest from './request';\nimport Meeting from '../meeting';\n\nconst TURN_DISCOVERY_TIMEOUT = 10; // in seconds\n\n// Roap spec says that seq should start from 1, but TURN discovery works fine with seq=0\n// and this is handy for us, because TURN discovery is always done before the first SDP exchange,\n// so we can do it with seq=0 or not do it at all and then we create the RoapMediaConnection\n// and do the SDP offer with seq=1\nconst TURN_DISCOVERY_SEQ = 0;\n\n/**\n * Handles the process of finding out TURN server information from Linus.\n * This is achieved by sending a TURN_DISCOVERY_REQUEST.\n */\nexport default class TurnDiscovery {\n private roapRequest: RoapRequest;\n\n private defer?: Defer; // used for waiting for the response\n\n private turnInfo: {\n url: string;\n username: string;\n password: string;\n };\n\n private responseTimer?: ReturnType<typeof setTimeout>;\n\n /**\n * Constructor\n *\n * @param {RoapRequest} roapRequest\n */\n constructor(roapRequest: RoapRequest) {\n this.roapRequest = roapRequest;\n this.turnInfo = {\n url: '',\n username: '',\n password: '',\n };\n }\n\n /**\n * waits for TURN_DISCOVERY_RESPONSE message to arrive\n *\n * @returns {Promise}\n * @private\n * @memberof Roap\n */\n private waitForTurnDiscoveryResponse() {\n if (!this.defer) {\n LoggerProxy.logger.warn(\n 'Roap:turnDiscovery#waitForTurnDiscoveryResponse --> TURN discovery is not in progress'\n );\n\n return Promise.reject(\n new Error('waitForTurnDiscoveryResponse() called before sendRoapTurnDiscoveryRequest()')\n );\n }\n\n const {defer} = this;\n\n this.responseTimer = setTimeout(() => {\n LoggerProxy.logger.warn(\n `Roap:turnDiscovery#waitForTurnDiscoveryResponse --> timeout! no response arrived within ${TURN_DISCOVERY_TIMEOUT} seconds`\n );\n\n defer.reject(new Error('Timed out waiting for TURN_DISCOVERY_RESPONSE'));\n }, TURN_DISCOVERY_TIMEOUT * 1000);\n\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#waitForTurnDiscoveryResponse --> waiting for TURN_DISCOVERY_RESPONSE...'\n );\n\n return defer.promise;\n }\n\n /**\n * handles TURN_DISCOVERY_RESPONSE roap message\n *\n * @param {Object} roapMessage\n * @returns {void}\n * @public\n * @memberof Roap\n */\n public handleTurnDiscoveryResponse(roapMessage: object) {\n // @ts-ignore - Fix missing type\n const {headers} = roapMessage;\n\n if (!this.defer) {\n LoggerProxy.logger.warn(\n 'Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response'\n );\n\n return;\n }\n\n const expectedHeaders = [\n {headerName: 'x-cisco-turn-url', field: 'url'},\n {headerName: 'x-cisco-turn-username', field: 'username'},\n {headerName: 'x-cisco-turn-password', field: 'password'},\n ];\n\n let foundHeaders = 0;\n\n headers?.forEach((receivedHeader) => {\n // check if it matches any of our expected headers\n expectedHeaders.forEach((expectedHeader) => {\n if (receivedHeader.startsWith(`${expectedHeader.headerName}=`)) {\n this.turnInfo[expectedHeader.field] = receivedHeader.substring(\n expectedHeader.headerName.length + 1\n );\n foundHeaders += 1;\n }\n });\n });\n\n clearTimeout(this.responseTimer);\n this.responseTimer = undefined;\n\n if (foundHeaders !== expectedHeaders.length) {\n LoggerProxy.logger.warn(\n `Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received: ${JSON.stringify(\n headers\n )}`\n );\n this.defer.reject(\n new Error(`TURN_DISCOVERY_RESPONSE missing some headers: ${JSON.stringify(headers)}`)\n );\n } else {\n LoggerProxy.logger.info(\n `Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response, url=${this.turnInfo.url}`\n );\n this.defer.resolve();\n }\n }\n\n /**\n * sends the TURN_DISCOVERY_REQUEST roap request\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting\n * @returns {Promise}\n * @private\n * @memberof Roap\n */\n sendRoapTurnDiscoveryRequest(meeting: Meeting, isReconnecting: boolean) {\n if (this.defer) {\n LoggerProxy.logger.warn(\n 'Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> already in progress'\n );\n\n return Promise.resolve();\n }\n\n this.defer = new Defer();\n\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,\n version: ROAP.ROAP_VERSION,\n seq: TURN_DISCOVERY_SEQ,\n };\n\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> sending TURN_DISCOVERY_REQUEST'\n );\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n correlationId: meeting.correlationId,\n // @ts-ignore - Fix missing type\n locusSelfUrl: meeting.selfUrl,\n // @ts-ignore - Fix missing type\n mediaId: isReconnecting ? '' : meeting.mediaId,\n audioMuted: meeting.isAudioMuted(),\n videoMuted: meeting.isVideoMuted(),\n meetingId: meeting.id,\n preferTranscoding: !meeting.isMultistream,\n })\n .then(({mediaConnections}) => {\n if (mediaConnections) {\n meeting.updateMediaConnections(mediaConnections);\n }\n });\n }\n\n /**\n * Sends the OK message that server expects to receive\n * after it sends us TURN_DISCOVERY_RESPONSE\n *\n * @param {Meeting} meeting\n * @returns {Promise}\n */\n sendRoapOK(meeting: Meeting) {\n LoggerProxy.logger.info('Roap:turnDiscovery#sendRoapOK --> sending OK');\n\n return this.roapRequest.sendRoap({\n roapMessage: {\n messageType: ROAP.ROAP_TYPES.OK,\n version: ROAP.ROAP_VERSION,\n seq: TURN_DISCOVERY_SEQ,\n },\n // @ts-ignore - fix type\n locusSelfUrl: meeting.selfUrl,\n // @ts-ignore - fix type\n mediaId: meeting.mediaId,\n correlationId: meeting.correlationId,\n audioMuted: meeting.isAudioMuted(),\n videoMuted: meeting.isVideoMuted(),\n meetingId: meeting.id,\n preferTranscoding: !meeting.isMultistream,\n });\n }\n\n /**\n * Retrieves TURN server information from the backend by doing\n * a roap message exchange:\n * client server\n * | -----TURN_DISCOVERY_REQUEST-----> |\n * | <----TURN_DISCOVERY_RESPONSE----- |\n * | --------------OK----------------> |\n *\n * This TURN discovery roap exchange is always done with seq=0.\n * The RoapMediaConnection SDP exchange always starts with seq=1,\n * so it works fine no matter if TURN discovery is done or not.\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting should be set to true if this is a new\n * media connection just after a reconnection\n * @returns {Promise}\n */\n async doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean) {\n // @ts-ignore - fix type\n const isAnyClusterReachable = await meeting.webex.meetings.reachability.isAnyClusterReachable();\n\n if (isAnyClusterReachable) {\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#doTurnDiscovery --> reachability has not failed, skipping TURN discovery'\n );\n\n return {\n turnServerInfo: undefined,\n turnDiscoverySkippedReason: 'reachability',\n };\n }\n\n // @ts-ignore - fix type\n if (!meeting.config.experimental.enableTurnDiscovery) {\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#doTurnDiscovery --> TURN discovery disabled in config, skipping it'\n );\n\n return {turnServerInfo: undefined, turnDiscoverySkippedReason: 'config'};\n }\n\n return this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting)\n .then(() => this.waitForTurnDiscoveryResponse())\n .then(() => this.sendRoapOK(meeting))\n .then(() => {\n this.defer = undefined;\n\n LoggerProxy.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');\n\n return {turnServerInfo: this.turnInfo, turnDiscoverySkippedReason: undefined};\n })\n .catch((e) => {\n // we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN\n LoggerProxy.logger.info(\n `Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ${e}`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.TURN_DISCOVERY_FAILURE, {\n correlation_id: meeting.correlationId,\n locus_id: meeting.locusUrl.split('/').pop(),\n reason: e.message,\n stack: e.stack,\n });\n\n return {turnServerInfo: undefined, turnDiscoverySkippedReason: undefined};\n });\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["TURN_DISCOVERY_TIMEOUT","TURN_DISCOVERY_SEQ","TurnDiscovery","roapRequest","turnInfo","url","username","password","defer","LoggerProxy","logger","warn","reject","Error","responseTimer","setTimeout","info","promise","roapMessage","headers","expectedHeaders","headerName","field","foundHeaders","forEach","receivedHeader","expectedHeader","startsWith","substring","length","clearTimeout","undefined","resolve","meeting","isReconnecting","Defer","messageType","ROAP","ROAP_TYPES","TURN_DISCOVERY_REQUEST","version","ROAP_VERSION","seq","sendRoap","locusSelfUrl","selfUrl","mediaId","meetingId","id","locusMediaRequest","ipVersion","webex","meetings","reachability","getIpVersion","then","mediaConnections","updateMediaConnections","OK","isAnyClusterReachable","config","experimental","enableTurnDiscovery","getSkipReason","skipReason","turnDiscoverySkippedReason","turnServerInfo","sendRoapTurnDiscoveryRequest","waitForTurnDiscoveryResponse","sendRoapOK","catch","e","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","TURN_DISCOVERY_FAILURE","correlation_id","correlationId","locus_id","locusUrl","split","pop","reason","message","stack"],"sources":["turnDiscovery.ts"],"sourcesContent":["// @ts-ignore - Types not available for @webex/common\nimport {Defer} from '@webex/common';\n\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ROAP} from '../constants';\n\nimport RoapRequest from './request';\nimport Meeting from '../meeting';\n\nconst TURN_DISCOVERY_TIMEOUT = 10; // in seconds\n\n// Roap spec says that seq should start from 1, but TURN discovery works fine with seq=0\n// and this is handy for us, because TURN discovery is always done before the first SDP exchange,\n// so we can do it with seq=0 or not do it at all and then we create the RoapMediaConnection\n// and do the SDP offer with seq=1\nconst TURN_DISCOVERY_SEQ = 0;\n\n/**\n * Handles the process of finding out TURN server information from Linus.\n * This is achieved by sending a TURN_DISCOVERY_REQUEST.\n */\nexport default class TurnDiscovery {\n private roapRequest: RoapRequest;\n\n private defer?: Defer; // used for waiting for the response\n\n private turnInfo: {\n url: string;\n username: string;\n password: string;\n };\n\n private responseTimer?: ReturnType<typeof setTimeout>;\n\n /**\n * Constructor\n *\n * @param {RoapRequest} roapRequest\n */\n constructor(roapRequest: RoapRequest) {\n this.roapRequest = roapRequest;\n this.turnInfo = {\n url: '',\n username: '',\n password: '',\n };\n }\n\n /**\n * waits for TURN_DISCOVERY_RESPONSE message to arrive\n *\n * @returns {Promise}\n * @private\n * @memberof Roap\n */\n private waitForTurnDiscoveryResponse() {\n if (!this.defer) {\n LoggerProxy.logger.warn(\n 'Roap:turnDiscovery#waitForTurnDiscoveryResponse --> TURN discovery is not in progress'\n );\n\n return Promise.reject(\n new Error('waitForTurnDiscoveryResponse() called before sendRoapTurnDiscoveryRequest()')\n );\n }\n\n const {defer} = this;\n\n this.responseTimer = setTimeout(() => {\n LoggerProxy.logger.warn(\n `Roap:turnDiscovery#waitForTurnDiscoveryResponse --> timeout! no response arrived within ${TURN_DISCOVERY_TIMEOUT} seconds`\n );\n\n defer.reject(new Error('Timed out waiting for TURN_DISCOVERY_RESPONSE'));\n }, TURN_DISCOVERY_TIMEOUT * 1000);\n\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#waitForTurnDiscoveryResponse --> waiting for TURN_DISCOVERY_RESPONSE...'\n );\n\n return defer.promise;\n }\n\n /**\n * handles TURN_DISCOVERY_RESPONSE roap message\n *\n * @param {Object} roapMessage\n * @returns {void}\n * @public\n * @memberof Roap\n */\n public handleTurnDiscoveryResponse(roapMessage: object) {\n // @ts-ignore - Fix missing type\n const {headers} = roapMessage;\n\n if (!this.defer) {\n LoggerProxy.logger.warn(\n 'Roap:turnDiscovery#handleTurnDiscoveryResponse --> unexpected TURN discovery response'\n );\n\n return;\n }\n\n const expectedHeaders = [\n {headerName: 'x-cisco-turn-url', field: 'url'},\n {headerName: 'x-cisco-turn-username', field: 'username'},\n {headerName: 'x-cisco-turn-password', field: 'password'},\n ];\n\n let foundHeaders = 0;\n\n headers?.forEach((receivedHeader) => {\n // check if it matches any of our expected headers\n expectedHeaders.forEach((expectedHeader) => {\n if (receivedHeader.startsWith(`${expectedHeader.headerName}=`)) {\n this.turnInfo[expectedHeader.field] = receivedHeader.substring(\n expectedHeader.headerName.length + 1\n );\n foundHeaders += 1;\n }\n });\n });\n\n clearTimeout(this.responseTimer);\n this.responseTimer = undefined;\n\n if (foundHeaders !== expectedHeaders.length) {\n LoggerProxy.logger.warn(\n `Roap:turnDiscovery#handleTurnDiscoveryResponse --> missing some headers, received: ${JSON.stringify(\n headers\n )}`\n );\n this.defer.reject(\n new Error(`TURN_DISCOVERY_RESPONSE missing some headers: ${JSON.stringify(headers)}`)\n );\n } else {\n LoggerProxy.logger.info(\n `Roap:turnDiscovery#handleTurnDiscoveryResponse --> received a valid response, url=${this.turnInfo.url}`\n );\n this.defer.resolve();\n }\n }\n\n /**\n * sends the TURN_DISCOVERY_REQUEST roap request\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting\n * @returns {Promise}\n * @private\n * @memberof Roap\n */\n sendRoapTurnDiscoveryRequest(meeting: Meeting, isReconnecting: boolean) {\n if (this.defer) {\n LoggerProxy.logger.warn(\n 'Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> already in progress'\n );\n\n return Promise.resolve();\n }\n\n this.defer = new Defer();\n\n const roapMessage = {\n messageType: ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,\n version: ROAP.ROAP_VERSION,\n seq: TURN_DISCOVERY_SEQ,\n };\n\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> sending TURN_DISCOVERY_REQUEST'\n );\n\n return this.roapRequest\n .sendRoap({\n roapMessage,\n // @ts-ignore - Fix missing type\n locusSelfUrl: meeting.selfUrl,\n // @ts-ignore - Fix missing type\n mediaId: isReconnecting ? '' : meeting.mediaId,\n meetingId: meeting.id,\n locusMediaRequest: meeting.locusMediaRequest,\n // @ts-ignore - because of meeting.webex\n ipVersion: meeting.webex.meetings.reachability.getIpVersion(),\n })\n .then(({mediaConnections}) => {\n if (mediaConnections) {\n meeting.updateMediaConnections(mediaConnections);\n }\n });\n }\n\n /**\n * Sends the OK message that server expects to receive\n * after it sends us TURN_DISCOVERY_RESPONSE\n *\n * @param {Meeting} meeting\n * @returns {Promise}\n */\n sendRoapOK(meeting: Meeting) {\n LoggerProxy.logger.info('Roap:turnDiscovery#sendRoapOK --> sending OK');\n\n return this.roapRequest.sendRoap({\n roapMessage: {\n messageType: ROAP.ROAP_TYPES.OK,\n version: ROAP.ROAP_VERSION,\n seq: TURN_DISCOVERY_SEQ,\n },\n // @ts-ignore - fix type\n locusSelfUrl: meeting.selfUrl,\n // @ts-ignore - fix type\n mediaId: meeting.mediaId,\n meetingId: meeting.id,\n locusMediaRequest: meeting.locusMediaRequest,\n // @ts-ignore - because of meeting.webex\n ipVersion: meeting.webex.meetings.reachability.getIpVersion(),\n });\n }\n\n /**\n * Gets the reason why reachability is skipped.\n *\n * @param {Meeting} meeting\n * @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped\n */\n private async getSkipReason(meeting: Meeting): Promise<string> {\n // @ts-ignore - fix type\n const isAnyClusterReachable = await meeting.webex.meetings.reachability.isAnyClusterReachable();\n\n if (isAnyClusterReachable) {\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery'\n );\n\n return 'reachability';\n }\n\n // @ts-ignore - fix type\n if (!meeting.config.experimental.enableTurnDiscovery) {\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#getSkipReason --> TURN discovery disabled in config, skipping it'\n );\n\n return 'config';\n }\n\n return '';\n }\n\n /**\n * Checks if TURN discovery is skipped.\n *\n * @param {Meeting} meeting\n * @returns {Boolean} true if TURN discovery is being skipped, false if it is being done\n */\n async isSkipped(meeting) {\n const skipReason = await this.getSkipReason(meeting);\n\n return !!skipReason;\n }\n\n /**\n * Retrieves TURN server information from the backend by doing\n * a roap message exchange:\n * client server\n * | -----TURN_DISCOVERY_REQUEST-----> |\n * | <----TURN_DISCOVERY_RESPONSE----- |\n * | --------------OK----------------> |\n *\n * This TURN discovery roap exchange is always done with seq=0.\n * The RoapMediaConnection SDP exchange always starts with seq=1,\n * so it works fine no matter if TURN discovery is done or not.\n *\n * @param {Meeting} meeting\n * @param {Boolean} isReconnecting should be set to true if this is a new\n * media connection just after a reconnection\n * @returns {Promise}\n */\n async doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean) {\n const turnDiscoverySkippedReason = await this.getSkipReason(meeting);\n\n if (turnDiscoverySkippedReason) {\n return {\n turnServerInfo: undefined,\n turnDiscoverySkippedReason,\n };\n }\n\n return this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting)\n .then(() => this.waitForTurnDiscoveryResponse())\n .then(() => this.sendRoapOK(meeting))\n .then(() => {\n this.defer = undefined;\n\n LoggerProxy.logger.info('Roap:turnDiscovery#doTurnDiscovery --> TURN discovery completed');\n\n return {turnServerInfo: this.turnInfo, turnDiscoverySkippedReason: undefined};\n })\n .catch((e) => {\n // we catch any errors and resolve with no turn information so that the normal call join flow can continue without TURN\n LoggerProxy.logger.info(\n `Roap:turnDiscovery#doTurnDiscovery --> TURN discovery failed, continuing without TURN: ${e}`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.TURN_DISCOVERY_FAILURE, {\n correlation_id: meeting.correlationId,\n locus_id: meeting.locusUrl.split('/').pop(),\n reason: e.message,\n stack: e.stack,\n });\n\n return {turnServerInfo: undefined, turnDiscoverySkippedReason: undefined};\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var RTC_METRICS = {
|
|
9
|
+
APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'
|
|
10
|
+
};
|
|
11
|
+
exports.default = RTC_METRICS;
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["RTC_METRICS","APP_ID"],"sources":["constants.ts"],"sourcesContent":["const RTC_METRICS = {APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'};\n\nexport {RTC_METRICS as default};\n"],"mappings":";;;;;;;AAAA,IAAMA,WAAW,GAAG;EAACC,MAAM,EAAE;AAAsC,CAAC;AAAC"}
|