@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
2
|
-
import {HTTP_VERBS, RESOURCE, API
|
|
2
|
+
import {HTTP_VERBS, RESOURCE, API} from '../constants';
|
|
3
3
|
|
|
4
4
|
export interface ClusterNode {
|
|
5
5
|
isVideoMesh: boolean;
|
|
@@ -28,40 +28,31 @@ class ReachabilityRequest {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* gets the cluster information
|
|
32
32
|
*
|
|
33
|
-
* @param {
|
|
33
|
+
* @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
|
|
34
34
|
* @returns {Promise}
|
|
35
35
|
*/
|
|
36
|
-
getClusters = (
|
|
36
|
+
getClusters = (): Promise<ClusterList> =>
|
|
37
37
|
this.webex
|
|
38
38
|
.request({
|
|
39
39
|
method: HTTP_VERBS.GET,
|
|
40
40
|
shouldRefreshAccessToken: false,
|
|
41
41
|
api: API.CALLIOPEDISCOVERY,
|
|
42
42
|
resource: RESOURCE.CLUSTERS,
|
|
43
|
-
qs: {
|
|
44
|
-
JCSupport: 1,
|
|
45
|
-
ipver: ipVersion,
|
|
46
|
-
},
|
|
47
43
|
})
|
|
48
44
|
.then((res) => {
|
|
49
|
-
const {clusters
|
|
45
|
+
const {clusters} = res.body;
|
|
50
46
|
|
|
51
47
|
Object.keys(clusters).forEach((key) => {
|
|
52
|
-
clusters[key].isVideoMesh =
|
|
48
|
+
clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
|
|
53
49
|
});
|
|
54
50
|
|
|
55
51
|
LoggerProxy.logger.log(
|
|
56
|
-
`Reachability:request#getClusters --> get clusters
|
|
57
|
-
clusters
|
|
58
|
-
)}`
|
|
52
|
+
`Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`
|
|
59
53
|
);
|
|
60
54
|
|
|
61
|
-
return
|
|
62
|
-
clusters,
|
|
63
|
-
joinCookie,
|
|
64
|
-
};
|
|
55
|
+
return clusters;
|
|
65
56
|
});
|
|
66
57
|
|
|
67
58
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {Reaction,
|
|
1
|
+
import {Reaction, ReactionType, SkinTone, SkinToneType} from './reactions.type';
|
|
2
2
|
|
|
3
|
-
const Reactions: Record<
|
|
3
|
+
const Reactions: Record<ReactionType, Reaction> = {
|
|
4
4
|
smile: {
|
|
5
5
|
type: 'smile',
|
|
6
6
|
codepoints: '1F642',
|
|
@@ -31,12 +31,12 @@ const Reactions: Record<ReactionServerType, Reaction> = {
|
|
|
31
31
|
codepoints: '1F44F',
|
|
32
32
|
shortcodes: ':clap:',
|
|
33
33
|
},
|
|
34
|
-
|
|
34
|
+
thumbs_up: {
|
|
35
35
|
type: 'thumb_up',
|
|
36
36
|
codepoints: '1F44D',
|
|
37
37
|
shortcodes: ':thumbsup:',
|
|
38
38
|
},
|
|
39
|
-
|
|
39
|
+
thumbs_down: {
|
|
40
40
|
type: 'thumb_down',
|
|
41
41
|
codepoints: '1F44E',
|
|
42
42
|
shortcodes: ':thumbsdown:',
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import {REACTION_RELAY_TYPES} from './constants';
|
|
2
|
-
|
|
3
1
|
export type EmoticonData = {
|
|
4
2
|
type: string;
|
|
5
3
|
codepoints?: string;
|
|
@@ -7,21 +5,20 @@ export type EmoticonData = {
|
|
|
7
5
|
};
|
|
8
6
|
|
|
9
7
|
export type SkinTone = EmoticonData;
|
|
10
|
-
|
|
8
|
+
// @ts-ignore
|
|
11
9
|
export type Reaction = EmoticonData & {
|
|
12
10
|
tone?: SkinTone;
|
|
13
11
|
};
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
export enum ReactionServerType {
|
|
13
|
+
export enum ReactionType {
|
|
17
14
|
smile = 'smile',
|
|
18
15
|
sad = 'sad',
|
|
19
16
|
wow = 'wow',
|
|
20
17
|
haha = 'haha',
|
|
21
18
|
celebrate = 'celebrate',
|
|
22
19
|
clap = 'clap',
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
thumbs_up = 'thumbs_up',
|
|
21
|
+
thumbs_down = 'thumbs_down',
|
|
25
22
|
heart = 'heart',
|
|
26
23
|
fire = 'fire',
|
|
27
24
|
prayer = 'prayer',
|
|
@@ -29,7 +26,6 @@ export enum ReactionServerType {
|
|
|
29
26
|
slow_down = 'slow_down',
|
|
30
27
|
}
|
|
31
28
|
|
|
32
|
-
// eslint-disable-next-line no-shadow
|
|
33
29
|
export enum SkinToneType {
|
|
34
30
|
normal = 'normal',
|
|
35
31
|
light = 'light',
|
|
@@ -38,25 +34,3 @@ export enum SkinToneType {
|
|
|
38
34
|
medium_dark = 'medium_dark',
|
|
39
35
|
dark = 'dark',
|
|
40
36
|
}
|
|
41
|
-
|
|
42
|
-
export type Sender = {
|
|
43
|
-
participantId: string;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
export type ProcessedReaction = {
|
|
47
|
-
reaction: Reaction;
|
|
48
|
-
sender: {
|
|
49
|
-
id: Sender['participantId'];
|
|
50
|
-
name: string;
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
type RelayEventData = {
|
|
55
|
-
relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];
|
|
56
|
-
reaction: Reaction;
|
|
57
|
-
sender: Sender;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export type RelayEvent = {
|
|
61
|
-
data: RelayEventData;
|
|
62
|
-
};
|
|
@@ -14,14 +14,16 @@ import {
|
|
|
14
14
|
_CALL_,
|
|
15
15
|
_LEFT_,
|
|
16
16
|
_ID_,
|
|
17
|
-
RECONNECTION_STATE,
|
|
18
17
|
} from '../constants';
|
|
19
18
|
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
19
|
+
import ReconnectionError from '../common/errors/reconnection';
|
|
20
20
|
import ReconnectInProgress from '../common/errors/reconnection-in-progress';
|
|
21
|
+
import PeerConnectionManager from '../peer-connection-manager';
|
|
22
|
+
import {eventType, reconnection, errorObjects} from '../metrics/config';
|
|
23
|
+
import Media from '../media';
|
|
21
24
|
import Metrics from '../metrics';
|
|
25
|
+
import RoapCollection from '../roap/collection';
|
|
22
26
|
import Meeting from '../meeting';
|
|
23
|
-
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
24
|
-
import ReconnectionError from '../common/errors/reconnection';
|
|
25
27
|
|
|
26
28
|
/**
|
|
27
29
|
* Used to indicate that the reconnect logic needs to be retried.
|
|
@@ -97,7 +99,7 @@ export default class ReconnectionManager {
|
|
|
97
99
|
|
|
98
100
|
/**
|
|
99
101
|
* @instance
|
|
100
|
-
* @type {
|
|
102
|
+
* @type {String}
|
|
101
103
|
* @private
|
|
102
104
|
* @memberof ReconnectionManager
|
|
103
105
|
*/
|
|
@@ -139,21 +141,6 @@ export default class ReconnectionManager {
|
|
|
139
141
|
this.reset();
|
|
140
142
|
}
|
|
141
143
|
|
|
142
|
-
/**
|
|
143
|
-
* @public
|
|
144
|
-
* @memberof ReconnectionManager
|
|
145
|
-
* @returns {void}
|
|
146
|
-
*/
|
|
147
|
-
resetReconnectionTimer() {
|
|
148
|
-
this.iceState.resolve();
|
|
149
|
-
this.iceState.resolve = () => {};
|
|
150
|
-
|
|
151
|
-
if (this.iceState.timer) {
|
|
152
|
-
clearTimeout(this.iceState.timer);
|
|
153
|
-
delete this.iceState.timer;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
144
|
/**
|
|
158
145
|
* Sets the iceState to connected and clears any disconnect timeouts and
|
|
159
146
|
* related timeout data within the iceState.
|
|
@@ -166,7 +153,13 @@ export default class ReconnectionManager {
|
|
|
166
153
|
if (this.iceState.disconnected) {
|
|
167
154
|
LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');
|
|
168
155
|
|
|
169
|
-
this.
|
|
156
|
+
this.iceState.resolve();
|
|
157
|
+
this.iceState.resolve = () => {};
|
|
158
|
+
|
|
159
|
+
if (this.iceState.timer) {
|
|
160
|
+
clearTimeout(this.iceState.timer);
|
|
161
|
+
delete this.iceState.timer;
|
|
162
|
+
}
|
|
170
163
|
|
|
171
164
|
this.iceState.disconnected = false;
|
|
172
165
|
}
|
|
@@ -228,53 +221,7 @@ export default class ReconnectionManager {
|
|
|
228
221
|
*/
|
|
229
222
|
public cleanUp() {
|
|
230
223
|
this.reset();
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Stop the local share stream.
|
|
235
|
-
*
|
|
236
|
-
* @param {string} reason a {@link SHARE_STOPPED_REASON}
|
|
237
|
-
* @returns {undefined}
|
|
238
|
-
* @private
|
|
239
|
-
* @memberof ReconnectionManager
|
|
240
|
-
*/
|
|
241
|
-
private async stopLocalShareStream(reason: string) {
|
|
242
|
-
await this.meeting.unpublishStreams([
|
|
243
|
-
this.meeting.mediaProperties.shareVideoStream,
|
|
244
|
-
this.meeting.mediaProperties.shareAudioStream,
|
|
245
|
-
]);
|
|
246
|
-
Trigger.trigger(
|
|
247
|
-
this.meeting,
|
|
248
|
-
{
|
|
249
|
-
file: 'reconnection-manager/index',
|
|
250
|
-
function: 'stopLocalShareStream',
|
|
251
|
-
},
|
|
252
|
-
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
253
|
-
{
|
|
254
|
-
reason,
|
|
255
|
-
}
|
|
256
|
-
);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* @public
|
|
261
|
-
* @memberof ReconnectionManager
|
|
262
|
-
* @returns {Boolean} true if reconnection operation is in progress
|
|
263
|
-
*/
|
|
264
|
-
isReconnectInProgress() {
|
|
265
|
-
return this.status === RECONNECTION.STATE.IN_PROGRESS;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Sets the reconnection status
|
|
270
|
-
*
|
|
271
|
-
* @public
|
|
272
|
-
* @param {RECONNECTION_STATE} status
|
|
273
|
-
* @memberof ReconnectionManager
|
|
274
|
-
* @returns {undefined}
|
|
275
|
-
*/
|
|
276
|
-
public setStatus(status: RECONNECTION_STATE) {
|
|
277
|
-
this.status = status;
|
|
224
|
+
this.meeting = null;
|
|
278
225
|
}
|
|
279
226
|
|
|
280
227
|
/**
|
|
@@ -339,65 +286,72 @@ export default class ReconnectionManager {
|
|
|
339
286
|
LoggerProxy.logger.info(
|
|
340
287
|
'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
|
|
341
288
|
);
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
name: 'client.media.reconnecting',
|
|
346
|
-
options: {
|
|
347
|
-
meetingId: this.meeting.id,
|
|
348
|
-
},
|
|
289
|
+
Metrics.postEvent({
|
|
290
|
+
event: eventType.MEDIA_RECONNECTING,
|
|
291
|
+
meeting: this.meeting,
|
|
349
292
|
});
|
|
350
293
|
}
|
|
351
294
|
|
|
352
|
-
return this.executeReconnection({networkDisconnect})
|
|
353
|
-
|
|
295
|
+
return this.executeReconnection({networkDisconnect})
|
|
296
|
+
.then(() => {
|
|
297
|
+
LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
|
|
354
298
|
LoggerProxy.logger.info(
|
|
355
|
-
'ReconnectionManager:index#reconnect -->
|
|
299
|
+
'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'
|
|
356
300
|
);
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
301
|
+
Metrics.postEvent({
|
|
302
|
+
event: eventType.MEDIA_RECOVERED,
|
|
303
|
+
meeting: this.meeting,
|
|
304
|
+
data: {recoveredBy: reconnection.RECOVERED_BY_NEW},
|
|
305
|
+
});
|
|
306
|
+
})
|
|
307
|
+
.catch((reconnectError) => {
|
|
308
|
+
if (reconnectError instanceof NeedsRetryError) {
|
|
309
|
+
LoggerProxy.logger.info(
|
|
310
|
+
'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
|
|
311
|
+
);
|
|
312
|
+
// Reset our reconnect status since we are looping back to the beginning
|
|
313
|
+
this.status = RECONNECTION.STATE.DEFAULT_STATUS;
|
|
314
|
+
|
|
315
|
+
// This is a network retry, so we should not log START metrics again
|
|
316
|
+
return this.reconnect({networkDisconnect: true, networkRetry: true});
|
|
317
|
+
}
|
|
372
318
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
fatal: true,
|
|
382
|
-
name: 'media-engine',
|
|
383
|
-
shownToUser: false,
|
|
384
|
-
},
|
|
385
|
-
],
|
|
386
|
-
},
|
|
387
|
-
options: {
|
|
388
|
-
meetingId: this.meeting.id,
|
|
389
|
-
},
|
|
390
|
-
});
|
|
391
|
-
if (reconnectError instanceof NeedsRejoinError) {
|
|
392
|
-
// send call aborded event with catogery as expected as we are trying to rejoin
|
|
319
|
+
// Reconnect has failed
|
|
320
|
+
LoggerProxy.logger.error(
|
|
321
|
+
'ReconnectionManager:index#reconnect --> Reconnection failed.',
|
|
322
|
+
reconnectError.message
|
|
323
|
+
);
|
|
324
|
+
LoggerProxy.logger.info(
|
|
325
|
+
'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
|
|
326
|
+
);
|
|
393
327
|
|
|
394
|
-
|
|
395
|
-
|
|
328
|
+
const reconnectMetric = {
|
|
329
|
+
event: eventType.CALL_ABORTED,
|
|
330
|
+
meeting: this.meeting,
|
|
331
|
+
data: {
|
|
332
|
+
errors: [
|
|
333
|
+
{
|
|
334
|
+
category: errorObjects.category.expected,
|
|
335
|
+
errorCode: 2008,
|
|
336
|
+
fatal: true,
|
|
337
|
+
name: errorObjects.name.mediaEngine,
|
|
338
|
+
shownToUser: false,
|
|
339
|
+
},
|
|
340
|
+
],
|
|
341
|
+
},
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
Metrics.postEvent(reconnectMetric);
|
|
345
|
+
if (reconnectError instanceof NeedsRejoinError) {
|
|
346
|
+
// send call aborded event with catogery as expected as we are trying to rejoin
|
|
347
|
+
|
|
348
|
+
if (this.autoRejoinEnabled) {
|
|
349
|
+
return this.rejoinMeeting(reconnectError.wasSharing);
|
|
350
|
+
}
|
|
396
351
|
}
|
|
397
|
-
}
|
|
398
352
|
|
|
399
|
-
|
|
400
|
-
|
|
353
|
+
throw reconnectError;
|
|
354
|
+
});
|
|
401
355
|
}
|
|
402
356
|
|
|
403
357
|
/**
|
|
@@ -415,12 +369,6 @@ export default class ReconnectionManager {
|
|
|
415
369
|
'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
|
|
416
370
|
);
|
|
417
371
|
|
|
418
|
-
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
419
|
-
|
|
420
|
-
if (wasSharing) {
|
|
421
|
-
await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
|
|
422
|
-
}
|
|
423
|
-
|
|
424
372
|
if (networkDisconnect) {
|
|
425
373
|
try {
|
|
426
374
|
await this.reconnectMercuryWebSocket();
|
|
@@ -437,29 +385,29 @@ export default class ReconnectionManager {
|
|
|
437
385
|
}
|
|
438
386
|
}
|
|
439
387
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
388
|
+
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
389
|
+
|
|
390
|
+
try {
|
|
391
|
+
LoggerProxy.logger.info(
|
|
392
|
+
'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
|
|
393
|
+
);
|
|
394
|
+
await this.webex.meetings.syncMeetings();
|
|
395
|
+
} catch (syncError) {
|
|
396
|
+
LoggerProxy.logger.info(
|
|
397
|
+
'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
|
|
398
|
+
syncError
|
|
399
|
+
);
|
|
400
|
+
throw new NeedsRetryError(syncError);
|
|
453
401
|
}
|
|
454
402
|
|
|
455
403
|
// TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object
|
|
456
404
|
// So that on rejoin it known what parametrs it was using
|
|
457
405
|
if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
|
|
458
406
|
LoggerProxy.logger.info(
|
|
459
|
-
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely
|
|
407
|
+
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely '
|
|
460
408
|
);
|
|
461
409
|
|
|
462
|
-
throw new Error('Unable to rejoin a meeting already ended or inactive.');
|
|
410
|
+
throw new Error('Unable to rejoin a meeting already ended or inactive .');
|
|
463
411
|
}
|
|
464
412
|
|
|
465
413
|
LoggerProxy.logger.info(
|
|
@@ -479,13 +427,14 @@ export default class ReconnectionManager {
|
|
|
479
427
|
const media = await this.reconnectMedia();
|
|
480
428
|
|
|
481
429
|
LoggerProxy.logger.log(
|
|
482
|
-
'ReconnectionManager:index#executeReconnection -->
|
|
430
|
+
'ReconnectionManager:index#executeReconnection --> Media reestablished'
|
|
483
431
|
);
|
|
432
|
+
this.status = RECONNECTION.STATE.COMPLETE;
|
|
484
433
|
|
|
485
434
|
return media;
|
|
486
435
|
} catch (error) {
|
|
487
436
|
LoggerProxy.logger.error(
|
|
488
|
-
'ReconnectionManager:index#executeReconnection -->
|
|
437
|
+
'ReconnectionManager:index#executeReconnection --> Media reestablishment failed'
|
|
489
438
|
);
|
|
490
439
|
this.status = RECONNECTION.STATE.FAILURE;
|
|
491
440
|
|
|
@@ -505,12 +454,32 @@ export default class ReconnectionManager {
|
|
|
505
454
|
LoggerProxy.logger.info(
|
|
506
455
|
'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'
|
|
507
456
|
);
|
|
457
|
+
const previousCorrelationId = this.meeting.correlationId;
|
|
508
458
|
|
|
509
459
|
await this.meeting.join({rejoin: true});
|
|
510
460
|
LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
|
|
511
461
|
|
|
462
|
+
RoapCollection.deleteSession(previousCorrelationId);
|
|
463
|
+
|
|
512
464
|
if (wasSharing) {
|
|
513
|
-
|
|
465
|
+
// Stop the share streams if user tried to rejoin
|
|
466
|
+
Media.stopTracks(this.meeting.mediaProperties.shareTrack);
|
|
467
|
+
this.meeting.isSharing = false;
|
|
468
|
+
if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
|
|
469
|
+
this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;
|
|
470
|
+
}
|
|
471
|
+
this.meeting.mediaProperties.mediaDirection.sendShare = false;
|
|
472
|
+
Trigger.trigger(
|
|
473
|
+
this.meeting,
|
|
474
|
+
{
|
|
475
|
+
file: 'reconnection-manager/index',
|
|
476
|
+
function: 'rejoinMeeting',
|
|
477
|
+
},
|
|
478
|
+
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
479
|
+
{
|
|
480
|
+
reason: SHARE_STOPPED_REASON.MEETING_REJOIN,
|
|
481
|
+
}
|
|
482
|
+
);
|
|
514
483
|
}
|
|
515
484
|
} catch (joinError) {
|
|
516
485
|
this.rejoinAttempts += 1;
|
|
@@ -551,37 +520,33 @@ export default class ReconnectionManager {
|
|
|
551
520
|
* @private
|
|
552
521
|
* @memberof ReconnectionManager
|
|
553
522
|
*/
|
|
554
|
-
|
|
555
|
-
LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> do turn discovery');
|
|
556
|
-
|
|
557
|
-
// do the TURN server discovery again and ignore reachability results since the TURN server might change
|
|
558
|
-
const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true, true);
|
|
559
|
-
|
|
560
|
-
const iceServers = [];
|
|
561
|
-
|
|
562
|
-
if (turnServerResult.turnServerInfo) {
|
|
563
|
-
iceServers.push({
|
|
564
|
-
urls: turnServerResult.turnServerInfo.url,
|
|
565
|
-
username: turnServerResult.turnServerInfo.username || '',
|
|
566
|
-
credential: turnServerResult.turnServerInfo.password || '',
|
|
567
|
-
});
|
|
568
|
-
}
|
|
569
|
-
|
|
523
|
+
reconnectMedia() {
|
|
570
524
|
LoggerProxy.logger.log(
|
|
571
|
-
'ReconnectionManager:index#reconnectMedia -->
|
|
525
|
+
'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
|
|
572
526
|
);
|
|
573
527
|
|
|
574
|
-
|
|
528
|
+
return ReconnectionManager.setupPeerConnection(this.meeting)
|
|
529
|
+
.then(() =>
|
|
530
|
+
Media.attachMedia(this.meeting.mediaProperties, {
|
|
531
|
+
meetingId: this.meeting.id,
|
|
532
|
+
remoteQualityLevel: this.meeting.mediaProperties.remoteQualityLevel,
|
|
533
|
+
enableRtx: this.meeting.config.enableRtx,
|
|
534
|
+
enableExtmap: this.meeting.config.enableExtmap,
|
|
535
|
+
})
|
|
536
|
+
)
|
|
537
|
+
.then((peerConnection) => this.meeting.setRemoteStream(peerConnection))
|
|
538
|
+
.then(() => {
|
|
539
|
+
LoggerProxy.logger.log(
|
|
540
|
+
'ReconnectionManager:index#reconnectMedia --> Sending ROAP media request'
|
|
541
|
+
);
|
|
575
542
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
);
|
|
584
|
-
}
|
|
543
|
+
return this.meeting.roap.sendRoapMediaRequest({
|
|
544
|
+
sdp: this.meeting.mediaProperties.peerConnection.sdp,
|
|
545
|
+
roapSeq: this.meeting.roapSeq,
|
|
546
|
+
meeting: this.meeting,
|
|
547
|
+
reconnect: true,
|
|
548
|
+
});
|
|
549
|
+
});
|
|
585
550
|
}
|
|
586
551
|
|
|
587
552
|
/**
|
|
@@ -631,4 +596,27 @@ export default class ReconnectionManager {
|
|
|
631
596
|
throw connectError;
|
|
632
597
|
}
|
|
633
598
|
}
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* @param {Meeting} meeting
|
|
602
|
+
* @returns {undefined}
|
|
603
|
+
* @private
|
|
604
|
+
* @memberof ReconnectionManager
|
|
605
|
+
*/
|
|
606
|
+
private static async setupPeerConnection(meeting: Meeting) {
|
|
607
|
+
LoggerProxy.logger.log(
|
|
608
|
+
'ReconnectionManager:index#setupPeerConnection --> Begin resetting peer connection'
|
|
609
|
+
);
|
|
610
|
+
// close pcs, unset to null and create a new one with out closing any streams
|
|
611
|
+
PeerConnectionManager.close(meeting.mediaProperties.peerConnection);
|
|
612
|
+
meeting.mediaProperties.unsetPeerConnection();
|
|
613
|
+
|
|
614
|
+
const turnServerResult = await meeting.roap.doTurnDiscovery(meeting, true);
|
|
615
|
+
|
|
616
|
+
meeting.mediaProperties.reInitiatePeerconnection(turnServerResult.turnServerInfo);
|
|
617
|
+
PeerConnectionManager.setPeerConnectionEvents(meeting);
|
|
618
|
+
|
|
619
|
+
// update the peerconnection in the stats manager when ever we reconnect
|
|
620
|
+
meeting.statsAnalyzer.updatePeerconnection(meeting.mediaProperties.peerConnection);
|
|
621
|
+
}
|
|
634
622
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import PermissionError from '../common/errors/permission';
|
|
2
|
-
import {CONTROLS, HTTP_VERBS
|
|
2
|
+
import {CONTROLS, HTTP_VERBS} from '../constants';
|
|
3
3
|
import MeetingRequest from '../meeting/request';
|
|
4
4
|
import RecordingAction from './enums';
|
|
5
5
|
import Util from './util';
|
|
@@ -28,14 +28,6 @@ export default class RecordingController {
|
|
|
28
28
|
*/
|
|
29
29
|
private displayHints: Array<string> = [];
|
|
30
30
|
|
|
31
|
-
/**
|
|
32
|
-
* @instance
|
|
33
|
-
* @type {Object}
|
|
34
|
-
* @private
|
|
35
|
-
* @memberof RecordingInfo
|
|
36
|
-
*/
|
|
37
|
-
private selfUserPolicies: Record<SELF_POLICY, boolean>;
|
|
38
|
-
|
|
39
31
|
/**
|
|
40
32
|
* @instance
|
|
41
33
|
* @type {string}
|
|
@@ -89,6 +81,7 @@ export default class RecordingController {
|
|
|
89
81
|
|
|
90
82
|
/**
|
|
91
83
|
* @param {MeetingRequest} request
|
|
84
|
+
* @param {LocusInfo} info
|
|
92
85
|
* @returns {void}
|
|
93
86
|
* @private
|
|
94
87
|
* @memberof RecordingController
|
|
@@ -133,16 +126,6 @@ export default class RecordingController {
|
|
|
133
126
|
this.displayHints = hints;
|
|
134
127
|
}
|
|
135
128
|
|
|
136
|
-
/**
|
|
137
|
-
* @param {Object} selfUserPolicies
|
|
138
|
-
* @returns {void}
|
|
139
|
-
* @public
|
|
140
|
-
* @memberof RecordingController
|
|
141
|
-
*/
|
|
142
|
-
public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {
|
|
143
|
-
this.selfUserPolicies = selfUserPolicies;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
129
|
/**
|
|
147
130
|
* @param {string} id
|
|
148
131
|
* @returns {void}
|
|
@@ -281,7 +264,7 @@ export default class RecordingController {
|
|
|
281
264
|
);
|
|
282
265
|
|
|
283
266
|
// assumes action is proper cased (i.e., Example)
|
|
284
|
-
if (Util?.[`canUser${action}`](this.displayHints
|
|
267
|
+
if (Util?.[`canUser${action}`](this.displayHints)) {
|
|
285
268
|
if (this.serviceUrl) {
|
|
286
269
|
return this.recordingService(action);
|
|
287
270
|
}
|
|
@@ -1,34 +1,17 @@
|
|
|
1
|
-
import {DISPLAY_HINTS
|
|
1
|
+
import {DISPLAY_HINTS} from '../constants';
|
|
2
2
|
import RecordingAction from './enums';
|
|
3
|
-
import MeetingUtil from '../meeting/util';
|
|
4
3
|
|
|
5
|
-
const canUserStart = (
|
|
6
|
-
displayHints
|
|
7
|
-
userPolicies: Record<SELF_POLICY, boolean>
|
|
8
|
-
): boolean =>
|
|
9
|
-
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) &&
|
|
10
|
-
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
4
|
+
const canUserStart = (displayHints: Array<string>): boolean =>
|
|
5
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START);
|
|
11
6
|
|
|
12
|
-
const canUserPause = (
|
|
13
|
-
displayHints
|
|
14
|
-
userPolicies: Record<SELF_POLICY, boolean>
|
|
15
|
-
): boolean =>
|
|
16
|
-
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) &&
|
|
17
|
-
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
7
|
+
const canUserPause = (displayHints: Array<string>): boolean =>
|
|
8
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);
|
|
18
9
|
|
|
19
|
-
const canUserResume = (
|
|
20
|
-
displayHints
|
|
21
|
-
userPolicies: Record<SELF_POLICY, boolean>
|
|
22
|
-
): boolean =>
|
|
23
|
-
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) &&
|
|
24
|
-
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
10
|
+
const canUserResume = (displayHints: Array<string>): boolean =>
|
|
11
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME);
|
|
25
12
|
|
|
26
|
-
const canUserStop = (
|
|
27
|
-
displayHints
|
|
28
|
-
userPolicies: Record<SELF_POLICY, boolean>
|
|
29
|
-
): boolean =>
|
|
30
|
-
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) &&
|
|
31
|
-
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
13
|
+
const canUserStop = (displayHints: Array<string>): boolean =>
|
|
14
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP);
|
|
32
15
|
|
|
33
16
|
const extractLocusId = (url: string) => {
|
|
34
17
|
return url?.split('/').pop();
|