@webex/plugin-meetings 2.59.3-next.1 → 2.59.4-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +6 -6
- package/LICENSE +1 -1
- package/README.md +1204 -1204
- package/UPGRADING.md +287 -287
- package/babel.config.js +3 -3
- package/browsers.js +108 -108
- package/dist/common/browser-detection.js +2 -2
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +45 -45
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +7 -7
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +7 -7
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +8 -8
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +7 -7
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +7 -7
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +7 -7
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +6 -6
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +6 -6
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +7 -7
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +7 -7
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +42 -42
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +12 -12
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +10 -10
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +4 -4
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +18 -18
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +18 -18
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +9 -9
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +83 -83
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +27 -27
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +14 -14
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +19 -19
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +198 -198
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +50 -50
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +138 -138
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +52 -52
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +145 -145
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +49 -49
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +24 -24
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +11 -11
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1505 -1508
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +85 -85
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +143 -143
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/state.js +30 -30
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +4 -4
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +13 -13
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +50 -50
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +52 -52
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +14 -14
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +9 -9
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +20 -20
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +16 -16
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +259 -259
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +15 -15
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +29 -29
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +214 -214
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/util.js +60 -60
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +11 -11
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +277 -277
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +27 -27
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +21 -21
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +92 -92
- package/dist/metrics/index.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +65 -65
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/peer-connection-manager/index.js +87 -87
- package/dist/peer-connection-manager/index.js.map +1 -1
- package/dist/peer-connection-manager/util.js +9 -9
- package/dist/peer-connection-manager/util.js.map +1 -1
- package/dist/personal-meeting-room/index.js +67 -67
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +7 -7
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +119 -112
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +15 -15
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +112 -112
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +127 -127
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/collection.js.map +1 -1
- package/dist/roap/handler.js +27 -27
- package/dist/roap/handler.js.map +1 -1
- package/dist/roap/index.js +111 -111
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +17 -17
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/state.js +14 -14
- package/dist/roap/state.js.map +1 -1
- package/dist/roap/turnDiscovery.js +46 -46
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/util.js.map +1 -1
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +130 -130
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +15 -15
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +42 -42
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +172 -172
- package/jest.config.js +3 -3
- package/package.json +15 -15
- package/process +1 -1
- package/src/common/browser-detection.ts +39 -39
- package/src/common/collection.ts +94 -94
- package/src/common/config.ts +9 -9
- package/src/common/errors/captcha-error.ts +25 -25
- package/src/common/errors/intent-to-join.ts +27 -27
- package/src/common/errors/join-meeting.ts +32 -32
- package/src/common/errors/media.ts +25 -25
- package/src/common/errors/parameter.ts +33 -33
- package/src/common/errors/password-error.ts +25 -25
- package/src/common/errors/permission.ts +24 -24
- package/src/common/errors/reconnection-in-progress.ts +8 -8
- package/src/common/errors/reconnection.ts +25 -25
- package/src/common/errors/stats.ts +25 -25
- package/src/common/errors/webex-errors.ts +140 -140
- package/src/common/errors/webex-meetings-error.ts +35 -35
- package/src/common/events/events-scope.ts +30 -30
- package/src/common/events/events.ts +25 -25
- package/src/common/events/trigger-proxy.ts +25 -25
- package/src/common/events/util.ts +39 -39
- package/src/common/logs/logger-config.ts +8 -8
- package/src/common/logs/logger-proxy.ts +44 -44
- package/src/common/logs/request.ts +65 -65
- package/src/common/queue.ts +50 -50
- package/src/config.ts +96 -96
- package/src/constants.ts +1121 -1121
- package/src/controls-options-manager/constants.ts +5 -5
- package/src/controls-options-manager/enums.ts +6 -6
- package/src/controls-options-manager/index.ts +183 -183
- package/src/controls-options-manager/util.ts +20 -20
- package/src/index.js +15 -15
- package/src/locus-info/controlsUtils.ts +112 -112
- package/src/locus-info/embeddedAppsUtils.ts +57 -57
- package/src/locus-info/fullState.ts +69 -69
- package/src/locus-info/hostUtils.ts +60 -60
- package/src/locus-info/index.ts +1303 -1303
- package/src/locus-info/infoUtils.ts +101 -101
- package/src/locus-info/mediaSharesUtils.ts +173 -173
- package/src/locus-info/parser.ts +680 -680
- package/src/locus-info/selfUtils.ts +428 -428
- package/src/media/index.ts +675 -675
- package/src/media/properties.ts +313 -313
- package/src/media/util.ts +37 -37
- package/src/mediaQualityMetrics/config.ts +382 -382
- package/src/meeting/effectsState.ts +209 -209
- package/src/meeting/in-meeting-actions.ts +153 -153
- package/src/meeting/index.ts +6537 -6537
- package/src/meeting/muteState.ts +365 -365
- package/src/meeting/request.ts +810 -810
- package/src/meeting/state.ts +194 -194
- package/src/meeting/util.ts +530 -530
- package/src/meeting-info/collection.ts +41 -41
- package/src/meeting-info/index.ts +137 -137
- package/src/meeting-info/meeting-info-v2.ts +273 -273
- package/src/meeting-info/request.ts +46 -46
- package/src/meeting-info/util.ts +314 -314
- package/src/meeting-info/utilv2.ts +324 -324
- package/src/meetings/collection.ts +43 -43
- package/src/meetings/index.ts +1128 -1128
- package/src/meetings/request.ts +81 -81
- package/src/meetings/util.ts +181 -181
- package/src/member/index.ts +446 -446
- package/src/member/member.types.ts +13 -13
- package/src/member/util.ts +286 -286
- package/src/members/collection.ts +40 -40
- package/src/members/index.ts +900 -900
- package/src/members/request.ts +175 -175
- package/src/members/util.ts +260 -260
- package/src/metrics/config.ts +485 -485
- package/src/metrics/constants.ts +61 -61
- package/src/metrics/index.ts +543 -543
- package/src/networkQualityMonitor/index.ts +211 -211
- package/src/peer-connection-manager/index.ts +847 -847
- package/src/peer-connection-manager/util.ts +119 -119
- package/src/personal-meeting-room/index.ts +157 -157
- package/src/personal-meeting-room/request.ts +48 -48
- package/src/personal-meeting-room/util.ts +49 -49
- package/src/reachability/index.ts +478 -478
- package/src/reachability/request.ts +81 -81
- package/src/reactions/reactions.ts +104 -104
- package/src/reactions/reactions.type.ts +36 -36
- package/src/reconnection-manager/index.ts +622 -622
- package/src/recording-controller/enums.ts +8 -8
- package/src/recording-controller/index.ts +315 -315
- package/src/recording-controller/util.ts +58 -58
- package/src/roap/collection.ts +62 -62
- package/src/roap/handler.ts +294 -294
- package/src/roap/index.ts +413 -413
- package/src/roap/request.ts +229 -229
- package/src/roap/state.ts +156 -156
- package/src/roap/turnDiscovery.ts +283 -283
- package/src/roap/util.ts +100 -100
- package/src/statsAnalyzer/global.ts +128 -128
- package/src/statsAnalyzer/index.ts +1266 -1266
- package/src/statsAnalyzer/mqaUtil.ts +290 -290
- package/src/transcription/index.ts +154 -154
- package/test/integration/spec/journey.js +941 -941
- package/test/integration/spec/space-meeting.js +457 -457
- package/test/integration/spec/transcription.js +55 -55
- package/test/unit/spec/common/browser-detection.js +119 -119
- package/test/unit/spec/common/queue.js +69 -69
- package/test/unit/spec/controls-options-manager/index.js +123 -123
- package/test/unit/spec/controls-options-manager/util.js +65 -65
- package/test/unit/spec/fixture/locus.js +406 -406
- package/test/unit/spec/locus-info/controlsUtils.js +82 -82
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +104 -104
- package/test/unit/spec/locus-info/index.js +1272 -1272
- package/test/unit/spec/locus-info/infoUtils.js +138 -138
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +975 -975
- package/test/unit/spec/locus-info/lib/SeqCmp.json +522 -522
- package/test/unit/spec/locus-info/lib/selfConstant.js +286 -286
- package/test/unit/spec/locus-info/parser.js +298 -298
- package/test/unit/spec/locus-info/selfUtils.js +185 -185
- package/test/unit/spec/media/properties.ts +305 -305
- package/test/unit/spec/meeting/effectsState.js +281 -281
- package/test/unit/spec/meeting/in-meeting-actions.ts +90 -90
- package/test/unit/spec/meeting/index.js +5227 -5227
- package/test/unit/spec/meeting/muteState.js +430 -430
- package/test/unit/spec/meeting/request.js +317 -317
- package/test/unit/spec/meeting/utils.js +319 -319
- package/test/unit/spec/meeting-info/meetinginfov2.js +376 -376
- package/test/unit/spec/meeting-info/request.js +64 -64
- package/test/unit/spec/meeting-info/util.js +37 -37
- package/test/unit/spec/meeting-info/utilv2.js +330 -330
- package/test/unit/spec/meetings/collection.js +52 -52
- package/test/unit/spec/meetings/index.js +1375 -1375
- package/test/unit/spec/meetings/utils.js +66 -66
- package/test/unit/spec/member/index.js +47 -47
- package/test/unit/spec/member/util.js +80 -80
- package/test/unit/spec/members/index.js +364 -364
- package/test/unit/spec/members/request.js +200 -200
- package/test/unit/spec/members/utils.js +42 -42
- package/test/unit/spec/metrics/index.js +111 -111
- package/test/unit/spec/networkQualityMonitor/index.js +99 -99
- package/test/unit/spec/peerconnection-manager/index.js +218 -218
- package/test/unit/spec/peerconnection-manager/utils.js +49 -49
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -388
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +29 -29
- package/test/unit/spec/reachability/index.ts +50 -50
- package/test/unit/spec/reconnection-manager/index.js +206 -206
- package/test/unit/spec/recording-controller/index.js +230 -230
- package/test/unit/spec/recording-controller/util.js +101 -101
- package/test/unit/spec/roap/index.ts +128 -128
- package/test/unit/spec/roap/turnDiscovery.ts +372 -372
- package/test/unit/spec/roap/util.js +30 -30
- package/test/unit/spec/stats-analyzer/index.js +287 -287
- package/test/utils/cmr.js +104 -104
- package/test/utils/testUtils.js +287 -287
- package/test/utils/webex-config.js +77 -77
- package/test/utils/webex-test-users.js +82 -82
- package/tsconfig.json +5 -5
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -81
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -34
- package/dist/common/queue.d.ts +0 -32
- package/dist/config.d.ts +0 -73
- package/dist/constants.d.ts +0 -924
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -5
- package/dist/controls-options-manager/index.d.ts +0 -120
- package/dist/controls-options-manager/util.d.ts +0 -7
- package/dist/index.d.ts +0 -4
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -269
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -212
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -32
- package/dist/media/properties.d.ts +0 -108
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -233
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/in-meeting-actions.d.ts +0 -79
- package/dist/meeting/index.d.ts +0 -1621
- package/dist/meeting/muteState.d.ts +0 -116
- package/dist/meeting/request.d.ts +0 -255
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -2
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -57
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -23
- package/dist/meetings/index.d.ts +0 -296
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -147
- package/dist/member/member.types.d.ts +0 -11
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -24
- package/dist/members/index.d.ts +0 -298
- package/dist/members/request.d.ts +0 -50
- package/dist/members/util.d.ts +0 -2
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/constants.d.ts +0 -57
- package/dist/metrics/index.d.ts +0 -152
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/index.d.ts +0 -139
- package/dist/reachability/request.d.ts +0 -35
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -32
- package/dist/reconnection-manager/index.d.ts +0 -112
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -193
- package/dist/recording-controller/util.d.ts +0 -13
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/index.d.ts +0 -116
- package/dist/roap/request.d.ts +0 -35
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/turnDiscovery.d.ts +0 -67
- package/dist/roap/util.d.ts +0 -2
- package/dist/statsAnalyzer/global.d.ts +0 -126
- package/dist/statsAnalyzer/index.d.ts +0 -190
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
- package/dist/transcription/index.d.ts +0 -64
|
@@ -31,11 +31,11 @@ var _metrics = _interopRequireDefault(require("../metrics"));
|
|
|
31
31
|
var _collection = _interopRequireDefault(require("../roap/collection"));
|
|
32
32
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
33
33
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
34
|
-
/**
|
|
35
|
-
* Used to indicate that the reconnect logic needs to be retried.
|
|
36
|
-
*
|
|
37
|
-
* @class NeedsRetryError
|
|
38
|
-
* @extends {Error}
|
|
34
|
+
/**
|
|
35
|
+
* Used to indicate that the reconnect logic needs to be retried.
|
|
36
|
+
*
|
|
37
|
+
* @class NeedsRetryError
|
|
38
|
+
* @extends {Error}
|
|
39
39
|
*/
|
|
40
40
|
var NeedsRetryError = /*#__PURE__*/function (_Error) {
|
|
41
41
|
(0, _inherits2.default)(NeedsRetryError, _Error);
|
|
@@ -46,21 +46,21 @@ var NeedsRetryError = /*#__PURE__*/function (_Error) {
|
|
|
46
46
|
}
|
|
47
47
|
return (0, _createClass2.default)(NeedsRetryError);
|
|
48
48
|
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
49
|
-
/**
|
|
50
|
-
* Used to indicate that the meeting needs to be rejoined, not just media reconnected
|
|
51
|
-
*
|
|
52
|
-
* @class NeedsRejoinError
|
|
53
|
-
* @extends {Error}
|
|
49
|
+
/**
|
|
50
|
+
* Used to indicate that the meeting needs to be rejoined, not just media reconnected
|
|
51
|
+
*
|
|
52
|
+
* @class NeedsRejoinError
|
|
53
|
+
* @extends {Error}
|
|
54
54
|
*/
|
|
55
55
|
var NeedsRejoinError = /*#__PURE__*/function (_Error2) {
|
|
56
56
|
(0, _inherits2.default)(NeedsRejoinError, _Error2);
|
|
57
57
|
var _super2 = _createSuper(NeedsRejoinError);
|
|
58
|
-
/**
|
|
59
|
-
* Creates an instance of NeedsRejoinError.
|
|
60
|
-
* @param {Object} params
|
|
61
|
-
* @param {boolean} params.wasSharing
|
|
62
|
-
* @param {Error} params.error
|
|
63
|
-
* @memberof NeedsRejoinError
|
|
58
|
+
/**
|
|
59
|
+
* Creates an instance of NeedsRejoinError.
|
|
60
|
+
* @param {Object} params
|
|
61
|
+
* @param {boolean} params.wasSharing
|
|
62
|
+
* @param {Error} params.error
|
|
63
|
+
* @memberof NeedsRejoinError
|
|
64
64
|
*/
|
|
65
65
|
function NeedsRejoinError(_ref) {
|
|
66
66
|
var _this;
|
|
@@ -76,13 +76,13 @@ var NeedsRejoinError = /*#__PURE__*/function (_Error2) {
|
|
|
76
76
|
}
|
|
77
77
|
return (0, _createClass2.default)(NeedsRejoinError);
|
|
78
78
|
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
79
|
-
/**
|
|
80
|
-
* @export
|
|
81
|
-
* @class ReconnectionManager
|
|
79
|
+
/**
|
|
80
|
+
* @export
|
|
81
|
+
* @class ReconnectionManager
|
|
82
82
|
*/
|
|
83
83
|
var ReconnectionManager = /*#__PURE__*/function () {
|
|
84
|
-
/**
|
|
85
|
-
* @param {Meeting} meeting
|
|
84
|
+
/**
|
|
85
|
+
* @param {Meeting} meeting
|
|
86
86
|
*/
|
|
87
87
|
function ReconnectionManager(meeting) {
|
|
88
88
|
(0, _classCallCheck2.default)(this, ReconnectionManager);
|
|
@@ -95,13 +95,13 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
95
95
|
(0, _defineProperty2.default)(this, "status", void 0);
|
|
96
96
|
(0, _defineProperty2.default)(this, "tryCount", void 0);
|
|
97
97
|
(0, _defineProperty2.default)(this, "webex", void 0);
|
|
98
|
-
/**
|
|
99
|
-
* Stores ICE reconnection state data.
|
|
100
|
-
*
|
|
101
|
-
* @instance
|
|
102
|
-
* @type {Object}
|
|
103
|
-
* @private
|
|
104
|
-
* @memberof ReconnectionManager
|
|
98
|
+
/**
|
|
99
|
+
* Stores ICE reconnection state data.
|
|
100
|
+
*
|
|
101
|
+
* @instance
|
|
102
|
+
* @type {Object}
|
|
103
|
+
* @private
|
|
104
|
+
* @memberof ReconnectionManager
|
|
105
105
|
*/
|
|
106
106
|
this.iceState = {
|
|
107
107
|
disconnected: false,
|
|
@@ -111,35 +111,35 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
111
111
|
timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout
|
|
112
112
|
};
|
|
113
113
|
|
|
114
|
-
/**
|
|
115
|
-
* @instance
|
|
116
|
-
* @type {String}
|
|
117
|
-
* @private
|
|
118
|
-
* @memberof ReconnectionManager
|
|
114
|
+
/**
|
|
115
|
+
* @instance
|
|
116
|
+
* @type {String}
|
|
117
|
+
* @private
|
|
118
|
+
* @memberof ReconnectionManager
|
|
119
119
|
*/
|
|
120
120
|
this.status = _constants.RECONNECTION.STATE.DEFAULT_STATUS;
|
|
121
|
-
/**
|
|
122
|
-
* @instance
|
|
123
|
-
* @type {Number}
|
|
124
|
-
* @private
|
|
125
|
-
* @memberof ReconnectionManager
|
|
121
|
+
/**
|
|
122
|
+
* @instance
|
|
123
|
+
* @type {Number}
|
|
124
|
+
* @private
|
|
125
|
+
* @memberof ReconnectionManager
|
|
126
126
|
*/
|
|
127
127
|
this.tryCount = _constants.RECONNECTION.STATE.DEFAULT_TRY_COUNT;
|
|
128
|
-
/**
|
|
129
|
-
* @instance
|
|
130
|
-
* @type {Object}
|
|
131
|
-
* @private
|
|
132
|
-
* @memberof ReconnectionManager
|
|
128
|
+
/**
|
|
129
|
+
* @instance
|
|
130
|
+
* @type {Object}
|
|
131
|
+
* @private
|
|
132
|
+
* @memberof ReconnectionManager
|
|
133
133
|
*/
|
|
134
134
|
// TODO : change this logic to not save the meeting instance
|
|
135
135
|
// It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date
|
|
136
136
|
// @ts-ignore
|
|
137
137
|
this.webex = meeting.webex;
|
|
138
|
-
/**
|
|
139
|
-
* @instance
|
|
140
|
-
* @type {Meeting}
|
|
141
|
-
* @private
|
|
142
|
-
* @memberof ReconnectionManager
|
|
138
|
+
/**
|
|
139
|
+
* @instance
|
|
140
|
+
* @type {Meeting}
|
|
141
|
+
* @private
|
|
142
|
+
* @memberof ReconnectionManager
|
|
143
143
|
*/
|
|
144
144
|
// TODO: try removing the circular dependency for meeting and reconnection manager
|
|
145
145
|
// try moving this to meetings collection
|
|
@@ -155,13 +155,13 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
155
155
|
this.reset();
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
/**
|
|
159
|
-
* Sets the iceState to connected and clears any disconnect timeouts and
|
|
160
|
-
* related timeout data within the iceState.
|
|
161
|
-
*
|
|
162
|
-
* @returns {undefined}
|
|
163
|
-
* @public
|
|
164
|
-
* @memberof ReconnectionManager
|
|
158
|
+
/**
|
|
159
|
+
* Sets the iceState to connected and clears any disconnect timeouts and
|
|
160
|
+
* related timeout data within the iceState.
|
|
161
|
+
*
|
|
162
|
+
* @returns {undefined}
|
|
163
|
+
* @public
|
|
164
|
+
* @memberof ReconnectionManager
|
|
165
165
|
*/
|
|
166
166
|
(0, _createClass2.default)(ReconnectionManager, [{
|
|
167
167
|
key: "iceReconnected",
|
|
@@ -178,15 +178,15 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
/**
|
|
182
|
-
* Set the iceState to disconnected and generates a timeout that waits for the
|
|
183
|
-
* iceState to reconnect and then resolves. If the ice state is already
|
|
184
|
-
* processing a reconnect, it immediately resolves. Rejects if the timeout
|
|
185
|
-
* duration is reached.
|
|
186
|
-
*
|
|
187
|
-
* @returns {Promise<undefined>}
|
|
188
|
-
* @public
|
|
189
|
-
* @memberof ReconnectionManager
|
|
181
|
+
/**
|
|
182
|
+
* Set the iceState to disconnected and generates a timeout that waits for the
|
|
183
|
+
* iceState to reconnect and then resolves. If the ice state is already
|
|
184
|
+
* processing a reconnect, it immediately resolves. Rejects if the timeout
|
|
185
|
+
* duration is reached.
|
|
186
|
+
*
|
|
187
|
+
* @returns {Promise<undefined>}
|
|
188
|
+
* @public
|
|
189
|
+
* @memberof ReconnectionManager
|
|
190
190
|
*/
|
|
191
191
|
}, {
|
|
192
192
|
key: "waitForIceReconnect",
|
|
@@ -212,10 +212,10 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
212
212
|
return _promise.default.resolve();
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
/**
|
|
216
|
-
* @returns {undefined}
|
|
217
|
-
* @public
|
|
218
|
-
* @memberof ReconnectionManager
|
|
215
|
+
/**
|
|
216
|
+
* @returns {undefined}
|
|
217
|
+
* @public
|
|
218
|
+
* @memberof ReconnectionManager
|
|
219
219
|
*/
|
|
220
220
|
}, {
|
|
221
221
|
key: "reset",
|
|
@@ -225,10 +225,10 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
225
225
|
this.rejoinAttempts = _constants.RECONNECTION.STATE.DEFAULT_TRY_COUNT;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
/**
|
|
229
|
-
* @returns {undefined}
|
|
230
|
-
* @public
|
|
231
|
-
* @memberof ReconnectionManager
|
|
228
|
+
/**
|
|
229
|
+
* @returns {undefined}
|
|
230
|
+
* @public
|
|
231
|
+
* @memberof ReconnectionManager
|
|
232
232
|
*/
|
|
233
233
|
}, {
|
|
234
234
|
key: "cleanUp",
|
|
@@ -237,11 +237,11 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
237
237
|
this.meeting = null;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
/**
|
|
241
|
-
* @returns {Boolean}
|
|
242
|
-
* @throws {ReconnectionError}
|
|
243
|
-
* @private
|
|
244
|
-
* @memberof ReconnectionManager
|
|
240
|
+
/**
|
|
241
|
+
* @returns {Boolean}
|
|
242
|
+
* @throws {ReconnectionError}
|
|
243
|
+
* @private
|
|
244
|
+
* @memberof ReconnectionManager
|
|
245
245
|
*/
|
|
246
246
|
}, {
|
|
247
247
|
key: "validate",
|
|
@@ -257,14 +257,14 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
257
257
|
throw new _reconnection.default('Reconnection is not enabled.');
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
/**
|
|
261
|
-
* Initiates a media reconnect for the active meeting
|
|
262
|
-
* @param {Object} reconnectOptions
|
|
263
|
-
* @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened
|
|
264
|
-
* @param {boolean} [reconnectOptions.networkRetry=false] indicates if we are retrying the reconnect
|
|
265
|
-
* @returns {Promise}
|
|
266
|
-
* @public
|
|
267
|
-
* @memberof ReconnectionManager
|
|
260
|
+
/**
|
|
261
|
+
* Initiates a media reconnect for the active meeting
|
|
262
|
+
* @param {Object} reconnectOptions
|
|
263
|
+
* @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened
|
|
264
|
+
* @param {boolean} [reconnectOptions.networkRetry=false] indicates if we are retrying the reconnect
|
|
265
|
+
* @returns {Promise}
|
|
266
|
+
* @public
|
|
267
|
+
* @memberof ReconnectionManager
|
|
268
268
|
*/
|
|
269
269
|
}, {
|
|
270
270
|
key: "reconnect",
|
|
@@ -363,13 +363,13 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
363
363
|
}
|
|
364
364
|
return reconnect;
|
|
365
365
|
}()
|
|
366
|
-
/**
|
|
367
|
-
* @param {Object} reconnectOptions
|
|
368
|
-
* @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened
|
|
369
|
-
* @returns {Promise}
|
|
370
|
-
* @throws {NeedsRetryError}
|
|
371
|
-
* @private
|
|
372
|
-
* @memberof ReconnectionManager
|
|
366
|
+
/**
|
|
367
|
+
* @param {Object} reconnectOptions
|
|
368
|
+
* @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened
|
|
369
|
+
* @returns {Promise}
|
|
370
|
+
* @throws {NeedsRetryError}
|
|
371
|
+
* @private
|
|
372
|
+
* @memberof ReconnectionManager
|
|
373
373
|
*/
|
|
374
374
|
}, {
|
|
375
375
|
key: "executeReconnection",
|
|
@@ -463,12 +463,12 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
463
463
|
}
|
|
464
464
|
return executeReconnection;
|
|
465
465
|
}()
|
|
466
|
-
/**
|
|
467
|
-
* Rejoins a meeting after detecting the member was in a LEFT state
|
|
468
|
-
*
|
|
469
|
-
* @async
|
|
470
|
-
* @param {boolean} wasSharing
|
|
471
|
-
* @returns {Promise}
|
|
466
|
+
/**
|
|
467
|
+
* Rejoins a meeting after detecting the member was in a LEFT state
|
|
468
|
+
*
|
|
469
|
+
* @async
|
|
470
|
+
* @param {boolean} wasSharing
|
|
471
|
+
* @returns {Promise}
|
|
472
472
|
*/
|
|
473
473
|
}, {
|
|
474
474
|
key: "rejoinMeeting",
|
|
@@ -552,10 +552,10 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
552
552
|
}
|
|
553
553
|
return rejoinMeeting;
|
|
554
554
|
}()
|
|
555
|
-
/**
|
|
556
|
-
* @returns {Promise}
|
|
557
|
-
* @private
|
|
558
|
-
* @memberof ReconnectionManager
|
|
555
|
+
/**
|
|
556
|
+
* @returns {Promise}
|
|
557
|
+
* @private
|
|
558
|
+
* @memberof ReconnectionManager
|
|
559
559
|
*/
|
|
560
560
|
}, {
|
|
561
561
|
key: "reconnectMedia",
|
|
@@ -582,11 +582,11 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
582
582
|
});
|
|
583
583
|
}
|
|
584
584
|
|
|
585
|
-
/**
|
|
586
|
-
* Attempt to Reconnect Mercury Websocket
|
|
587
|
-
* @returns {Promise}
|
|
588
|
-
* @private
|
|
589
|
-
* @memberof ReconnectionManager
|
|
585
|
+
/**
|
|
586
|
+
* Attempt to Reconnect Mercury Websocket
|
|
587
|
+
* @returns {Promise}
|
|
588
|
+
* @private
|
|
589
|
+
* @memberof ReconnectionManager
|
|
590
590
|
*/
|
|
591
591
|
}, {
|
|
592
592
|
key: "reconnectMercuryWebSocket",
|
|
@@ -640,11 +640,11 @@ var ReconnectionManager = /*#__PURE__*/function () {
|
|
|
640
640
|
}
|
|
641
641
|
return reconnectMercuryWebSocket;
|
|
642
642
|
}()
|
|
643
|
-
/**
|
|
644
|
-
* @param {Meeting} meeting
|
|
645
|
-
* @returns {undefined}
|
|
646
|
-
* @private
|
|
647
|
-
* @memberof ReconnectionManager
|
|
643
|
+
/**
|
|
644
|
+
* @param {Meeting} meeting
|
|
645
|
+
* @returns {undefined}
|
|
646
|
+
* @private
|
|
647
|
+
* @memberof ReconnectionManager
|
|
648
648
|
*/
|
|
649
649
|
}], [{
|
|
650
650
|
key: "setupPeerConnection",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_triggerProxy","_constants","_constants2","_reconnection","_reconnectionInProgress","_peerConnectionManager","_config","_media","_metrics","_collection","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","NeedsRetryError","_Error","_inherits2","_super","_classCallCheck2","_createClass2","_wrapNativeSuper2","Error","NeedsRejoinError","_Error2","_super2","_ref","_this","wasSharing","_ref$error","error","_defineProperty2","_assertThisInitialized2","ReconnectionManager","meeting","iceState","disconnected","resolve","timer","undefined","timeoutDuration","config","reconnection","iceReconnectionTimeout","status","RECONNECTION","STATE","DEFAULT_STATUS","tryCount","DEFAULT_TRY_COUNT","webex","maxRejoinAttempts","rejoinAttempts","autoRejoinEnabled","autoRejoin","reset","key","value","iceReconnected","LoggerProxy","logger","log","clearTimeout","waitForIceReconnect","_this2","_promise","reject","setTimeout","concat","cleanUp","validate","enabled","COMPLETE","info","ReconnectInProgress","ReconnectionError","_reconnect","_asyncToGenerator2","_regenerator","mark","_callee","_this3","_ref2","_ref2$networkDisconne","networkDisconnect","_ref2$networkRetry","networkRetry","_args","wrap","_callee$","_context","prev","next","length","id","t0","Metrics","postEvent","event","eventType","MEDIA_RECONNECTING","abrupt","executeReconnection","then","MEDIA_RECOVERED","data","recoveredBy","RECOVERED_BY_NEW","catch","reconnectError","reconnect","message","reconnectMetric","CALL_ABORTED","errors","category","errorObjects","expected","errorCode","fatal","name","mediaEngine","shownToUser","rejoinMeeting","stop","_executeReconnection","_callee2","_ref3","_ref3$networkDisconne","media","_callee2$","_context2","IN_PROGRESS","reconnectMercuryWebSocket","internal","device","url","FAILURE","shareStatus","SHARE_STATUS","LOCAL_SHARE_ACTIVE","meetings","syncMeetings","t1","getMeetingByType","_ID_","state","_LEFT_","type","_CALL_","reconnectMedia","sent","t2","_x","_rejoinMeeting","_callee3","previousCorrelationId","_args3","_callee3$","_context3","correlationId","join","rejoin","RoapCollection","deleteSession","Media","stopTracks","mediaProperties","shareTrack","isSharing","NO_SHARE","mediaDirection","sendShare","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_STOPPED_SHARING_LOCAL","reason","SHARE_STOPPED_REASON","MEETING_REJOIN","sendBehavioralMetric","BEHAVIORAL_METRICS","MEETING_MAX_REJOIN_FAILURE","locus_id","locusUrl","split","pop","stack","_this4","setupPeerConnection","attachMedia","meetingId","remoteQualityLevel","enableRtx","enableExtmap","peerConnection","setRemoteStream","roap","sendRoapMediaRequest","sdp","roapSeq","_reconnectMercuryWebSocket","_callee4","_callee4$","_context4","mercury","connected","disconnect","connect","_setupPeerConnection","_callee5","turnServerResult","_callee5$","_context5","PeerConnectionManager","close","unsetPeerConnection","doTurnDiscovery","reInitiatePeerconnection","turnServerInfo","setPeerConnectionEvents","statsAnalyzer","updatePeerconnection","_x2","exports"],"sources":["index.ts"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\n/* eslint-disable no-warning-comments */\r\n\r\nimport LoggerProxy from '../common/logs/logger-proxy';\r\nimport Trigger from '../common/events/trigger-proxy';\r\nimport {\r\n EVENT_TRIGGERS,\r\n RECONNECTION,\r\n SHARE_STATUS,\r\n SHARE_STOPPED_REASON,\r\n _CALL_,\r\n _LEFT_,\r\n _ID_,\r\n} from '../constants';\r\nimport BEHAVIORAL_METRICS from '../metrics/constants';\r\nimport ReconnectionError from '../common/errors/reconnection';\r\nimport ReconnectInProgress from '../common/errors/reconnection-in-progress';\r\nimport PeerConnectionManager from '../peer-connection-manager';\r\nimport {eventType, reconnection, errorObjects} from '../metrics/config';\r\nimport Media from '../media';\r\nimport Metrics from '../metrics';\r\nimport RoapCollection from '../roap/collection';\r\nimport Meeting from '../meeting';\r\n\r\n/**\r\n * Used to indicate that the reconnect logic needs to be retried.\r\n *\r\n * @class NeedsRetryError\r\n * @extends {Error}\r\n */\r\nclass NeedsRetryError extends Error {}\r\n\r\n/**\r\n * Used to indicate that the meeting needs to be rejoined, not just media reconnected\r\n *\r\n * @class NeedsRejoinError\r\n * @extends {Error}\r\n */\r\nclass NeedsRejoinError extends Error {\r\n wasSharing: any;\r\n\r\n /**\r\n * Creates an instance of NeedsRejoinError.\r\n * @param {Object} params\r\n * @param {boolean} params.wasSharing\r\n * @param {Error} params.error\r\n * @memberof NeedsRejoinError\r\n */\r\n constructor({\r\n wasSharing,\r\n error = new Error('Meeting needs to be rejoined'),\r\n }: {\r\n wasSharing?: boolean;\r\n error?: Error;\r\n }) {\r\n // @ts-ignore\r\n super(error);\r\n\r\n this.wasSharing = wasSharing;\r\n }\r\n}\r\n\r\n/**\r\n * @export\r\n * @class ReconnectionManager\r\n */\r\nexport default class ReconnectionManager {\r\n autoRejoinEnabled: any;\r\n iceState: any;\r\n maxRejoinAttempts: any;\r\n meeting: any;\r\n rejoinAttempts: any;\r\n shareStatus: any;\r\n status: any;\r\n tryCount: any;\r\n webex: any;\r\n /**\r\n * @param {Meeting} meeting\r\n */\r\n constructor(meeting: Meeting) {\r\n /**\r\n * Stores ICE reconnection state data.\r\n *\r\n * @instance\r\n * @type {Object}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n this.iceState = {\r\n disconnected: false,\r\n resolve: () => {},\r\n timer: undefined,\r\n // @ts-ignore\r\n timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout,\r\n };\r\n\r\n /**\r\n * @instance\r\n * @type {String}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\r\n /**\r\n * @instance\r\n * @type {Number}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\r\n /**\r\n * @instance\r\n * @type {Object}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n // TODO : change this logic to not save the meeting instance\r\n // It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date\r\n // @ts-ignore\r\n this.webex = meeting.webex;\r\n /**\r\n * @instance\r\n * @type {Meeting}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n // TODO: try removing the circular dependency for meeting and reconnection manager\r\n // try moving this to meetings collection\r\n this.meeting = meeting;\r\n\r\n // @ts-ignore\r\n this.maxRejoinAttempts = meeting.config.reconnection.maxRejoinAttempts;\r\n this.rejoinAttempts = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\r\n // @ts-ignore\r\n this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;\r\n\r\n // Make sure reconnection state is in default\r\n this.reset();\r\n }\r\n\r\n /**\r\n * Sets the iceState to connected and clears any disconnect timeouts and\r\n * related timeout data within the iceState.\r\n *\r\n * @returns {undefined}\r\n * @public\r\n * @memberof ReconnectionManager\r\n */\r\n public iceReconnected() {\r\n if (this.iceState.disconnected) {\r\n LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');\r\n\r\n this.iceState.resolve();\r\n this.iceState.resolve = () => {};\r\n\r\n if (this.iceState.timer) {\r\n clearTimeout(this.iceState.timer);\r\n delete this.iceState.timer;\r\n }\r\n\r\n this.iceState.disconnected = false;\r\n }\r\n }\r\n\r\n /**\r\n * Set the iceState to disconnected and generates a timeout that waits for the\r\n * iceState to reconnect and then resolves. If the ice state is already\r\n * processing a reconnect, it immediately resolves. Rejects if the timeout\r\n * duration is reached.\r\n *\r\n * @returns {Promise<undefined>}\r\n * @public\r\n * @memberof ReconnectionManager\r\n */\r\n public waitForIceReconnect() {\r\n if (!this.iceState.disconnected) {\r\n LoggerProxy.logger.log(\r\n 'ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect'\r\n );\r\n\r\n this.iceState.disconnected = true;\r\n\r\n return new Promise<void>((resolve, reject) => {\r\n this.iceState.timer = setTimeout(() => {\r\n if (this.iceState.disconnected === false) {\r\n resolve();\r\n } else {\r\n this.iceState.disconnected = false;\r\n reject(\r\n new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`)\r\n );\r\n }\r\n }, this.iceState.timeoutDuration);\r\n\r\n this.iceState.resolve = resolve;\r\n });\r\n }\r\n\r\n // return a resolved promise to prevent multiple catch executions of reconnect\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * @returns {undefined}\r\n * @public\r\n * @memberof ReconnectionManager\r\n */\r\n public reset() {\r\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\r\n this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\r\n this.rejoinAttempts = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\r\n }\r\n\r\n /**\r\n * @returns {undefined}\r\n * @public\r\n * @memberof ReconnectionManager\r\n */\r\n public cleanUp() {\r\n this.reset();\r\n this.meeting = null;\r\n }\r\n\r\n /**\r\n * @returns {Boolean}\r\n * @throws {ReconnectionError}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n private validate() {\r\n if (this.meeting.config.reconnection.enabled) {\r\n if (\r\n this.status === RECONNECTION.STATE.DEFAULT_STATUS ||\r\n this.status === RECONNECTION.STATE.COMPLETE\r\n ) {\r\n return true;\r\n }\r\n\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#validate --> Reconnection already in progress.'\r\n );\r\n\r\n throw new ReconnectInProgress('Reconnection already in progress.');\r\n }\r\n\r\n LoggerProxy.logger.info('ReconnectionManager:index#validate --> Reconnection is not enabled.');\r\n\r\n throw new ReconnectionError('Reconnection is not enabled.');\r\n }\r\n\r\n /**\r\n * Initiates a media reconnect for the active meeting\r\n * @param {Object} reconnectOptions\r\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\r\n * @param {boolean} [reconnectOptions.networkRetry=false] indicates if we are retrying the reconnect\r\n * @returns {Promise}\r\n * @public\r\n * @memberof ReconnectionManager\r\n */\r\n public async reconnect({\r\n networkDisconnect = false,\r\n networkRetry = false,\r\n }: {\r\n networkDisconnect?: boolean;\r\n networkRetry?: boolean;\r\n } = {}) {\r\n LoggerProxy.logger.info(\r\n `ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`\r\n );\r\n // First, validate that we can reconnect, if not, it will throw an error\r\n try {\r\n this.validate();\r\n } catch (error) {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnect --> Reconnection unable to begin.',\r\n error\r\n );\r\n throw error;\r\n }\r\n\r\n if (!networkRetry) {\r\n // Only log START metrics on the initial reconnect\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'\r\n );\r\n Metrics.postEvent({\r\n event: eventType.MEDIA_RECONNECTING,\r\n meeting: this.meeting,\r\n });\r\n }\r\n\r\n return this.executeReconnection({networkDisconnect})\r\n .then(() => {\r\n LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'\r\n );\r\n Metrics.postEvent({\r\n event: eventType.MEDIA_RECOVERED,\r\n meeting: this.meeting,\r\n data: {recoveredBy: reconnection.RECOVERED_BY_NEW},\r\n });\r\n })\r\n .catch((reconnectError) => {\r\n if (reconnectError instanceof NeedsRetryError) {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'\r\n );\r\n // Reset our reconnect status since we are looping back to the beginning\r\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\r\n\r\n // This is a network retry, so we should not log START metrics again\r\n return this.reconnect({networkDisconnect: true, networkRetry: true});\r\n }\r\n\r\n // Reconnect has failed\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#reconnect --> Reconnection failed.',\r\n reconnectError.message\r\n );\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'\r\n );\r\n\r\n const reconnectMetric = {\r\n event: eventType.CALL_ABORTED,\r\n meeting: this.meeting,\r\n data: {\r\n errors: [\r\n {\r\n category: errorObjects.category.expected,\r\n errorCode: 2008,\r\n fatal: true,\r\n name: errorObjects.name.mediaEngine,\r\n shownToUser: false,\r\n },\r\n ],\r\n },\r\n };\r\n\r\n Metrics.postEvent(reconnectMetric);\r\n if (reconnectError instanceof NeedsRejoinError) {\r\n // send call aborded event with catogery as expected as we are trying to rejoin\r\n\r\n if (this.autoRejoinEnabled) {\r\n return this.rejoinMeeting(reconnectError.wasSharing);\r\n }\r\n }\r\n\r\n throw reconnectError;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Object} reconnectOptions\r\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\r\n * @returns {Promise}\r\n * @throws {NeedsRetryError}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n private async executeReconnection({networkDisconnect = false}: {networkDisconnect?: boolean}) {\r\n this.status = RECONNECTION.STATE.IN_PROGRESS;\r\n\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'\r\n );\r\n\r\n if (networkDisconnect) {\r\n try {\r\n await this.reconnectMercuryWebSocket();\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#executeReconnection --> Websocket reconnected.',\r\n this.webex.internal.device.url\r\n );\r\n } catch (error) {\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.'\r\n );\r\n this.status = RECONNECTION.STATE.FAILURE;\r\n throw error;\r\n }\r\n }\r\n\r\n const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;\r\n\r\n try {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'\r\n );\r\n await this.webex.meetings.syncMeetings();\r\n } catch (syncError) {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',\r\n syncError\r\n );\r\n throw new NeedsRetryError(syncError);\r\n }\r\n\r\n // TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object\r\n // So that on rejoin it known what parametrs it was using\r\n if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely '\r\n );\r\n\r\n throw new Error('Unable to rejoin a meeting already ended or inactive .');\r\n }\r\n\r\n LoggerProxy.logger.info(\r\n `ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`\r\n );\r\n\r\n // If the meeting state was left, no longer reconnect media\r\n if (this.meeting.state === _LEFT_) {\r\n if (this.meeting.type === _CALL_) {\r\n throw new Error('Unable to rejoin a call in LEFT state.');\r\n }\r\n\r\n throw new NeedsRejoinError({wasSharing});\r\n }\r\n\r\n try {\r\n const media = await this.reconnectMedia();\r\n\r\n LoggerProxy.logger.log(\r\n 'ReconnectionManager:index#executeReconnection --> Media reestablished'\r\n );\r\n this.status = RECONNECTION.STATE.COMPLETE;\r\n\r\n return media;\r\n } catch (error) {\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#executeReconnection --> Media reestablishment failed'\r\n );\r\n this.status = RECONNECTION.STATE.FAILURE;\r\n\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Rejoins a meeting after detecting the member was in a LEFT state\r\n *\r\n * @async\r\n * @param {boolean} wasSharing\r\n * @returns {Promise}\r\n */\r\n async rejoinMeeting(wasSharing = false) {\r\n try {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'\r\n );\r\n const previousCorrelationId = this.meeting.correlationId;\r\n\r\n await this.meeting.join({rejoin: true});\r\n LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');\r\n\r\n RoapCollection.deleteSession(previousCorrelationId);\r\n\r\n if (wasSharing) {\r\n // Stop the share streams if user tried to rejoin\r\n Media.stopTracks(this.meeting.mediaProperties.shareTrack);\r\n this.meeting.isSharing = false;\r\n if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {\r\n this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;\r\n }\r\n this.meeting.mediaProperties.mediaDirection.sendShare = false;\r\n Trigger.trigger(\r\n this.meeting,\r\n {\r\n file: 'reconnection-manager/index',\r\n function: 'rejoinMeeting',\r\n },\r\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\r\n {\r\n reason: SHARE_STOPPED_REASON.MEETING_REJOIN,\r\n }\r\n );\r\n }\r\n } catch (joinError) {\r\n this.rejoinAttempts += 1;\r\n if (this.rejoinAttempts <= this.maxRejoinAttempts) {\r\n LoggerProxy.logger.info(\r\n `ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`,\r\n joinError\r\n );\r\n this.rejoinMeeting();\r\n } else {\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.',\r\n joinError\r\n );\r\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE, {\r\n locus_id: this.meeting.locusUrl.split('/').pop(),\r\n reason: joinError.message,\r\n stack: joinError.stack,\r\n });\r\n this.status = RECONNECTION.STATE.FAILURE;\r\n throw joinError;\r\n }\r\n }\r\n\r\n try {\r\n await this.reconnectMedia();\r\n } catch (mediaError) {\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.',\r\n mediaError\r\n );\r\n throw mediaError;\r\n }\r\n }\r\n\r\n /**\r\n * @returns {Promise}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n reconnectMedia() {\r\n LoggerProxy.logger.log(\r\n 'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'\r\n );\r\n\r\n return ReconnectionManager.setupPeerConnection(this.meeting)\r\n .then(() =>\r\n Media.attachMedia(this.meeting.mediaProperties, {\r\n meetingId: this.meeting.id,\r\n remoteQualityLevel: this.meeting.mediaProperties.remoteQualityLevel,\r\n enableRtx: this.meeting.config.enableRtx,\r\n enableExtmap: this.meeting.config.enableExtmap,\r\n })\r\n )\r\n .then((peerConnection) => this.meeting.setRemoteStream(peerConnection))\r\n .then(() => {\r\n LoggerProxy.logger.log(\r\n 'ReconnectionManager:index#reconnectMedia --> Sending ROAP media request'\r\n );\r\n\r\n return this.meeting.roap.sendRoapMediaRequest({\r\n sdp: this.meeting.mediaProperties.peerConnection.sdp,\r\n roapSeq: this.meeting.roapSeq,\r\n meeting: this.meeting,\r\n reconnect: true,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Attempt to Reconnect Mercury Websocket\r\n * @returns {Promise}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n private async reconnectMercuryWebSocket() {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'\r\n );\r\n // First, attempt to disconnect if we think we are already connected.\r\n if (this.webex.internal.mercury.connected) {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.'\r\n );\r\n try {\r\n await this.webex.internal.mercury.disconnect();\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.'\r\n );\r\n } catch (disconnectError) {\r\n // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.',\r\n disconnectError\r\n );\r\n throw disconnectError;\r\n }\r\n }\r\n\r\n try {\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.'\r\n );\r\n await this.webex.internal.mercury.connect();\r\n LoggerProxy.logger.info(\r\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.'\r\n );\r\n } catch (connectError) {\r\n LoggerProxy.logger.error(\r\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.',\r\n connectError\r\n );\r\n\r\n throw connectError;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Meeting} meeting\r\n * @returns {undefined}\r\n * @private\r\n * @memberof ReconnectionManager\r\n */\r\n private static async setupPeerConnection(meeting: Meeting) {\r\n LoggerProxy.logger.log(\r\n 'ReconnectionManager:index#setupPeerConnection --> Begin resetting peer connection'\r\n );\r\n // close pcs, unset to null and create a new one with out closing any streams\r\n PeerConnectionManager.close(meeting.mediaProperties.peerConnection);\r\n meeting.mediaProperties.unsetPeerConnection();\r\n\r\n const turnServerResult = await meeting.roap.doTurnDiscovery(meeting, true);\r\n\r\n meeting.mediaProperties.reInitiatePeerconnection(turnServerResult.turnServerInfo);\r\n PeerConnectionManager.setPeerConnectionEvents(meeting);\r\n\r\n // update the peerconnection in the stats manager when ever we reconnect\r\n meeting.statsAnalyzer.updatePeerconnection(meeting.mediaProperties.peerConnection);\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_triggerProxy","_constants","_constants2","_reconnection","_reconnectionInProgress","_peerConnectionManager","_config","_media","_metrics","_collection","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","NeedsRetryError","_Error","_inherits2","_super","_classCallCheck2","_createClass2","_wrapNativeSuper2","Error","NeedsRejoinError","_Error2","_super2","_ref","_this","wasSharing","_ref$error","error","_defineProperty2","_assertThisInitialized2","ReconnectionManager","meeting","iceState","disconnected","resolve","timer","undefined","timeoutDuration","config","reconnection","iceReconnectionTimeout","status","RECONNECTION","STATE","DEFAULT_STATUS","tryCount","DEFAULT_TRY_COUNT","webex","maxRejoinAttempts","rejoinAttempts","autoRejoinEnabled","autoRejoin","reset","key","value","iceReconnected","LoggerProxy","logger","log","clearTimeout","waitForIceReconnect","_this2","_promise","reject","setTimeout","concat","cleanUp","validate","enabled","COMPLETE","info","ReconnectInProgress","ReconnectionError","_reconnect","_asyncToGenerator2","_regenerator","mark","_callee","_this3","_ref2","_ref2$networkDisconne","networkDisconnect","_ref2$networkRetry","networkRetry","_args","wrap","_callee$","_context","prev","next","length","id","t0","Metrics","postEvent","event","eventType","MEDIA_RECONNECTING","abrupt","executeReconnection","then","MEDIA_RECOVERED","data","recoveredBy","RECOVERED_BY_NEW","catch","reconnectError","reconnect","message","reconnectMetric","CALL_ABORTED","errors","category","errorObjects","expected","errorCode","fatal","name","mediaEngine","shownToUser","rejoinMeeting","stop","_executeReconnection","_callee2","_ref3","_ref3$networkDisconne","media","_callee2$","_context2","IN_PROGRESS","reconnectMercuryWebSocket","internal","device","url","FAILURE","shareStatus","SHARE_STATUS","LOCAL_SHARE_ACTIVE","meetings","syncMeetings","t1","getMeetingByType","_ID_","state","_LEFT_","type","_CALL_","reconnectMedia","sent","t2","_x","_rejoinMeeting","_callee3","previousCorrelationId","_args3","_callee3$","_context3","correlationId","join","rejoin","RoapCollection","deleteSession","Media","stopTracks","mediaProperties","shareTrack","isSharing","NO_SHARE","mediaDirection","sendShare","Trigger","trigger","file","function","EVENT_TRIGGERS","MEETING_STOPPED_SHARING_LOCAL","reason","SHARE_STOPPED_REASON","MEETING_REJOIN","sendBehavioralMetric","BEHAVIORAL_METRICS","MEETING_MAX_REJOIN_FAILURE","locus_id","locusUrl","split","pop","stack","_this4","setupPeerConnection","attachMedia","meetingId","remoteQualityLevel","enableRtx","enableExtmap","peerConnection","setRemoteStream","roap","sendRoapMediaRequest","sdp","roapSeq","_reconnectMercuryWebSocket","_callee4","_callee4$","_context4","mercury","connected","disconnect","connect","_setupPeerConnection","_callee5","turnServerResult","_callee5$","_context5","PeerConnectionManager","close","unsetPeerConnection","doTurnDiscovery","reInitiatePeerconnection","turnServerInfo","setPeerConnectionEvents","statsAnalyzer","updatePeerconnection","_x2","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-disable no-warning-comments */\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport Trigger from '../common/events/trigger-proxy';\nimport {\n EVENT_TRIGGERS,\n RECONNECTION,\n SHARE_STATUS,\n SHARE_STOPPED_REASON,\n _CALL_,\n _LEFT_,\n _ID_,\n} from '../constants';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport ReconnectionError from '../common/errors/reconnection';\nimport ReconnectInProgress from '../common/errors/reconnection-in-progress';\nimport PeerConnectionManager from '../peer-connection-manager';\nimport {eventType, reconnection, errorObjects} from '../metrics/config';\nimport Media from '../media';\nimport Metrics from '../metrics';\nimport RoapCollection from '../roap/collection';\nimport Meeting from '../meeting';\n\n/**\n * Used to indicate that the reconnect logic needs to be retried.\n *\n * @class NeedsRetryError\n * @extends {Error}\n */\nclass NeedsRetryError extends Error {}\n\n/**\n * Used to indicate that the meeting needs to be rejoined, not just media reconnected\n *\n * @class NeedsRejoinError\n * @extends {Error}\n */\nclass NeedsRejoinError extends Error {\n wasSharing: any;\n\n /**\n * Creates an instance of NeedsRejoinError.\n * @param {Object} params\n * @param {boolean} params.wasSharing\n * @param {Error} params.error\n * @memberof NeedsRejoinError\n */\n constructor({\n wasSharing,\n error = new Error('Meeting needs to be rejoined'),\n }: {\n wasSharing?: boolean;\n error?: Error;\n }) {\n // @ts-ignore\n super(error);\n\n this.wasSharing = wasSharing;\n }\n}\n\n/**\n * @export\n * @class ReconnectionManager\n */\nexport default class ReconnectionManager {\n autoRejoinEnabled: any;\n iceState: any;\n maxRejoinAttempts: any;\n meeting: any;\n rejoinAttempts: any;\n shareStatus: any;\n status: any;\n tryCount: any;\n webex: any;\n /**\n * @param {Meeting} meeting\n */\n constructor(meeting: Meeting) {\n /**\n * Stores ICE reconnection state data.\n *\n * @instance\n * @type {Object}\n * @private\n * @memberof ReconnectionManager\n */\n this.iceState = {\n disconnected: false,\n resolve: () => {},\n timer: undefined,\n // @ts-ignore\n timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout,\n };\n\n /**\n * @instance\n * @type {String}\n * @private\n * @memberof ReconnectionManager\n */\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n /**\n * @instance\n * @type {Number}\n * @private\n * @memberof ReconnectionManager\n */\n this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof ReconnectionManager\n */\n // TODO : change this logic to not save the meeting instance\n // It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date\n // @ts-ignore\n this.webex = meeting.webex;\n /**\n * @instance\n * @type {Meeting}\n * @private\n * @memberof ReconnectionManager\n */\n // TODO: try removing the circular dependency for meeting and reconnection manager\n // try moving this to meetings collection\n this.meeting = meeting;\n\n // @ts-ignore\n this.maxRejoinAttempts = meeting.config.reconnection.maxRejoinAttempts;\n this.rejoinAttempts = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\n // @ts-ignore\n this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;\n\n // Make sure reconnection state is in default\n this.reset();\n }\n\n /**\n * Sets the iceState to connected and clears any disconnect timeouts and\n * related timeout data within the iceState.\n *\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public iceReconnected() {\n if (this.iceState.disconnected) {\n LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');\n\n this.iceState.resolve();\n this.iceState.resolve = () => {};\n\n if (this.iceState.timer) {\n clearTimeout(this.iceState.timer);\n delete this.iceState.timer;\n }\n\n this.iceState.disconnected = false;\n }\n }\n\n /**\n * Set the iceState to disconnected and generates a timeout that waits for the\n * iceState to reconnect and then resolves. If the ice state is already\n * processing a reconnect, it immediately resolves. Rejects if the timeout\n * duration is reached.\n *\n * @returns {Promise<undefined>}\n * @public\n * @memberof ReconnectionManager\n */\n public waitForIceReconnect() {\n if (!this.iceState.disconnected) {\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect'\n );\n\n this.iceState.disconnected = true;\n\n return new Promise<void>((resolve, reject) => {\n this.iceState.timer = setTimeout(() => {\n if (this.iceState.disconnected === false) {\n resolve();\n } else {\n this.iceState.disconnected = false;\n reject(\n new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`)\n );\n }\n }, this.iceState.timeoutDuration);\n\n this.iceState.resolve = resolve;\n });\n }\n\n // return a resolved promise to prevent multiple catch executions of reconnect\n return Promise.resolve();\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public reset() {\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\n this.rejoinAttempts = RECONNECTION.STATE.DEFAULT_TRY_COUNT;\n }\n\n /**\n * @returns {undefined}\n * @public\n * @memberof ReconnectionManager\n */\n public cleanUp() {\n this.reset();\n this.meeting = null;\n }\n\n /**\n * @returns {Boolean}\n * @throws {ReconnectionError}\n * @private\n * @memberof ReconnectionManager\n */\n private validate() {\n if (this.meeting.config.reconnection.enabled) {\n if (\n this.status === RECONNECTION.STATE.DEFAULT_STATUS ||\n this.status === RECONNECTION.STATE.COMPLETE\n ) {\n return true;\n }\n\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#validate --> Reconnection already in progress.'\n );\n\n throw new ReconnectInProgress('Reconnection already in progress.');\n }\n\n LoggerProxy.logger.info('ReconnectionManager:index#validate --> Reconnection is not enabled.');\n\n throw new ReconnectionError('Reconnection is not enabled.');\n }\n\n /**\n * Initiates a media reconnect for the active meeting\n * @param {Object} reconnectOptions\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\n * @param {boolean} [reconnectOptions.networkRetry=false] indicates if we are retrying the reconnect\n * @returns {Promise}\n * @public\n * @memberof ReconnectionManager\n */\n public async reconnect({\n networkDisconnect = false,\n networkRetry = false,\n }: {\n networkDisconnect?: boolean;\n networkRetry?: boolean;\n } = {}) {\n LoggerProxy.logger.info(\n `ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`\n );\n // First, validate that we can reconnect, if not, it will throw an error\n try {\n this.validate();\n } catch (error) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Reconnection unable to begin.',\n error\n );\n throw error;\n }\n\n if (!networkRetry) {\n // Only log START metrics on the initial reconnect\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'\n );\n Metrics.postEvent({\n event: eventType.MEDIA_RECONNECTING,\n meeting: this.meeting,\n });\n }\n\n return this.executeReconnection({networkDisconnect})\n .then(() => {\n LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'\n );\n Metrics.postEvent({\n event: eventType.MEDIA_RECOVERED,\n meeting: this.meeting,\n data: {recoveredBy: reconnection.RECOVERED_BY_NEW},\n });\n })\n .catch((reconnectError) => {\n if (reconnectError instanceof NeedsRetryError) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'\n );\n // Reset our reconnect status since we are looping back to the beginning\n this.status = RECONNECTION.STATE.DEFAULT_STATUS;\n\n // This is a network retry, so we should not log START metrics again\n return this.reconnect({networkDisconnect: true, networkRetry: true});\n }\n\n // Reconnect has failed\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnect --> Reconnection failed.',\n reconnectError.message\n );\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'\n );\n\n const reconnectMetric = {\n event: eventType.CALL_ABORTED,\n meeting: this.meeting,\n data: {\n errors: [\n {\n category: errorObjects.category.expected,\n errorCode: 2008,\n fatal: true,\n name: errorObjects.name.mediaEngine,\n shownToUser: false,\n },\n ],\n },\n };\n\n Metrics.postEvent(reconnectMetric);\n if (reconnectError instanceof NeedsRejoinError) {\n // send call aborded event with catogery as expected as we are trying to rejoin\n\n if (this.autoRejoinEnabled) {\n return this.rejoinMeeting(reconnectError.wasSharing);\n }\n }\n\n throw reconnectError;\n });\n }\n\n /**\n * @param {Object} reconnectOptions\n * @param {boolean} [reconnectOptions.networkDisconnect=false] indicates if a network disconnect event happened\n * @returns {Promise}\n * @throws {NeedsRetryError}\n * @private\n * @memberof ReconnectionManager\n */\n private async executeReconnection({networkDisconnect = false}: {networkDisconnect?: boolean}) {\n this.status = RECONNECTION.STATE.IN_PROGRESS;\n\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'\n );\n\n if (networkDisconnect) {\n try {\n await this.reconnectMercuryWebSocket();\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> Websocket reconnected.',\n this.webex.internal.device.url\n );\n } catch (error) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.'\n );\n this.status = RECONNECTION.STATE.FAILURE;\n throw error;\n }\n }\n\n const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;\n\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'\n );\n await this.webex.meetings.syncMeetings();\n } catch (syncError) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',\n syncError\n );\n throw new NeedsRetryError(syncError);\n }\n\n // TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object\n // So that on rejoin it known what parametrs it was using\n if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely '\n );\n\n throw new Error('Unable to rejoin a meeting already ended or inactive .');\n }\n\n LoggerProxy.logger.info(\n `ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`\n );\n\n // If the meeting state was left, no longer reconnect media\n if (this.meeting.state === _LEFT_) {\n if (this.meeting.type === _CALL_) {\n throw new Error('Unable to rejoin a call in LEFT state.');\n }\n\n throw new NeedsRejoinError({wasSharing});\n }\n\n try {\n const media = await this.reconnectMedia();\n\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#executeReconnection --> Media reestablished'\n );\n this.status = RECONNECTION.STATE.COMPLETE;\n\n return media;\n } catch (error) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#executeReconnection --> Media reestablishment failed'\n );\n this.status = RECONNECTION.STATE.FAILURE;\n\n throw error;\n }\n }\n\n /**\n * Rejoins a meeting after detecting the member was in a LEFT state\n *\n * @async\n * @param {boolean} wasSharing\n * @returns {Promise}\n */\n async rejoinMeeting(wasSharing = false) {\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'\n );\n const previousCorrelationId = this.meeting.correlationId;\n\n await this.meeting.join({rejoin: true});\n LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');\n\n RoapCollection.deleteSession(previousCorrelationId);\n\n if (wasSharing) {\n // Stop the share streams if user tried to rejoin\n Media.stopTracks(this.meeting.mediaProperties.shareTrack);\n this.meeting.isSharing = false;\n if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {\n this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;\n }\n this.meeting.mediaProperties.mediaDirection.sendShare = false;\n Trigger.trigger(\n this.meeting,\n {\n file: 'reconnection-manager/index',\n function: 'rejoinMeeting',\n },\n EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,\n {\n reason: SHARE_STOPPED_REASON.MEETING_REJOIN,\n }\n );\n }\n } catch (joinError) {\n this.rejoinAttempts += 1;\n if (this.rejoinAttempts <= this.maxRejoinAttempts) {\n LoggerProxy.logger.info(\n `ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`,\n joinError\n );\n this.rejoinMeeting();\n } else {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.',\n joinError\n );\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE, {\n locus_id: this.meeting.locusUrl.split('/').pop(),\n reason: joinError.message,\n stack: joinError.stack,\n });\n this.status = RECONNECTION.STATE.FAILURE;\n throw joinError;\n }\n }\n\n try {\n await this.reconnectMedia();\n } catch (mediaError) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.',\n mediaError\n );\n throw mediaError;\n }\n }\n\n /**\n * @returns {Promise}\n * @private\n * @memberof ReconnectionManager\n */\n reconnectMedia() {\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'\n );\n\n return ReconnectionManager.setupPeerConnection(this.meeting)\n .then(() =>\n Media.attachMedia(this.meeting.mediaProperties, {\n meetingId: this.meeting.id,\n remoteQualityLevel: this.meeting.mediaProperties.remoteQualityLevel,\n enableRtx: this.meeting.config.enableRtx,\n enableExtmap: this.meeting.config.enableExtmap,\n })\n )\n .then((peerConnection) => this.meeting.setRemoteStream(peerConnection))\n .then(() => {\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#reconnectMedia --> Sending ROAP media request'\n );\n\n return this.meeting.roap.sendRoapMediaRequest({\n sdp: this.meeting.mediaProperties.peerConnection.sdp,\n roapSeq: this.meeting.roapSeq,\n meeting: this.meeting,\n reconnect: true,\n });\n });\n }\n\n /**\n * Attempt to Reconnect Mercury Websocket\n * @returns {Promise}\n * @private\n * @memberof ReconnectionManager\n */\n private async reconnectMercuryWebSocket() {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'\n );\n // First, attempt to disconnect if we think we are already connected.\n if (this.webex.internal.mercury.connected) {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.'\n );\n try {\n await this.webex.internal.mercury.disconnect();\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.'\n );\n } catch (disconnectError) {\n // If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.',\n disconnectError\n );\n throw disconnectError;\n }\n }\n\n try {\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.'\n );\n await this.webex.internal.mercury.connect();\n LoggerProxy.logger.info(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.'\n );\n } catch (connectError) {\n LoggerProxy.logger.error(\n 'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.',\n connectError\n );\n\n throw connectError;\n }\n }\n\n /**\n * @param {Meeting} meeting\n * @returns {undefined}\n * @private\n * @memberof ReconnectionManager\n */\n private static async setupPeerConnection(meeting: Meeting) {\n LoggerProxy.logger.log(\n 'ReconnectionManager:index#setupPeerConnection --> Begin resetting peer connection'\n );\n // close pcs, unset to null and create a new one with out closing any streams\n PeerConnectionManager.close(meeting.mediaProperties.peerConnection);\n meeting.mediaProperties.unsetPeerConnection();\n\n const turnServerResult = await meeting.roap.doTurnDiscovery(meeting, true);\n\n meeting.mediaProperties.reInitiatePeerconnection(turnServerResult.turnServerInfo);\n PeerConnectionManager.setPeerConnectionEvents(meeting);\n\n // update the peerconnection in the stats manager when ever we reconnect\n meeting.statsAnalyzer.updatePeerconnection(meeting.mediaProperties.peerConnection);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RecordingAction","_default","exports","default"],"sources":["enums.ts"],"sourcesContent":["enum RecordingAction {\
|
|
1
|
+
{"version":3,"names":["RecordingAction","_default","exports","default"],"sources":["enums.ts"],"sourcesContent":["enum RecordingAction {\n Start = 'Start',\n Stop = 'Stop',\n Pause = 'Pause',\n Resume = 'Resume',\n}\n\nexport default RecordingAction;\n"],"mappings":";;;;;;;IAAKA,eAAe;AAAA,WAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;AAAA,GAAfA,eAAe,KAAfA,eAAe;AAAA,IAAAC,QAAA,GAOLD,eAAe;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|