@webex/plugin-meetings 2.60.1-next.9 → 2.60.2
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 +8 -58
- package/dist/common/browser-detection.js +3 -2
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +4 -3
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +2 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +2 -1
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +2 -1
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +2 -1
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +2 -1
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +4 -3
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +2 -1
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +2 -1
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
- package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +2 -1
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +2 -1
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +2 -1
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.d.ts +8 -20
- package/dist/common/errors/webex-errors.js +28 -48
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +2 -1
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +2 -1
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +2 -1
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +2 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +2 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +2 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +3 -2
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.d.ts +1 -3
- package/dist/common/logs/request.js +5 -8
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.d.ts +7 -9
- package/dist/common/queue.js +9 -22
- package/dist/common/queue.js.map +1 -1
- package/dist/config.d.ts +7 -6
- package/dist/config.js +10 -8
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +100 -234
- package/dist/constants.js +444 -433
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +6 -3
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.d.ts +1 -11
- package/dist/controls-options-manager/enums.js +6 -15
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.d.ts +1 -17
- package/dist/controls-options-manager/index.js +38 -127
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.d.ts +7 -1
- package/dist/controls-options-manager/util.js +19 -309
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.d.ts +3 -6
- package/dist/index.js +5 -121
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +11 -100
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +4 -3
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +2 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +2 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.d.ts +4 -57
- package/dist/locus-info/index.js +84 -425
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +5 -13
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +3 -58
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.d.ts +6 -66
- package/dist/locus-info/parser.js +80 -253
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +13 -97
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.d.ts +0 -2
- package/dist/media/index.js +319 -107
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.d.ts +53 -38
- package/dist/media/properties.js +153 -96
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +22 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.d.ts +230 -234
- package/dist/mediaQualityMetrics/config.js +498 -302
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.d.ts +42 -0
- package/dist/meeting/effectsState.js +260 -0
- package/dist/meeting/effectsState.js.map +1 -0
- package/dist/meeting/in-meeting-actions.d.ts +0 -88
- package/dist/meeting/in-meeting-actions.js +3 -94
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.d.ts +520 -705
- package/dist/meeting/index.js +3083 -5041
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.d.ts +25 -93
- package/dist/meeting/muteState.js +133 -224
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.d.ts +47 -82
- package/dist/meeting/request.js +199 -304
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +2 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.d.ts +1 -118
- package/dist/meeting/util.js +435 -676
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +4 -3
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.d.ts +1 -13
- package/dist/meeting-info/index.js +7 -74
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
- package/dist/meeting-info/meeting-info-v2.js +63 -200
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +2 -1
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +3 -2
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +41 -39
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.d.ts +0 -17
- package/dist/meetings/collection.js +4 -42
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.d.ts +20 -114
- package/dist/meetings/index.js +133 -540
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +3 -4
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +6 -107
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.d.ts +1 -13
- package/dist/member/index.js +2 -45
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js +4 -3
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/util.js +29 -120
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.d.ts +0 -5
- package/dist/members/collection.js +2 -11
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.d.ts +11 -56
- package/dist/members/index.js +47 -174
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.d.ts +11 -67
- package/dist/members/request.js +54 -102
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +4 -3
- package/dist/members/types.js.map +1 -1
- package/dist/members/util.d.ts +1 -214
- package/dist/members/util.js +284 -327
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.d.ts +169 -0
- package/dist/metrics/config.js +289 -0
- package/dist/metrics/config.js.map +1 -0
- package/dist/metrics/constants.d.ts +6 -15
- package/dist/metrics/constants.js +9 -17
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.d.ts +111 -4
- package/dist/metrics/index.js +452 -4
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +4 -5
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.d.ts +6 -0
- package/dist/peer-connection-manager/index.js +671 -0
- package/dist/peer-connection-manager/index.js.map +1 -0
- package/dist/peer-connection-manager/util.d.ts +6 -0
- package/dist/peer-connection-manager/util.js +110 -0
- package/dist/peer-connection-manager/util.js.map +1 -0
- package/dist/personal-meeting-room/index.js +3 -2
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +3 -2
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +2 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.d.ts +95 -61
- package/dist/reachability/index.js +392 -304
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.d.ts +3 -7
- package/dist/reachability/request.js +10 -18
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.d.ts +2 -2
- package/dist/reactions/reactions.js +6 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.d.ts +3 -23
- package/dist/reactions/reactions.type.js +23 -21
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.d.ts +8 -32
- package/dist/reconnection-manager/index.js +232 -285
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +5 -4
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.d.ts +1 -15
- package/dist/recording-controller/index.js +46 -57
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.d.ts +4 -5
- package/dist/recording-controller/util.js +10 -10
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.d.ts +10 -0
- package/dist/roap/collection.js +63 -0
- package/dist/roap/collection.js.map +1 -0
- package/dist/roap/handler.d.ts +47 -0
- package/dist/roap/handler.js +279 -0
- package/dist/roap/handler.js.map +1 -0
- package/dist/roap/index.d.ts +47 -9
- package/dist/roap/index.js +238 -100
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.d.ts +12 -18
- package/dist/roap/request.js +180 -126
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.d.ts +9 -0
- package/dist/roap/state.js +127 -0
- package/dist/roap/state.js.map +1 -0
- package/dist/roap/turnDiscovery.d.ts +16 -27
- package/dist/roap/turnDiscovery.js +105 -115
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.d.ts +2 -0
- package/dist/roap/util.js +76 -0
- package/dist/roap/util.js.map +1 -0
- package/dist/statsAnalyzer/global.d.ts +83 -1
- package/dist/statsAnalyzer/global.js +85 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.d.ts +30 -50
- package/dist/statsAnalyzer/index.js +511 -436
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
- package/dist/statsAnalyzer/mqaUtil.js +90 -130
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +2 -1
- package/dist/transcription/index.js.map +1 -1
- package/package.json +26 -39
- package/src/common/errors/webex-errors.ts +12 -36
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +1 -5
- package/src/common/queue.ts +8 -22
- package/src/config.ts +7 -6
- package/src/constants.ts +100 -265
- package/src/controls-options-manager/enums.ts +0 -12
- package/src/controls-options-manager/index.ts +21 -116
- package/src/controls-options-manager/util.ts +14 -294
- package/src/index.js +15 -0
- package/src/locus-info/controlsUtils.ts +0 -110
- package/src/locus-info/index.ts +61 -450
- package/src/locus-info/infoUtils.ts +2 -14
- package/src/locus-info/mediaSharesUtils.ts +0 -64
- package/src/locus-info/parser.ts +47 -258
- package/src/locus-info/selfUtils.ts +2 -85
- package/src/media/index.ts +370 -153
- package/src/media/properties.ts +136 -106
- package/src/media/util.ts +21 -0
- package/src/mediaQualityMetrics/config.ts +377 -244
- package/src/meeting/effectsState.ts +209 -0
- package/src/meeting/in-meeting-actions.ts +0 -176
- package/src/meeting/index.ts +2581 -4306
- package/src/meeting/muteState.ts +138 -224
- package/src/meeting/request.ts +127 -214
- package/src/meeting/util.ts +423 -687
- package/src/meeting-info/index.ts +8 -81
- package/src/meeting-info/meeting-info-v2.ts +13 -163
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +28 -28
- package/src/meetings/collection.ts +0 -33
- package/src/meetings/index.ts +136 -531
- package/src/meetings/request.ts +0 -2
- package/src/meetings/util.ts +5 -116
- package/src/member/index.ts +1 -43
- package/src/member/util.ts +28 -125
- package/src/members/collection.ts +0 -8
- package/src/members/index.ts +52 -187
- package/src/members/request.ts +27 -87
- package/src/members/util.ts +291 -332
- package/src/metrics/config.ts +485 -0
- package/src/metrics/constants.ts +6 -15
- package/src/metrics/index.ts +471 -1
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/peer-connection-manager/index.ts +847 -0
- package/src/peer-connection-manager/util.ts +119 -0
- package/src/reachability/index.ts +347 -246
- package/src/reachability/request.ts +8 -17
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +4 -30
- package/src/reconnection-manager/index.ts +156 -168
- package/src/recording-controller/index.ts +3 -20
- package/src/recording-controller/util.ts +9 -26
- package/src/roap/collection.ts +62 -0
- package/src/roap/handler.ts +294 -0
- package/src/roap/index.ts +241 -96
- package/src/roap/request.ts +148 -74
- package/src/roap/state.ts +156 -0
- package/src/roap/turnDiscovery.ts +56 -62
- package/src/roap/util.ts +100 -0
- package/src/statsAnalyzer/global.ts +84 -1
- package/src/statsAnalyzer/index.ts +645 -479
- package/src/statsAnalyzer/mqaUtil.ts +126 -128
- package/test/integration/spec/journey.js +264 -320
- package/test/integration/spec/space-meeting.js +4 -77
- package/test/unit/spec/common/queue.js +2 -31
- package/test/unit/spec/controls-options-manager/index.js +0 -163
- package/test/unit/spec/controls-options-manager/util.js +60 -576
- package/test/unit/spec/fixture/locus.js +0 -1
- package/test/unit/spec/locus-info/controlsUtils.js +30 -323
- package/test/unit/spec/locus-info/index.js +15 -1437
- package/test/unit/spec/locus-info/infoUtils.js +16 -54
- package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
- package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
- package/test/unit/spec/locus-info/parser.js +35 -116
- package/test/unit/spec/locus-info/selfUtils.js +0 -275
- package/test/unit/spec/media/properties.ts +84 -75
- package/test/unit/spec/meeting/effectsState.js +281 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
- package/test/unit/spec/meeting/index.js +2313 -8384
- package/test/unit/spec/meeting/muteState.js +213 -409
- package/test/unit/spec/meeting/request.js +43 -523
- package/test/unit/spec/meeting/utils.js +24 -834
- package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
- package/test/unit/spec/meeting-info/utilv2.js +0 -21
- package/test/unit/spec/meetings/collection.js +0 -26
- package/test/unit/spec/meetings/index.js +232 -1445
- package/test/unit/spec/meetings/utils.js +2 -202
- package/test/unit/spec/member/index.js +9 -32
- package/test/unit/spec/member/util.js +61 -499
- package/test/unit/spec/members/index.js +5 -394
- package/test/unit/spec/members/request.js +27 -206
- package/test/unit/spec/members/utils.js +38 -173
- package/test/unit/spec/metrics/index.js +50 -1
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/peerconnection-manager/index.js +218 -0
- package/test/unit/spec/peerconnection-manager/utils.js +49 -0
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
- package/test/unit/spec/reachability/index.ts +24 -532
- package/test/unit/spec/reconnection-manager/index.js +24 -163
- package/test/unit/spec/recording-controller/index.js +218 -293
- package/test/unit/spec/recording-controller/util.js +96 -223
- package/test/unit/spec/roap/index.ts +77 -187
- package/test/unit/spec/roap/turnDiscovery.ts +48 -86
- package/test/unit/spec/roap/util.js +30 -0
- package/test/unit/spec/stats-analyzer/index.js +165 -644
- package/test/utils/testUtils.js +45 -0
- package/test/utils/webex-config.js +0 -4
- package/test/utils/webex-test-users.js +3 -7
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/annotation.types.js +0 -7
- package/dist/annotation/annotation.types.js.map +0 -1
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/constants.js +0 -41
- package/dist/annotation/constants.js.map +0 -1
- package/dist/annotation/index.d.ts +0 -117
- package/dist/annotation/index.js +0 -357
- package/dist/annotation/index.js.map +0 -1
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/breakout.js +0 -215
- package/dist/breakouts/breakout.js.map +0 -1
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/collection.js +0 -22
- package/dist/breakouts/collection.js.map +0 -1
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/edit-lock-error.js +0 -51
- package/dist/breakouts/edit-lock-error.js.map +0 -1
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/events.js +0 -44
- package/dist/breakouts/events.js.map +0 -1
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/index.js +0 -1047
- package/dist/breakouts/index.js.map +0 -1
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/request.js +0 -77
- package/dist/breakouts/request.js.map +0 -1
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/breakouts/utils.js +0 -64
- package/dist/breakouts/utils.js.map +0 -1
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/no-meeting-info.js +0 -50
- package/dist/common/errors/no-meeting-info.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/types.js +0 -7
- package/dist/controls-options-manager/types.js.map +0 -1
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/index.js +0 -15
- package/dist/interceptors/index.js.map +0 -1
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interceptors/locusRetry.js +0 -94
- package/dist/interceptors/locusRetry.js.map +0 -1
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/collection.js +0 -22
- package/dist/interpretation/collection.js.map +0 -1
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/index.js +0 -365
- package/dist/interpretation/index.js.map +0 -1
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/interpretation/siLanguage.js +0 -24
- package/dist/interpretation/siLanguage.js.map +0 -1
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/locusMediaRequest.js +0 -291
- package/dist/meeting/locusMediaRequest.js.map +0 -1
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/request.type.js +0 -7
- package/dist/meeting/request.type.js.map +0 -1
- package/dist/meeting/voicea-meeting.d.ts +0 -20
- package/dist/meeting/voicea-meeting.js +0 -201
- package/dist/meeting/voicea-meeting.js.map +0 -1
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/meetings.types.js +0 -7
- package/dist/meetings/meetings.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/types.js +0 -23
- package/dist/member/types.js.map +0 -1
- package/dist/multistream/mediaRequestManager.d.ts +0 -118
- package/dist/multistream/mediaRequestManager.js +0 -344
- package/dist/multistream/mediaRequestManager.js.map +0 -1
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlot.js +0 -200
- package/dist/multistream/receiveSlot.js.map +0 -1
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/receiveSlotManager.js +0 -174
- package/dist/multistream/receiveSlotManager.js.map +0 -1
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMedia.js +0 -268
- package/dist/multistream/remoteMedia.js.map +0 -1
- package/dist/multistream/remoteMediaGroup.d.ts +0 -47
- package/dist/multistream/remoteMediaGroup.js +0 -267
- package/dist/multistream/remoteMediaGroup.js.map +0 -1
- package/dist/multistream/remoteMediaManager.d.ts +0 -285
- package/dist/multistream/remoteMediaManager.js +0 -1211
- package/dist/multistream/remoteMediaManager.js.map +0 -1
- package/dist/multistream/sendSlotManager.d.ts +0 -61
- package/dist/multistream/sendSlotManager.js +0 -236
- package/dist/multistream/sendSlotManager.js.map +0 -1
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/clusterReachability.js +0 -357
- package/dist/reachability/clusterReachability.js.map +0 -1
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reachability/util.js +0 -29
- package/dist/reachability/util.js.map +0 -1
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/constants.js +0 -12
- package/dist/reactions/constants.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -54
- package/dist/rtcMetrics/index.js +0 -140
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/collection.js +0 -43
- package/dist/webinar/collection.js.map +0 -1
- package/dist/webinar/index.d.ts +0 -5
- package/dist/webinar/index.js +0 -68
- package/dist/webinar/index.js.map +0 -1
- package/src/annotation/annotation.types.ts +0 -50
- package/src/annotation/constants.ts +0 -36
- package/src/annotation/index.ts +0 -328
- package/src/breakouts/README.md +0 -220
- package/src/breakouts/breakout.ts +0 -188
- package/src/breakouts/collection.ts +0 -19
- package/src/breakouts/edit-lock-error.ts +0 -25
- package/src/breakouts/events.ts +0 -56
- package/src/breakouts/index.ts +0 -925
- package/src/breakouts/request.ts +0 -55
- package/src/breakouts/utils.ts +0 -57
- package/src/common/errors/no-meeting-info.ts +0 -24
- package/src/controls-options-manager/types.ts +0 -59
- package/src/index.ts +0 -44
- package/src/interceptors/index.ts +0 -3
- package/src/interceptors/locusRetry.ts +0 -67
- package/src/interpretation/README.md +0 -60
- package/src/interpretation/collection.ts +0 -19
- package/src/interpretation/index.ts +0 -332
- package/src/interpretation/siLanguage.ts +0 -18
- package/src/meeting/locusMediaRequest.ts +0 -313
- package/src/meeting/request.type.ts +0 -13
- package/src/meeting/voicea-meeting.ts +0 -161
- package/src/meetings/meetings.types.ts +0 -12
- package/src/member/types.ts +0 -38
- package/src/multistream/mediaRequestManager.ts +0 -440
- package/src/multistream/receiveSlot.ts +0 -184
- package/src/multistream/receiveSlotManager.ts +0 -166
- package/src/multistream/remoteMedia.ts +0 -254
- package/src/multistream/remoteMediaGroup.ts +0 -284
- package/src/multistream/remoteMediaManager.ts +0 -1145
- package/src/multistream/sendSlotManager.ts +0 -170
- package/src/reachability/clusterReachability.ts +0 -320
- package/src/reachability/util.ts +0 -24
- package/src/reactions/constants.ts +0 -4
- package/src/rtcMetrics/constants.ts +0 -3
- package/src/rtcMetrics/index.ts +0 -124
- package/src/webinar/collection.ts +0 -31
- package/src/webinar/index.ts +0 -62
- package/test/integration/spec/converged-space-meetings.js +0 -233
- package/test/unit/spec/annotation/index.ts +0 -418
- package/test/unit/spec/breakouts/breakout.ts +0 -237
- package/test/unit/spec/breakouts/collection.ts +0 -15
- package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
- package/test/unit/spec/breakouts/events.ts +0 -89
- package/test/unit/spec/breakouts/index.ts +0 -1790
- package/test/unit/spec/breakouts/request.ts +0 -104
- package/test/unit/spec/breakouts/utils.js +0 -72
- package/test/unit/spec/interceptors/locusRetry.ts +0 -131
- package/test/unit/spec/interpretation/collection.ts +0 -15
- package/test/unit/spec/interpretation/index.ts +0 -589
- package/test/unit/spec/interpretation/siLanguage.ts +0 -28
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
- package/test/unit/spec/media/index.ts +0 -290
- package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
- package/test/unit/spec/meeting-info/index.js +0 -300
- package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
- package/test/unit/spec/multistream/receiveSlot.ts +0 -163
- package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
- package/test/unit/spec/multistream/remoteMedia.ts +0 -255
- package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
- package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
- package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
- package/test/unit/spec/reachability/clusterReachability.ts +0 -279
- package/test/unit/spec/reachability/request.js +0 -68
- package/test/unit/spec/reachability/util.ts +0 -40
- package/test/unit/spec/roap/request.ts +0 -255
- package/test/unit/spec/rtcMetrics/index.ts +0 -93
- package/test/unit/spec/webinar/collection.ts +0 -13
- package/test/unit/spec/webinar/index.ts +0 -60
- package/test/utils/constants.js +0 -9
- package/test/utils/integrationTestUtils.js +0 -46
- /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
- /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
|
@@ -41,7 +41,7 @@ export default class TurnDiscovery {
|
|
|
41
41
|
* @private
|
|
42
42
|
* @memberof Roap
|
|
43
43
|
*/
|
|
44
|
-
sendRoapTurnDiscoveryRequest
|
|
44
|
+
private sendRoapTurnDiscoveryRequest;
|
|
45
45
|
/**
|
|
46
46
|
* Sends the OK message that server expects to receive
|
|
47
47
|
* after it sends us TURN_DISCOVERY_RESPONSE
|
|
@@ -49,10 +49,21 @@ export default class TurnDiscovery {
|
|
|
49
49
|
* @param {Meeting} meeting
|
|
50
50
|
* @returns {Promise}
|
|
51
51
|
*/
|
|
52
|
-
sendRoapOK(meeting: Meeting):
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
sendRoapOK(meeting: Meeting): any;
|
|
53
|
+
/**
|
|
54
|
+
* Retrieves TURN server information from the backend by doing
|
|
55
|
+
* a roap message exchange:
|
|
56
|
+
* client server
|
|
57
|
+
* | -----TURN_DISCOVERY_REQUEST-----> |
|
|
58
|
+
* | <----TURN_DISCOVERY_RESPONSE----- |
|
|
59
|
+
* | --------------OK----------------> |
|
|
60
|
+
*
|
|
61
|
+
* @param {Meeting} meeting
|
|
62
|
+
* @param {Boolean} isReconnecting should be set to true if this is a new
|
|
63
|
+
* media connection just after a reconnection
|
|
64
|
+
* @returns {Promise}
|
|
65
|
+
*/
|
|
66
|
+
doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean): Promise<any>;
|
|
56
67
|
/**
|
|
57
68
|
* Gets the reason why reachability is skipped.
|
|
58
69
|
*
|
|
@@ -67,26 +78,4 @@ export default class TurnDiscovery {
|
|
|
67
78
|
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
|
68
79
|
*/
|
|
69
80
|
isSkipped(meeting: any): Promise<boolean>;
|
|
70
|
-
/**
|
|
71
|
-
* Retrieves TURN server information from the backend by doing
|
|
72
|
-
* a roap message exchange:
|
|
73
|
-
* client server
|
|
74
|
-
* | -----TURN_DISCOVERY_REQUEST-----> |
|
|
75
|
-
* | <----TURN_DISCOVERY_RESPONSE----- |
|
|
76
|
-
* | --------------OK----------------> |
|
|
77
|
-
*
|
|
78
|
-
* This TURN discovery roap exchange is always done with seq=0.
|
|
79
|
-
* The RoapMediaConnection SDP exchange always starts with seq=1,
|
|
80
|
-
* so it works fine no matter if TURN discovery is done or not.
|
|
81
|
-
*
|
|
82
|
-
* @param {Meeting} meeting
|
|
83
|
-
* @param {Boolean} [isReconnecting] should be set to true if this is a new
|
|
84
|
-
* media connection just after a reconnection
|
|
85
|
-
* @param {Boolean} [isForced]
|
|
86
|
-
* @returns {Promise}
|
|
87
|
-
*/
|
|
88
|
-
doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean, isForced?: boolean): Promise<{
|
|
89
|
-
turnServerInfo: any;
|
|
90
|
-
turnDiscoverySkippedReason: any;
|
|
91
|
-
}>;
|
|
92
81
|
}
|
|
@@ -18,22 +18,17 @@ var _metrics = _interopRequireDefault(require("../metrics"));
|
|
|
18
18
|
var _constants = _interopRequireDefault(require("../metrics/constants"));
|
|
19
19
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
20
20
|
var _constants2 = require("../constants");
|
|
21
|
-
var _util = _interopRequireDefault(require("../meeting/util"));
|
|
22
21
|
// @ts-ignore - Types not available for @webex/common
|
|
23
22
|
|
|
24
23
|
var TURN_DISCOVERY_TIMEOUT = 10; // in seconds
|
|
25
24
|
|
|
26
|
-
// Roap spec says that seq should start from 1, but TURN discovery works fine with seq=0
|
|
27
|
-
// and this is handy for us, because TURN discovery is always done before the first SDP exchange,
|
|
28
|
-
// so we can do it with seq=0 or not do it at all and then we create the RoapMediaConnection
|
|
29
|
-
// and do the SDP offer with seq=1
|
|
30
|
-
var TURN_DISCOVERY_SEQ = 0;
|
|
31
|
-
|
|
32
25
|
/**
|
|
33
26
|
* Handles the process of finding out TURN server information from Linus.
|
|
34
27
|
* This is achieved by sending a TURN_DISCOVERY_REQUEST.
|
|
35
28
|
*/
|
|
36
|
-
var TurnDiscovery =
|
|
29
|
+
var TurnDiscovery = /*#__PURE__*/function () {
|
|
30
|
+
// used for waiting for the response
|
|
31
|
+
|
|
37
32
|
/**
|
|
38
33
|
* Constructor
|
|
39
34
|
*
|
|
@@ -43,7 +38,6 @@ var TurnDiscovery = exports.default = /*#__PURE__*/function () {
|
|
|
43
38
|
(0, _classCallCheck2.default)(this, TurnDiscovery);
|
|
44
39
|
(0, _defineProperty2.default)(this, "roapRequest", void 0);
|
|
45
40
|
(0, _defineProperty2.default)(this, "defer", void 0);
|
|
46
|
-
// used for waiting for the response
|
|
47
41
|
(0, _defineProperty2.default)(this, "turnInfo", void 0);
|
|
48
42
|
(0, _defineProperty2.default)(this, "responseTimer", void 0);
|
|
49
43
|
this.roapRequest = roapRequest;
|
|
@@ -139,6 +133,7 @@ var TurnDiscovery = exports.default = /*#__PURE__*/function () {
|
|
|
139
133
|
key: "sendRoapTurnDiscoveryRequest",
|
|
140
134
|
value: function sendRoapTurnDiscoveryRequest(meeting, isReconnecting) {
|
|
141
135
|
var _meeting$audio, _meeting$video;
|
|
136
|
+
var seq = meeting.roapSeq + 1;
|
|
142
137
|
if (this.defer) {
|
|
143
138
|
_loggerProxy.default.logger.warn('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> already in progress');
|
|
144
139
|
return _promise.default.resolve();
|
|
@@ -147,23 +142,22 @@ var TurnDiscovery = exports.default = /*#__PURE__*/function () {
|
|
|
147
142
|
var roapMessage = {
|
|
148
143
|
messageType: _constants2.ROAP.ROAP_TYPES.TURN_DISCOVERY_REQUEST,
|
|
149
144
|
version: _constants2.ROAP.ROAP_VERSION,
|
|
150
|
-
seq:
|
|
145
|
+
seq: seq
|
|
151
146
|
};
|
|
152
147
|
_loggerProxy.default.logger.info('Roap:turnDiscovery#sendRoapTurnDiscoveryRequest --> sending TURN_DISCOVERY_REQUEST');
|
|
153
148
|
return this.roapRequest.sendRoap({
|
|
154
149
|
roapMessage: roapMessage,
|
|
150
|
+
correlationId: meeting.correlationId,
|
|
155
151
|
// @ts-ignore - Fix missing type
|
|
156
152
|
locusSelfUrl: meeting.selfUrl,
|
|
157
153
|
// @ts-ignore - Fix missing type
|
|
158
154
|
mediaId: isReconnecting ? '' : meeting.mediaId,
|
|
159
155
|
audioMuted: (_meeting$audio = meeting.audio) === null || _meeting$audio === void 0 ? void 0 : _meeting$audio.isLocallyMuted(),
|
|
160
156
|
videoMuted: (_meeting$video = meeting.video) === null || _meeting$video === void 0 ? void 0 : _meeting$video.isLocallyMuted(),
|
|
161
|
-
meetingId: meeting.id
|
|
162
|
-
locusMediaRequest: meeting.locusMediaRequest,
|
|
163
|
-
// @ts-ignore - because of meeting.webex
|
|
164
|
-
ipVersion: _util.default.getIpVersion(meeting.webex)
|
|
157
|
+
meetingId: meeting.id
|
|
165
158
|
}).then(function (_ref) {
|
|
166
159
|
var mediaConnections = _ref.mediaConnections;
|
|
160
|
+
meeting.setRoapSeq(seq);
|
|
167
161
|
if (mediaConnections) {
|
|
168
162
|
meeting.updateMediaConnections(mediaConnections);
|
|
169
163
|
}
|
|
@@ -186,87 +180,19 @@ var TurnDiscovery = exports.default = /*#__PURE__*/function () {
|
|
|
186
180
|
roapMessage: {
|
|
187
181
|
messageType: _constants2.ROAP.ROAP_TYPES.OK,
|
|
188
182
|
version: _constants2.ROAP.ROAP_VERSION,
|
|
189
|
-
seq:
|
|
183
|
+
seq: meeting.roapSeq
|
|
190
184
|
},
|
|
191
185
|
// @ts-ignore - fix type
|
|
192
186
|
locusSelfUrl: meeting.selfUrl,
|
|
193
187
|
// @ts-ignore - fix type
|
|
194
188
|
mediaId: meeting.mediaId,
|
|
195
|
-
|
|
189
|
+
correlationId: meeting.correlationId,
|
|
196
190
|
audioMuted: (_meeting$audio2 = meeting.audio) === null || _meeting$audio2 === void 0 ? void 0 : _meeting$audio2.isLocallyMuted(),
|
|
197
191
|
videoMuted: (_meeting$video2 = meeting.video) === null || _meeting$video2 === void 0 ? void 0 : _meeting$video2.isLocallyMuted(),
|
|
198
|
-
|
|
192
|
+
meetingId: meeting.id
|
|
199
193
|
});
|
|
200
194
|
}
|
|
201
195
|
|
|
202
|
-
/**
|
|
203
|
-
* Gets the reason why reachability is skipped.
|
|
204
|
-
*
|
|
205
|
-
* @param {Meeting} meeting
|
|
206
|
-
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
|
207
|
-
*/
|
|
208
|
-
}, {
|
|
209
|
-
key: "getSkipReason",
|
|
210
|
-
value: (function () {
|
|
211
|
-
var _getSkipReason = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(meeting) {
|
|
212
|
-
var isAnyPublicClusterReachable;
|
|
213
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
214
|
-
while (1) switch (_context.prev = _context.next) {
|
|
215
|
-
case 0:
|
|
216
|
-
_context.next = 2;
|
|
217
|
-
return meeting.webex.meetings.reachability.isAnyPublicClusterReachable();
|
|
218
|
-
case 2:
|
|
219
|
-
isAnyPublicClusterReachable = _context.sent;
|
|
220
|
-
if (!isAnyPublicClusterReachable) {
|
|
221
|
-
_context.next = 6;
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
_loggerProxy.default.logger.info('Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery');
|
|
225
|
-
return _context.abrupt("return", 'reachability');
|
|
226
|
-
case 6:
|
|
227
|
-
return _context.abrupt("return", '');
|
|
228
|
-
case 7:
|
|
229
|
-
case "end":
|
|
230
|
-
return _context.stop();
|
|
231
|
-
}
|
|
232
|
-
}, _callee);
|
|
233
|
-
}));
|
|
234
|
-
function getSkipReason(_x) {
|
|
235
|
-
return _getSkipReason.apply(this, arguments);
|
|
236
|
-
}
|
|
237
|
-
return getSkipReason;
|
|
238
|
-
}()
|
|
239
|
-
/**
|
|
240
|
-
* Checks if TURN discovery is skipped.
|
|
241
|
-
*
|
|
242
|
-
* @param {Meeting} meeting
|
|
243
|
-
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
|
244
|
-
*/
|
|
245
|
-
)
|
|
246
|
-
}, {
|
|
247
|
-
key: "isSkipped",
|
|
248
|
-
value: (function () {
|
|
249
|
-
var _isSkipped = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(meeting) {
|
|
250
|
-
var skipReason;
|
|
251
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
252
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
253
|
-
case 0:
|
|
254
|
-
_context2.next = 2;
|
|
255
|
-
return this.getSkipReason(meeting);
|
|
256
|
-
case 2:
|
|
257
|
-
skipReason = _context2.sent;
|
|
258
|
-
return _context2.abrupt("return", !!skipReason);
|
|
259
|
-
case 4:
|
|
260
|
-
case "end":
|
|
261
|
-
return _context2.stop();
|
|
262
|
-
}
|
|
263
|
-
}, _callee2, this);
|
|
264
|
-
}));
|
|
265
|
-
function isSkipped(_x2) {
|
|
266
|
-
return _isSkipped.apply(this, arguments);
|
|
267
|
-
}
|
|
268
|
-
return isSkipped;
|
|
269
|
-
}()
|
|
270
196
|
/**
|
|
271
197
|
* Retrieves TURN server information from the backend by doing
|
|
272
198
|
* a roap message exchange:
|
|
@@ -275,45 +201,34 @@ var TurnDiscovery = exports.default = /*#__PURE__*/function () {
|
|
|
275
201
|
* | <----TURN_DISCOVERY_RESPONSE----- |
|
|
276
202
|
* | --------------OK----------------> |
|
|
277
203
|
*
|
|
278
|
-
* This TURN discovery roap exchange is always done with seq=0.
|
|
279
|
-
* The RoapMediaConnection SDP exchange always starts with seq=1,
|
|
280
|
-
* so it works fine no matter if TURN discovery is done or not.
|
|
281
|
-
*
|
|
282
204
|
* @param {Meeting} meeting
|
|
283
|
-
* @param {Boolean}
|
|
205
|
+
* @param {Boolean} isReconnecting should be set to true if this is a new
|
|
284
206
|
* media connection just after a reconnection
|
|
285
|
-
* @param {Boolean} [isForced]
|
|
286
207
|
* @returns {Promise}
|
|
287
208
|
*/
|
|
288
|
-
)
|
|
289
209
|
}, {
|
|
290
210
|
key: "doTurnDiscovery",
|
|
291
|
-
value:
|
|
292
|
-
var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
211
|
+
value: function () {
|
|
212
|
+
var _doTurnDiscovery = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(meeting, isReconnecting) {
|
|
293
213
|
var _this2 = this;
|
|
294
214
|
var turnDiscoverySkippedReason;
|
|
295
|
-
return _regenerator.default.wrap(function
|
|
296
|
-
while (1) switch (
|
|
215
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
216
|
+
while (1) switch (_context.prev = _context.next) {
|
|
297
217
|
case 0:
|
|
298
|
-
|
|
299
|
-
_context3.next = 4;
|
|
300
|
-
break;
|
|
301
|
-
}
|
|
302
|
-
_context3.next = 3;
|
|
218
|
+
_context.next = 2;
|
|
303
219
|
return this.getSkipReason(meeting);
|
|
304
|
-
case
|
|
305
|
-
turnDiscoverySkippedReason =
|
|
306
|
-
case 4:
|
|
220
|
+
case 2:
|
|
221
|
+
turnDiscoverySkippedReason = _context.sent;
|
|
307
222
|
if (!turnDiscoverySkippedReason) {
|
|
308
|
-
|
|
223
|
+
_context.next = 5;
|
|
309
224
|
break;
|
|
310
225
|
}
|
|
311
|
-
return
|
|
226
|
+
return _context.abrupt("return", {
|
|
312
227
|
turnServerInfo: undefined,
|
|
313
228
|
turnDiscoverySkippedReason: turnDiscoverySkippedReason
|
|
314
229
|
});
|
|
315
|
-
case
|
|
316
|
-
return
|
|
230
|
+
case 5:
|
|
231
|
+
return _context.abrupt("return", this.sendRoapTurnDiscoveryRequest(meeting, isReconnecting).then(function () {
|
|
317
232
|
return _this2.waitForTurnDiscoveryResponse();
|
|
318
233
|
}).then(function () {
|
|
319
234
|
return _this2.sendRoapOK(meeting);
|
|
@@ -333,23 +248,98 @@ var TurnDiscovery = exports.default = /*#__PURE__*/function () {
|
|
|
333
248
|
reason: e.message,
|
|
334
249
|
stack: e.stack
|
|
335
250
|
});
|
|
336
|
-
return {
|
|
251
|
+
return _promise.default.resolve({
|
|
337
252
|
turnServerInfo: undefined,
|
|
338
253
|
turnDiscoverySkippedReason: undefined
|
|
339
|
-
};
|
|
254
|
+
});
|
|
340
255
|
}));
|
|
341
|
-
case
|
|
256
|
+
case 6:
|
|
342
257
|
case "end":
|
|
343
|
-
return
|
|
258
|
+
return _context.stop();
|
|
344
259
|
}
|
|
345
|
-
},
|
|
260
|
+
}, _callee, this);
|
|
346
261
|
}));
|
|
347
|
-
function doTurnDiscovery(
|
|
262
|
+
function doTurnDiscovery(_x, _x2) {
|
|
348
263
|
return _doTurnDiscovery.apply(this, arguments);
|
|
349
264
|
}
|
|
350
265
|
return doTurnDiscovery;
|
|
351
|
-
}()
|
|
266
|
+
}()
|
|
267
|
+
/**
|
|
268
|
+
* Gets the reason why reachability is skipped.
|
|
269
|
+
*
|
|
270
|
+
* @param {Meeting} meeting
|
|
271
|
+
* @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
|
|
272
|
+
*/
|
|
273
|
+
}, {
|
|
274
|
+
key: "getSkipReason",
|
|
275
|
+
value: function () {
|
|
276
|
+
var _getSkipReason = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(meeting) {
|
|
277
|
+
var isAnyClusterReachable;
|
|
278
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
279
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
280
|
+
case 0:
|
|
281
|
+
_context2.next = 2;
|
|
282
|
+
return meeting.webex.meetings.reachability.isAnyClusterReachable();
|
|
283
|
+
case 2:
|
|
284
|
+
isAnyClusterReachable = _context2.sent;
|
|
285
|
+
if (!isAnyClusterReachable) {
|
|
286
|
+
_context2.next = 6;
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery');
|
|
290
|
+
return _context2.abrupt("return", 'reachability');
|
|
291
|
+
case 6:
|
|
292
|
+
if (meeting.config.experimental.enableTurnDiscovery) {
|
|
293
|
+
_context2.next = 9;
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
_loggerProxy.default.logger.info('Roap:turnDiscovery#getSkipReason --> TURN discovery disabled in config, skipping it');
|
|
297
|
+
return _context2.abrupt("return", 'config');
|
|
298
|
+
case 9:
|
|
299
|
+
return _context2.abrupt("return", '');
|
|
300
|
+
case 10:
|
|
301
|
+
case "end":
|
|
302
|
+
return _context2.stop();
|
|
303
|
+
}
|
|
304
|
+
}, _callee2);
|
|
305
|
+
}));
|
|
306
|
+
function getSkipReason(_x3) {
|
|
307
|
+
return _getSkipReason.apply(this, arguments);
|
|
308
|
+
}
|
|
309
|
+
return getSkipReason;
|
|
310
|
+
}()
|
|
311
|
+
/**
|
|
312
|
+
* Checks if TURN discovery is skipped.
|
|
313
|
+
*
|
|
314
|
+
* @param {Meeting} meeting
|
|
315
|
+
* @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
|
|
316
|
+
*/
|
|
317
|
+
}, {
|
|
318
|
+
key: "isSkipped",
|
|
319
|
+
value: function () {
|
|
320
|
+
var _isSkipped = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(meeting) {
|
|
321
|
+
var skipReason;
|
|
322
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
323
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
324
|
+
case 0:
|
|
325
|
+
_context3.next = 2;
|
|
326
|
+
return this.getSkipReason(meeting);
|
|
327
|
+
case 2:
|
|
328
|
+
skipReason = _context3.sent;
|
|
329
|
+
return _context3.abrupt("return", !!skipReason);
|
|
330
|
+
case 4:
|
|
331
|
+
case "end":
|
|
332
|
+
return _context3.stop();
|
|
333
|
+
}
|
|
334
|
+
}, _callee3, this);
|
|
335
|
+
}));
|
|
336
|
+
function isSkipped(_x4) {
|
|
337
|
+
return _isSkipped.apply(this, arguments);
|
|
338
|
+
}
|
|
339
|
+
return isSkipped;
|
|
340
|
+
}()
|
|
352
341
|
}]);
|
|
353
342
|
return TurnDiscovery;
|
|
354
343
|
}();
|
|
344
|
+
exports.default = TurnDiscovery;
|
|
355
345
|
//# sourceMappingURL=turnDiscovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_common","require","_metrics","_interopRequireDefault","_constants","_loggerProxy","_constants2","_util","TURN_DISCOVERY_TIMEOUT","TURN_DISCOVERY_SEQ","TurnDiscovery","exports","default","roapRequest","_classCallCheck2","_defineProperty2","turnInfo","url","username","password","_createClass2","key","value","waitForTurnDiscoveryResponse","defer","LoggerProxy","logger","warn","_promise","reject","Error","responseTimer","setTimeout","concat","info","promise","handleTurnDiscoveryResponse","roapMessage","_this","headers","expectedHeaders","headerName","field","foundHeaders","forEach","receivedHeader","expectedHeader","startsWith","substring","length","clearTimeout","undefined","_stringify","resolve","sendRoapTurnDiscoveryRequest","meeting","isReconnecting","_meeting$audio","_meeting$video","Defer","messageType","ROAP","ROAP_TYPES","TURN_DISCOVERY_REQUEST","version","ROAP_VERSION","seq","sendRoap","locusSelfUrl","selfUrl","mediaId","audioMuted","audio","isLocallyMuted","videoMuted","video","meetingId","id","locusMediaRequest","ipVersion","MeetingUtil","getIpVersion","webex","then","_ref","mediaConnections","updateMediaConnections","sendRoapOK","_meeting$audio2","_meeting$video2","OK","_getSkipReason","_asyncToGenerator2","_regenerator","mark","_callee","isAnyPublicClusterReachable","wrap","_callee$","_context","prev","next","meetings","reachability","sent","abrupt","stop","getSkipReason","_x","apply","arguments","_isSkipped","_callee2","skipReason","_callee2$","_context2","isSkipped","_x2","_doTurnDiscovery","_callee3","isForced","_this2","turnDiscoverySkippedReason","_callee3$","_context3","turnServerInfo","catch","e","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","TURN_DISCOVERY_FAILURE","correlation_id","correlationId","locus_id","locusUrl","split","pop","reason","message","stack","doTurnDiscovery","_x3","_x4","_x5"],"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';\nimport MeetingUtil from '../meeting/util';\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 audioMuted: meeting.audio?.isLocallyMuted(),\n videoMuted: meeting.video?.isLocallyMuted(),\n meetingId: meeting.id,\n locusMediaRequest: meeting.locusMediaRequest,\n // @ts-ignore - because of meeting.webex\n ipVersion: MeetingUtil.getIpVersion(meeting.webex),\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 audioMuted: meeting.audio?.isLocallyMuted(),\n videoMuted: meeting.video?.isLocallyMuted(),\n locusMediaRequest: meeting.locusMediaRequest,\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 const isAnyPublicClusterReachable =\n // @ts-ignore - fix type\n await meeting.webex.meetings.reachability.isAnyPublicClusterReachable();\n\n if (isAnyPublicClusterReachable) {\n LoggerProxy.logger.info(\n 'Roap:turnDiscovery#getSkipReason --> reachability has not failed, skipping TURN discovery'\n );\n\n return 'reachability';\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 * @param {Boolean} [isForced]\n * @returns {Promise}\n */\n async doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean, isForced?: boolean) {\n let turnDiscoverySkippedReason: string;\n\n if (!isForced) {\n turnDiscoverySkippedReason = await this.getSkipReason(meeting);\n }\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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"}
|
|
1
|
+
{"version":3,"names":["_common","require","_metrics","_interopRequireDefault","_constants","_loggerProxy","_constants2","TURN_DISCOVERY_TIMEOUT","TurnDiscovery","roapRequest","_classCallCheck2","default","_defineProperty2","turnInfo","url","username","password","_createClass2","key","value","waitForTurnDiscoveryResponse","defer","LoggerProxy","logger","warn","_promise","reject","Error","responseTimer","setTimeout","concat","info","promise","handleTurnDiscoveryResponse","roapMessage","_this","headers","expectedHeaders","headerName","field","foundHeaders","forEach","receivedHeader","expectedHeader","startsWith","substring","length","clearTimeout","undefined","_stringify","resolve","sendRoapTurnDiscoveryRequest","meeting","isReconnecting","_meeting$audio","_meeting$video","seq","roapSeq","Defer","messageType","ROAP","ROAP_TYPES","TURN_DISCOVERY_REQUEST","version","ROAP_VERSION","sendRoap","correlationId","locusSelfUrl","selfUrl","mediaId","audioMuted","audio","isLocallyMuted","videoMuted","video","meetingId","id","then","_ref","mediaConnections","setRoapSeq","updateMediaConnections","sendRoapOK","_meeting$audio2","_meeting$video2","OK","_doTurnDiscovery","_asyncToGenerator2","_regenerator","mark","_callee","_this2","turnDiscoverySkippedReason","wrap","_callee$","_context","prev","next","getSkipReason","sent","abrupt","turnServerInfo","catch","e","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","TURN_DISCOVERY_FAILURE","correlation_id","locus_id","locusUrl","split","pop","reason","message","stack","stop","doTurnDiscovery","_x","_x2","apply","arguments","_getSkipReason","_callee2","isAnyClusterReachable","_callee2$","_context2","webex","meetings","reachability","config","experimental","enableTurnDiscovery","_x3","_isSkipped","_callee3","skipReason","_callee3$","_context3","isSkipped","_x4","exports"],"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/**\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 private sendRoapTurnDiscoveryRequest(meeting: Meeting, isReconnecting: boolean) {\n const seq = meeting.roapSeq + 1;\n\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,\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.audio?.isLocallyMuted(),\n videoMuted: meeting.video?.isLocallyMuted(),\n meetingId: meeting.id,\n })\n .then(({mediaConnections}) => {\n meeting.setRoapSeq(seq);\n\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: meeting.roapSeq,\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.audio?.isLocallyMuted(),\n videoMuted: meeting.video?.isLocallyMuted(),\n meetingId: meeting.id,\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 * @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 Promise.resolve({turnServerInfo: undefined, turnDiscoverySkippedReason: undefined});\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"],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
10
|
+
var _peerConnectionManager = _interopRequireDefault(require("../peer-connection-manager"));
|
|
11
|
+
var _constants = require("../constants");
|
|
12
|
+
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
13
|
+
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
14
|
+
var RoapUtil = {};
|
|
15
|
+
var ROAP_ANSWER = _constants._ANSWER_.toLowerCase();
|
|
16
|
+
RoapUtil.shouldHandleMedia = function (meeting) {
|
|
17
|
+
var offer = meeting.mediaProperties.peerConnection && meeting.mediaProperties.peerConnection.signalingState === _constants.SDP.HAVE_LOCAL_OFFER;
|
|
18
|
+
if (offer) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
};
|
|
23
|
+
RoapUtil.handleError = function (pc) {
|
|
24
|
+
return _peerConnectionManager.default.rollBackLocalDescription({
|
|
25
|
+
peerConnection: pc
|
|
26
|
+
}).then(function () {
|
|
27
|
+
return _promise.default.resolve(true);
|
|
28
|
+
}).catch(function (err) {
|
|
29
|
+
_loggerProxy.default.logger.error("Roap:util#handleError --> ".concat(err));
|
|
30
|
+
return _promise.default.reject(err);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
RoapUtil.findError = function (messageType, errorType, type) {
|
|
34
|
+
return (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG) && messageType === _constants._ERROR_ && errorType === _constants._CONFLICT_;
|
|
35
|
+
};
|
|
36
|
+
RoapUtil.ensureMeeting = function (meeting, type) {
|
|
37
|
+
if (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG_SUCCESS) {
|
|
38
|
+
if (!meeting) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
};
|
|
44
|
+
RoapUtil.updatePeerConnection = function (meeting, session) {
|
|
45
|
+
return _peerConnectionManager.default.updatePeerConnection({
|
|
46
|
+
offerSdp: session.OFFER.sdps,
|
|
47
|
+
peerConnection: meeting.mediaProperties.peerConnection
|
|
48
|
+
}, {
|
|
49
|
+
meetingId: meeting.id,
|
|
50
|
+
remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel
|
|
51
|
+
}).then(function (res) {
|
|
52
|
+
meeting.roap.lastRoapOffer = session.OFFER.sdps;
|
|
53
|
+
return res;
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
RoapUtil.setRemoteDescription = function (meeting, session) {
|
|
57
|
+
_loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ".concat(meeting.correlationId));
|
|
58
|
+
if (!(meeting && meeting.mediaProperties.peerConnection)) {
|
|
59
|
+
_loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ".concat(meeting.correlationId));
|
|
60
|
+
return _promise.default.reject(new _parameter.default('Must provide a media or screen peer connection'));
|
|
61
|
+
}
|
|
62
|
+
return _peerConnectionManager.default.setRemoteSessionDetails(meeting.mediaProperties.peerConnection, ROAP_ANSWER, session.ANSWER.sdps[0], meeting.id).then(function () {
|
|
63
|
+
_loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Success for correlationId: ".concat(meeting.correlationId));
|
|
64
|
+
return {
|
|
65
|
+
seq: session.ANSWER.seq,
|
|
66
|
+
mediaId: meeting.mediaId,
|
|
67
|
+
correlationId: meeting.correlationId
|
|
68
|
+
};
|
|
69
|
+
}).catch(function (err) {
|
|
70
|
+
_loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> ".concat(err));
|
|
71
|
+
throw err;
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
var _default = RoapUtil;
|
|
75
|
+
exports.default = _default;
|
|
76
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_peerConnectionManager","_interopRequireDefault","require","_constants","_loggerProxy","_parameter","RoapUtil","ROAP_ANSWER","_ANSWER_","toLowerCase","shouldHandleMedia","meeting","offer","mediaProperties","peerConnection","signalingState","SDP","HAVE_LOCAL_OFFER","handleError","pc","PeerConnectionManager","rollBackLocalDescription","then","_promise","default","resolve","catch","err","LoggerProxy","logger","error","concat","reject","findError","messageType","errorType","type","ROAP","RECEIVE_ROAP_MSG","SEND_ROAP_MSG","_ERROR_","_CONFLICT_","ensureMeeting","SEND_ROAP_MSG_SUCCESS","updatePeerConnection","session","offerSdp","OFFER","sdps","meetingId","id","remoteQualityLevel","res","roap","lastRoapOffer","setRemoteDescription","info","correlationId","ParameterError","setRemoteSessionDetails","ANSWER","seq","mediaId","_default","exports"],"sources":["util.ts"],"sourcesContent":["import PeerConnectionManager from '../peer-connection-manager';\nimport {_ANSWER_, _ERROR_, _CONFLICT_, ROAP, SDP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\n\nconst RoapUtil: any = {};\nconst ROAP_ANSWER = _ANSWER_.toLowerCase();\n\nRoapUtil.shouldHandleMedia = (meeting) => {\n const offer =\n meeting.mediaProperties.peerConnection &&\n meeting.mediaProperties.peerConnection.signalingState === SDP.HAVE_LOCAL_OFFER;\n\n if (offer) {\n return false;\n }\n\n return true;\n};\n\nRoapUtil.handleError = (pc) =>\n PeerConnectionManager.rollBackLocalDescription({peerConnection: pc})\n .then(() => Promise.resolve(true))\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#handleError --> ${err}`);\n\n return Promise.reject(err);\n });\n\nRoapUtil.findError = (messageType, errorType, type) =>\n (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG) &&\n messageType === _ERROR_ &&\n errorType === _CONFLICT_;\n\nRoapUtil.ensureMeeting = (meeting, type) => {\n if (\n type === ROAP.RECEIVE_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG_SUCCESS\n ) {\n if (!meeting) {\n return false;\n }\n }\n\n return true;\n};\n\nRoapUtil.updatePeerConnection = (meeting, session) =>\n PeerConnectionManager.updatePeerConnection(\n {\n offerSdp: session.OFFER.sdps,\n peerConnection: meeting.mediaProperties.peerConnection,\n },\n {\n meetingId: meeting.id,\n remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel,\n }\n ).then((res) => {\n meeting.roap.lastRoapOffer = session.OFFER.sdps;\n\n return res;\n });\n\nRoapUtil.setRemoteDescription = (meeting, session) => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ${meeting.correlationId}`\n );\n if (!(meeting && meeting.mediaProperties.peerConnection)) {\n LoggerProxy.logger.error(\n `Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ${meeting.correlationId}`\n );\n\n return Promise.reject(new ParameterError('Must provide a media or screen peer connection'));\n }\n\n return PeerConnectionManager.setRemoteSessionDetails(\n meeting.mediaProperties.peerConnection,\n ROAP_ANSWER,\n session.ANSWER.sdps[0],\n meeting.id\n )\n .then(() => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Success for correlationId: ${meeting.correlationId}`\n );\n\n return {\n seq: session.ANSWER.seq,\n mediaId: meeting.mediaId,\n correlationId: meeting.correlationId,\n };\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> ${err}`);\n throw err;\n });\n};\n\nexport default RoapUtil;\n"],"mappings":"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"}
|